fix(trash_sync_review): resolve merge conflicts

pull/23992/head
Peter Ombodi 2025-12-17 18:41:46 +02:00
parent 0db44050e0
commit 45182e385d
5 changed files with 10 additions and 59 deletions

View File

@ -69,26 +69,6 @@ class ViewerBottomBar extends ConsumerWidget {
: const DeleteActionButton(source: ActionSource.viewer, showConfirmation: true),
],
],
//todo check it!
// if (isWaitingForSyncApproval) ...[
// DecoratedBox(
// decoration: BoxDecoration(
// border: Border.all(color: const Color.fromARGB(155, 243, 188, 106), width: 0.5),
// borderRadius: const BorderRadius.all(Radius.circular(24)),
// ),
// child: Column(
// children: [
// const Text('asset_out_of_sync_trash_confirmation_title').tr(),
// const Row(
// children: [
// KeepOnDeviceActionButton(source: ActionSource.viewer, isPreview: true),
// MoveToTrashActionButton(source: ActionSource.viewer, isPreview: true),
// ],
// ),
// ],
// ),
// ),
// ],
],
];

View File

@ -20,11 +20,6 @@ import 'package:immich_mobile/presentation/widgets/bottom_sheet/base_bottom_shee
import 'package:immich_mobile/providers/infrastructure/action.provider.dart';
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asset.provider.dart';
import 'package:immich_mobile/providers/infrastructure/current_album.provider.dart';
import 'package:immich_mobile/providers/infrastructure/setting.provider.dart';
import 'package:immich_mobile/providers/infrastructure/trash_sync.provider.dart';
import 'package:immich_mobile/providers/routes.provider.dart';
import 'package:immich_mobile/providers/server_info.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
import 'package:immich_mobile/repositories/asset_media.repository.dart';
import 'package:immich_mobile/routing/router.dart';
@ -46,29 +41,6 @@ class AssetDetailBottomSheet extends ConsumerWidget {
if (asset == null) {
return const SizedBox.shrink();
}
//todo check it!
// final isTrashEnable = ref.watch(serverInfoProvider.select((state) => state.serverFeatures.trash));
// final isOwner = asset is RemoteAsset && asset.ownerId == ref.watch(currentUserProvider)?.id;
// final isInLockedView = ref.watch(inLockedViewProvider);
// final currentAlbum = ref.watch(currentRemoteAlbumProvider);
// final isArchived = asset is RemoteAsset && asset.visibility == AssetVisibility.archive;
// final advancedTroubleshooting = ref.watch(settingsProvider.notifier).get(Setting.advancedTroubleshooting);
// final isWaitingForTrashApproval = ref.watch(isWaitingForSyncApprovalProvider(asset.checksum)).value == true;
//
// final buttonContext = ActionButtonContext(
// asset: asset,
// isOwner: isOwner,
// isArchived: isArchived,
// isTrashEnabled: isTrashEnable,
// isInLockedView: isInLockedView,
// isStacked: asset is RemoteAsset && asset.stackId != null,
// currentAlbum: currentAlbum,
// advancedTroubleshooting: advancedTroubleshooting,
// isWaitingForTrashApproval: isWaitingForTrashApproval,
// source: ActionSource.viewer,
// );
//
// final actions = ActionButtonBuilder.build(buttonContext);
return BaseBottomSheet(
actions: [],

View File

@ -15,6 +15,7 @@ import 'package:immich_mobile/providers/activity.provider.dart';
import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asset.provider.dart';
import 'package:immich_mobile/providers/infrastructure/current_album.provider.dart';
import 'package:immich_mobile/providers/infrastructure/readonly_mode.provider.dart';
import 'package:immich_mobile/providers/infrastructure/trash_sync.provider.dart';
import 'package:immich_mobile/providers/routes.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
@ -49,6 +50,8 @@ class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
final originalTheme = context.themeData;
final isWaitingForSyncApproval = ref.watch(isWaitingForSyncApprovalProvider(asset.checksum)).value == true;
final actions = <Widget>[
if (asset.isMotionPhoto) const MotionPhotoActionButton(iconOnly: true),
if (album != null && album.isActivityEnabled && album.isShared)
@ -59,9 +62,9 @@ class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
},
),
if (asset.hasRemote && isOwner && !asset.isFavorite)
if (asset.hasRemote && isOwner && !asset.isFavorite && !isWaitingForSyncApproval)
const FavoriteActionButton(source: ActionSource.viewer, iconOnly: true),
if (asset.hasRemote && isOwner && asset.isFavorite)
if (asset.hasRemote && isOwner && asset.isFavorite && !isWaitingForSyncApproval)
const UnFavoriteActionButton(source: ActionSource.viewer, iconOnly: true),
ViewerKebabMenu(originalTheme: originalTheme),

View File

@ -9,6 +9,7 @@ import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asse
import 'package:immich_mobile/providers/infrastructure/current_album.provider.dart';
import 'package:immich_mobile/providers/infrastructure/setting.provider.dart';
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
import 'package:immich_mobile/providers/infrastructure/trash_sync.provider.dart';
import 'package:immich_mobile/providers/routes.provider.dart';
import 'package:immich_mobile/providers/server_info.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
@ -35,6 +36,7 @@ class ViewerKebabMenu extends ConsumerWidget {
final currentAlbum = ref.watch(currentRemoteAlbumProvider);
final isArchived = asset is RemoteAsset && asset.visibility == AssetVisibility.archive;
final advancedTroubleshooting = ref.watch(settingsProvider.notifier).get(Setting.advancedTroubleshooting);
final isWaitingForTrashApproval = ref.watch(isWaitingForSyncApprovalProvider(asset.checksum)).value == true;
final actionContext = ActionButtonContext(
asset: asset,
@ -49,6 +51,7 @@ class ViewerKebabMenu extends ConsumerWidget {
isCasting: isCasting,
timelineOrigin: timelineOrigin,
originalTheme: originalTheme,
isWaitingForTrashApproval: isWaitingForTrashApproval,
);
final menuChildren = ActionButtonBuilder.buildViewerKebabMenu(actionContext, context, ref);

View File

@ -16,10 +16,8 @@ import 'package:immich_mobile/presentation/widgets/action_buttons/delete_action_
import 'package:immich_mobile/presentation/widgets/action_buttons/delete_local_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/delete_permanent_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/download_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/keep_on_device_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/like_activity_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/move_to_lock_folder_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/move_to_trash_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/remove_from_album_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/remove_from_lock_folder_action_button.widget.dart';
import 'package:immich_mobile/presentation/widgets/action_buttons/share_action_button.widget.dart';
@ -83,9 +81,7 @@ enum ActionButtonType {
deleteLocal,
deletePermanent,
delete,
advancedInfo,
keepOnDevice,
syncTrash;
advancedInfo;
bool shouldShow(ActionButtonContext context) {
return switch (this) {
@ -165,10 +161,9 @@ enum ActionButtonType {
context.timelineOrigin != TimelineOrigin.lockedFolder &&
context.timelineOrigin != TimelineOrigin.archive &&
context.timelineOrigin != TimelineOrigin.localAlbum &&
context.timelineOrigin != TimelineOrigin.syncTrash &&
context.isOwner,
ActionButtonType.cast => context.isCasting || context.asset.hasRemote,
ActionButtonType.keepOnDevice => context.isWaitingForTrashApproval,
ActionButtonType.syncTrash => context.isWaitingForTrashApproval,
};
}
@ -255,8 +250,6 @@ enum ActionButtonType {
},
),
ActionButtonType.cast => CastActionButton(iconOnly: iconOnly, menuItem: menuItem),
ActionButtonType.keepOnDevice => const KeepOnDeviceActionButton(source: ActionSource.viewer, isPreview: true),
ActionButtonType.syncTrash => const MoveToTrashActionButton(source: ActionSource.viewer, isPreview: true),
};
}