Procházet zdrojové kódy

Bugfix. Avoid creating an undefined store

JC Brand před 4 roky
rodič
revize
7b49296a24

+ 4 - 0
src/headless/shared/_converse.js

@@ -4,6 +4,7 @@ import u from '@converse/headless/utils/core';
 import { CONNECTION_STATUS } from '@converse/headless/shared/constants';
 import { CONNECTION_STATUS } from '@converse/headless/shared/constants';
 import { Router } from '@converse/skeletor/src/router.js';
 import { Router } from '@converse/skeletor/src/router.js';
 import { TimeoutError } from '@converse/headless/shared/errors';
 import { TimeoutError } from '@converse/headless/shared/errors';
+import { createStore, getDefaultStore } from '@converse/headless/shared/utils.js';
 import { getInitSettings } from '@converse/headless/shared/settings';
 import { getInitSettings } from '@converse/headless/shared/settings';
 
 
 
 
@@ -80,6 +81,9 @@ const _converse = {
         return getInitSettings()['bosh_service_url'] === 'montague.lit/http-bind';
         return getInitSettings()['bosh_service_url'] === 'montague.lit/http-bind';
     },
     },
 
 
+    getDefaultStore,
+    createStore,
+
     /**
     /**
      * Translate the given string based on the current locale.
      * Translate the given string based on the current locale.
      * @method __
      * @method __

+ 13 - 2
src/headless/shared/utils.js

@@ -1,11 +1,22 @@
 import Storage from '@converse/skeletor/src/storage.js';
 import Storage from '@converse/skeletor/src/storage.js';
-import _converse from '@converse/headless/shared/_converse';
+import { _converse, api } from '@converse/headless/core';
 import log from '@converse/headless/log';
 import log from '@converse/headless/log';
 import u from '@converse/headless/utils/core';
 import u from '@converse/headless/utils/core';
 
 
+export function getDefaultStore () {
+    if (_converse.config.get('trusted')) {
+        const is_non_persistent = api.settings.get('persistent_store') === 'sessionStorage';
+        return is_non_persistent ? 'session': 'persistent';
+    } else {
+        return 'session';
+    }
+}
 
 
 export function createStore (id, storage) {
 export function createStore (id, storage) {
-    const s = _converse.storage[storage || _converse.getDefaultStore()];
+    const s = _converse.storage[storage || getDefaultStore()];
+    if (typeof s === 'undefined') {
+        throw new TypeError(`createStore: Could not find store for %{id}`);
+    }
     return new Storage(id, s);
     return new Storage(id, s);
 }
 }
 
 

+ 1 - 1
src/plugins/minimize/view.js

@@ -34,7 +34,7 @@ class MinimizedChats extends ElementView {
     async initToggle () {
     async initToggle () {
         const id = `converse.minchatstoggle-${_converse.bare_jid}`;
         const id = `converse.minchatstoggle-${_converse.bare_jid}`;
         this.minchats = new MinimizedChatsToggle({id});
         this.minchats = new MinimizedChatsToggle({id});
-        this.minchats.browserStorage = _converse.createStore(id);
+        this.minchats.browserStorage = _converse.createStore(id, 'session');
         await new Promise(resolve => this.minchats.fetch({'success': resolve, 'error': resolve}));
         await new Promise(resolve => this.minchats.fetch({'success': resolve, 'error': resolve}));
     }
     }