feat(album): album view sort order (#14648)

* feat(mobile): album view sort order

* feat: add error message

* refactor(mobile): album page (#14659)

* refactor album page

* update lint rule

* const record

* fix: updating sort order when pull to refresh

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>

* Move sort toggle button to bottom sheet menu

* chore: revert multiselectgrid loading status

* chore: revert multiselectgrid loading status

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
This commit is contained in:
Alex
2024-12-16 10:11:48 -06:00
committed by GitHub
parent 364b717fde
commit 9503bf479b
32 changed files with 711 additions and 336 deletions

View File

@@ -433,6 +433,7 @@ class MultiselectGrid extends HookConsumerWidget {
),
if (selectionEnabledHook.value)
ControlBottomAppBar(
key: const ValueKey("controlBottomAppBar"),
onShare: onShareAssets,
onFavorite: favoriteEnabled ? onFavoriteAssets : null,
onArchive: archiveEnabled ? onArchiveAsset : null,

View File

@@ -0,0 +1,35 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/providers/asset_viewer/render_list_status_provider.dart';
import 'package:immich_mobile/widgets/common/delayed_loading_indicator.dart';
class MultiselectGridStatusIndicator extends HookConsumerWidget {
const MultiselectGridStatusIndicator({
super.key,
this.buildLoadingIndicator,
this.emptyIndicator,
});
final Widget Function()? buildLoadingIndicator;
final Widget? emptyIndicator;
@override
Widget build(BuildContext context, WidgetRef ref) {
final renderListStatus = ref.watch(renderListStatusProvider);
return switch (renderListStatus) {
RenderListStatusEnum.loading => buildLoadingIndicator == null
? const Center(
child: DelayedLoadingIndicator(
delay: Duration(milliseconds: 500),
),
)
: buildLoadingIndicator!(),
RenderListStatusEnum.empty =>
emptyIndicator ?? Center(child: const Text("no_assets_to_show").tr()),
RenderListStatusEnum.error =>
Center(child: const Text("error_loading_assets").tr()),
RenderListStatusEnum.complete => const SizedBox()
};
}
}