mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-22 09:23:21 +01:00
notices - replace getLatestNotice with getNextNotice
This commit is contained in:
parent
ac8b56a00d
commit
44a8e48a04
@ -189,9 +189,6 @@ module.exports = class MetamaskController extends EventEmitter {
|
||||
version,
|
||||
firstVersion: initState.firstTimeInfo.version,
|
||||
})
|
||||
this.noticeController.updateNoticesList()
|
||||
// to be uncommented when retrieving notices from a remote server.
|
||||
// this.noticeController.startPolling()
|
||||
|
||||
this.shapeshiftController = new ShapeShiftController({
|
||||
initState: initState.ShapeShiftController,
|
||||
|
@ -13,7 +13,7 @@ module.exports = class NoticeController extends EventEmitter {
|
||||
this.firstVersion = opts.firstVersion
|
||||
this.version = opts.version
|
||||
const initState = extend({
|
||||
noticesList: [],
|
||||
noticesList: hardCodedNotices,
|
||||
}, opts.initState)
|
||||
this.store = new ObservableStore(initState)
|
||||
this.memStore = new ObservableStore({})
|
||||
@ -29,9 +29,9 @@ module.exports = class NoticeController extends EventEmitter {
|
||||
return notices.filter((notice) => notice.read === false)
|
||||
}
|
||||
|
||||
getLatestUnreadNotice () {
|
||||
getNextUnreadNotice () {
|
||||
const unreadNotices = this.getUnreadNotices()
|
||||
return unreadNotices[unreadNotices.length - 1]
|
||||
return unreadNotices[0]
|
||||
}
|
||||
|
||||
async setNoticesList (noticesList) {
|
||||
@ -47,7 +47,7 @@ module.exports = class NoticeController extends EventEmitter {
|
||||
notices[index].read = true
|
||||
notices[index].body = ''
|
||||
this.setNoticesList(notices)
|
||||
const latestNotice = this.getLatestUnreadNotice()
|
||||
const latestNotice = this.getNextUnreadNotice()
|
||||
cb(null, latestNotice)
|
||||
} catch (err) {
|
||||
cb(err)
|
||||
@ -64,15 +64,6 @@ module.exports = class NoticeController extends EventEmitter {
|
||||
return result
|
||||
}
|
||||
|
||||
startPolling () {
|
||||
if (this.noticePoller) {
|
||||
clearInterval(this.noticePoller)
|
||||
}
|
||||
this.noticePoller = setInterval(() => {
|
||||
this.noticeController.updateNoticesList()
|
||||
}, 300000)
|
||||
}
|
||||
|
||||
_mergeNotices (oldNotices, newNotices) {
|
||||
return uniqBy(oldNotices.concat(newNotices), 'id')
|
||||
}
|
||||
@ -91,19 +82,15 @@ module.exports = class NoticeController extends EventEmitter {
|
||||
})
|
||||
}
|
||||
|
||||
_mapNoticeIds (notices) {
|
||||
return notices.map((notice) => notice.id)
|
||||
}
|
||||
|
||||
async _retrieveNoticeData () {
|
||||
// Placeholder for the API.
|
||||
return hardCodedNotices
|
||||
return []
|
||||
}
|
||||
|
||||
_updateMemstore () {
|
||||
const lastUnreadNotice = this.getLatestUnreadNotice()
|
||||
const noActiveNotices = !lastUnreadNotice
|
||||
this.memStore.updateState({ lastUnreadNotice, noActiveNotices })
|
||||
const nextUnreadNotice = this.getNextUnreadNotice()
|
||||
const noActiveNotices = !nextUnreadNotice
|
||||
this.memStore.updateState({ nextUnreadNotice, noActiveNotices })
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -52,7 +52,7 @@
|
||||
"conversionRate": 12.7200827,
|
||||
"conversionDate": 1487363041,
|
||||
"noActiveNotices": true,
|
||||
"lastUnreadNotice": {
|
||||
"nextUnreadNotice": {
|
||||
"read": true,
|
||||
"date": "Thu Feb 09 2017",
|
||||
"title": "Terms of Use",
|
||||
|
@ -12,7 +12,7 @@
|
||||
"conversionRate": 12.7527416,
|
||||
"conversionDate": 1487624341,
|
||||
"noActiveNotices": false,
|
||||
"lastUnreadNotice": {
|
||||
"nextUnreadNotice": {
|
||||
"read": false,
|
||||
"date": "Thu Feb 09 2017",
|
||||
"title": "Terms of Use",
|
||||
|
@ -13,7 +13,7 @@
|
||||
"conversionRate": 8.3533002,
|
||||
"conversionDate": 1481671082,
|
||||
"noActiveNotices": false,
|
||||
"lastUnreadNotice": {
|
||||
"nextUnreadNotice": {
|
||||
"read": false,
|
||||
"date": "Tue Dec 13 2016",
|
||||
"title": "MultiVault Support",
|
||||
|
@ -14,7 +14,7 @@ import LoadingScreen from './loading-screen'
|
||||
class NoticeScreen extends Component {
|
||||
static propTypes = {
|
||||
address: PropTypes.string.isRequired,
|
||||
lastUnreadNotice: PropTypes.shape({
|
||||
nextUnreadNotice: PropTypes.shape({
|
||||
title: PropTypes.string,
|
||||
date: PropTypes.string,
|
||||
body: PropTypes.string,
|
||||
@ -31,7 +31,7 @@ class NoticeScreen extends Component {
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
lastUnreadNotice: {},
|
||||
nextUnreadNotice: {},
|
||||
};
|
||||
|
||||
state = {
|
||||
@ -47,8 +47,8 @@ class NoticeScreen extends Component {
|
||||
}
|
||||
|
||||
acceptTerms = () => {
|
||||
const { markNoticeRead, lastUnreadNotice, history } = this.props
|
||||
markNoticeRead(lastUnreadNotice)
|
||||
const { markNoticeRead, nextUnreadNotice, history } = this.props
|
||||
markNoticeRead(nextUnreadNotice)
|
||||
.then(hasActiveNotices => {
|
||||
if (!hasActiveNotices) {
|
||||
history.push(INITIALIZE_BACKUP_PHRASE_ROUTE)
|
||||
@ -72,7 +72,7 @@ class NoticeScreen extends Component {
|
||||
render () {
|
||||
const {
|
||||
address,
|
||||
lastUnreadNotice: { title, body },
|
||||
nextUnreadNotice: { title, body },
|
||||
isLoading,
|
||||
} = this.props
|
||||
const { atBottom } = this.state
|
||||
@ -113,12 +113,12 @@ class NoticeScreen extends Component {
|
||||
}
|
||||
|
||||
const mapStateToProps = ({ metamask, appState }) => {
|
||||
const { selectedAddress, lastUnreadNotice, noActiveNotices } = metamask
|
||||
const { selectedAddress, nextUnreadNotice, noActiveNotices } = metamask
|
||||
const { isLoading } = appState
|
||||
|
||||
return {
|
||||
address: selectedAddress,
|
||||
lastUnreadNotice,
|
||||
nextUnreadNotice,
|
||||
noActiveNotices,
|
||||
isLoading,
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ function mapStateToProps (state) {
|
||||
network: state.metamask.network,
|
||||
provider: state.metamask.provider,
|
||||
forgottenPassword: state.appState.forgottenPassword,
|
||||
lastUnreadNotice: state.metamask.lastUnreadNotice,
|
||||
nextUnreadNotice: state.metamask.nextUnreadNotice,
|
||||
lostAccounts: state.metamask.lostAccounts,
|
||||
frequentRpcList: state.metamask.frequentRpcList || [],
|
||||
featureFlags,
|
||||
@ -460,9 +460,9 @@ App.prototype.renderPrimary = function () {
|
||||
}, [
|
||||
|
||||
h(NoticeScreen, {
|
||||
notice: props.lastUnreadNotice,
|
||||
notice: props.nextUnreadNotice,
|
||||
key: 'NoticeScreen',
|
||||
onConfirm: () => props.dispatch(actions.markNoticeRead(props.lastUnreadNotice)),
|
||||
onConfirm: () => props.dispatch(actions.markNoticeRead(props.nextUnreadNotice)),
|
||||
}),
|
||||
|
||||
!props.isInitialized && h('.flex-row.flex-center.flex-grow', [
|
||||
|
@ -14,18 +14,6 @@ describe('notice-controller', function () {
|
||||
})
|
||||
|
||||
describe('notices', function () {
|
||||
describe('#getNoticesList', function () {
|
||||
it('should return an empty array when new', function (done) {
|
||||
// const testList = [{
|
||||
// id: 0,
|
||||
// read: false,
|
||||
// title: 'Futuristic Notice',
|
||||
// }]
|
||||
var result = noticeController.getNoticesList()
|
||||
assert.equal(result.length, 0)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
describe('#setNoticesList', function () {
|
||||
it('should set data appropriately', function (done) {
|
||||
@ -41,36 +29,6 @@ describe('notice-controller', function () {
|
||||
})
|
||||
})
|
||||
|
||||
describe('#updateNoticeslist', function () {
|
||||
it('should integrate the latest changes from the source', function (done) {
|
||||
var testList = [{
|
||||
id: 55,
|
||||
read: false,
|
||||
title: 'Futuristic Notice',
|
||||
}]
|
||||
noticeController.setNoticesList(testList)
|
||||
noticeController.updateNoticesList().then(() => {
|
||||
var newList = noticeController.getNoticesList()
|
||||
assert.ok(newList[0].id === 55)
|
||||
assert.ok(newList[1])
|
||||
done()
|
||||
})
|
||||
})
|
||||
it('should not overwrite any existing fields', function (done) {
|
||||
var testList = [{
|
||||
id: 0,
|
||||
read: false,
|
||||
title: 'Futuristic Notice',
|
||||
}]
|
||||
noticeController.setNoticesList(testList)
|
||||
var newList = noticeController.getNoticesList()
|
||||
assert.equal(newList[0].id, 0)
|
||||
assert.equal(newList[0].title, 'Futuristic Notice')
|
||||
assert.equal(newList.length, 1)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
describe('#markNoticeRead', function () {
|
||||
it('should mark a notice as read', function (done) {
|
||||
var testList = [{
|
||||
@ -86,7 +44,7 @@ describe('notice-controller', function () {
|
||||
})
|
||||
})
|
||||
|
||||
describe('#getLatestUnreadNotice', function () {
|
||||
describe('#getNextUnreadNotice', function () {
|
||||
it('should retrieve the latest unread notice', function (done) {
|
||||
var testList = [
|
||||
{id: 0, read: true, title: 'Past Notice'},
|
||||
@ -94,8 +52,8 @@ describe('notice-controller', function () {
|
||||
{id: 2, read: false, title: 'Future Notice'},
|
||||
]
|
||||
noticeController.setNoticesList(testList)
|
||||
var latestUnread = noticeController.getLatestUnreadNotice()
|
||||
assert.equal(latestUnread.id, 2)
|
||||
var latestUnread = noticeController.getNextUnreadNotice()
|
||||
assert.equal(latestUnread.id, 1)
|
||||
done()
|
||||
})
|
||||
it('should return undefined if no unread notices exist.', function (done) {
|
||||
@ -105,7 +63,7 @@ describe('notice-controller', function () {
|
||||
{id: 2, read: true, title: 'Future Notice'},
|
||||
]
|
||||
noticeController.setNoticesList(testList)
|
||||
var latestUnread = noticeController.getLatestUnreadNotice()
|
||||
var latestUnread = noticeController.getNextUnreadNotice()
|
||||
assert.ok(!latestUnread)
|
||||
done()
|
||||
})
|
||||
|
@ -314,7 +314,7 @@ function mapStateToProps (state) {
|
||||
noActiveNotices,
|
||||
seedWords,
|
||||
unapprovedTxs,
|
||||
lastUnreadNotice,
|
||||
nextUnreadNotice,
|
||||
lostAccounts,
|
||||
unapprovedMsgCount,
|
||||
unapprovedPersonalMsgCount,
|
||||
@ -348,7 +348,7 @@ function mapStateToProps (state) {
|
||||
network: state.metamask.network,
|
||||
provider: state.metamask.provider,
|
||||
forgottenPassword: state.appState.forgottenPassword,
|
||||
lastUnreadNotice,
|
||||
nextUnreadNotice,
|
||||
lostAccounts,
|
||||
frequentRpcList: state.metamask.frequentRpcList || [],
|
||||
currentCurrency: state.metamask.currentCurrency,
|
||||
|
@ -86,9 +86,9 @@ class Home extends Component {
|
||||
// if (!props.noActiveNotices) {
|
||||
// log.debug('rendering notice screen for unread notices.')
|
||||
// return h(NoticeScreen, {
|
||||
// notice: props.lastUnreadNotice,
|
||||
// notice: props.nextUnreadNotice,
|
||||
// key: 'NoticeScreen',
|
||||
// onConfirm: () => props.dispatch(actions.markNoticeRead(props.lastUnreadNotice)),
|
||||
// onConfirm: () => props.dispatch(actions.markNoticeRead(props.nextUnreadNotice)),
|
||||
// })
|
||||
// } else if (props.lostAccounts && props.lostAccounts.length > 0) {
|
||||
// log.debug('rendering notice screen for lost accounts view.')
|
||||
@ -279,7 +279,7 @@ function mapStateToProps (state) {
|
||||
noActiveNotices,
|
||||
seedWords,
|
||||
unapprovedTxs,
|
||||
lastUnreadNotice,
|
||||
nextUnreadNotice,
|
||||
lostAccounts,
|
||||
unapprovedMsgCount,
|
||||
unapprovedPersonalMsgCount,
|
||||
@ -313,7 +313,7 @@ function mapStateToProps (state) {
|
||||
network: state.metamask.network,
|
||||
provider: state.metamask.provider,
|
||||
forgottenPassword: state.appState.forgottenPassword,
|
||||
lastUnreadNotice,
|
||||
nextUnreadNotice,
|
||||
lostAccounts,
|
||||
frequentRpcList: state.metamask.frequentRpcList || [],
|
||||
currentCurrency: state.metamask.currentCurrency,
|
||||
|
@ -154,11 +154,11 @@ class Notice extends Component {
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const { metamask } = state
|
||||
const { noActiveNotices, lastUnreadNotice, lostAccounts } = metamask
|
||||
const { noActiveNotices, nextUnreadNotice, lostAccounts } = metamask
|
||||
|
||||
return {
|
||||
noActiveNotices,
|
||||
lastUnreadNotice,
|
||||
nextUnreadNotice,
|
||||
lostAccounts,
|
||||
}
|
||||
}
|
||||
@ -171,21 +171,21 @@ Notice.propTypes = {
|
||||
|
||||
const mapDispatchToProps = dispatch => {
|
||||
return {
|
||||
markNoticeRead: lastUnreadNotice => dispatch(actions.markNoticeRead(lastUnreadNotice)),
|
||||
markNoticeRead: nextUnreadNotice => dispatch(actions.markNoticeRead(nextUnreadNotice)),
|
||||
markAccountsFound: () => dispatch(actions.markAccountsFound()),
|
||||
}
|
||||
}
|
||||
|
||||
const mergeProps = (stateProps, dispatchProps, ownProps) => {
|
||||
const { noActiveNotices, lastUnreadNotice, lostAccounts } = stateProps
|
||||
const { noActiveNotices, nextUnreadNotice, lostAccounts } = stateProps
|
||||
const { markNoticeRead, markAccountsFound } = dispatchProps
|
||||
|
||||
let notice
|
||||
let onConfirm
|
||||
|
||||
if (!noActiveNotices) {
|
||||
notice = lastUnreadNotice
|
||||
onConfirm = () => markNoticeRead(lastUnreadNotice)
|
||||
notice = nextUnreadNotice
|
||||
onConfirm = () => markNoticeRead(nextUnreadNotice)
|
||||
} else if (lostAccounts && lostAccounts.length > 0) {
|
||||
notice = generateLostAccountsNotice(lostAccounts)
|
||||
onConfirm = () => markAccountsFound()
|
||||
|
@ -21,7 +21,7 @@ function reduceMetamask (state, action) {
|
||||
identities: {},
|
||||
unapprovedTxs: {},
|
||||
noActiveNotices: true,
|
||||
lastUnreadNotice: undefined,
|
||||
nextUnreadNotice: undefined,
|
||||
frequentRpcList: [],
|
||||
addressBook: [],
|
||||
selectedTokenAddress: null,
|
||||
@ -65,7 +65,7 @@ function reduceMetamask (state, action) {
|
||||
case actions.SHOW_NOTICE:
|
||||
return extend(metamaskState, {
|
||||
noActiveNotices: false,
|
||||
lastUnreadNotice: action.value,
|
||||
nextUnreadNotice: action.value,
|
||||
})
|
||||
|
||||
case actions.CLEAR_NOTICES:
|
||||
|
Loading…
Reference in New Issue
Block a user