aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/shareFranz/index.js
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2019-02-25 16:34:18 +0100
committerLibravatar Stefan Malzner <stefan@adlk.io>2019-02-25 16:34:18 +0100
commit2d4ee04e874e4420aa940c148c77c977188b9500 (patch)
treea2435b5718f67a6588e5bbb5fd8e82c10fb5c9b4 /src/features/shareFranz/index.js
parentremove code (diff)
downloadferdium-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.js52
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 @@
1import { observable, reaction } from 'mobx';
2import ms from 'ms';
3
4import { state as delayAppState } from '../delayApp';
5import { gaEvent, gaPage } from '../../lib/analytics';
6
7export { default as Component } from './Component';
8
9const debug = require('debug')('Franz:feature:shareFranz');
10
11const defaultState = {
12 isModalVisible: false,
13 lastShown: null,
14};
15
16export const state = observable(defaultState);
17
18export 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}