aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/config-manager.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/lib/config-manager.js')
-rw-r--r--app/scripts/lib/config-manager.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js
index b8ffb6991..b5e4995ad 100644
--- a/app/scripts/lib/config-manager.js
+++ b/app/scripts/lib/config-manager.js
@@ -2,6 +2,7 @@ const Migrator = require('pojo-migrator')
const MetamaskConfig = require('../config.js')
const migrations = require('./migrations')
const rp = require('request-promise')
+const notices = require('../../../development/notices.json')
const TESTNET_RPC = MetamaskConfig.network.testnet
const MAINNET_RPC = MetamaskConfig.network.mainnet
@@ -162,6 +163,69 @@ ConfigManager.prototype.setData = function (data) {
}
//
+// Notices
+//
+
+ConfigManager.prototype.getNoticesList = function () {
+ var data = this.getData()
+ if ('noticesList' in data) {
+ return data.noticesList
+ } else {
+ return []
+ }
+}
+
+ConfigManager.prototype.setNoticesList = function (list) {
+ var data = this.getData()
+ data.noticesList = list
+ this.setData(data)
+ return Promise.resolve(true)
+}
+
+ConfigManager.prototype.markNoticeRead = function (notice) {
+ var notices = this.getNoticesList()
+ var id = notice.id
+ notices[id].read = true
+ this.setNoticesList(notices)
+}
+
+ConfigManager.prototype.updateNoticesList = function () {
+ return this._retrieveNoticeData().then((newNotices) => {
+ var oldNotices = this.getNoticesList()
+ var combinedNotices = this._mergeNotices(oldNotices, newNotices)
+ return Promise.resolve(this.setNoticesList(combinedNotices))
+ })
+}
+
+ConfigManager.prototype.getLatestUnreadNotice = function () {
+ var notices = this.getNoticesList()
+ var filteredNotices = notices.filter((notice) => {
+ return notice.read === false
+ })
+ return filteredNotices[filteredNotices.length - 1]
+}
+
+ConfigManager.prototype._mergeNotices = function (oldNotices, newNotices) {
+ var noticeMap = this._mapNoticeIds(oldNotices)
+ newNotices.forEach((notice) => {
+ if (noticeMap.indexOf(notice.id) === -1) {
+ oldNotices.push(notice)
+ }
+ })
+ return oldNotices
+}
+
+ConfigManager.prototype._mapNoticeIds = function (notices) {
+ return notices.map((notice) => notice.id)
+}
+
+ConfigManager.prototype._retrieveNoticeData = function () {
+ // Placeholder for the API.
+ return Promise.resolve(notices)
+}
+
+
+//
// Tx
//