From 0f7938197ec0868374ecfcfddd39ad23abae2878 Mon Sep 17 00:00:00 2001 From: timonrieger Date: Wed, 17 Dec 2025 21:50:03 +0100 Subject: [PATCH] fix(mobile): hide favorite icon in partner shared library views --- .../widgets/images/thumbnail_tile.widget.dart | 8 +++++++- mobile/lib/widgets/asset_grid/thumbnail_image.dart | 11 ++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/mobile/lib/presentation/widgets/images/thumbnail_tile.widget.dart b/mobile/lib/presentation/widgets/images/thumbnail_tile.widget.dart index c7628cb472..37b2ab0df9 100644 --- a/mobile/lib/presentation/widgets/images/thumbnail_tile.widget.dart +++ b/mobile/lib/presentation/widgets/images/thumbnail_tile.widget.dart @@ -10,6 +10,8 @@ import 'package:immich_mobile/presentation/widgets/images/thumbnail.widget.dart' import 'package:immich_mobile/presentation/widgets/timeline/constants.dart'; import 'package:immich_mobile/providers/infrastructure/setting.provider.dart'; import 'package:immich_mobile/providers/timeline/multiselect.provider.dart'; +import 'package:immich_mobile/providers/partner.provider.dart'; +import 'package:immich_mobile/utils/hash.dart'; class ThumbnailTile extends ConsumerWidget { const ThumbnailTile( @@ -45,6 +47,10 @@ class ThumbnailTile extends ConsumerWidget { final bool storageIndicator = ref.watch(settingsProvider.select((s) => s.get(Setting.showStorageIndicator))) && showStorageIndicator; + final isPartnerShared = asset is RemoteAsset + ? ref.watch(partnerSharedWithProvider).map((e) => fastHash(e.id)).contains(fastHash(asset.ownerId)) + : false; + return Stack( children: [ Container(color: lockSelection ? context.colorScheme.surfaceContainerHighest : assetContainerColor), @@ -96,7 +102,7 @@ class ThumbnailTile extends ConsumerWidget { ), ), }, - if (asset != null && asset.isFavorite) + if (asset != null && asset.isFavorite && !isPartnerShared) const Align( alignment: Alignment.bottomLeft, child: Padding( diff --git a/mobile/lib/widgets/asset_grid/thumbnail_image.dart b/mobile/lib/widgets/asset_grid/thumbnail_image.dart index 93385b88b3..c64e4a7a7a 100644 --- a/mobile/lib/widgets/asset_grid/thumbnail_image.dart +++ b/mobile/lib/widgets/asset_grid/thumbnail_image.dart @@ -1,12 +1,15 @@ import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/constants/constants.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/extensions/duration_extensions.dart'; import 'package:immich_mobile/extensions/theme_extensions.dart'; import 'package:immich_mobile/widgets/common/immich_thumbnail.dart'; +import 'package:immich_mobile/providers/partner.provider.dart'; +import 'package:immich_mobile/utils/hash.dart'; -class ThumbnailImage extends StatelessWidget { +class ThumbnailImage extends ConsumerWidget { /// The asset to show the thumbnail image for final Asset asset; @@ -40,11 +43,13 @@ class ThumbnailImage extends StatelessWidget { }); @override - Widget build(BuildContext context) { + Widget build(BuildContext context, WidgetRef ref) { final assetContainerColor = context.isDarkTheme ? context.primaryColor.darken(amount: 0.6) : context.primaryColor.lighten(amount: 0.8); + final isPartnerShared = ref.watch(partnerSharedWithProvider).map((e) => fastHash(e.id)).contains(asset.ownerId); + return Stack( children: [ AnimatedContainer( @@ -73,7 +78,7 @@ class ThumbnailImage extends StatelessWidget { isSelected: isSelected, ), if (showStorageIndicator) _StorageIcon(storage: asset.storage), - if (asset.isFavorite) + if (asset.isFavorite && !isPartnerShared) const Positioned(left: 8, bottom: 5, child: Icon(Icons.favorite, color: Colors.white, size: 16)), if (asset.isVideo) _VideoIcon(duration: asset.duration), if (asset.stackCount > 0) _StackIcon(isVideo: asset.isVideo, stackCount: asset.stackCount),