diff --git a/web/packages/new/photos/services/collections.ts b/web/packages/new/photos/services/collections.ts index cb0b70c078..95a5aec896 100644 --- a/web/packages/new/photos/services/collections.ts +++ b/web/packages/new/photos/services/collections.ts @@ -1,13 +1,12 @@ import { type Collection } from "ente-media/collection"; -import localForage from "ente-shared/storage/localForage"; import { getCollections } from "./collection"; -import { removeCollectionIDLastSyncTime, savedCollections } from "./photos-fdb"; - -const COLLECTION_TABLE = "collections"; -const COLLECTION_UPDATION_TIME = "collection-updation-time"; - -export const getCollectionUpdationTime = async (): Promise => - (await localForage.getItem(COLLECTION_UPDATION_TIME)) ?? 0; +import { + removeCollectionIDLastSyncTime, + saveCollections, + saveCollectionsUpdationTime, + savedCollections, + savedCollectionsUpdationTime, +} from "./photos-fdb"; /** * Pull the latest collections from remote. @@ -20,7 +19,7 @@ export const getCollectionUpdationTime = async (): Promise => */ export const pullCollections = async (): Promise => { const collections = await savedCollections(); - let sinceTime = await getCollectionUpdationTime(); + let sinceTime = (await savedCollectionsUpdationTime()) ?? 0; const changes = await getCollections(sinceTime); @@ -40,8 +39,8 @@ export const pullCollections = async (): Promise => { const updatedCollections = [...collectionsByID.values()]; - await localForage.setItem(COLLECTION_TABLE, updatedCollections); - await localForage.setItem(COLLECTION_UPDATION_TIME, sinceTime); + await saveCollections(updatedCollections); + await saveCollectionsUpdationTime(sinceTime); return updatedCollections; }; diff --git a/web/packages/new/photos/services/photos-fdb.ts b/web/packages/new/photos/services/photos-fdb.ts index d3f8ec112a..836ca4159b 100644 --- a/web/packages/new/photos/services/photos-fdb.ts +++ b/web/packages/new/photos/services/photos-fdb.ts @@ -45,6 +45,23 @@ export const saveCollections = async (collections: Collection[]) => { await localForage.setItem("collections", collections); }; +/** + * Return the locally persisted {@link updationTime} of the latest collection we + * have pulled from remote. + * + * Use {@link saveCollectionsUpdationTime} to update the saved value. + */ +export const savedCollectionsUpdationTime = async () => + LocalTimestamp.parse(await localForage.getItem("collection-updation-time")); + +/** + * Update the locally persisted timestamp that will be returned by subsequent + * calls to {@link savedCollectionsUpdationTime}. + */ +export const saveCollectionsUpdationTime = async (time: number) => { + await localForage.setItem("collection-updation-time", time); +}; + const TrashItemCollectionKey = z.object({ /** * Collection ID.