UNPKG

5.08 kBJavaScriptView Raw
1import { getParameterError, shouldBeObject, temporarilyNotSupport } from '../../utils/index.js';
2import { MethodHandler } from '../../utils/handler.js';
3export { getBackgroundFetchData, getBackgroundFetchToken, onBackgroundFetchData, setBackgroundFetchToken } from './background-fetch.js';
4
5function getItem(key) {
6 let item;
7 try {
8 item = JSON.parse(localStorage.getItem(key) || '');
9 }
10 catch (e) { } // eslint-disable-line no-empty
11 // 只返回使用 Taro.setStorage API 存储的数据
12 if (item && typeof item === 'object' && item.hasOwnProperty('data')) {
13 return { result: true, data: item.data };
14 }
15 else {
16 return { result: false };
17 }
18}
19// 数据缓存
20const setStorageSync = (key, data = '') => {
21 if (typeof key !== 'string') {
22 console.error(getParameterError({
23 name: 'setStorage',
24 correct: 'String',
25 wrong: key
26 }));
27 return;
28 }
29 const type = typeof data;
30 let obj = {};
31 if (type === 'symbol') {
32 obj = { data: '' };
33 }
34 else {
35 obj = { data };
36 }
37 localStorage.setItem(key, JSON.stringify(obj));
38};
39const setStorage = (options) => {
40 // options must be an Object
41 const isObject = shouldBeObject(options);
42 if (!isObject.flag) {
43 const res = { errMsg: `setStorage:fail ${isObject.msg}` };
44 console.error(res.errMsg);
45 return Promise.reject(res);
46 }
47 const { key, data, success, fail, complete } = options;
48 const handle = new MethodHandler({ name: 'setStorage', success, fail, complete });
49 if (typeof key !== 'string') {
50 return handle.fail({
51 errMsg: getParameterError({
52 para: 'key',
53 correct: 'String',
54 wrong: key
55 })
56 });
57 }
58 setStorageSync(key, data);
59 return handle.success();
60};
61const revokeBufferURL = temporarilyNotSupport('revokeBufferURL');
62const removeStorageSync = (key) => {
63 if (typeof key !== 'string') {
64 console.error(getParameterError({
65 name: 'removeStorage',
66 correct: 'String',
67 wrong: key
68 }));
69 return;
70 }
71 localStorage.removeItem(key);
72};
73const removeStorage = (options) => {
74 // options must be an Object
75 const isObject = shouldBeObject(options);
76 if (!isObject.flag) {
77 const res = { errMsg: `removeStorage:fail ${isObject.msg}` };
78 console.error(res.errMsg);
79 return Promise.reject(res);
80 }
81 const { key, success, fail, complete } = options;
82 const handle = new MethodHandler({ name: 'removeStorage', success, fail, complete });
83 if (typeof key !== 'string') {
84 return handle.fail({
85 errMsg: getParameterError({
86 para: 'key',
87 correct: 'String',
88 wrong: key
89 })
90 });
91 }
92 removeStorageSync(key);
93 return handle.success();
94};
95const getStorageSync = (key) => {
96 if (typeof key !== 'string') {
97 console.error(getParameterError({
98 name: 'getStorageSync',
99 correct: 'String',
100 wrong: key
101 }));
102 return;
103 }
104 const res = getItem(key);
105 if (res.result)
106 return res.data;
107 return '';
108};
109const getStorageInfoSync = () => {
110 const res = {
111 keys: Object.keys(localStorage),
112 limitSize: NaN,
113 currentSize: NaN
114 };
115 return res;
116};
117const getStorageInfo = ({ success, fail, complete } = {}) => {
118 const handle = new MethodHandler({ name: 'getStorageInfo', success, fail, complete });
119 return handle.success(getStorageInfoSync());
120};
121const getStorage = (options) => {
122 // options must be an Object
123 const isObject = shouldBeObject(options);
124 if (!isObject.flag) {
125 const res = { errMsg: `getStorage:fail ${isObject.msg}` };
126 console.error(res.errMsg);
127 return Promise.reject(res);
128 }
129 const { key, success, fail, complete } = options;
130 const handle = new MethodHandler({ name: 'getStorage', success, fail, complete });
131 if (typeof key !== 'string') {
132 return handle.fail({
133 errMsg: getParameterError({
134 para: 'key',
135 correct: 'String',
136 wrong: key
137 })
138 });
139 }
140 const { result, data } = getItem(key);
141 if (result) {
142 return handle.success({ data });
143 }
144 else {
145 return handle.fail({
146 errMsg: 'data not found'
147 });
148 }
149};
150const createBufferURL = temporarilyNotSupport('createBufferURL');
151const clearStorageSync = () => {
152 localStorage.clear();
153};
154const clearStorage = ({ success, fail, complete } = {}) => {
155 const handle = new MethodHandler({ name: 'clearStorage', success, fail, complete });
156 clearStorageSync();
157 return handle.success();
158};
159
160export { clearStorage, clearStorageSync, createBufferURL, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, removeStorage, removeStorageSync, revokeBufferURL, setStorage, setStorageSync };
161//# sourceMappingURL=index.js.map