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:
parent
4d6bae774a
commit
e89f82399f
@ -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(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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))
|
||||||
|
@ -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",
|
||||||
|
Loading…
Reference in New Issue
Block a user