From 9d6a177547c493dd2b30f2bcbcfb3b070e350858 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 6 Sep 2024 14:42:02 -0500 Subject: [PATCH] Added collection pages --- .../albums/albums_collection.page.dart | 12 +++ .../albums/local_albums_collection.page.dart | 12 +++ .../albums/people_collection.page.dart | 12 +++ .../albums/places_collection.part.dart | 12 +++ .../pages/collections/collections.page.dart | 27 +++---- mobile/lib/routing/router.dart | 20 +++++ mobile/lib/routing/router.gr.dart | 76 +++++++++++++++++++ 7 files changed, 158 insertions(+), 13 deletions(-) create mode 100644 mobile/lib/pages/collections/albums/albums_collection.page.dart create mode 100644 mobile/lib/pages/collections/albums/local_albums_collection.page.dart create mode 100644 mobile/lib/pages/collections/albums/people_collection.page.dart create mode 100644 mobile/lib/pages/collections/albums/places_collection.part.dart diff --git a/mobile/lib/pages/collections/albums/albums_collection.page.dart b/mobile/lib/pages/collections/albums/albums_collection.page.dart new file mode 100644 index 0000000000000..6e90ce862045b --- /dev/null +++ b/mobile/lib/pages/collections/albums/albums_collection.page.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +@RoutePage() +class AlbumsCollectionPage extends HookConsumerWidget { + const AlbumsCollectionPage({super.key}); + @override + Widget build(BuildContext context, WidgetRef ref) { + return Container(); + } +} diff --git a/mobile/lib/pages/collections/albums/local_albums_collection.page.dart b/mobile/lib/pages/collections/albums/local_albums_collection.page.dart new file mode 100644 index 0000000000000..2352ea3a568b9 --- /dev/null +++ b/mobile/lib/pages/collections/albums/local_albums_collection.page.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +@RoutePage() +class LocalAlbumsCollectionPage extends HookConsumerWidget { + const LocalAlbumsCollectionPage({super.key}); + @override + Widget build(BuildContext context, WidgetRef ref) { + return Container(); + } +} diff --git a/mobile/lib/pages/collections/albums/people_collection.page.dart b/mobile/lib/pages/collections/albums/people_collection.page.dart new file mode 100644 index 0000000000000..d5c58fb922dec --- /dev/null +++ b/mobile/lib/pages/collections/albums/people_collection.page.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +@RoutePage() +class PeopleCollectionPage extends HookConsumerWidget { + const PeopleCollectionPage({super.key}); + @override + Widget build(BuildContext context, WidgetRef ref) { + return Container(); + } +} diff --git a/mobile/lib/pages/collections/albums/places_collection.part.dart b/mobile/lib/pages/collections/albums/places_collection.part.dart new file mode 100644 index 0000000000000..9fce76c597c88 --- /dev/null +++ b/mobile/lib/pages/collections/albums/places_collection.part.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +@RoutePage() +class PlacesCollectionPage extends HookConsumerWidget { + const PlacesCollectionPage({super.key}); + @override + Widget build(BuildContext context, WidgetRef ref) { + return Container(); + } +} diff --git a/mobile/lib/pages/collections/collections.page.dart b/mobile/lib/pages/collections/collections.page.dart index b639fa2b5fbea..042287705f615 100644 --- a/mobile/lib/pages/collections/collections.page.dart +++ b/mobile/lib/pages/collections/collections.page.dart @@ -5,6 +5,7 @@ import 'package:immich_mobile/extensions/asyncvalue_extensions.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/providers/album/album.provider.dart'; import 'package:immich_mobile/providers/search/people.provider.dart'; +import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/services/api.service.dart'; import 'package:immich_mobile/utils/image_url_builder.dart'; import 'package:immich_mobile/widgets/album/album_thumbnail_card.dart'; @@ -31,13 +32,13 @@ class CollectionsPage extends StatelessWidget { Row( children: [ ActionButton( - onPressed: () {}, + onPressed: () => context.pushRoute(const FavoritesRoute()), icon: Icons.favorite_outline_rounded, label: 'Favorite', ), const SizedBox(width: 8), ActionButton( - onPressed: () {}, + onPressed: () => context.pushRoute(const ArchiveRoute()), icon: Icons.archive_outlined, label: 'Archive', ), @@ -47,13 +48,13 @@ class CollectionsPage extends StatelessWidget { Row( children: [ ActionButton( - onPressed: () {}, + onPressed: () => context.pushRoute(const SharedLinkRoute()), icon: Icons.link_outlined, label: 'Shared links', ), const SizedBox(width: 8), ActionButton( - onPressed: () {}, + onPressed: () => context.pushRoute(const TrashRoute()), icon: Icons.delete_outline_rounded, label: 'Trash', ), @@ -85,13 +86,13 @@ class PeopleCollectionCard extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final people = ref.watch(getAllPeopleProvider); - + final size = MediaQuery.of(context).size.width * 0.5 - 20; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - height: MediaQuery.of(context).size.width * 0.5 - 20, - width: MediaQuery.of(context).size.width * 0.5 - 20, + height: size, + width: size, decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), color: context.colorScheme.secondaryContainer.withAlpha(100), @@ -135,13 +136,13 @@ class AlbumsCollectionCard extends ConsumerWidget { final albums = isLocal ? ref.watch(albumProvider).where((album) => album.isLocal) : ref.watch(albumProvider).where((album) => album.isRemote); - + final size = MediaQuery.of(context).size.width * 0.5 - 20; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - height: MediaQuery.of(context).size.width * 0.5 - 20, - width: MediaQuery.of(context).size.width * 0.5 - 20, + height: size, + width: size, decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), color: context.colorScheme.secondaryContainer.withAlpha(100), @@ -189,10 +190,10 @@ class PlacesCollectionCard extends StatelessWidget { ), child: IgnorePointer( child: MapThumbnail( - zoom: 5, + zoom: 8, centre: const LatLng( - 47, - 5, + 21.44950, + -157.91959, ), showAttribution: false, themeMode: context.isDarkTheme ? ThemeMode.dark : ThemeMode.light, diff --git a/mobile/lib/routing/router.dart b/mobile/lib/routing/router.dart index 0d9842f2eccf1..1c93bd8d9234f 100644 --- a/mobile/lib/routing/router.dart +++ b/mobile/lib/routing/router.dart @@ -13,6 +13,10 @@ import 'package:immich_mobile/pages/backup/backup_album_selection.page.dart'; import 'package:immich_mobile/pages/backup/backup_controller.page.dart'; import 'package:immich_mobile/pages/backup/backup_options.page.dart'; import 'package:immich_mobile/pages/backup/failed_backup_status.page.dart'; +import 'package:immich_mobile/pages/collections/albums/albums_collection.page.dart'; +import 'package:immich_mobile/pages/collections/albums/local_albums_collection.page.dart'; +import 'package:immich_mobile/pages/collections/albums/people_collection.page.dart'; +import 'package:immich_mobile/pages/collections/albums/places_collection.part.dart'; import 'package:immich_mobile/pages/collections/collections.page.dart'; import 'package:immich_mobile/pages/common/activities.page.dart'; import 'package:immich_mobile/pages/common/album_additional_shared_user_selection.page.dart'; @@ -236,6 +240,22 @@ class AppRouter extends RootStackRouter { page: HeaderSettingsRoute.page, guards: [_duplicateGuard], ), + AutoRoute( + page: PeopleCollectionRoute.page, + guards: [_authGuard, _duplicateGuard], + ), + AutoRoute( + page: AlbumsCollectionRoute.page, + guards: [_authGuard, _duplicateGuard], + ), + AutoRoute( + page: LocalAlbumsCollectionRoute.page, + guards: [_authGuard, _duplicateGuard], + ), + AutoRoute( + page: PlacesCollectionRoute.page, + guards: [_authGuard, _duplicateGuard], + ), ]; } diff --git a/mobile/lib/routing/router.gr.dart b/mobile/lib/routing/router.gr.dart index 1e4dcee1254fd..16f65f948ba8f 100644 --- a/mobile/lib/routing/router.gr.dart +++ b/mobile/lib/routing/router.gr.dart @@ -319,6 +319,25 @@ class AlbumViewerRouteArgs { } } +/// generated route for +/// [AlbumsCollectionPage] +class AlbumsCollectionRoute extends PageRouteInfo { + const AlbumsCollectionRoute({List? children}) + : super( + AlbumsCollectionRoute.name, + initialChildren: children, + ); + + static const String name = 'AlbumsCollectionRoute'; + + static PageInfo page = PageInfo( + name, + builder: (data) { + return const AlbumsCollectionPage(); + }, + ); +} + /// generated route for /// [AllMotionPhotosPage] class AllMotionPhotosRoute extends PageRouteInfo { @@ -876,6 +895,25 @@ class LibraryRoute extends PageRouteInfo { ); } +/// generated route for +/// [LocalAlbumsCollectionPage] +class LocalAlbumsCollectionRoute extends PageRouteInfo { + const LocalAlbumsCollectionRoute({List? children}) + : super( + LocalAlbumsCollectionRoute.name, + initialChildren: children, + ); + + static const String name = 'LocalAlbumsCollectionRoute'; + + static PageInfo page = PageInfo( + name, + builder: (data) { + return const LocalAlbumsCollectionPage(); + }, + ); +} + /// generated route for /// [LoginPage] class LoginRoute extends PageRouteInfo { @@ -1078,6 +1116,25 @@ class PartnerRoute extends PageRouteInfo { ); } +/// generated route for +/// [PeopleCollectionPage] +class PeopleCollectionRoute extends PageRouteInfo { + const PeopleCollectionRoute({List? children}) + : super( + PeopleCollectionRoute.name, + initialChildren: children, + ); + + static const String name = 'PeopleCollectionRoute'; + + static PageInfo page = PageInfo( + name, + builder: (data) { + return const PeopleCollectionPage(); + }, + ); +} + /// generated route for /// [PermissionOnboardingPage] class PermissionOnboardingRoute extends PageRouteInfo { @@ -1168,6 +1225,25 @@ class PhotosRoute extends PageRouteInfo { ); } +/// generated route for +/// [PlacesCollectionPage] +class PlacesCollectionRoute extends PageRouteInfo { + const PlacesCollectionRoute({List? children}) + : super( + PlacesCollectionRoute.name, + initialChildren: children, + ); + + static const String name = 'PlacesCollectionRoute'; + + static PageInfo page = PageInfo( + name, + builder: (data) { + return const PlacesCollectionPage(); + }, + ); +} + /// generated route for /// [RecentlyAddedPage] class RecentlyAddedRoute extends PageRouteInfo {