1
0
mirror of https://github.com/immich-app/immich.git synced 2025-08-07 23:03:36 +02:00

feat: memories in new timeline (#19720)

* feat: memories sliver

* memories lane

* display and show memory

* fix: get correct memories

* naming

* pr feedback

* use equalsValue for visibility

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
Alex
2025-07-04 13:49:15 -05:00
committed by GitHub
parent 181efb9010
commit 4a2cf28882
15 changed files with 958 additions and 74 deletions

View File

@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/log.model.dart';
import 'package:immich_mobile/domain/models/memory.model.dart';
import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/domain/services/timeline.service.dart';
import 'package:immich_mobile/entities/album.entity.dart';
@ -71,6 +72,7 @@ import 'package:immich_mobile/presentation/pages/dev/main_timeline.page.dart';
import 'package:immich_mobile/presentation/pages/dev/media_stat.page.dart';
import 'package:immich_mobile/presentation/pages/dev/remote_timeline.page.dart';
import 'package:immich_mobile/presentation/pages/drift_album.page.dart';
import 'package:immich_mobile/presentation/pages/drift_memory.page.dart';
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_viewer.page.dart';
import 'package:immich_mobile/providers/api.provider.dart';
import 'package:immich_mobile/providers/gallery_permission.provider.dart';
@ -83,6 +85,7 @@ import 'package:immich_mobile/services/api.service.dart';
import 'package:immich_mobile/services/local_auth.service.dart';
import 'package:immich_mobile/services/secure_storage.service.dart';
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
import 'package:maplibre_gl/maplibre_gl.dart';
part 'router.gr.dart';
@ -385,6 +388,11 @@ class AppRouter extends RootStackRouter {
),
),
),
AutoRoute(
page: DriftMemoryRoute.page,
guards: [_authGuard, _duplicateGuard],
),
// required to handle all deeplinks in deep_link.service.dart
// auto_route_library#1722
RedirectRoute(path: '*', redirectTo: '/'),

View File

@ -618,6 +618,58 @@ class DriftAlbumsRoute extends PageRouteInfo<void> {
);
}
/// generated route for
/// [DriftMemoryPage]
class DriftMemoryRoute extends PageRouteInfo<DriftMemoryRouteArgs> {
DriftMemoryRoute({
required List<DriftMemory> memories,
required int memoryIndex,
Key? key,
List<PageRouteInfo>? children,
}) : super(
DriftMemoryRoute.name,
args: DriftMemoryRouteArgs(
memories: memories,
memoryIndex: memoryIndex,
key: key,
),
initialChildren: children,
);
static const String name = 'DriftMemoryRoute';
static PageInfo page = PageInfo(
name,
builder: (data) {
final args = data.argsAs<DriftMemoryRouteArgs>();
return DriftMemoryPage(
memories: args.memories,
memoryIndex: args.memoryIndex,
key: args.key,
);
},
);
}
class DriftMemoryRouteArgs {
const DriftMemoryRouteArgs({
required this.memories,
required this.memoryIndex,
this.key,
});
final List<DriftMemory> memories;
final int memoryIndex;
final Key? key;
@override
String toString() {
return 'DriftMemoryRouteArgs{memories: $memories, memoryIndex: $memoryIndex, key: $key}';
}
}
/// generated route for
/// [EditImagePage]
class EditImageRoute extends PageRouteInfo<EditImageRouteArgs> {