mirror of
https://github.com/immich-app/immich.git
synced 2025-07-09 03:06:56 -04:00
Added collection pages
This commit is contained in:
parent
c886fcab74
commit
9d6a177547
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -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/extensions/build_context_extensions.dart';
|
||||||
import 'package:immich_mobile/providers/album/album.provider.dart';
|
import 'package:immich_mobile/providers/album/album.provider.dart';
|
||||||
import 'package:immich_mobile/providers/search/people.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/services/api.service.dart';
|
||||||
import 'package:immich_mobile/utils/image_url_builder.dart';
|
import 'package:immich_mobile/utils/image_url_builder.dart';
|
||||||
import 'package:immich_mobile/widgets/album/album_thumbnail_card.dart';
|
import 'package:immich_mobile/widgets/album/album_thumbnail_card.dart';
|
||||||
@ -31,13 +32,13 @@ class CollectionsPage extends StatelessWidget {
|
|||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
ActionButton(
|
ActionButton(
|
||||||
onPressed: () {},
|
onPressed: () => context.pushRoute(const FavoritesRoute()),
|
||||||
icon: Icons.favorite_outline_rounded,
|
icon: Icons.favorite_outline_rounded,
|
||||||
label: 'Favorite',
|
label: 'Favorite',
|
||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
ActionButton(
|
ActionButton(
|
||||||
onPressed: () {},
|
onPressed: () => context.pushRoute(const ArchiveRoute()),
|
||||||
icon: Icons.archive_outlined,
|
icon: Icons.archive_outlined,
|
||||||
label: 'Archive',
|
label: 'Archive',
|
||||||
),
|
),
|
||||||
@ -47,13 +48,13 @@ class CollectionsPage extends StatelessWidget {
|
|||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
ActionButton(
|
ActionButton(
|
||||||
onPressed: () {},
|
onPressed: () => context.pushRoute(const SharedLinkRoute()),
|
||||||
icon: Icons.link_outlined,
|
icon: Icons.link_outlined,
|
||||||
label: 'Shared links',
|
label: 'Shared links',
|
||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
ActionButton(
|
ActionButton(
|
||||||
onPressed: () {},
|
onPressed: () => context.pushRoute(const TrashRoute()),
|
||||||
icon: Icons.delete_outline_rounded,
|
icon: Icons.delete_outline_rounded,
|
||||||
label: 'Trash',
|
label: 'Trash',
|
||||||
),
|
),
|
||||||
@ -85,13 +86,13 @@ class PeopleCollectionCard extends ConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final people = ref.watch(getAllPeopleProvider);
|
final people = ref.watch(getAllPeopleProvider);
|
||||||
|
final size = MediaQuery.of(context).size.width * 0.5 - 20;
|
||||||
return Column(
|
return Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
height: MediaQuery.of(context).size.width * 0.5 - 20,
|
height: size,
|
||||||
width: MediaQuery.of(context).size.width * 0.5 - 20,
|
width: size,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(20),
|
borderRadius: BorderRadius.circular(20),
|
||||||
color: context.colorScheme.secondaryContainer.withAlpha(100),
|
color: context.colorScheme.secondaryContainer.withAlpha(100),
|
||||||
@ -135,13 +136,13 @@ class AlbumsCollectionCard extends ConsumerWidget {
|
|||||||
final albums = isLocal
|
final albums = isLocal
|
||||||
? ref.watch(albumProvider).where((album) => album.isLocal)
|
? ref.watch(albumProvider).where((album) => album.isLocal)
|
||||||
: ref.watch(albumProvider).where((album) => album.isRemote);
|
: ref.watch(albumProvider).where((album) => album.isRemote);
|
||||||
|
final size = MediaQuery.of(context).size.width * 0.5 - 20;
|
||||||
return Column(
|
return Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
height: MediaQuery.of(context).size.width * 0.5 - 20,
|
height: size,
|
||||||
width: MediaQuery.of(context).size.width * 0.5 - 20,
|
width: size,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(20),
|
borderRadius: BorderRadius.circular(20),
|
||||||
color: context.colorScheme.secondaryContainer.withAlpha(100),
|
color: context.colorScheme.secondaryContainer.withAlpha(100),
|
||||||
@ -189,10 +190,10 @@ class PlacesCollectionCard extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
child: IgnorePointer(
|
child: IgnorePointer(
|
||||||
child: MapThumbnail(
|
child: MapThumbnail(
|
||||||
zoom: 5,
|
zoom: 8,
|
||||||
centre: const LatLng(
|
centre: const LatLng(
|
||||||
47,
|
21.44950,
|
||||||
5,
|
-157.91959,
|
||||||
),
|
),
|
||||||
showAttribution: false,
|
showAttribution: false,
|
||||||
themeMode: context.isDarkTheme ? ThemeMode.dark : ThemeMode.light,
|
themeMode: context.isDarkTheme ? ThemeMode.dark : ThemeMode.light,
|
||||||
|
@ -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_controller.page.dart';
|
||||||
import 'package:immich_mobile/pages/backup/backup_options.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/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/collections/collections.page.dart';
|
||||||
import 'package:immich_mobile/pages/common/activities.page.dart';
|
import 'package:immich_mobile/pages/common/activities.page.dart';
|
||||||
import 'package:immich_mobile/pages/common/album_additional_shared_user_selection.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,
|
page: HeaderSettingsRoute.page,
|
||||||
guards: [_duplicateGuard],
|
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],
|
||||||
|
),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,6 +319,25 @@ class AlbumViewerRouteArgs {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// generated route for
|
||||||
|
/// [AlbumsCollectionPage]
|
||||||
|
class AlbumsCollectionRoute extends PageRouteInfo<void> {
|
||||||
|
const AlbumsCollectionRoute({List<PageRouteInfo>? children})
|
||||||
|
: super(
|
||||||
|
AlbumsCollectionRoute.name,
|
||||||
|
initialChildren: children,
|
||||||
|
);
|
||||||
|
|
||||||
|
static const String name = 'AlbumsCollectionRoute';
|
||||||
|
|
||||||
|
static PageInfo page = PageInfo(
|
||||||
|
name,
|
||||||
|
builder: (data) {
|
||||||
|
return const AlbumsCollectionPage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [AllMotionPhotosPage]
|
/// [AllMotionPhotosPage]
|
||||||
class AllMotionPhotosRoute extends PageRouteInfo<void> {
|
class AllMotionPhotosRoute extends PageRouteInfo<void> {
|
||||||
@ -876,6 +895,25 @@ class LibraryRoute extends PageRouteInfo<void> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// generated route for
|
||||||
|
/// [LocalAlbumsCollectionPage]
|
||||||
|
class LocalAlbumsCollectionRoute extends PageRouteInfo<void> {
|
||||||
|
const LocalAlbumsCollectionRoute({List<PageRouteInfo>? children})
|
||||||
|
: super(
|
||||||
|
LocalAlbumsCollectionRoute.name,
|
||||||
|
initialChildren: children,
|
||||||
|
);
|
||||||
|
|
||||||
|
static const String name = 'LocalAlbumsCollectionRoute';
|
||||||
|
|
||||||
|
static PageInfo page = PageInfo(
|
||||||
|
name,
|
||||||
|
builder: (data) {
|
||||||
|
return const LocalAlbumsCollectionPage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [LoginPage]
|
/// [LoginPage]
|
||||||
class LoginRoute extends PageRouteInfo<void> {
|
class LoginRoute extends PageRouteInfo<void> {
|
||||||
@ -1078,6 +1116,25 @@ class PartnerRoute extends PageRouteInfo<void> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// generated route for
|
||||||
|
/// [PeopleCollectionPage]
|
||||||
|
class PeopleCollectionRoute extends PageRouteInfo<void> {
|
||||||
|
const PeopleCollectionRoute({List<PageRouteInfo>? children})
|
||||||
|
: super(
|
||||||
|
PeopleCollectionRoute.name,
|
||||||
|
initialChildren: children,
|
||||||
|
);
|
||||||
|
|
||||||
|
static const String name = 'PeopleCollectionRoute';
|
||||||
|
|
||||||
|
static PageInfo page = PageInfo(
|
||||||
|
name,
|
||||||
|
builder: (data) {
|
||||||
|
return const PeopleCollectionPage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [PermissionOnboardingPage]
|
/// [PermissionOnboardingPage]
|
||||||
class PermissionOnboardingRoute extends PageRouteInfo<void> {
|
class PermissionOnboardingRoute extends PageRouteInfo<void> {
|
||||||
@ -1168,6 +1225,25 @@ class PhotosRoute extends PageRouteInfo<void> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// generated route for
|
||||||
|
/// [PlacesCollectionPage]
|
||||||
|
class PlacesCollectionRoute extends PageRouteInfo<void> {
|
||||||
|
const PlacesCollectionRoute({List<PageRouteInfo>? children})
|
||||||
|
: super(
|
||||||
|
PlacesCollectionRoute.name,
|
||||||
|
initialChildren: children,
|
||||||
|
);
|
||||||
|
|
||||||
|
static const String name = 'PlacesCollectionRoute';
|
||||||
|
|
||||||
|
static PageInfo page = PageInfo(
|
||||||
|
name,
|
||||||
|
builder: (data) {
|
||||||
|
return const PlacesCollectionPage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [RecentlyAddedPage]
|
/// [RecentlyAddedPage]
|
||||||
class RecentlyAddedRoute extends PageRouteInfo<void> {
|
class RecentlyAddedRoute extends PageRouteInfo<void> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user