Browse Source

fix: sync after script update

Gerald 8 years ago
parent
commit
97174a2273
2 changed files with 18 additions and 9 deletions
  1. 8 2
      src/background/app.js
  2. 10 7
      src/background/utils/update.js

+ 8 - 2
src/background/app.js

@@ -30,7 +30,10 @@ function broadcast(data) {
 function checkUpdateAll() {
   setOption('lastUpdate', Date.now());
   vmdb.getScriptsByIndex('update', 1)
-  .then(scripts => Promise.all(scripts.map(checkUpdate)));
+  .then(scripts => Promise.all(scripts.map(checkUpdate)))
+  .then(updatedList => {
+    if (updatedList.some(Boolean)) sync.sync();
+  });
 }
 
 let autoUpdating;
@@ -132,7 +135,10 @@ const commands = {
     });
   },
   CheckUpdate(id) {
-    vmdb.getScript(id).then(checkUpdate);
+    vmdb.getScript(id).then(checkUpdate)
+    .then(updated => {
+      if (updated) sync.sync();
+    });
   },
   CheckUpdateAll: checkUpdateAll,
   ParseMeta(code) {

+ 10 - 7
src/background/utils/update.js

@@ -1,4 +1,4 @@
-import { i18n, request } from 'src/common';
+import { i18n, request, noop } from 'src/common';
 import { parseScript } from './db';
 import { parseMeta, compareVersion } from './script';
 
@@ -63,20 +63,23 @@ function doCheckUpdate(script) {
 export default function checkUpdate(script) {
   let promise = processes[script.id];
   if (!promise) {
+    let updated = false;
     promise = doCheckUpdate(script)
-    .then(code => {
-      delete processes[script.id];
-      return parseScript({
+    .then(code => (
+      parseScript({
         code,
         id: script.id,
       })
       .then(res => {
         res.data.checking = false;
         browser.runtime.sendMessage(res);
-      });
-    }, () => {
+        updated = true;
+      })
+    ))
+    .catch(noop)
+    .then(() => {
       delete processes[script.id];
-      // return Promise.reject();
+      return updated;
     });
     processes[script.id] = promise;
   }