|
@@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
|
+import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
|
|
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
|
|
import 'package:immich_mobile/modules/archive/providers/archive_asset_provider.dart';
|
|
|
import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
|
|
@@ -48,37 +49,33 @@ class ArchivePage extends HookConsumerWidget {
|
|
|
child: SizedBox(
|
|
|
height: 64,
|
|
|
child: Card(
|
|
|
- child: Column(
|
|
|
- children: [
|
|
|
- ListTile(
|
|
|
- shape: RoundedRectangleBorder(
|
|
|
- borderRadius: BorderRadius.circular(10),
|
|
|
- ),
|
|
|
- leading: const Icon(
|
|
|
- Icons.unarchive_rounded,
|
|
|
- ),
|
|
|
- title: Text(
|
|
|
- 'control_bottom_app_bar_unarchive'.tr(),
|
|
|
- style: const TextStyle(fontSize: 14),
|
|
|
- ),
|
|
|
- onTap: processing.value
|
|
|
- ? null
|
|
|
- : () async {
|
|
|
- processing.value = true;
|
|
|
- try {
|
|
|
- await handleArchiveAssets(
|
|
|
- ref,
|
|
|
- context,
|
|
|
- selection.value.toList(),
|
|
|
- shouldArchive: false,
|
|
|
- );
|
|
|
- } finally {
|
|
|
- processing.value = false;
|
|
|
- selectionEnabledHook.value = false;
|
|
|
- }
|
|
|
- },
|
|
|
- ),
|
|
|
- ],
|
|
|
+ child: ListTile(
|
|
|
+ shape: const RoundedRectangleBorder(
|
|
|
+ borderRadius: BorderRadius.all(Radius.circular(10)),
|
|
|
+ ),
|
|
|
+ leading: const Icon(
|
|
|
+ Icons.unarchive_rounded,
|
|
|
+ ),
|
|
|
+ title: Text(
|
|
|
+ 'control_bottom_app_bar_unarchive'.tr(),
|
|
|
+ style: const TextStyle(fontSize: 14),
|
|
|
+ ),
|
|
|
+ onTap: processing.value
|
|
|
+ ? null
|
|
|
+ : () async {
|
|
|
+ processing.value = true;
|
|
|
+ try {
|
|
|
+ await handleArchiveAssets(
|
|
|
+ ref,
|
|
|
+ context,
|
|
|
+ selection.value.toList(),
|
|
|
+ shouldArchive: false,
|
|
|
+ );
|
|
|
+ } finally {
|
|
|
+ processing.value = false;
|
|
|
+ selectionEnabledHook.value = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
),
|
|
|
),
|
|
|
),
|
|
@@ -86,18 +83,13 @@ class ArchivePage extends HookConsumerWidget {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- return archivedAssets.when(
|
|
|
- loading: () => Scaffold(
|
|
|
- appBar: buildAppBar("?"),
|
|
|
- body: const Center(child: CircularProgressIndicator()),
|
|
|
- ),
|
|
|
- error: (error, stackTrace) => Scaffold(
|
|
|
- appBar: buildAppBar("Error"),
|
|
|
- body: Center(child: Text(error.toString())),
|
|
|
+ return Scaffold(
|
|
|
+ appBar: archivedAssets.maybeWhen(
|
|
|
+ data: (data) => buildAppBar(data.totalAssets.toString()),
|
|
|
+ orElse: () => buildAppBar("?"),
|
|
|
),
|
|
|
- data: (data) => Scaffold(
|
|
|
- appBar: buildAppBar(data.totalAssets.toString()),
|
|
|
- body: data.isEmpty
|
|
|
+ body: archivedAssets.widgetWhen(
|
|
|
+ onData: (data) => data.isEmpty
|
|
|
? Center(
|
|
|
child: Text('archive_page_no_archived_assets'.tr()),
|
|
|
)
|