1 | import { getParameterError, shouldBeObject, temporarilyNotSupport } from '../../utils/index.js';
|
2 | import { MethodHandler } from '../../utils/handler.js';
|
3 | export { getBackgroundFetchData, getBackgroundFetchToken, onBackgroundFetchData, setBackgroundFetchToken } from './background-fetch.js';
|
4 |
|
5 | function getItem(key) {
|
6 | let item;
|
7 | try {
|
8 | item = JSON.parse(localStorage.getItem(key) || '');
|
9 | }
|
10 | catch (e) { }
|
11 |
|
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 |
|
20 | const 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 | };
|
39 | const setStorage = (options) => {
|
40 |
|
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 | };
|
61 | const revokeBufferURL = temporarilyNotSupport('revokeBufferURL');
|
62 | const 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 | };
|
73 | const removeStorage = (options) => {
|
74 |
|
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 | };
|
95 | const 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 | };
|
109 | const getStorageInfoSync = () => {
|
110 | const res = {
|
111 | keys: Object.keys(localStorage),
|
112 | limitSize: NaN,
|
113 | currentSize: NaN
|
114 | };
|
115 | return res;
|
116 | };
|
117 | const getStorageInfo = ({ success, fail, complete } = {}) => {
|
118 | const handle = new MethodHandler({ name: 'getStorageInfo', success, fail, complete });
|
119 | return handle.success(getStorageInfoSync());
|
120 | };
|
121 | const getStorage = (options) => {
|
122 |
|
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 | };
|
150 | const createBufferURL = temporarilyNotSupport('createBufferURL');
|
151 | const clearStorageSync = () => {
|
152 | localStorage.clear();
|
153 | };
|
154 | const clearStorage = ({ success, fail, complete } = {}) => {
|
155 | const handle = new MethodHandler({ name: 'clearStorage', success, fail, complete });
|
156 | clearStorageSync();
|
157 | return handle.success();
|
158 | };
|
159 |
|
160 | export { clearStorage, clearStorageSync, createBufferURL, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, removeStorage, removeStorageSync, revokeBufferURL, setStorage, setStorageSync };
|
161 |
|