diff options
-rw-r--r-- | src/components/subscription/SubscriptionForm.js | 7 | ||||
-rw-r--r-- | src/features/announcements/index.js | 2 | ||||
-rw-r--r-- | src/features/announcements/store.js | 6 | ||||
-rw-r--r-- | src/i18n/locales/defaultMessages.json | 25 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 3 | ||||
-rw-r--r-- | src/i18n/messages/src/components/subscription/SubscriptionForm.json | 25 |
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 | ||
4 | const debug = require('debug')('Franz:feature:announcements'); | 4 | const debug = require('debug')('Franz:feature:announcements'); |
5 | 5 | ||
6 | export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements'; | ||
7 | |||
6 | export const announcementsStore = new AnnouncementsStore(); | 8 | export const announcementsStore = new AnnouncementsStore(); |
7 | 9 | ||
8 | export default function initAnnouncements(stores, actions) { | 10 | export 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'; | |||
8 | import localStorage from 'mobx-localstorage'; | 8 | import localStorage from 'mobx-localstorage'; |
9 | 9 | ||
10 | import { FeatureStore } from '../utils/FeatureStore'; | 10 | import { FeatureStore } from '../utils/FeatureStore'; |
11 | import { GA_CATEGORY_ANNOUNCEMENTS } from '.'; | ||
11 | import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api'; | 12 | import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api'; |
12 | import { announcementActions } from './actions'; | 13 | import { announcementActions } from './actions'; |
13 | import { createActionBindings } from '../utils/ActionBinding'; | 14 | import { createActionBindings } from '../utils/ActionBinding'; |
14 | import { createReactions } from '../../stores/lib/Reaction'; | 15 | import { createReactions } from '../../stores/lib/Reaction'; |
16 | import { gaEvent } from '../../lib/analytics'; | ||
15 | 17 | ||
16 | const LOCAL_STORAGE_KEY = 'announcements'; | 18 | const 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 | } |