diff options
author | Stefan Malzner <stefan@adlk.io> | 2019-02-25 16:34:18 +0100 |
---|---|---|
committer | Stefan Malzner <stefan@adlk.io> | 2019-02-25 16:34:18 +0100 |
commit | 2d4ee04e874e4420aa940c148c77c977188b9500 (patch) | |
tree | a2435b5718f67a6588e5bbb5fd8e82c10fb5c9b4 /src/features/shareFranz/index.js | |
parent | remove code (diff) | |
download | ferdium-app-2d4ee04e874e4420aa940c148c77c977188b9500.tar.gz ferdium-app-2d4ee04e874e4420aa940c148c77c977188b9500.tar.zst ferdium-app-2d4ee04e874e4420aa940c148c77c977188b9500.zip |
Add dialog to share franz on social media
Diffstat (limited to 'src/features/shareFranz/index.js')
-rw-r--r-- | src/features/shareFranz/index.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/features/shareFranz/index.js b/src/features/shareFranz/index.js new file mode 100644 index 000000000..3a8ec95d3 --- /dev/null +++ b/src/features/shareFranz/index.js | |||
@@ -0,0 +1,52 @@ | |||
1 | import { observable, reaction } from 'mobx'; | ||
2 | import ms from 'ms'; | ||
3 | |||
4 | import { state as delayAppState } from '../delayApp'; | ||
5 | import { gaEvent, gaPage } from '../../lib/analytics'; | ||
6 | |||
7 | export { default as Component } from './Component'; | ||
8 | |||
9 | const debug = require('debug')('Franz:feature:shareFranz'); | ||
10 | |||
11 | const defaultState = { | ||
12 | isModalVisible: false, | ||
13 | lastShown: null, | ||
14 | }; | ||
15 | |||
16 | export const state = observable(defaultState); | ||
17 | |||
18 | export default function initialize(stores) { | ||
19 | debug('Initialize shareFranz feature'); | ||
20 | |||
21 | window.franz.features.shareFranz = { | ||
22 | state, | ||
23 | }; | ||
24 | |||
25 | function showModal() { | ||
26 | debug('Showing share window'); | ||
27 | |||
28 | state.isModalVisible = true; | ||
29 | |||
30 | gaEvent('Share Franz', 'show'); | ||
31 | gaPage('/share-modal'); | ||
32 | } | ||
33 | |||
34 | reaction( | ||
35 | () => stores.user.isLoggedIn, | ||
36 | () => { | ||
37 | setTimeout(() => { | ||
38 | if (stores.settings.stats.appStarts % 30 === 0) { | ||
39 | if (delayAppState.isDelayAppScreenVisible) { | ||
40 | debug('Delaying share modal by 5 minutes'); | ||
41 | setTimeout(() => showModal(), ms('5m')); | ||
42 | } else { | ||
43 | showModal(); | ||
44 | } | ||
45 | } | ||
46 | }, ms('2s')); | ||
47 | }, | ||
48 | { | ||
49 | fireImmediately: true, | ||
50 | }, | ||
51 | ); | ||
52 | } | ||