feat(mobile): drift partner detail page (#19815)

* feat(mobile): drift partner detail page

* fix: lint
This commit is contained in:
Daimolean 2025-07-08 23:31:07 +08:00 committed by GitHub
parent 172388c455
commit e703685d8d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 74 additions and 1 deletions

View File

@ -0,0 +1,29 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/widgets.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
@RoutePage()
class DriftPartnerDetailPage extends StatelessWidget {
final String partnerId;
const DriftPartnerDetailPage({super.key, required this.partnerId});
@override
Widget build(BuildContext context) {
return ProviderScope(
overrides: [
timelineServiceProvider.overrideWith(
(ref) {
final timelineService =
ref.watch(timelineFactoryProvider).remoteAssets(partnerId);
ref.onDispose(timelineService.dispose);
return timelineService;
},
),
],
child: const Timeline(),
);
}
}

View File

@ -493,7 +493,8 @@ class _PartnerList extends StatelessWidget {
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
), ),
).t(context: context, args: {'user': partner.name}), ).t(context: context, args: {'user': partner.name}),
onTap: () => context.pushRoute(PartnerDetailRoute(partner: partner)), onTap: () =>
context.pushRoute(DriftPartnerDetailRoute(partnerId: partner.id)),
); );
}, },
); );

View File

@ -68,6 +68,7 @@ import 'package:immich_mobile/pages/search/recently_taken.page.dart';
import 'package:immich_mobile/pages/search/search.page.dart'; import 'package:immich_mobile/pages/search/search.page.dart';
import 'package:immich_mobile/pages/share_intent/share_intent.page.dart'; import 'package:immich_mobile/pages/share_intent/share_intent.page.dart';
import 'package:immich_mobile/presentation/pages/dev/drift_favorite.page.dart'; import 'package:immich_mobile/presentation/pages/dev/drift_favorite.page.dart';
import 'package:immich_mobile/presentation/pages/dev/drift_partner_detail.page.dart';
import 'package:immich_mobile/presentation/pages/dev/drift_recently_taken.page.dart'; import 'package:immich_mobile/presentation/pages/dev/drift_recently_taken.page.dart';
import 'package:immich_mobile/presentation/pages/dev/drift_video.page.dart'; import 'package:immich_mobile/presentation/pages/dev/drift_video.page.dart';
import 'package:immich_mobile/presentation/pages/dev/drift_trash.page.dart'; import 'package:immich_mobile/presentation/pages/dev/drift_trash.page.dart';
@ -429,6 +430,10 @@ class AppRouter extends RootStackRouter {
page: DriftAssetSelectionTimelineRoute.page, page: DriftAssetSelectionTimelineRoute.page,
guards: [_authGuard, _duplicateGuard], guards: [_authGuard, _duplicateGuard],
), ),
AutoRoute(
page: DriftPartnerDetailRoute.page,
guards: [_authGuard, _duplicateGuard],
),
AutoRoute( AutoRoute(
page: DriftRecentlyTakenRoute.page, page: DriftRecentlyTakenRoute.page,
guards: [_authGuard, _duplicateGuard], guards: [_authGuard, _duplicateGuard],

View File

@ -783,6 +783,44 @@ class DriftMemoryRouteArgs {
} }
} }
/// generated route for
/// [DriftPartnerDetailPage]
class DriftPartnerDetailRoute
extends PageRouteInfo<DriftPartnerDetailRouteArgs> {
DriftPartnerDetailRoute({
Key? key,
required String partnerId,
List<PageRouteInfo>? children,
}) : super(
DriftPartnerDetailRoute.name,
args: DriftPartnerDetailRouteArgs(key: key, partnerId: partnerId),
initialChildren: children,
);
static const String name = 'DriftPartnerDetailRoute';
static PageInfo page = PageInfo(
name,
builder: (data) {
final args = data.argsAs<DriftPartnerDetailRouteArgs>();
return DriftPartnerDetailPage(key: args.key, partnerId: args.partnerId);
},
);
}
class DriftPartnerDetailRouteArgs {
const DriftPartnerDetailRouteArgs({this.key, required this.partnerId});
final Key? key;
final String partnerId;
@override
String toString() {
return 'DriftPartnerDetailRouteArgs{key: $key, partnerId: $partnerId}';
}
}
/// generated route for /// generated route for
/// [DriftRecentlyTakenPage] /// [DriftRecentlyTakenPage]
class DriftRecentlyTakenRoute extends PageRouteInfo<void> { class DriftRecentlyTakenRoute extends PageRouteInfo<void> {