1 | import global from 'global';
|
2 | import memoize from 'memoizerific';
|
3 | const {
|
4 | RELEASE_NOTES_DATA
|
5 | } = global;
|
6 | const getReleaseNotesData = memoize(1)(() => {
|
7 | try {
|
8 | return Object.assign({}, JSON.parse(RELEASE_NOTES_DATA) || {});
|
9 | } catch (e) {
|
10 | return {};
|
11 | }
|
12 | });
|
13 | export const init = ({
|
14 | store
|
15 | }) => {
|
16 | const releaseNotesData = getReleaseNotesData();
|
17 |
|
18 | const getReleaseNotesViewed = () => {
|
19 | const {
|
20 | releaseNotesViewed: persistedReleaseNotesViewed
|
21 | } = store.getState();
|
22 | return persistedReleaseNotesViewed || [];
|
23 | };
|
24 |
|
25 | const api = {
|
26 | releaseNotesVersion: () => releaseNotesData.currentVersion,
|
27 | setDidViewReleaseNotes: () => {
|
28 | const releaseNotesViewed = getReleaseNotesViewed();
|
29 |
|
30 | if (!releaseNotesViewed.includes(releaseNotesData.currentVersion)) {
|
31 | store.setState({
|
32 | releaseNotesViewed: [...releaseNotesViewed, releaseNotesData.currentVersion]
|
33 | }, {
|
34 | persistence: 'permanent'
|
35 | });
|
36 | }
|
37 | },
|
38 | showReleaseNotesOnLaunch: () => {
|
39 |
|
40 | if (!releaseNotesData.currentVersion) return false;
|
41 | const releaseNotesViewed = getReleaseNotesViewed();
|
42 | const didViewReleaseNotes = releaseNotesViewed.includes(releaseNotesData.currentVersion);
|
43 | const showReleaseNotesOnLaunch = releaseNotesData.showOnFirstLaunch && !didViewReleaseNotes;
|
44 | return showReleaseNotesOnLaunch;
|
45 | }
|
46 | };
|
47 |
|
48 | const initModule = () => {};
|
49 |
|
50 | return {
|
51 | init: initModule,
|
52 | api
|
53 | };
|
54 | }; |
\ | No newline at end of file |