mirror of
https://github.com/immich-app/immich.git
synced 2025-07-03 21:40:00 +02:00
feat(mobile): sqlite timeline (#19197)
* wip: timeline * more segment extensions * added scrubber * refactor: timeline state * more refactors * fix scrubber segments * added remote thumb & thumbhash provider * feat: merged view * scrub / merged asset fixes * rename stuff & add tile indicators * fix local album timeline query * ignore hidden assets during sync * ignore recovered assets during sync * old scrubber * add video indicator * handle groupBy * handle partner inTimeline * show duration * reduce widget nesting in thumb tile * merge main * chore: extend cacheExtent * ignore touch events on scrub label when not visible * scrub label ignore events and hide immediately * auto reload on sync * refactor image providers * throttle db updates --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
This commit is contained in:
parent
7347f64958
commit
bcda2c6e22
50 changed files with 2921 additions and 59 deletions
mobile/lib/routing
|
@ -64,6 +64,8 @@ import 'package:immich_mobile/pages/search/recently_taken.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/presentation/pages/dev/feat_in_development.page.dart';
|
||||
import 'package:immich_mobile/presentation/pages/dev/local_timeline.page.dart';
|
||||
import 'package:immich_mobile/presentation/pages/dev/main_timeline.page.dart';
|
||||
import 'package:immich_mobile/presentation/pages/dev/media_stat.page.dart';
|
||||
import 'package:immich_mobile/providers/api.provider.dart';
|
||||
import 'package:immich_mobile/providers/gallery_permission.provider.dart';
|
||||
|
@ -330,5 +332,13 @@ class AppRouter extends RootStackRouter {
|
|||
page: RemoteMediaSummaryRoute.page,
|
||||
guards: [_authGuard, _duplicateGuard],
|
||||
),
|
||||
AutoRoute(
|
||||
page: LocalTimelineRoute.page,
|
||||
guards: [_authGuard, _duplicateGuard],
|
||||
),
|
||||
AutoRoute(
|
||||
page: MainTimelineRoute.page,
|
||||
guards: [_authGuard, _duplicateGuard],
|
||||
),
|
||||
];
|
||||
}
|
||||
|
|
|
@ -871,6 +871,43 @@ class LocalMediaSummaryRoute extends PageRouteInfo<void> {
|
|||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [LocalTimelinePage]
|
||||
class LocalTimelineRoute extends PageRouteInfo<LocalTimelineRouteArgs> {
|
||||
LocalTimelineRoute({
|
||||
Key? key,
|
||||
required String albumId,
|
||||
List<PageRouteInfo>? children,
|
||||
}) : super(
|
||||
LocalTimelineRoute.name,
|
||||
args: LocalTimelineRouteArgs(key: key, albumId: albumId),
|
||||
initialChildren: children,
|
||||
);
|
||||
|
||||
static const String name = 'LocalTimelineRoute';
|
||||
|
||||
static PageInfo page = PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
final args = data.argsAs<LocalTimelineRouteArgs>();
|
||||
return LocalTimelinePage(key: args.key, albumId: args.albumId);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
class LocalTimelineRouteArgs {
|
||||
const LocalTimelineRouteArgs({this.key, required this.albumId});
|
||||
|
||||
final Key? key;
|
||||
|
||||
final String albumId;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'LocalTimelineRouteArgs{key: $key, albumId: $albumId}';
|
||||
}
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [LockedPage]
|
||||
class LockedRoute extends PageRouteInfo<void> {
|
||||
|
@ -903,6 +940,22 @@ class LoginRoute extends PageRouteInfo<void> {
|
|||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [MainTimelinePage]
|
||||
class MainTimelineRoute extends PageRouteInfo<void> {
|
||||
const MainTimelineRoute({List<PageRouteInfo>? children})
|
||||
: super(MainTimelineRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'MainTimelineRoute';
|
||||
|
||||
static PageInfo page = PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const MainTimelinePage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [MapLocationPickerPage]
|
||||
class MapLocationPickerRoute extends PageRouteInfo<MapLocationPickerRouteArgs> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue