Use Tampermonkey's GM_addValueChangeListener.

This commit is contained in:
ccd0 2015-07-04 12:39:19 -07:00
parent 56fb01add1
commit 0402752060
3 changed files with 44 additions and 28 deletions

View File

@ -290,6 +290,7 @@ module.exports = (grunt) ->
GM_setValue: true GM_setValue: true
GM_deleteValue: true GM_deleteValue: true
GM_listValues: true GM_listValues: true
GM_addValueChangeListener: true
GM_openInTab: true GM_openInTab: true
GM_xmlhttpRequest: true GM_xmlhttpRequest: true
cloneInto: true cloneInto: true

View File

@ -421,10 +421,19 @@ do ->
<% } else { %> <% } else { %>
# http://wiki.greasespot.net/Main_Page # http://wiki.greasespot.net/Main_Page
$.oldValue = {}
if GM_deleteValue? if GM_deleteValue?
$.getValue = GM_getValue $.getValue = GM_getValue
$.listValues = -> GM_listValues() # error when called if missing
else
$.getValue = (key) -> localStorage[key]
$.listValues = ->
key for key of localStorage when key[...g.NAMESPACE.length] is g.NAMESPACE
if GM_addValueChangeListener?
$.setValue = GM_setValue
$.deleteValue = GM_deleteValue
else if GM_deleteValue?
$.oldValue = {}
$.setValue = (key, val) -> $.setValue = (key, val) ->
GM_setValue key, val GM_setValue key, val
if key of $.syncing if key of $.syncing
@ -435,24 +444,29 @@ if GM_deleteValue?
if key of $.syncing if key of $.syncing
delete $.oldValue[key] delete $.oldValue[key]
delete localStorage[key] # for `storage` events delete localStorage[key] # for `storage` events
$.listValues = -> GM_listValues() # error when called if missing
else else
$.getValue = (key) -> localStorage[key] $.oldValue = {}
$.setValue = (key, val) -> $.setValue = (key, val) ->
$.oldValue[key] = val if key of $.syncing $.oldValue[key] = val if key of $.syncing
localStorage[key] = val localStorage[key] = val
$.deleteValue = (key) -> $.deleteValue = (key) ->
delete $.oldValue[key] if key of $.syncing delete $.oldValue[key] if key of $.syncing
delete localStorage[key] delete localStorage[key]
$.listValues = ->
key for key of localStorage when key[...g.NAMESPACE.length] is g.NAMESPACE
$.sync = (key, cb) -> if GM_addValueChangeListener?
$.sync = (key, cb) ->
$.syncing[key] = GM_addValueChangeListener g.NAMESPACE + key, (key2, oldValue, newValue, remote) ->
if remote
newValue = JSON.parse newValue unless newValue is undefined
cb newValue, key
$.forceSync = ->
else
$.sync = (key, cb) ->
key = g.NAMESPACE + key key = g.NAMESPACE + key
$.syncing[key] = cb $.syncing[key] = cb
$.oldValue[key] = $.getValue key $.oldValue[key] = $.getValue key
do -> do ->
onChange = (key) -> onChange = (key) ->
return unless cb = $.syncing[key] return unless cb = $.syncing[key]
newValue = $.getValue key newValue = $.getValue key

View File

@ -22,6 +22,7 @@
// @grant GM_setValue // @grant GM_setValue
// @grant GM_deleteValue // @grant GM_deleteValue
// @grant GM_listValues // @grant GM_listValues
// @grant GM_addValueChangeListener
// @grant GM_openInTab // @grant GM_openInTab
// @grant GM_xmlhttpRequest // @grant GM_xmlhttpRequest
// @run-at document-start // @run-at document-start