feat(mobile): update main TimelineQuery and pass new filter down to asset and bucket queries

This commit is contained in:
Penlane 2026-07-22 18:40:45 +02:00
parent ff0e6bf117
commit 08e3093199

View file

@ -47,26 +47,35 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
.map((users) => users..add(userId));
}
TimelineQuery main(List<String> userIds, GroupAssetsBy groupBy) => (
bucketSource: () => _watchMainBucket(userIds, groupBy: groupBy),
assetSource: (offset, count) => _getMainBucketAssets(userIds, offset: offset, count: count),
TimelineQuery main(List<String> userIds, GroupAssetsBy groupBy, AssetOriginFilter filter) => (
bucketSource: () => _watchMainBucket(userIds, groupBy: groupBy, filter: filter),
assetSource: (offset, count) => _getMainBucketAssets(userIds, offset: offset, count: count, filter: filter),
origin: TimelineOrigin.main,
);
Stream<List<Bucket>> _watchMainBucket(List<String> userIds, {GroupAssetsBy groupBy = GroupAssetsBy.day}) {
Stream<List<Bucket>> _watchMainBucket(
List<String> userIds, {
GroupAssetsBy groupBy = GroupAssetsBy.day,
required AssetOriginFilter filter,
}) {
if (groupBy == GroupAssetsBy.none) {
throw UnsupportedError("GroupAssetsBy.none is not supported for watchMainBucket");
}
return _db.mergedAssetDrift.mergedBucket(userIds: userIds, groupBy: groupBy.index).map((row) {
return _db.mergedAssetDrift.mergedBucket(userIds: userIds, groupBy: groupBy.index, filter: filter.index).map((row) {
final date = row.bucketDate.truncateDate(groupBy);
return TimeBucket(date: date, assetCount: row.assetCount);
}).watch();
}
Future<List<BaseAsset>> _getMainBucketAssets(List<String> userIds, {required int offset, required int count}) {
Future<List<BaseAsset>> _getMainBucketAssets(
List<String> userIds, {
required int offset,
required int count,
required AssetOriginFilter filter,
}) {
return _db.mergedAssetDrift
.mergedAsset(userIds: userIds, limit: (_) => Limit(count, offset))
.mergedAsset(userIds: userIds, limit: Limit(count, offset), filter: filter.index)
.map(
(row) => row.remoteId != null && row.ownerId != null
? RemoteAsset(