aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2019-04-16 11:46:37 +0200
committerLibravatar Stefan Malzner <stefan@adlk.io>2019-04-16 11:46:37 +0200
commit936407669fed7677b5aa94aa4d29be0fe1ada163 (patch)
tree2ddd00b731e011424e59fbcdbb0484dd6fcdf369
parentincrease app opens to show share franz overlay (diff)
parentAdd analytics events (diff)
downloadferdium-app-936407669fed7677b5aa94aa4d29be0fe1ada163.tar.gz
ferdium-app-936407669fed7677b5aa94aa4d29be0fe1ada163.tar.zst
ferdium-app-936407669fed7677b5aa94aa4d29be0fe1ada163.zip
Merge branch 'feature/announcements' into develop
-rw-r--r--src/components/subscription/SubscriptionForm.js7
-rw-r--r--src/features/announcements/index.js2
-rw-r--r--src/features/announcements/store.js6
-rw-r--r--src/i18n/locales/defaultMessages.json25
-rw-r--r--src/i18n/locales/en-US.json3
-rw-r--r--src/i18n/messages/src/components/subscription/SubscriptionForm.json25
6 files changed, 54 insertions, 14 deletions
diff --git a/src/components/subscription/SubscriptionForm.js b/src/components/subscription/SubscriptionForm.js
index 7a818d100..50f1e0522 100644
--- a/src/components/subscription/SubscriptionForm.js
+++ b/src/components/subscription/SubscriptionForm.js
@@ -51,6 +51,10 @@ const messages = defineMessages({
51 id: 'subscription.features.spellchecker', 51 id: 'subscription.features.spellchecker',
52 defaultMessage: '!!!Support for Spellchecker', 52 defaultMessage: '!!!Support for Spellchecker',
53 }, 53 },
54 workspaces: {
55 id: 'subscription.features.workspaces',
56 defaultMessage: '!!!Organize your services in workspaces',
57 },
54 ads: { 58 ads: {
55 id: 'subscription.features.ads', 59 id: 'subscription.features.ads',
56 defaultMessage: '!!!No ads, ever!', 60 defaultMessage: '!!!No ads, ever!',
@@ -171,6 +175,9 @@ export default @observer class SubscriptionForm extends Component {
171 {intl.formatMessage(messages.proxy)} 175 {intl.formatMessage(messages.proxy)}
172 </li> 176 </li>
173 <li> 177 <li>
178 {intl.formatMessage(messages.workspaces)}
179 </li>
180 <li>
174 {intl.formatMessage(messages.ads)} 181 {intl.formatMessage(messages.ads)}
175 </li> 182 </li>
176 </ul> 183 </ul>
diff --git a/src/features/announcements/index.js b/src/features/announcements/index.js
index c087689a7..4658b976f 100644
--- a/src/features/announcements/index.js
+++ b/src/features/announcements/index.js
@@ -3,6 +3,8 @@ import { AnnouncementsStore } from './store';
3 3
4const debug = require('debug')('Franz:feature:announcements'); 4const debug = require('debug')('Franz:feature:announcements');
5 5
6export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements';
7
6export const announcementsStore = new AnnouncementsStore(); 8export const announcementsStore = new AnnouncementsStore();
7 9
8export default function initAnnouncements(stores, actions) { 10export default function initAnnouncements(stores, actions) {
diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js
index 87cf08544..aa98d3bd1 100644
--- a/src/features/announcements/store.js
+++ b/src/features/announcements/store.js
@@ -8,10 +8,12 @@ import semver from 'semver';
8import localStorage from 'mobx-localstorage'; 8import localStorage from 'mobx-localstorage';
9 9
10import { FeatureStore } from '../utils/FeatureStore'; 10import { FeatureStore } from '../utils/FeatureStore';
11import { GA_CATEGORY_ANNOUNCEMENTS } from '.';
11import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api'; 12import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api';
12import { announcementActions } from './actions'; 13import { announcementActions } from './actions';
13import { createActionBindings } from '../utils/ActionBinding'; 14import { createActionBindings } from '../utils/ActionBinding';
14import { createReactions } from '../../stores/lib/Reaction'; 15import { createReactions } from '../../stores/lib/Reaction';
16import { gaEvent } from '../../lib/analytics';
15 17
16const LOCAL_STORAGE_KEY = 'announcements'; 18const LOCAL_STORAGE_KEY = 'announcements';
17 19
@@ -98,6 +100,8 @@ export class AnnouncementsStore extends FeatureStore {
98 dispose(); 100 dispose();
99 }, 101 },
100 ); 102 );
103
104 gaEvent(GA_CATEGORY_ANNOUNCEMENTS, 'show');
101 }; 105 };
102 106
103 @action _hideAnnouncement() { 107 @action _hideAnnouncement() {
@@ -113,7 +117,7 @@ export class AnnouncementsStore extends FeatureStore {
113 117
114 // Check if the user has already used current version (= has seen the announcement) 118 // Check if the user has already used current version (= has seen the announcement)
115 const { currentVersion, lastSeenAnnouncementVersion } = this; 119 const { currentVersion, lastSeenAnnouncementVersion } = this;
116 if (semver.gt(currentVersion, lastSeenAnnouncementVersion)) { 120 if (semver.gt(currentVersion, lastSeenAnnouncementVersion || '0.0.0')) {
117 debug(`${currentVersion} < ${lastSeenAnnouncementVersion}: announcement is shown`); 121 debug(`${currentVersion} < ${lastSeenAnnouncementVersion}: announcement is shown`);
118 this._showAnnouncement(); 122 this._showAnnouncement();
119 } 123 }
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index e662ea6b9..910dac727 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -2470,42 +2470,55 @@
2470 } 2470 }
2471 }, 2471 },
2472 { 2472 {
2473 "defaultMessage": "!!!No ads, ever!", 2473 "defaultMessage": "!!!Organize your services in workspaces",
2474 "end": { 2474 "end": {
2475 "column": 3, 2475 "column": 3,
2476 "line": 57 2476 "line": 57
2477 }, 2477 },
2478 "file": "src/components/subscription/SubscriptionForm.js", 2478 "file": "src/components/subscription/SubscriptionForm.js",
2479 "id": "subscription.features.workspaces",
2480 "start": {
2481 "column": 14,
2482 "line": 54
2483 }
2484 },
2485 {
2486 "defaultMessage": "!!!No ads, ever!",
2487 "end": {
2488 "column": 3,
2489 "line": 61
2490 },
2491 "file": "src/components/subscription/SubscriptionForm.js",
2479 "id": "subscription.features.ads", 2492 "id": "subscription.features.ads",
2480 "start": { 2493 "start": {
2481 "column": 7, 2494 "column": 7,
2482 "line": 54 2495 "line": 58
2483 } 2496 }
2484 }, 2497 },
2485 { 2498 {
2486 "defaultMessage": "!!!coming soon", 2499 "defaultMessage": "!!!coming soon",
2487 "end": { 2500 "end": {
2488 "column": 3, 2501 "column": 3,
2489 "line": 61 2502 "line": 65
2490 }, 2503 },
2491 "file": "src/components/subscription/SubscriptionForm.js", 2504 "file": "src/components/subscription/SubscriptionForm.js",
2492 "id": "subscription.features.comingSoon", 2505 "id": "subscription.features.comingSoon",
2493 "start": { 2506 "start": {
2494 "column": 14, 2507 "column": 14,
2495 "line": 58 2508 "line": 62
2496 } 2509 }
2497 }, 2510 },
2498 { 2511 {
2499 "defaultMessage": "!!!EU residents: local sales tax may apply", 2512 "defaultMessage": "!!!EU residents: local sales tax may apply",
2500 "end": { 2513 "end": {
2501 "column": 3, 2514 "column": 3,
2502 "line": 65 2515 "line": 69
2503 }, 2516 },
2504 "file": "src/components/subscription/SubscriptionForm.js", 2517 "file": "src/components/subscription/SubscriptionForm.js",
2505 "id": "subscription.euTaxInfo", 2518 "id": "subscription.euTaxInfo",
2506 "start": { 2519 "start": {
2507 "column": 13, 2520 "column": 13,
2508 "line": 62 2521 "line": 66
2509 } 2522 }
2510 } 2523 }
2511 ], 2524 ],
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 5bb10438a..1090584c2 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -285,6 +285,7 @@
285 "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost", 285 "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost",
286 "subscription.features.proxy": "Proxy support for services", 286 "subscription.features.proxy": "Proxy support for services",
287 "subscription.features.spellchecker": "Support for spellchecker", 287 "subscription.features.spellchecker": "Support for spellchecker",
288 "subscription.features.workspaces": "Organize your services in workspaces",
288 "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes", 289 "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes",
289 "subscription.paymentSessionError": "Could not initialize payment form", 290 "subscription.paymentSessionError": "Could not initialize payment form",
290 "subscription.submit.label": "I want to support the development of Franz", 291 "subscription.submit.label": "I want to support the development of Franz",
@@ -320,4 +321,4 @@
320 "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 321 "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
321 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 322 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
322 "workspaces.switchingIndicator.switchingTo": "Switching to" 323 "workspaces.switchingIndicator.switchingTo": "Switching to"
323} \ No newline at end of file 324}
diff --git a/src/i18n/messages/src/components/subscription/SubscriptionForm.json b/src/i18n/messages/src/components/subscription/SubscriptionForm.json
index cc7470358..f98eb986f 100644
--- a/src/i18n/messages/src/components/subscription/SubscriptionForm.json
+++ b/src/i18n/messages/src/components/subscription/SubscriptionForm.json
@@ -130,15 +130,28 @@
130 } 130 }
131 }, 131 },
132 { 132 {
133 "id": "subscription.features.workspaces",
134 "defaultMessage": "!!!Organize your services in workspaces",
135 "file": "src/components/subscription/SubscriptionForm.js",
136 "start": {
137 "line": 54,
138 "column": 14
139 },
140 "end": {
141 "line": 57,
142 "column": 3
143 }
144 },
145 {
133 "id": "subscription.features.ads", 146 "id": "subscription.features.ads",
134 "defaultMessage": "!!!No ads, ever!", 147 "defaultMessage": "!!!No ads, ever!",
135 "file": "src/components/subscription/SubscriptionForm.js", 148 "file": "src/components/subscription/SubscriptionForm.js",
136 "start": { 149 "start": {
137 "line": 54, 150 "line": 58,
138 "column": 7 151 "column": 7
139 }, 152 },
140 "end": { 153 "end": {
141 "line": 57, 154 "line": 61,
142 "column": 3 155 "column": 3
143 } 156 }
144 }, 157 },
@@ -147,11 +160,11 @@
147 "defaultMessage": "!!!coming soon", 160 "defaultMessage": "!!!coming soon",
148 "file": "src/components/subscription/SubscriptionForm.js", 161 "file": "src/components/subscription/SubscriptionForm.js",
149 "start": { 162 "start": {
150 "line": 58, 163 "line": 62,
151 "column": 14 164 "column": 14
152 }, 165 },
153 "end": { 166 "end": {
154 "line": 61, 167 "line": 65,
155 "column": 3 168 "column": 3
156 } 169 }
157 }, 170 },
@@ -160,11 +173,11 @@
160 "defaultMessage": "!!!EU residents: local sales tax may apply", 173 "defaultMessage": "!!!EU residents: local sales tax may apply",
161 "file": "src/components/subscription/SubscriptionForm.js", 174 "file": "src/components/subscription/SubscriptionForm.js",
162 "start": { 175 "start": {
163 "line": 62, 176 "line": 66,
164 "column": 13 177 "column": 13
165 }, 178 },
166 "end": { 179 "end": {
167 "line": 65, 180 "line": 69,
168 "column": 3 181 "column": 3
169 } 182 }
170 } 183 }