This commit is contained in:
Manav Rathi
2025-06-25 18:48:05 +05:30
parent 2b9d80d23f
commit 9d707fcb48
2 changed files with 27 additions and 11 deletions

View File

@@ -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<number> =>
(await localForage.getItem<number>(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<number> =>
*/
export const pullCollections = async (): Promise<Collection[]> => {
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<Collection[]> => {
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;
};

View File

@@ -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.