UNPKG

1.52 kBJavaScriptView Raw
1import global from 'global';
2import memoize from 'memoizerific';
3const {
4 RELEASE_NOTES_DATA
5} = global;
6const getReleaseNotesData = memoize(1)(() => {
7 try {
8 return Object.assign({}, JSON.parse(RELEASE_NOTES_DATA) || {});
9 } catch (e) {
10 return {};
11 }
12});
13export 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 // The currentVersion will only exist for dev builds
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