Skip to content

Commit

Permalink
Adding migration for support notification removal
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanml committed May 17, 2021
1 parent 7977f5f commit f33a457
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 22 deletions.
12 changes: 0 additions & 12 deletions app/_locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -1264,18 +1264,6 @@
"message": "Swapping on mobile is here!",
"description": "Title for a notification in the 'See What's New' popup. Tells users that they can now use MetaMask Swaps on Mobile."
},
"notifications2ActionText": {
"message": "Start survey",
"description": "The 'call to action' label on the button, or link, of the 'Help improve MetaMask' 'See What's New' notification. Upon clicking, users will be taken to an external page where they can complete a survey."
},
"notifications2Description": {
"message": "Please share your experience in this 5 minute survey.",
"description": "Description of a notification in the 'See What's New' popup. Further clarifies how the users can help: by completing a 5 minute survey about MetaMask."
},
"notifications2Title": {
"message": "Help improve MetaMask",
"description": "Title for a notification in the 'See What's New' popup. Asks users to take action to make MetaMask better."
},
"notifications3ActionText": {
"message": "Read more",
"description": "The 'call to action' on the button, or link, of the 'Stay secure' notification. Upon clicking, users will be taken to a page about security on the metamask support website."
Expand Down
30 changes: 30 additions & 0 deletions app/scripts/migrations/060.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { cloneDeep } from 'lodash';

const version = 60;
const SUPPORT_NOTIFICATION_KEY = 2;
const SUPPORT_NOTIFICATION_DATE = '2020-08-31';

/**
* Removes the support survey notification
*/
export default {
version,
async migrate(originalVersionedData) {
const versionedData = cloneDeep(originalVersionedData);
versionedData.meta.version = version;
const state = versionedData.data;
const newState = transformState(state);
versionedData.data = newState;
return versionedData;
},
};

function transformState(state) {
if (
state?.NotificationController?.notifications[SUPPORT_NOTIFICATION_KEY]
.date === SUPPORT_NOTIFICATION_DATE
) {
delete state.NotificationController.notifications[SUPPORT_NOTIFICATION_KEY];
}
return state;
}
75 changes: 75 additions & 0 deletions app/scripts/migrations/060.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import { strict as assert } from 'assert';
import migration60 from './060';

describe('migration #60', function () {
it('should update the version metadata', function (done) {
const oldStorage = {
meta: {
version: 59,
},
data: {},
};

migration60
.migrate(oldStorage)
.then((newStorage) => {
assert.deepEqual(newStorage.meta, {
version: 60,
});
done();
})
.catch(done);
});

it('prunes the support notification', function (done) {
const oldStorage = {
meta: {},
data: {
NotificationController: {
notifications: {
1: {
id: 1,
date: '2021-03-17',
image: {
src: 'images/mobile-link-qr.svg',
height: '230px',
width: '230px',
placeImageBelowDescription: true,
},
},
2: {
id: 2,
date: '2020-08-31',
},
3: {
id: 3,
date: '2021-03-08',
},
4: {
id: 4,
date: '2021-05-11',
image: {
src: 'images/source-logos-bsc.svg',
width: '100%',
},
},
},
},
},
};

migration60
.migrate(oldStorage)
.then((newStorage) => {
const { notifications } = newStorage.data.NotificationController;
const notificationKeys = Object.keys(notifications);
// Assert support notification is removed
assert.equal(notificationKeys.length, 3);
notificationKeys.forEach((key) => {
assert.notEqual(notifications[key].date, '2020-08-31');
});
done();
})
.catch(done);
});
});
1 change: 1 addition & 0 deletions app/scripts/migrations/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ const migrations = [
require('./057').default,
require('./058').default,
require('./059').default,
require('./060').default,
];

export default migrations;
20 changes: 10 additions & 10 deletions shared/notifications/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ export const UI_NOTIFICATIONS = {
placeImageBelowDescription: true,
},
},
2: {
id: 2,
date: '2021-03-08',
},
3: {
id: 3,
date: '2021-03-08',
},
4: {
id: 4,
date: '2021-05-11',
image: {
src: 'images/source-logos-bsc.svg',
Expand All @@ -35,22 +35,22 @@ export const getTranslatedUINoficiations = (t, locale) => {
new Date(UI_NOTIFICATIONS[1].date),
),
},
2: {
...UI_NOTIFICATIONS[2],
3: {
...UI_NOTIFICATIONS[3],
title: t('notifications3Title'),
description: t('notifications3Description'),
actionText: t('notifications3ActionText'),
date: new Intl.DateTimeFormat(formattedLocale).format(
new Date(UI_NOTIFICATIONS[2].date),
new Date(UI_NOTIFICATIONS[3].date),
),
},
3: {
...UI_NOTIFICATIONS[3],
4: {
...UI_NOTIFICATIONS[4],
title: t('notifications4Title'),
description: t('notifications4Description'),
actionText: t('notifications4ActionText'),
date: new Intl.DateTimeFormat(locale).format(
new Date(UI_NOTIFICATIONS[3].date),
new Date(UI_NOTIFICATIONS[4].date),
),
},
};
Expand Down

0 comments on commit f33a457

Please sign in to comment.