| 250 | |
| 251 | /* ============ 数据加载/保存 ============ */ |
| 252 | loadMonkeys() { |
| 253 | chrome.storage.local.get([PAGE_MONKEY_LOCAL_STORAGE_KEY, ORDER_KEY], (resps) => { |
| 254 | let raw = resps && resps[PAGE_MONKEY_LOCAL_STORAGE_KEY]; |
| 255 | let storageMode = false; |
| 256 | if (!raw) { |
| 257 | raw = localStorage.getItem(PAGE_MONKEY_LOCAL_STORAGE_KEY) || '[]'; |
| 258 | storageMode = true; |
| 259 | } |
| 260 | let arr = []; |
| 261 | try { arr = JSON.parse(raw); } catch (e) {} |
| 262 | arr = (arr || []).filter(c => c && (c.mName || c.mPattern || c.mScript || (c.mIncludes && c.mIncludes.length))).map(migrate); |
| 263 | |
| 264 | let order = []; |
| 265 | try { order = JSON.parse(resps[ORDER_KEY] || '[]'); } catch (e) {} |
| 266 | if (order && order.length) { |
| 267 | let map = new Map(arr.map(m => [m.id, m])); |
| 268 | let sorted = []; |
| 269 | order.forEach(id => { if (map.has(id)) { sorted.push(map.get(id)); map.delete(id); } }); |
| 270 | map.forEach(v => sorted.push(v)); |
| 271 | arr = sorted; |
| 272 | } |
| 273 | |
| 274 | this.cachedMonkeys = arr; |
| 275 | if (storageMode && arr.length) this.persist(); |
| 276 | }); |
| 277 | }, |
| 278 | |
| 279 | persist(silent) { |
| 280 | let data = {}; |