mirror of
https://github.com/XFox111/TabsAsideExtension.git
synced 2026-04-22 07:58:01 +03:00
Major 3.0 (#118)
Co-authored-by: Maison da Silva <maisonmdsgreen@hotmail.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import { trackError } from "@/features/analytics";
|
||||
import { CollectionItem } from "@/models/CollectionModels";
|
||||
import getLogger from "@/utils/getLogger";
|
||||
import { collectionStorage } from "./collectionStorage";
|
||||
import getCollectionsFromCloud from "./getCollectionsFromCloud";
|
||||
import getCollectionsFromLocal from "./getCollectionsFromLocal";
|
||||
import saveCollectionsToLocal from "./saveCollectionsToLocal";
|
||||
|
||||
const logger = getLogger("getCollections");
|
||||
|
||||
export default async function getCollections(): Promise<[CollectionItem[], CloudStorageIssueType | null]>
|
||||
{
|
||||
if (await collectionStorage.disableCloud.getValue() === true)
|
||||
return [await getCollectionsFromLocal(), null];
|
||||
|
||||
const lastUpdatedLocal: number = await collectionStorage.localLastUpdated.getValue();
|
||||
const lastUpdatedSync: number = await collectionStorage.syncLastUpdated.getValue();
|
||||
|
||||
if (lastUpdatedLocal === lastUpdatedSync)
|
||||
return [await getCollectionsFromLocal(), null];
|
||||
|
||||
if (lastUpdatedLocal > lastUpdatedSync)
|
||||
return [await getCollectionsFromLocal(), "merge_conflict"];
|
||||
|
||||
try
|
||||
{
|
||||
const collections: CollectionItem[] = await getCollectionsFromCloud();
|
||||
await saveCollectionsToLocal(collections, lastUpdatedSync);
|
||||
|
||||
return [collections, null];
|
||||
}
|
||||
catch (ex)
|
||||
{
|
||||
logger("Failed to get cloud storage");
|
||||
console.error(ex);
|
||||
trackError("cloud_get_error", ex as Error);
|
||||
return [await getCollectionsFromLocal(), "parse_error"];
|
||||
}
|
||||
}
|
||||
|
||||
export type CloudStorageIssueType = "parse_error" | "merge_conflict";
|
||||
Reference in New Issue
Block a user