feat: recently added assets page (#28272)

* feat(server): add ordering date option to time buckets

* feat(web): add recently added page

* feat(server): recently created assets in explore data

* feat(web): recently added in explore tab

* fix: recently added assets ordering

* fix(server): failing bucket test

* feat(web): improve recently added preview

* chore: update e2e explore/timeline tests

* chore: rename and refactor timeline ordering dates

* fix(web): invalid timeline option

* feat(mobile): recently added page

* fix(server): sync tests

* fix(mobile): resync assets to get uploadedAt column

* chore: rename assetorderby enum

* chore(mobile): formatting

* minor fixes

* stylings

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
Ben Beckford
2026-05-11 14:35:10 -07:00
committed by GitHub
parent 38438c8d9a
commit e142e3aca7
66 changed files with 14174 additions and 56 deletions
@@ -34,6 +34,7 @@ SyncAssetV1 _createAsset({
isFavorite: false,
fileCreatedAt: DateTime(2024, 1, 1),
fileModifiedAt: DateTime(2024, 1, 1),
createdAt: DateTime(2024, 1, 1),
localDateTime: DateTime(2024, 1, 1),
visibility: AssetVisibility.timeline,
width: width,
+4
View File
@@ -29,6 +29,7 @@ import 'schema_v22.dart' as v22;
import 'schema_v23.dart' as v23;
import 'schema_v24.dart' as v24;
import 'schema_v25.dart' as v25;
import 'schema_v26.dart' as v26;
class GeneratedHelper implements SchemaInstantiationHelper {
@override
@@ -84,6 +85,8 @@ class GeneratedHelper implements SchemaInstantiationHelper {
return v24.DatabaseAtV24(db);
case 25:
return v25.DatabaseAtV25(db);
case 26:
return v26.DatabaseAtV26(db);
default:
throw MissingSchemaException(version, versions);
}
@@ -115,5 +118,6 @@ class GeneratedHelper implements SchemaInstantiationHelper {
23,
24,
25,
26,
];
}
File diff suppressed because it is too large Load Diff
+1
View File
@@ -115,6 +115,7 @@ abstract final class SyncStreamStub {
duration: '0',
fileCreatedAt: DateTime(2025),
fileModifiedAt: DateTime(2025, 1, 2),
createdAt: DateTime(2025, 1, 2),
id: id,
isFavorite: false,
libraryId: null,
@@ -38,6 +38,7 @@ void main() {
visibility: AssetVisibility.timeline,
createdAt: Value(createdAt),
updatedAt: Value(createdAt),
uploadedAt: Value(createdAt),
localDateTime: const Value(null),
),
);
+1
View File
@@ -58,6 +58,7 @@ abstract final class TestUtils {
type: domain.AssetType.image,
createdAt: DateTime(2024, 1, 1),
updatedAt: DateTime(2024, 1, 1),
uploadedAt: DateTime(2024, 1, 1),
durationMs: 0,
isFavorite: false,
width: width,
@@ -35,6 +35,7 @@ RemoteAsset createRemoteAsset({
AssetType type = AssetType.image,
DateTime? createdAt,
DateTime? updatedAt,
DateTime? uploadedAt,
bool isFavorite = false,
}) {
return RemoteAsset(
@@ -46,6 +47,7 @@ RemoteAsset createRemoteAsset({
ownerId: 'owner-id',
createdAt: createdAt ?? DateTime.now(),
updatedAt: updatedAt ?? DateTime.now(),
uploadedAt: uploadedAt ?? DateTime.now(),
isFavorite: isFavorite,
isEdited: false,
);