mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
Merge d766878a52 into cc1cd299f3
This commit is contained in:
commit
0a3a2b038c
2 changed files with 43 additions and 16 deletions
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue