fix(mobile): hide favorite icon in partner shared library views

pull/24651/head
timonrieger 2025-12-17 21:50:03 +01:00
parent a02adbb828
commit 0f7938197e
No known key found for this signature in database
2 changed files with 15 additions and 4 deletions

View File

@ -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(

View File

@ -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),