This commit is contained in:
Dmitry 2025-10-17 08:17:57 -04:00 committed by GitHub
commit 0a3a2b038c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 43 additions and 16 deletions

View file

@ -34,8 +34,6 @@ class _DriftActivityTextFieldState extends ConsumerState<DriftActivityTextField>
inputController = TextEditingController();
inputFocusNode = FocusNode();
inputFocusNode.requestFocus();
inputFocusNode.addListener(() {
if (inputFocusNode.hasFocus) {
widget.onKeyboardFocus?.call();

View file

@ -1,10 +1,17 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/entities/store.entity.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/extensions/datetime_extensions.dart';
import 'package:immich_mobile/models/activities/activity.model.dart';
import 'package:immich_mobile/providers/image/immich_remote_thumbnail_provider.dart';
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_viewer.page.dart';
import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
import 'package:immich_mobile/providers/image/immich_remote_thumbnail_provider.dart';
import 'package:immich_mobile/providers/infrastructure/asset.provider.dart';
import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asset.provider.dart';
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/widgets/common/user_circle_avatar.dart';
class ActivityTile extends HookConsumerWidget {
@ -14,11 +21,17 @@ class ActivityTile extends HookConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final asset = ref.watch(currentAssetProvider);
final isLike = activity.type == ActivityType.like;
// Asset thumbnail is displayed when we are accessing activities from the album page
// currentAssetProvider will not be set until we open the gallery viewer
final showAssetThumbnail = asset == null && activity.assetId != null;
bool showAssetThumbnail = false;
if (Store.isBetaTimelineEnabled) {
final asset = ref.watch(currentAssetNotifier);
showAssetThumbnail = asset == null && activity.assetId != null;
} else {
final asset = ref.watch(currentAssetProvider);
showAssetThumbnail = asset == null && activity.assetId != null;
}
return ListTile(
minVerticalPadding: 15,
@ -73,24 +86,40 @@ class _ActivityTitle extends StatelessWidget {
}
}
class _ActivityAssetThumbnail extends StatelessWidget {
class _ActivityAssetThumbnail extends ConsumerWidget {
final String assetId;
const _ActivityAssetThumbnail(this.assetId);
@override
Widget build(BuildContext context) {
return Container(
width: 40,
height: 30,
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(4)),
image: DecorationImage(
image: ImmichRemoteThumbnailProvider(assetId: assetId),
fit: BoxFit.cover,
Widget build(BuildContext context, WidgetRef ref) {
Future<void> onAssetTapped() async {
final asset = await ref.read(assetServiceProvider).getRemoteAsset(assetId);
if (asset == null) {
return;
}
// TODO: remove this check when old timeline is removed
if (Store.isBetaTimelineEnabled) {
AssetViewer.setAsset(ref, asset);
final timelineService = ref.read(timelineFactoryProvider).fromAssets([asset]);
context.pushRoute(AssetViewerRoute(initialIndex: 0, timelineService: timelineService));
}
}
return GestureDetector(
onTap: onAssetTapped,
child: Container(
width: 40,
height: 30,
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(4)),
image: DecorationImage(
image: ImmichRemoteThumbnailProvider(assetId: assetId),
fit: BoxFit.cover,
),
),
),
child: const SizedBox.shrink(),
);
}
}