1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

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 this.opts = opts
const initState = opts.initState || {} const initState = opts.initState || {}
this.recordFirstTimeInfo(initState)
// platform-specific api // platform-specific api
this.platform = opts.platform this.platform = opts.platform
@ -149,6 +150,7 @@ module.exports = class MetamaskController extends EventEmitter {
// notices // notices
this.noticeController = new NoticeController({ this.noticeController = new NoticeController({
initState: initState.NoticeController, initState: initState.NoticeController,
version,
}) })
this.noticeController.updateNoticesList() this.noticeController.updateNoticesList()
// to be uncommented when retrieving notices from a remote server. // to be uncommented when retrieving notices from a remote server.
@ -797,4 +799,13 @@ module.exports = class MetamaskController extends EventEmitter {
return rpcTarget 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 EventEmitter = require('events').EventEmitter
const semver = require('semver')
const extend = require('xtend') const extend = require('xtend')
const ObservableStore = require('obs-store') const ObservableStore = require('obs-store')
const hardCodedNotices = require('../../notices/notices.json') const hardCodedNotices = require('../../notices/notices.json')
@ -8,6 +9,7 @@ module.exports = class NoticeController extends EventEmitter {
constructor (opts) { constructor (opts) {
super() super()
this.noticePoller = null this.noticePoller = null
this.version = opts.version
const initState = extend({ const initState = extend({
noticesList: [], noticesList: [],
}, opts.initState) }, opts.initState)
@ -51,7 +53,13 @@ module.exports = class NoticeController extends EventEmitter {
} }
updateNoticesList () { 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 oldNotices = this.getNoticesList()
var combinedNotices = this._mergeNotices(oldNotices, newNotices) var combinedNotices = this._mergeNotices(oldNotices, newNotices)
return Promise.resolve(this.setNoticesList(combinedNotices)) return Promise.resolve(this.setNoticesList(combinedNotices))

View File

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