diff --git a/packages/uni-app-plus/dist/index.v3.js b/packages/uni-app-plus/dist/index.v3.js index 020b236640628124b88d0ef1ef3445136e4c3789..3a1c2c56297632f4f386433b70619001ba73e5c4 100644 --- a/packages/uni-app-plus/dist/index.v3.js +++ b/packages/uni-app-plus/dist/index.v3.js @@ -10901,23 +10901,23 @@ var serviceContext = (function () { uploadFile: uploadFile$1 }); + const STORAGE_DATA_TYPE = '__TYPE'; + const STORAGE_KEYS = 'uni-storage-keys'; + function setStorage$1 ({ key, data } = {}) { - const value = { - type: typeof data === 'object' ? 'object' : 'string', + const type = typeof data; + const value = type === 'string' ? data : JSON.stringify({ + type, data: data - }; - localStorage.setItem(key, JSON.stringify(value)); - const keyList = localStorage.getItem('uni-storage-keys'); - if (!keyList) { - localStorage.setItem('uni-storage-keys', JSON.stringify([key])); - } else { - const keys = JSON.parse(keyList); - if (keys.indexOf(key) < 0) { - keys.push(key); - localStorage.setItem('uni-storage-keys', JSON.stringify(keys)); + }); + try { + localStorage.setItem(key, value); + } catch (error) { + return { + errMsg: `setStorage:fail ${error}` } } return { @@ -10935,13 +10935,33 @@ var serviceContext = (function () { function getStorage$1 ({ key } = {}) { - const data = localStorage.getItem(key); - return data ? { - data: JSON.parse(data).data, + const value = localStorage && localStorage.getItem(key); + if (typeof value !== 'string') { + return { + data: '', + errMsg: 'getStorage:fail' + } + } + let data = value; + try { + const object = JSON.parse(value); + // 兼容App端历史格式 + const type = localStorage.getItem(key + STORAGE_DATA_TYPE); + if (!type) { + const keys = Object.keys(object); + if (keys.length === 2 && 'type' in object && 'data' in object) { + data = object.data; + } else if (keys.length === 1 && 'type' in object) { + data = ''; + } + } else if (type !== 'String') { + data = object; + data = typeof data === 'string' ? JSON.parse(data) : data; + } + } catch (error) { } + return { + data, errMsg: 'getStorage:ok' - } : { - data: '', - errMsg: 'getStorage:fail' } } @@ -10955,14 +10975,11 @@ var serviceContext = (function () { function removeStorage$1 ({ key } = {}) { - const keyList = localStorage.getItem('uni-storage-keys'); - if (keyList) { - const keys = JSON.parse(keyList); - const index = keys.indexOf(key); - keys.splice(index, 1); - localStorage.setItem('uni-storage-keys', JSON.stringify(keys)); - } - localStorage.removeItem(key); + if (localStorage) { + // 兼容App端历史格式 + localStorage.removeItem(key + STORAGE_DATA_TYPE); + localStorage.removeItem(key); + } return { errMsg: 'removeStorage:ok' } @@ -10975,7 +10992,7 @@ var serviceContext = (function () { } function clearStorage () { - localStorage.clear(); + localStorage && localStorage.clear(); return { errMsg: 'clearStorage:ok' } @@ -10985,18 +11002,23 @@ var serviceContext = (function () { clearStorage(); } - function getStorageInfo () { // TODO 暂时先不做大小的转换 - const keyList = localStorage.getItem('uni-storage-keys'); - return keyList ? { - keys: JSON.parse(keyList), - currentSize: 0, - limitSize: 0, + function getStorageInfo () { + const length = (localStorage && (localStorage.length || localStorage.getLength())) || 0; + const keys = []; + let currentSize = 0; + for (let index = 0; index < length; index++) { + const key = localStorage.key(index); + if (key !== STORAGE_KEYS && key.indexOf(STORAGE_DATA_TYPE) + STORAGE_DATA_TYPE.length !== key.length) { + const value = localStorage.getItem(key); + currentSize += key.length + value.length; + keys.push(key); + } + } + return { + keys, + currentSize: Math.ceil(currentSize * 2 / 1024), + limitSize: Number.MAX_VALUE, errMsg: 'getStorageInfo:ok' - } : { - keys: '', - currentSize: 0, - limitSize: 0, - errMsg: 'getStorageInfo:fail' } }