From a16d3e28f32e85196890c5a9fce602502b1c92a6 Mon Sep 17 00:00:00 2001 From: xmcp Date: Sat, 11 Jan 2020 01:33:47 +0800 Subject: [PATCH] fix comment cache not expired --- src/cache.js | 25 ++++++++++++++++++++++--- src/flows_api.js | 9 ++++++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/cache.js b/src/cache.js index 2e92c16..f53407b 100644 --- a/src/cache.js +++ b/src/cache.js @@ -25,6 +25,7 @@ class Cache { } get(pid,target_version) { + pid=parseInt(pid); return new Promise((resolve,reject)=>{ if(!this.db) return resolve(null); @@ -37,12 +38,12 @@ class Cache { //console.log('comment cache miss '+pid); resolve(null); } else if(target_version===res.version) { // hit - console.log('comment cache hit '+pid); + console.log('comment cache hit',pid); res.last_access=(+new Date()); store.put(res); resolve(res.data); } else { // expired - console.log('comment cache expired '+pid+': ver',res.version,'target',target_version); + console.log('comment cache expired',pid,': ver',res.version,'target',target_version); store.delete(pid); resolve(null); } @@ -52,6 +53,7 @@ class Cache { } put(pid,target_version,data) { + pid=parseInt(pid); return new Promise((resolve,reject)=>{ if(!this.db) return resolve(); @@ -68,6 +70,23 @@ class Cache { }); } + delete(pid) { + pid=parseInt(pid); + return new Promise((resolve,reject)=>{ + if(!this.db) + return resolve(); + const tx=this.db.transaction(['comment'],'readwrite'); + const store=tx.objectStore('comment'); + let req=store.delete(pid); + //console.log('comment cache delete',pid); + req.onerror=()=>{ + console.warn('comment cache delete failed ',pid); + return resolve(); + }; + req.onsuccess=()=>resolve(); + }); + } + maintenance() { if(!this.db) return; @@ -88,7 +107,7 @@ class Cache { } }; } else { - console.log('comment cache db not full',count); + console.log('comment cache db no need to maintenance',count); } this.added_items_since_maintenance=0; }; diff --git a/src/flows_api.js b/src/flows_api.js index ef69de0..508726a 100644 --- a/src/flows_api.js +++ b/src/flows_api.js @@ -31,7 +31,9 @@ export const API={ else throw new Error(JSON.stringify(json)); } - cache().put(pid,cache_version,json); + cache().delete(pid).then(()=>{ + cache().put(pid,cache_version,json); + }); // also change load_replies_with_cache! json.data=json.data @@ -85,6 +87,7 @@ export const API={ }) .then(get_json) .then((json)=>{ + cache().delete(pid); if(json.code!==0) { if(json.msg && json.msg==='已经关注过了') {} else { @@ -143,7 +146,7 @@ export const API={ .then(get_json) .then((json)=>{ if(json.code!==0) { - if(json.msg) alert(json.msg); + if(json.msg) throw new Error(json.msg); throw new Error(JSON.stringify(json)); } return json; @@ -174,7 +177,7 @@ export const API={ .then(get_json) .then((json)=>{ if(json.code!==0) { - if(json.msg) alert(json.msg); + if(json.msg) throw new Error(json.msg); throw new Error(JSON.stringify(json)); } return json;