Add optional version field to notices

Allows notices to only show to users who are on a certain version.
This commit is contained in:
Dan Finlay 2017-11-28 11:14:57 -08:00
parent 4d6bae774a
commit e89f82399f
3 changed files with 21 additions and 1 deletions

View File

@ -44,6 +44,7 @@ module.exports = class MetamaskController extends EventEmitter {
this.opts = opts
const initState = opts.initState || {}
this.recordFirstTimeInfo(initState)
// platform-specific api
this.platform = opts.platform
@ -149,6 +150,7 @@ module.exports = class MetamaskController extends EventEmitter {
// notices
this.noticeController = new NoticeController({
initState: initState.NoticeController,
version,
})
this.noticeController.updateNoticesList()
// to be uncommented when retrieving notices from a remote server.
@ -797,4 +799,13 @@ module.exports = class MetamaskController extends EventEmitter {
return rpcTarget
}
recordFirstTimeInfo (initState) {
if (!('firstTimeInfo' in initState)) {
initState.firstTimeInfo = {
version,
date: Date.now(),
}
}
}
}

View File

@ -1,4 +1,5 @@
const EventEmitter = require('events').EventEmitter
const semver = require('semver')
const extend = require('xtend')
const ObservableStore = require('obs-store')
const hardCodedNotices = require('../../notices/notices.json')
@ -8,6 +9,7 @@ module.exports = class NoticeController extends EventEmitter {
constructor (opts) {
super()
this.noticePoller = null
this.version = opts.version
const initState = extend({
noticesList: [],
}, opts.initState)
@ -51,7 +53,13 @@ module.exports = class NoticeController extends EventEmitter {
}
updateNoticesList () {
return this._retrieveNoticeData().then((newNotices) => {
return this._retrieveNoticeData().then((hardNotices) => {
const newNotices = hardNotices.filter((newNotice) => {
if ('version' in newNotice) {
return semver.satisfies(this.version, newNotice.version)
}
return true
})
var oldNotices = this.getNoticesList()
var combinedNotices = this._mergeNotices(oldNotices, newNotices)
return Promise.resolve(this.setNoticesList(combinedNotices))

View File

@ -144,6 +144,7 @@
"request-promise": "^4.2.1",
"sandwich-expando": "^1.1.3",
"semaphore": "^1.0.5",
"semver": "^5.4.1",
"sw-stream": "^2.0.0",
"textarea-caret": "^3.0.1",
"through2": "^2.0.3",