adapt to more pages

This commit is contained in:
Alex
2025-07-08 12:58:38 -05:00
parent 8987b2de17
commit 596a3bd689
17 changed files with 248 additions and 298 deletions
@@ -1,5 +1,5 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/extensions/translate_extensions.dart';
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
@@ -32,6 +32,7 @@ class DriftArchivePage extends StatelessWidget {
child: Timeline(
appBar: MesmerizingSliverAppBar(
title: 'archive'.t(context: context),
icon: Icons.archive_outlined, // Icon for the archive page
),
),
);
@@ -32,6 +32,7 @@ class DriftFavoritePage extends StatelessWidget {
child: Timeline(
appBar: MesmerizingSliverAppBar(
title: 'favorites'.t(context: context),
icon: Icons.favorite_outline,
),
),
);
@@ -103,7 +103,7 @@ class _AlbumList extends ConsumerWidget {
),
),
onTap: () =>
context.pushRoute(LocalTimelineRoute(albumId: album.id)),
context.pushRoute(LocalTimelineRoute(album: album)),
),
);
},
@@ -1,6 +1,8 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/extensions/translate_extensions.dart';
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
@@ -27,7 +29,16 @@ class DriftTrashPage extends StatelessWidget {
},
),
],
child: const Timeline(),
child: Timeline(
appBar: SliverAppBar(
title: Text('trash'.t(context: context)),
floating: true,
snap: true,
pinned: true,
centerTitle: true,
elevation: 0,
),
),
);
}
}
@@ -1,14 +1,16 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/widgets.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/album/local_album.model.dart';
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
import 'package:immich_mobile/widgets/common/mesmerizing_sliver_app_bar.dart';
@RoutePage()
class LocalTimelinePage extends StatelessWidget {
final String albumId;
final LocalAlbum album;
const LocalTimelinePage({super.key, required this.albumId});
const LocalTimelinePage({super.key, required this.album});
@override
Widget build(BuildContext context) {
@@ -16,14 +18,17 @@ class LocalTimelinePage extends StatelessWidget {
overrides: [
timelineServiceProvider.overrideWith(
(ref) {
final timelineService =
ref.watch(timelineFactoryProvider).localAlbum(albumId: albumId);
final timelineService = ref
.watch(timelineFactoryProvider)
.localAlbum(albumId: album.id);
ref.onDispose(timelineService.dispose);
return timelineService;
},
),
],
child: const Timeline(),
child: Timeline(
appBar: MesmerizingSliverAppBar(title: album.name),
),
);
}
}
@@ -125,7 +125,7 @@ class LocalMediaSummaryPage extends StatelessWidget {
name: album.name,
countFuture: countFuture,
onTap: () => context.router.push(
LocalTimelineRoute(albumId: album.id),
LocalTimelineRoute(album: album),
),
);
},
@@ -226,7 +226,7 @@ class RemoteMediaSummaryPage extends StatelessWidget {
name: album.name,
countFuture: countFuture,
onTap: () => context.router.push(
RemoteTimelineRoute(albumId: album.id),
RemoteTimelineRoute(album: album),
),
);
},
@@ -1,14 +1,16 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/album/album.model.dart';
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
import 'package:immich_mobile/widgets/common/mesmerizing_sliver_app_bar.dart';
@RoutePage()
class RemoteTimelinePage extends StatelessWidget {
final String albumId;
final RemoteAlbum album;
const RemoteTimelinePage({super.key, required this.albumId});
const RemoteTimelinePage({super.key, required this.album});
@override
Widget build(BuildContext context) {
@@ -18,13 +20,18 @@ class RemoteTimelinePage extends StatelessWidget {
(ref) {
final timelineService = ref
.watch(timelineFactoryProvider)
.remoteAlbum(albumId: albumId);
.remoteAlbum(albumId: album.id);
ref.onDispose(timelineService.dispose);
return timelineService;
},
),
],
child: const Timeline(),
child: Timeline(
appBar: MesmerizingSliverAppBar(
title: album.name,
icon: Icons.photo_album_outlined,
),
),
);
}
}
@@ -475,7 +475,7 @@ class _AlbumList extends StatelessWidget {
final bool isLoading;
final String? error;
final List<Album> albums;
final List<RemoteAlbum> albums;
final String? userId;
@override
@@ -555,7 +555,7 @@ class _AlbumList extends StatelessWidget {
),
),
onTap: () => context.router.push(
RemoteTimelineRoute(albumId: album.id),
RemoteTimelineRoute(album: album),
),
leadingPadding: const EdgeInsets.only(
right: 16,
@@ -573,13 +573,24 @@ class _AlbumList extends StatelessWidget {
),
),
)
: const SizedBox(
: SizedBox(
width: 80,
height: 80,
child: Icon(
Icons.photo_album_rounded,
size: 40,
color: Colors.grey,
child: Container(
decoration: BoxDecoration(
color: context.colorScheme.surfaceContainer,
borderRadius:
const BorderRadius.all(Radius.circular(16)),
border: Border.all(
color: context.colorScheme.outline.withAlpha(50),
width: 1,
),
),
child: const Icon(
Icons.photo_album_rounded,
size: 24,
color: Colors.grey,
),
),
),
),
@@ -599,7 +610,7 @@ class _AlbumGrid extends StatelessWidget {
required this.error,
});
final List<Album> albums;
final List<RemoteAlbum> albums;
final String? userId;
final bool isLoading;
final String? error;
@@ -674,14 +685,14 @@ class _GridAlbumCard extends StatelessWidget {
required this.userId,
});
final Album album;
final RemoteAlbum album;
final String? userId;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () => context.router.push(
RemoteTimelineRoute(albumId: album.id),
RemoteTimelineRoute(album: album),
),
child: Card(
elevation: 0,