Bläddra i källkod

Allow the creation of multiple persistent stores

JC Brand 4 månader sedan
förälder
incheckning
fef59fbce7

+ 1 - 0
src/headless/types/utils/index.d.ts

@@ -70,6 +70,7 @@ declare const _default: {
     initPlugins(_converse: ConversePrivateGlobal): void;
     initClientConfig(_converse: ConversePrivateGlobal): Promise<void>;
     initSessionStorage(_converse: ConversePrivateGlobal): Promise<void>;
+    initPersistentStorage(_converse: ConversePrivateGlobal, store_name: string, key?: string): void;
     setUserJID(jid: string): Promise<string>;
     initSession(_converse: ConversePrivateGlobal, jid: string): Promise<void>;
     registerGlobalEventHandlers(_converse: ConversePrivateGlobal): void;

+ 7 - 0
src/headless/types/utils/init.d.ts

@@ -13,6 +13,13 @@ export function initClientConfig(_converse: ConversePrivateGlobal): Promise<void
  * @param {ConversePrivateGlobal} _converse
  */
 export function initSessionStorage(_converse: ConversePrivateGlobal): Promise<void>;
+/**
+ * Initializes persistent storage
+ * @param {ConversePrivateGlobal} _converse
+ * @param {string} store_name - The name of the store.
+ * @param {string} [key="persistent"] - The key for `_converse.storage`.
+ */
+export function initPersistentStorage(_converse: ConversePrivateGlobal, store_name: string, key?: string): void;
 /**
  * Stores the passed in JID for the current user, potentially creating a
  * resource if the JID is bare.

+ 5 - 4
src/headless/utils/init.js

@@ -102,21 +102,22 @@ export async function initSessionStorage(_converse) {
  * Initializes persistent storage
  * @param {ConversePrivateGlobal} _converse
  * @param {string} store_name - The name of the store.
+ * @param {string} [key="persistent"] - The key for `_converse.storage`.
  */
-function initPersistentStorage(_converse, store_name) {
+export function initPersistentStorage(_converse, store_name, key="persistent") {
     if (_converse.api.settings.get("persistent_store") === "sessionStorage") {
         return;
     } else if (_converse.api.settings.get("persistent_store") === "BrowserExtLocal") {
         Storage.localForage
             .defineDriver(localDriver)
             .then(() => Storage.localForage.setDriver("webExtensionLocalStorage"));
-        _converse.storage["persistent"] = Storage.localForage;
+        _converse.storage[key] = Storage.localForage;
         return;
     } else if (_converse.api.settings.get("persistent_store") === "BrowserExtSync") {
         Storage.localForage
             .defineDriver(syncDriver)
             .then(() => Storage.localForage.setDriver("webExtensionSyncStorage"));
-        _converse.storage["persistent"] = Storage.localForage;
+        _converse.storage[key] = Storage.localForage;
         return;
     }
 
@@ -131,7 +132,7 @@ function initPersistentStorage(_converse, store_name) {
         config["description"] = "indexedDB instance";
         config["driver"] = [Storage.localForage.INDEXEDDB];
     }
-    _converse.storage["persistent"] = Storage.localForage.createInstance(config);
+    _converse.storage[key] = Storage.localForage.createInstance(config);
 }
 
 /**