浏览代码

Wait for storage to load before trying to register webrequest event handlers

simov 7 年之前
父节点
当前提交
c3abc0e532
共有 2 个文件被更改,包括 17 次插入17 次删除
  1. 15 14
      background/index.js
  2. 2 3
      background/storage.js

+ 15 - 14
background/index.js

@@ -1,24 +1,25 @@
 
 ;(() => {
-  var storage = md.storage(md)
+  md.storage(md, (storage) => {
+    var inject = md.inject({storage})
+    var detect = md.detect({storage, inject})
+    var webrequest = md.webrequest({storage, detect})
+    var mathjax = md.mathjax()
 
-  var inject = md.inject({storage})
-  var detect = md.detect({storage, inject})
-  var webrequest = md.webrequest({storage, detect})
-  var mathjax = md.mathjax()
+    var compilers = Object.keys(md.compilers)
+      .reduce((all, compiler) => (
+        all[compiler] = md.compilers[compiler]({storage}),
+        all
+      ), {})
 
-  var compilers = Object.keys(md.compilers)
-    .reduce((all, compiler) => (
-      all[compiler] = md.compilers[compiler]({storage}),
-      all
-    ), {})
+    var messages = md.messages({storage, compilers, mathjax, webrequest})
 
-  var messages = md.messages({storage, compilers, mathjax, webrequest})
 
+    chrome.tabs.onUpdated.addListener(detect.tab)
 
-  chrome.tabs.onUpdated.addListener(detect.tab)
+    chrome.runtime.onMessage.addListener(messages)
 
-  chrome.runtime.onMessage.addListener(messages)
+    webrequest()
+  })
 
-  setTimeout(webrequest, 0)
 })()

+ 2 - 3
background/storage.js

@@ -2,7 +2,7 @@
 // chrome.storage.sync.clear()
 // chrome.permissions.getAll((p) => chrome.permissions.remove({origins: p.origins}))
 
-md.storage = ({compilers}) => {
+md.storage = ({compilers}, done) => {
   var match = '\\.(?:markdown|mdown|mkdn|md|mkd|mdwn|mdtxt|mdtext|text)(?:#.*|\\?.*)?$'
 
   var defaults = {
@@ -117,7 +117,6 @@ md.storage = ({compilers}) => {
 
     chrome.storage.sync.set(options)
     Object.assign(state, JSON.parse(JSON.stringify(options)))
+    done({defaults, state, set})
   })
-
-  return {defaults, state, set}
 }