aboutsummaryrefslogtreecommitdiffstats
path: root/excalidraw-app/data/tabSync.ts
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commitbfc2cec7d43eb8eaa46dd3f91084932381257059 (patch)
tree0857e3aac2cff922826d4871ff54536b26fad6fc /excalidraw-app/data/tabSync.ts
parent225db4a7805befe009fe055fc2ef5daedd6c04f9 (diff)
refactor: excalidraw-app/
Diffstat (limited to 'excalidraw-app/data/tabSync.ts')
-rw-r--r--excalidraw-app/data/tabSync.ts39
1 files changed, 39 insertions, 0 deletions
diff --git a/excalidraw-app/data/tabSync.ts b/excalidraw-app/data/tabSync.ts
new file mode 100644
index 0000000..0617a55
--- /dev/null
+++ b/excalidraw-app/data/tabSync.ts
@@ -0,0 +1,39 @@
+import { STORAGE_KEYS } from "../app_constants";
+
+// in-memory state (this tab's current state) versions. Currently just
+// timestamps of the last time the state was saved to browser storage.
+const LOCAL_STATE_VERSIONS = {
+ [STORAGE_KEYS.VERSION_DATA_STATE]: -1,
+ [STORAGE_KEYS.VERSION_FILES]: -1,
+};
+
+type BrowserStateTypes = keyof typeof LOCAL_STATE_VERSIONS;
+
+export const isBrowserStorageStateNewer = (type: BrowserStateTypes) => {
+ const storageTimestamp = JSON.parse(localStorage.getItem(type) || "-1");
+ return storageTimestamp > LOCAL_STATE_VERSIONS[type];
+};
+
+export const updateBrowserStateVersion = (type: BrowserStateTypes) => {
+ const timestamp = Date.now();
+ try {
+ localStorage.setItem(type, JSON.stringify(timestamp));
+ LOCAL_STATE_VERSIONS[type] = timestamp;
+ } catch (error) {
+ console.error("error while updating browser state verison", error);
+ }
+};
+
+export const resetBrowserStateVersions = () => {
+ try {
+ for (const key of Object.keys(
+ LOCAL_STATE_VERSIONS,
+ ) as BrowserStateTypes[]) {
+ const timestamp = -1;
+ localStorage.setItem(key, JSON.stringify(timestamp));
+ LOCAL_STATE_VERSIONS[key] = timestamp;
+ }
+ } catch (error) {
+ console.error("error while resetting browser state verison", error);
+ }
+};