2025-02-21 09:01:46 -06:00
|
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
2025-02-25 11:33:48 -06:00
|
|
|
import 'package:immich_mobile/entities/asset.entity.dart';
|
2025-02-21 09:01:46 -06:00
|
|
|
import 'package:immich_mobile/providers/album/album.provider.dart';
|
|
|
|
|
import 'package:immich_mobile/providers/locale_provider.dart';
|
|
|
|
|
import 'package:immich_mobile/services/timeline.service.dart';
|
|
|
|
|
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
|
|
|
|
|
|
2025-07-29 00:34:03 +05:30
|
|
|
final singleUserTimelineProvider = StreamProvider.family<RenderList, String?>((ref, userId) {
|
|
|
|
|
if (userId == null) {
|
|
|
|
|
return const Stream.empty();
|
|
|
|
|
}
|
2025-02-26 17:04:43 -06:00
|
|
|
|
2025-07-29 00:34:03 +05:30
|
|
|
ref.watch(localeProvider);
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
return timelineService.watchHomeTimeline(userId);
|
|
|
|
|
}, dependencies: [localeProvider]);
|
2025-02-21 09:01:46 -06:00
|
|
|
|
2025-07-29 00:34:03 +05:30
|
|
|
final multiUsersTimelineProvider = StreamProvider.family<RenderList, List<String>>((ref, userIds) {
|
|
|
|
|
ref.watch(localeProvider);
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
return timelineService.watchMultiUsersTimeline(userIds);
|
|
|
|
|
}, dependencies: [localeProvider]);
|
2025-02-21 09:01:46 -06:00
|
|
|
|
2025-07-25 08:07:22 +05:30
|
|
|
final albumTimelineProvider = StreamProvider.autoDispose.family<RenderList, int>((ref, id) {
|
2025-02-21 09:01:46 -06:00
|
|
|
final album = ref.watch(albumWatcher(id)).value;
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
|
|
|
|
|
if (album != null) {
|
|
|
|
|
return timelineService.watchAlbumTimeline(album);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return const Stream.empty();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
final archiveTimelineProvider = StreamProvider<RenderList>((ref) {
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
return timelineService.watchArchiveTimeline();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
final favoriteTimelineProvider = StreamProvider<RenderList>((ref) {
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
return timelineService.watchFavoriteTimeline();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
final trashTimelineProvider = StreamProvider<RenderList>((ref) {
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
return timelineService.watchTrashTimeline();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
final allVideosTimelineProvider = StreamProvider<RenderList>((ref) {
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
return timelineService.watchAllVideosTimeline();
|
|
|
|
|
});
|
2025-02-25 11:33:48 -06:00
|
|
|
|
|
|
|
|
final assetSelectionTimelineProvider = StreamProvider<RenderList>((ref) {
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
return timelineService.watchAssetSelectionTimeline();
|
|
|
|
|
});
|
|
|
|
|
|
2025-07-25 08:07:22 +05:30
|
|
|
final assetsTimelineProvider = FutureProvider.family<RenderList, List<Asset>>((ref, assets) {
|
2025-02-25 11:33:48 -06:00
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
2025-07-29 00:34:03 +05:30
|
|
|
return timelineService.getTimelineFromAssets(assets, null);
|
2025-02-25 11:33:48 -06:00
|
|
|
});
|
2025-05-20 08:35:22 -05:00
|
|
|
|
|
|
|
|
final lockedTimelineProvider = StreamProvider<RenderList>((ref) {
|
|
|
|
|
final timelineService = ref.watch(timelineServiceProvider);
|
|
|
|
|
return timelineService.watchLockedTimelineProvider();
|
|
|
|
|
});
|