diff options
author | kumavis <aaron@kumavis.me> | 2017-01-12 11:04:19 +0800 |
---|---|---|
committer | kumavis <aaron@kumavis.me> | 2017-01-12 11:31:21 +0800 |
commit | 8012ede12698477692b80769781096b559159a32 (patch) | |
tree | 17f75325da8f5d0abf2c1f37fa0573320730b6a7 /app/scripts/lib/observable/index.js | |
parent | cc5e9aca4fa2a1e78c49be680405d93ac918bccf (diff) | |
download | tangerine-wallet-browser-8012ede12698477692b80769781096b559159a32.tar.gz tangerine-wallet-browser-8012ede12698477692b80769781096b559159a32.tar.zst tangerine-wallet-browser-8012ede12698477692b80769781096b559159a32.zip |
background - introduce ObservableStore
Diffstat (limited to 'app/scripts/lib/observable/index.js')
-rw-r--r-- | app/scripts/lib/observable/index.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/app/scripts/lib/observable/index.js b/app/scripts/lib/observable/index.js new file mode 100644 index 000000000..d193e5554 --- /dev/null +++ b/app/scripts/lib/observable/index.js @@ -0,0 +1,33 @@ +const EventEmitter = require('events').EventEmitter + +class ObservableStore extends EventEmitter { + + constructor (initialState) { + super() + this._state = initialState + } + + get () { + return this._state + } + + put (newState) { + this._put(newState) + } + + subscribe (handler) { + this.on('update', handler) + } + + unsubscribe (handler) { + this.removeListener('update', handler) + } + + _put (newState) { + this._state = newState + this.emit('update', newState) + } + +} + +module.exports = ObservableStore |