aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/notice-controller.js
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2017-02-03 14:23:45 +0800
committerkumavis <aaron@kumavis.me>2017-02-03 14:23:45 +0800
commit8b5e3aa287ef5e803a68730db5ccb8bec0b6b254 (patch)
treed8eacfb7aee088120d145c089a754ab4b8fe7846 /app/scripts/notice-controller.js
parent73edfc9f31b1cbd44ae8b5372e7bef5d1d5959ad (diff)
downloadtangerine-wallet-browser-8b5e3aa287ef5e803a68730db5ccb8bec0b6b254.tar
tangerine-wallet-browser-8b5e3aa287ef5e803a68730db5ccb8bec0b6b254.tar.gz
tangerine-wallet-browser-8b5e3aa287ef5e803a68730db5ccb8bec0b6b254.tar.bz2
tangerine-wallet-browser-8b5e3aa287ef5e803a68730db5ccb8bec0b6b254.tar.lz
tangerine-wallet-browser-8b5e3aa287ef5e803a68730db5ccb8bec0b6b254.tar.xz
tangerine-wallet-browser-8b5e3aa287ef5e803a68730db5ccb8bec0b6b254.tar.zst
tangerine-wallet-browser-8b5e3aa287ef5e803a68730db5ccb8bec0b6b254.zip
migration #8 - break out NoticeController substate
Diffstat (limited to 'app/scripts/notice-controller.js')
-rw-r--r--app/scripts/notice-controller.js50
1 files changed, 24 insertions, 26 deletions
diff --git a/app/scripts/notice-controller.js b/app/scripts/notice-controller.js
index c3777b4b1..ba7c68df4 100644
--- a/app/scripts/notice-controller.js
+++ b/app/scripts/notice-controller.js
@@ -1,36 +1,37 @@
const EventEmitter = require('events').EventEmitter
+const extend = require('xtend')
+const ObservableStore = require('obs-store')
const hardCodedNotices = require('../../notices/notices.json')
module.exports = class NoticeController extends EventEmitter {
constructor (opts) {
super()
- this.configManager = opts.configManager
this.noticePoller = null
+ const initState = extend({
+ noticesList: [],
+ }, opts.initState)
+ this.store = new ObservableStore(initState)
+ this.memStore = new ObservableStore({})
+ this.store.subscribe(() => this._updateMemstore())
}
- getState () {
- var lastUnreadNotice = this.getLatestUnreadNotice()
+ getNoticesList () {
+ return this.store.getState().noticesList
+ }
- return {
- lastUnreadNotice: lastUnreadNotice,
- noActiveNotices: !lastUnreadNotice,
- }
+ getUnreadNotices () {
+ const notices = this.getNoticesList()
+ return notices.filter((notice) => notice.read === false)
}
- getNoticesList () {
- var data = this.configManager.getData()
- if ('noticesList' in data) {
- return data.noticesList
- } else {
- return []
- }
+ getLatestUnreadNotice () {
+ const unreadNotices = this.getUnreadNotices()
+ return unreadNotices[unreadNotices.length - 1]
}
- setNoticesList (list) {
- var data = this.configManager.getData()
- data.noticesList = list
- this.configManager.setData(data)
+ setNoticesList (noticesList) {
+ this.store.updateState({ noticesList })
return Promise.resolve(true)
}
@@ -56,14 +57,6 @@ module.exports = class NoticeController extends EventEmitter {
})
}
- getLatestUnreadNotice () {
- var notices = this.getNoticesList()
- var filteredNotices = notices.filter((notice) => {
- return notice.read === false
- })
- return filteredNotices[filteredNotices.length - 1]
- }
-
startPolling () {
if (this.noticePoller) {
clearInterval(this.noticePoller)
@@ -92,5 +85,10 @@ module.exports = class NoticeController extends EventEmitter {
return Promise.resolve(hardCodedNotices)
}
+ _updateMemstore () {
+ const lastUnreadNotice = this.getLatestUnreadNotice()
+ const noActiveNotices = !lastUnreadNotice
+ this.memStore.updateState({ lastUnreadNotice, noActiveNotices })
+ }
}