feat: people page/sheet/detail (#20309)

This commit is contained in:
Alex 2025-07-29 22:07:53 -05:00 committed by GitHub
parent 268b411a6f
commit 29f16c6a47
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 1562 additions and 97 deletions

View file

@ -22,6 +22,7 @@ class AppNavigationObserver extends AutoRouterObserver {
Future(() {
ref.read(currentRouteNameProvider.notifier).state = route.settings.name;
ref.read(previousRouteNameProvider.notifier).state = previousRoute?.settings.name;
ref.read(previousRouteDataProvider.notifier).state = previousRoute?.settings;
});
}

View file

@ -6,6 +6,7 @@ import 'package:immich_mobile/domain/models/album/local_album.model.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.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/person.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';
@ -88,6 +89,8 @@ import 'package:immich_mobile/presentation/pages/drift_local_album.page.dart';
import 'package:immich_mobile/presentation/pages/drift_locked_folder.page.dart';
import 'package:immich_mobile/presentation/pages/drift_memory.page.dart';
import 'package:immich_mobile/presentation/pages/drift_partner_detail.page.dart';
import 'package:immich_mobile/presentation/pages/drift_people_collection.page.dart';
import 'package:immich_mobile/presentation/pages/drift_person.page.dart';
import 'package:immich_mobile/presentation/pages/drift_place.page.dart';
import 'package:immich_mobile/presentation/pages/drift_place_detail.page.dart';
import 'package:immich_mobile/presentation/pages/drift_recently_taken.page.dart';
@ -323,6 +326,9 @@ class AppRouter extends RootStackRouter {
AutoRoute(page: DriftPartnerRoute.page, guards: [_authGuard, _duplicateGuard]),
AutoRoute(page: DriftUploadDetailRoute.page, guards: [_authGuard, _duplicateGuard]),
AutoRoute(page: BetaSyncSettingsRoute.page, guards: [_authGuard, _duplicateGuard]),
AutoRoute(page: DriftPeopleCollectionRoute.page, guards: [_authGuard, _duplicateGuard]),
AutoRoute(page: DriftPersonRoute.page, guards: [_authGuard]),
// required to handle all deeplinks in deep_link.service.dart
// auto_route_library#1722
RedirectRoute(path: '*', redirectTo: '/'),

View file

@ -966,6 +966,59 @@ class DriftPartnerRoute extends PageRouteInfo<void> {
);
}
/// generated route for
/// [DriftPeopleCollectionPage]
class DriftPeopleCollectionRoute extends PageRouteInfo<void> {
const DriftPeopleCollectionRoute({List<PageRouteInfo>? children})
: super(DriftPeopleCollectionRoute.name, initialChildren: children);
static const String name = 'DriftPeopleCollectionRoute';
static PageInfo page = PageInfo(
name,
builder: (data) {
return const DriftPeopleCollectionPage();
},
);
}
/// generated route for
/// [DriftPersonPage]
class DriftPersonRoute extends PageRouteInfo<DriftPersonRouteArgs> {
DriftPersonRoute({
Key? key,
required DriftPerson person,
List<PageRouteInfo>? children,
}) : super(
DriftPersonRoute.name,
args: DriftPersonRouteArgs(key: key, person: person),
initialChildren: children,
);
static const String name = 'DriftPersonRoute';
static PageInfo page = PageInfo(
name,
builder: (data) {
final args = data.argsAs<DriftPersonRouteArgs>();
return DriftPersonPage(key: args.key, person: args.person);
},
);
}
class DriftPersonRouteArgs {
const DriftPersonRouteArgs({this.key, required this.person});
final Key? key;
final DriftPerson person;
@override
String toString() {
return 'DriftPersonRouteArgs{key: $key, person: $person}';
}
}
/// generated route for
/// [DriftPlaceDetailPage]
class DriftPlaceDetailRoute extends PageRouteInfo<DriftPlaceDetailRouteArgs> {