mirror of
https://github.com/immich-app/immich.git
synced 2024-12-24 10:37:28 +02:00
55 lines
1.8 KiB
Dart
55 lines
1.8 KiB
Dart
|
import 'package:easy_localization/easy_localization.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:flutter_hooks/flutter_hooks.dart' show useEffect, useState;
|
||
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||
|
import 'package:immich_mobile/modules/backup/models/duplicated_asset.model.dart';
|
||
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||
|
import 'package:immich_mobile/shared/providers/db.provider.dart';
|
||
|
|
||
|
class LocalStorageSettings extends HookConsumerWidget {
|
||
|
const LocalStorageSettings({super.key});
|
||
|
@override
|
||
|
Widget build(BuildContext context, WidgetRef ref) {
|
||
|
final isarDb = ref.watch(dbProvider);
|
||
|
final cacheItemCount = useState(0);
|
||
|
|
||
|
useEffect(
|
||
|
() {
|
||
|
cacheItemCount.value = isarDb.duplicatedAssets.countSync();
|
||
|
return null;
|
||
|
},
|
||
|
[],
|
||
|
);
|
||
|
|
||
|
void clearCache() async {
|
||
|
await isarDb.writeTxn(() => isarDb.duplicatedAssets.clear());
|
||
|
cacheItemCount.value = await isarDb.duplicatedAssets.count();
|
||
|
}
|
||
|
|
||
|
return ListTile(
|
||
|
contentPadding: const EdgeInsets.symmetric(horizontal: 20),
|
||
|
dense: true,
|
||
|
title: Text(
|
||
|
"cache_settings_duplicated_assets_title",
|
||
|
style: context.textTheme.bodyLarge?.copyWith(
|
||
|
fontWeight: FontWeight.w500,
|
||
|
),
|
||
|
).tr(args: ["${cacheItemCount.value}"]),
|
||
|
subtitle: const Text(
|
||
|
"cache_settings_duplicated_assets_subtitle",
|
||
|
).tr(),
|
||
|
trailing: TextButton(
|
||
|
onPressed: cacheItemCount.value > 0 ? clearCache : null,
|
||
|
child: Text(
|
||
|
"cache_settings_duplicated_assets_clear_button",
|
||
|
style: TextStyle(
|
||
|
fontSize: 12,
|
||
|
color: cacheItemCount.value > 0 ? Colors.red : Colors.grey,
|
||
|
fontWeight: FontWeight.bold,
|
||
|
),
|
||
|
).tr(),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|