aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/observable/index.js
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2017-01-12 11:04:19 +0800
committerkumavis <aaron@kumavis.me>2017-01-12 11:31:21 +0800
commit8012ede12698477692b80769781096b559159a32 (patch)
tree17f75325da8f5d0abf2c1f37fa0573320730b6a7 /app/scripts/lib/observable/index.js
parentcc5e9aca4fa2a1e78c49be680405d93ac918bccf (diff)
downloadtangerine-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.js33
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