12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import localForage from 'localforage';
- //import _ from 'lodash';
- import * as utils from '../../../share/utils';
- const maxDataSize = 100*1024*1024;
- const coversStore = localForage.createInstance({
- name: 'coversStorage'
- });
- class CoversStorage {
- constructor() {
- }
- async init() {
- this.cleanCovers(); //no await
- }
- async setData(key, data) {
- await coversStore.setItem(key, {addTime: Date.now(), data});
- }
- async getData(key) {
- const item = await coversStore.getItem(key);
- return (item ? item.data : undefined);
- }
- async removeData(key) {
- await coversStore.removeItem(key);
- }
- async cleanCovers() {
- await utils.sleep(10000);
- while (1) {// eslint-disable-line no-constant-condition
- let size = 0;
- let min = Date.now();
- let toDel = null;
- for (const key of (await coversStore.keys())) {
- const item = await coversStore.getItem(key);
- size += item.data.length;
- if (item.addTime < min) {
- toDel = key;
- min = item.addTime;
- }
- }
- if (size > maxDataSize && toDel) {
- await this.removeData(toDel);
- } else {
- break;
- }
- }
- }
- }
- export default new CoversStorage();
|