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(); inputController = TextEditingController();
inputFocusNode = FocusNode(); inputFocusNode = FocusNode();
inputFocusNode.requestFocus();
inputFocusNode.addListener(() { inputFocusNode.addListener(() {
if (inputFocusNode.hasFocus) { if (inputFocusNode.hasFocus) {
widget.onKeyboardFocus?.call(); widget.onKeyboardFocus?.call();

View file

@ -1,10 +1,17 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.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/build_context_extensions.dart';
import 'package:immich_mobile/extensions/datetime_extensions.dart'; import 'package:immich_mobile/extensions/datetime_extensions.dart';
import 'package:immich_mobile/models/activities/activity.model.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/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'; import 'package:immich_mobile/widgets/common/user_circle_avatar.dart';
class ActivityTile extends HookConsumerWidget { class ActivityTile extends HookConsumerWidget {
@ -14,11 +21,17 @@ class ActivityTile extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final asset = ref.watch(currentAssetProvider);
final isLike = activity.type == ActivityType.like; final isLike = activity.type == ActivityType.like;
// Asset thumbnail is displayed when we are accessing activities from the album page // Asset thumbnail is displayed when we are accessing activities from the album page
// currentAssetProvider will not be set until we open the gallery viewer // 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( return ListTile(
minVerticalPadding: 15, minVerticalPadding: 15,
@ -73,24 +86,40 @@ class _ActivityTitle extends StatelessWidget {
} }
} }
class _ActivityAssetThumbnail extends StatelessWidget { class _ActivityAssetThumbnail extends ConsumerWidget {
final String assetId; final String assetId;
const _ActivityAssetThumbnail(this.assetId); const _ActivityAssetThumbnail(this.assetId);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context, WidgetRef ref) {
return Container( Future<void> onAssetTapped() async {
width: 40, final asset = await ref.read(assetServiceProvider).getRemoteAsset(assetId);
height: 30, if (asset == null) {
decoration: BoxDecoration( return;
borderRadius: const BorderRadius.all(Radius.circular(4)), }
image: DecorationImage(
image: ImmichRemoteThumbnailProvider(assetId: assetId), // TODO: remove this check when old timeline is removed
fit: BoxFit.cover, 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(),
); );
} }
} }