aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.json1
-rw-r--r--src/i18n/messages/src/components/subscription/SubscriptionForm.json25
6 files changed, 53 insertions, 13 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 f0a687b0f..9c9dee340 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -2566,42 +2566,55 @@
2566 } 2566 }
2567 }, 2567 },
2568 { 2568 {
2569 "defaultMessage": "!!!No ads, ever!", 2569 "defaultMessage": "!!!Organize your services in workspaces",
2570 "end": { 2570 "end": {
2571 "column": 3, 2571 "column": 3,
2572 "line": 57 2572 "line": 57
2573 }, 2573 },
2574 "file": "src/components/subscription/SubscriptionForm.js", 2574 "file": "src/components/subscription/SubscriptionForm.js",
2575 "id": "subscription.features.workspaces",
2576 "start": {
2577 "column": 14,
2578 "line": 54
2579 }
2580 },
2581 {
2582 "defaultMessage": "!!!No ads, ever!",
2583 "end": {
2584 "column": 3,
2585 "line": 61
2586 },
2587 "file": "src/components/subscription/SubscriptionForm.js",
2575 "id": "subscription.features.ads", 2588 "id": "subscription.features.ads",
2576 "start": { 2589 "start": {
2577 "column": 7, 2590 "column": 7,
2578 "line": 54 2591 "line": 58
2579 } 2592 }
2580 }, 2593 },
2581 { 2594 {
2582 "defaultMessage": "!!!coming soon", 2595 "defaultMessage": "!!!coming soon",
2583 "end": { 2596 "end": {
2584 "column": 3, 2597 "column": 3,
2585 "line": 61 2598 "line": 65
2586 }, 2599 },
2587 "file": "src/components/subscription/SubscriptionForm.js", 2600 "file": "src/components/subscription/SubscriptionForm.js",
2588 "id": "subscription.features.comingSoon", 2601 "id": "subscription.features.comingSoon",
2589 "start": { 2602 "start": {
2590 "column": 14, 2603 "column": 14,
2591 "line": 58 2604 "line": 62
2592 } 2605 }
2593 }, 2606 },
2594 { 2607 {
2595 "defaultMessage": "!!!EU residents: local sales tax may apply", 2608 "defaultMessage": "!!!EU residents: local sales tax may apply",
2596 "end": { 2609 "end": {
2597 "column": 3, 2610 "column": 3,
2598 "line": 65 2611 "line": 69
2599 }, 2612 },
2600 "file": "src/components/subscription/SubscriptionForm.js", 2613 "file": "src/components/subscription/SubscriptionForm.js",
2601 "id": "subscription.euTaxInfo", 2614 "id": "subscription.euTaxInfo",
2602 "start": { 2615 "start": {
2603 "column": 13, 2616 "column": 13,
2604 "line": 62 2617 "line": 66
2605 } 2618 }
2606 } 2619 }
2607 ], 2620 ],
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index e2eb32450..1d8fb8d18 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -292,6 +292,7 @@
292 "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost", 292 "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost",
293 "subscription.features.proxy": "Proxy support for services", 293 "subscription.features.proxy": "Proxy support for services",
294 "subscription.features.spellchecker": "Support for spellchecker", 294 "subscription.features.spellchecker": "Support for spellchecker",
295 "subscription.features.workspaces": "Organize your services in workspaces",
295 "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes", 296 "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes",
296 "subscription.paymentSessionError": "Could not initialize payment form", 297 "subscription.paymentSessionError": "Could not initialize payment form",
297 "subscription.submit.label": "I want to support the development of Franz", 298 "subscription.submit.label": "I want to support the development of Franz",
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 }