From 6fb07bcb716af76ec2e96345f37624d12d0d1af0 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Tue, 12 Mar 2019 21:36:10 +0100 Subject: implements basic release announcement feature --- src/i18n/locales/defaultMessages.json | 95 +++++++++++++++++++++++------------ 1 file changed, 63 insertions(+), 32 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 0641c510c..fcd24c7ef 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -625,78 +625,78 @@ "defaultMessage": "!!!Your services have been updated.", "end": { "column": 3, - "line": 25 + "line": 26 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.servicesUpdated", "start": { "column": 19, - "line": 22 + "line": 23 } }, { "defaultMessage": "!!!A new update for Franz is available.", "end": { "column": 3, - "line": 29 + "line": 30 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.updateAvailable", "start": { "column": 19, - "line": 26 + "line": 27 } }, { "defaultMessage": "!!!Reload services", "end": { "column": 3, - "line": 33 + "line": 34 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonReloadServices", "start": { "column": 24, - "line": 30 + "line": 31 } }, { "defaultMessage": "!!!Changelog", "end": { "column": 3, - "line": 37 + "line": 38 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonChangelog", "start": { "column": 13, - "line": 34 + "line": 35 } }, { "defaultMessage": "!!!Restart & install update", "end": { "column": 3, - "line": 41 + "line": 42 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonInstallUpdate", "start": { "column": 23, - "line": 38 + "line": 39 } }, { "defaultMessage": "!!!Could not load services and user information", "end": { "column": 3, - "line": 45 + "line": 46 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.requiredRequestsFailed", "start": { "column": 26, - "line": 42 + "line": 43 } } ], @@ -3022,6 +3022,24 @@ ], "path": "src/containers/settings/EditUserScreen.json" }, + { + "descriptors": [ + { + "defaultMessage": "!!!What's new in Franz {version}?", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/features/announcements/Component.js", + "id": "feature.announcements.headline", + "start": { + "column": 12, + "line": 11 + } + } + ], + "path": "src/features/announcements/Component.json" + }, { "descriptors": [ { @@ -3799,133 +3817,146 @@ } }, { - "defaultMessage": "!!!Settings", + "defaultMessage": "!!!What's new in Franz?", "end": { "column": 3, "line": 161 }, "file": "src/lib/Menu.js", + "id": "menu.app.announcement", + "start": { + "column": 16, + "line": 158 + } + }, + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 165 + }, + "file": "src/lib/Menu.js", "id": "menu.app.settings", "start": { "column": 12, - "line": 158 + "line": 162 } }, { "defaultMessage": "!!!Hide", "end": { "column": 3, - "line": 165 + "line": 169 }, "file": "src/lib/Menu.js", "id": "menu.app.hide", "start": { "column": 8, - "line": 162 + "line": 166 } }, { "defaultMessage": "!!!Hide Others", "end": { "column": 3, - "line": 169 + "line": 173 }, "file": "src/lib/Menu.js", "id": "menu.app.hideOthers", "start": { "column": 14, - "line": 166 + "line": 170 } }, { "defaultMessage": "!!!Unhide", "end": { "column": 3, - "line": 173 + "line": 177 }, "file": "src/lib/Menu.js", "id": "menu.app.unhide", "start": { "column": 10, - "line": 170 + "line": 174 } }, { "defaultMessage": "!!!Quit", "end": { "column": 3, - "line": 177 + "line": 181 }, "file": "src/lib/Menu.js", "id": "menu.app.quit", "start": { "column": 8, - "line": 174 + "line": 178 } }, { "defaultMessage": "!!!Add New Service...", "end": { "column": 3, - "line": 181 + "line": 185 }, "file": "src/lib/Menu.js", "id": "menu.services.addNewService", "start": { "column": 17, - "line": 178 + "line": 182 } }, { "defaultMessage": "!!!Activate next service...", "end": { "column": 3, - "line": 185 + "line": 189 }, "file": "src/lib/Menu.js", "id": "menu.services.setNextServiceActive", "start": { "column": 23, - "line": 182 + "line": 186 } }, { "defaultMessage": "!!!Activate previous service...", "end": { "column": 3, - "line": 189 + "line": 193 }, "file": "src/lib/Menu.js", "id": "menu.services.activatePreviousService", "start": { "column": 27, - "line": 186 + "line": 190 } }, { "defaultMessage": "!!!Disable notifications & audio", "end": { "column": 3, - "line": 193 + "line": 197 }, "file": "src/lib/Menu.js", "id": "sidebar.muteApp", "start": { "column": 11, - "line": 190 + "line": 194 } }, { "defaultMessage": "!!!Enable notifications & audio", "end": { "column": 3, - "line": 197 + "line": 201 }, "file": "src/lib/Menu.js", "id": "sidebar.unmuteApp", "start": { "column": 13, - "line": 194 + "line": 198 } } ], -- cgit v1.2.3-70-g09d2 From e4f1862644d5921e2ee77078c10e16efa3e58c7b Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Tue, 19 Mar 2019 19:38:56 +0100 Subject: add workspace drawer --- packages/theme/src/themes/dark/index.ts | 9 +++ packages/theme/src/themes/default/index.ts | 10 +++ src/components/layout/AppLayout.js | 24 +++++- src/components/layout/Sidebar.js | 42 +++++++++- src/components/services/content/ServiceView.js | 1 + src/containers/layout/AppLayoutContainer.js | 14 ++++ src/features/workspaces/actions.js | 6 +- .../workspaces/components/WorkspaceDrawer.js | 94 ++++++++++++++++++++++ .../workspaces/components/WorkspaceDrawerItem.js | 88 ++++++++++++++++++++ src/features/workspaces/state.js | 1 + src/features/workspaces/store.js | 12 ++- src/i18n/locales/defaultMessages.json | 57 +++++++++++++ src/i18n/locales/en-US.json | 8 +- .../messages/src/components/layout/AppLayout.json | 24 +++--- .../messages/src/components/layout/Sidebar.json | 26 ++++++ .../workspaces/components/WorkspaceDrawer.json | 28 +++++++ src/lib/Menu.js | 4 +- src/styles/layout.scss | 12 ++- 18 files changed, 435 insertions(+), 25 deletions(-) create mode 100644 src/features/workspaces/components/WorkspaceDrawer.js create mode 100644 src/features/workspaces/components/WorkspaceDrawerItem.js create mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/packages/theme/src/themes/dark/index.ts b/packages/theme/src/themes/dark/index.ts index 3a56719b2..eaa552961 100644 --- a/packages/theme/src/themes/dark/index.ts +++ b/packages/theme/src/themes/dark/index.ts @@ -63,3 +63,12 @@ export const selectSearchColor = inputBackground; // Modal export const colorModalOverlayBackground = color(legacyStyles.darkThemeBlack).alpha(0.8).rgb().string(); + +// Workspace Drawer +export const workspaceDrawerBackground = color(colorBackground).lighten(0.3).hex(); +export const workspaceDrawerItemBorder = color(workspaceDrawerBackground).lighten(0.2).hex(); +export const workspaceDrawerItemActiveBackground = defaultStyles.brandPrimary; +export const workspaceDrawerNameColor = colorText; +export const workspaceDrawerNameActiveColor = 'white'; +export const workspaceDrawerServicesColor = color(colorText).darken(0.5).hex(); +export const workspaceDrawerServicesActiveColor = color(defaultStyles.brandPrimary).lighten(0.5).hex(); diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts index 8a71e61cf..fc03b67de 100644 --- a/packages/theme/src/themes/default/index.ts +++ b/packages/theme/src/themes/default/index.ts @@ -140,3 +140,13 @@ export const badgeBorderRadius = 50; // Modal export const colorModalOverlayBackground = color('#000').alpha(0.5).rgb().string(); + +// Workspace Drawer +export const workspaceDrawerWidth = '220px'; +export const workspaceDrawerBackground = color(colorBackground).lighten(0.1).hex(); +export const workspaceDrawerItemActiveBackground = legacyStyles.themeGrayLightest; +export const workspaceDrawerItemBorder = color(workspaceDrawerBackground).darken(0.05).hex(); +export const workspaceDrawerNameColor = colorText; +export const workspaceDrawerNameActiveColor = colorText; +export const workspaceDrawerServicesColor = color(colorText).lighten(1.5).hex(); +export const workspaceDrawerServicesActiveColor = workspaceDrawerServicesColor; diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index 593149e72..e06192f87 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; import { defineMessages, intlShape } from 'react-intl'; import { TitleBar } from 'electron-react-titlebar'; +import injectSheet from 'react-jss'; import InfoBar from '../ui/InfoBar'; import { Component as DelayApp } from '../../features/delayApp'; @@ -13,6 +14,7 @@ import ErrorBoundary from '../util/ErrorBoundary'; // import globalMessages from '../../i18n/globalMessages'; import { isWindows } from '../../environment'; +import { workspacesState } from '../../features/workspaces/state'; function createMarkup(HTMLString) { return { __html: HTMLString }; @@ -45,10 +47,23 @@ const messages = defineMessages({ }, }); -export default @observer class AppLayout extends Component { +const styles = theme => ({ + appContent: { + width: `calc(100% + ${theme.workspaceDrawerWidth})`, + transition: 'transform 0.5s ease', + transform() { + return workspacesState.isWorkspaceDrawerOpen ? 'translateX(0)' : 'translateX(-220px)'; + }, + }, +}); + +@injectSheet(styles) @observer +class AppLayout extends Component { static propTypes = { + classes: PropTypes.object.isRequired, isFullScreen: PropTypes.bool.isRequired, sidebar: PropTypes.element.isRequired, + workspacesDrawer: PropTypes.element.isRequired, services: PropTypes.element.isRequired, children: PropTypes.element, news: MobxPropTypes.arrayOrObservableArray.isRequired, @@ -76,7 +91,9 @@ export default @observer class AppLayout extends Component { render() { const { + classes, isFullScreen, + workspacesDrawer, sidebar, services, children, @@ -102,7 +119,8 @@ export default @observer class AppLayout extends Component {
{isWindows && !isFullScreen && } -
+
+ {workspacesDrawer} {sidebar}
{news.length > 0 && news.map(item => ( @@ -176,3 +194,5 @@ export default @observer class AppLayout extends Component { ); } } + +export default AppLayout; diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index fcc5b0001..de379875e 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js @@ -24,6 +24,14 @@ const messages = defineMessages({ id: 'sidebar.unmuteApp', defaultMessage: '!!!Enable notifications & audio', }, + openWorkspaceDrawer: { + id: 'sidebar.openWorkspaceDrawer', + defaultMessage: '!!!Open workspace drawer', + }, + closeWorkspaceDrawer: { + id: 'sidebar.closeWorkspaceDrawer', + defaultMessage: '!!!Close workspace drawer', + }, }); export default @observer class Sidebar extends Component { @@ -31,6 +39,8 @@ export default @observer class Sidebar extends Component { openSettings: PropTypes.func.isRequired, toggleMuteApp: PropTypes.func.isRequired, isAppMuted: PropTypes.bool.isRequired, + isWorkspaceDrawerOpen: PropTypes.bool.isRequired, + toggleWorkspaceDrawer: PropTypes.func.isRequired, }; static contextTypes = { @@ -53,9 +63,23 @@ export default @observer class Sidebar extends Component { this.setState({ tooltipEnabled: false }); } + updateToolTip() { + this.disableToolTip(); + setTimeout(this.enableToolTip.bind(this)); + } + render() { - const { openSettings, toggleMuteApp, isAppMuted } = this.props; + const { + openSettings, + toggleMuteApp, + isAppMuted, + isWorkspaceDrawerOpen, + toggleWorkspaceDrawer, + } = this.props; const { intl } = this.context; + const workspaceToggleMessage = ( + isWorkspaceDrawerOpen ? messages.closeWorkspaceDrawer : messages.openWorkspaceDrawer + ); return (
@@ -66,7 +90,21 @@ export default @observer class Sidebar extends Component { /> +
+
); } diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index c1634df8e..d4d2a55cc 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3326,26 +3326,39 @@ "defaultMessage": "!!!Workspaces", "end": { "column": 3, - "line": 15 + "line": 18 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", "id": "workspaceDrawer.headline", "start": { "column": 12, - "line": 12 + "line": 15 } }, { "defaultMessage": "!!!All services", "end": { "column": 3, - "line": 19 + "line": 22 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", "id": "workspaceDrawer.allServices", "start": { "column": 15, - "line": 16 + "line": 19 + } + }, + { + "defaultMessage": "!!!Add workspace", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.addWorkspaceTooltip", + "start": { + "column": 23, + "line": 23 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index f37237ac2..f7b5fe2b8 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -300,6 +300,7 @@ "validation.url": "{field} is not a valid URL", "welcome.loginButton": "Login to your account", "welcome.signupButton": "Create a free account", + "workspaceDrawer.addWorkspaceTooltip": "Add workspace", "workspaceDrawer.allServices": "All services", "workspaceDrawer.headline": "Workspaces", "workspaceDrawer.item.noServicesAddedYet": "No services added yet", diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json index c875b82cb..7026708e2 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Workspaces", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { - "line": 12, + "line": 15, "column": 12 }, "end": { - "line": 15, + "line": 18, "column": 3 } }, @@ -17,11 +17,24 @@ "defaultMessage": "!!!All services", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { - "line": 16, + "line": 19, "column": 15 }, "end": { - "line": 19, + "line": 22, + "column": 3 + } + }, + { + "id": "workspaceDrawer.addWorkspaceTooltip", + "defaultMessage": "!!!Add workspace", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 23, + "column": 23 + }, + "end": { + "line": 26, "column": 3 } } -- cgit v1.2.3-70-g09d2 From af55b33800eeed36b50b1967da694acbb3991ecb Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Thu, 21 Mar 2019 16:30:13 +0100 Subject: add workspaces count badge in settings navigation --- src/components/settings/navigation/SettingsNavigation.js | 4 +++- src/containers/settings/SettingsWindow.js | 2 ++ src/features/workspaces/components/WorkspaceDrawer.js | 1 - src/i18n/locales/defaultMessages.json | 12 ++++++------ src/i18n/locales/en-US.json | 2 +- .../src/features/workspaces/components/WorkspaceDrawer.json | 12 ++++++------ src/styles/settings.scss | 5 +++-- 7 files changed, 21 insertions(+), 17 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index 4a80bb126..3f570f3b6 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js @@ -39,6 +39,7 @@ const messages = defineMessages({ export default @inject('stores') @observer class SettingsNavigation extends Component { static propTypes = { serviceCount: PropTypes.number.isRequired, + workspaceCount: PropTypes.number.isRequired, }; static contextTypes = { @@ -46,7 +47,7 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp }; render() { - const { serviceCount } = this.props; + const { serviceCount, workspaceCount } = this.props; const { intl } = this.context; return ( @@ -74,6 +75,7 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp > {intl.formatMessage(messages.yourWorkspaces)} {' '} + {workspaceCount} ); diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index 5a8d5d854..c18eb0e11 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -9,7 +9,6 @@ import ReactTooltip from 'react-tooltip'; import { workspacesState } from '../state'; import WorkspaceDrawerItem from './WorkspaceDrawerItem'; import { workspaceActions } from '../actions'; -import { ctrlKey } from '../../../environment'; const messages = defineMessages({ headline: { diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index d4d2a55cc..480f5c6cb 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3326,39 +3326,39 @@ "defaultMessage": "!!!Workspaces", "end": { "column": 3, - "line": 18 + "line": 17 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", "id": "workspaceDrawer.headline", "start": { "column": 12, - "line": 15 + "line": 14 } }, { "defaultMessage": "!!!All services", "end": { "column": 3, - "line": 22 + "line": 21 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", "id": "workspaceDrawer.allServices", "start": { "column": 15, - "line": 19 + "line": 18 } }, { "defaultMessage": "!!!Add workspace", "end": { "column": 3, - "line": 26 + "line": 25 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", "id": "workspaceDrawer.addWorkspaceTooltip", "start": { "column": 23, - "line": 23 + "line": 22 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index f7b5fe2b8..4206d4358 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -305,4 +305,4 @@ "workspaceDrawer.headline": "Workspaces", "workspaceDrawer.item.noServicesAddedYet": "No services added yet", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json index 7026708e2..4e3237164 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Workspaces", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { - "line": 15, + "line": 14, "column": 12 }, "end": { - "line": 18, + "line": 17, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!All services", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { - "line": 19, + "line": 18, "column": 15 }, "end": { - "line": 22, + "line": 21, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Add workspace", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { - "line": 23, + "line": 22, "column": 23 }, "end": { - "line": 26, + "line": 25, "column": 3 } } diff --git a/src/styles/settings.scss b/src/styles/settings.scss index 750b6bedd..9fde9a7bf 100644 --- a/src/styles/settings.scss +++ b/src/styles/settings.scss @@ -68,7 +68,7 @@ } } - .premium-info { + .premium-info { background: $dark-theme-gray-darker; border: 2px solid $theme-brand-primary; } @@ -414,6 +414,7 @@ .settings-navigation__link { align-items: center; + justify-content: space-between; color: $theme-text-color; display: flex; flex-shrink: 0; @@ -442,8 +443,8 @@ .settings-navigation__expander { flex: 1; } .badge { + display: initial; - margin-left: 5px; transition: background $theme-transition-time, color $theme-transition-time; } -- cgit v1.2.3-70-g09d2 From d05a8efffadd926165d516d6efd8c8b893648ebe Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Tue, 26 Mar 2019 13:47:54 +0100 Subject: hide workspace feature if it is disabled --- src/components/layout/Sidebar.js | 25 ++++++----- .../settings/navigation/SettingsNavigation.js | 21 +++++---- src/config.js | 2 +- src/features/workspaces/store.js | 5 +++ src/i18n/locales/defaultMessages.json | 52 +++++++++++----------- .../messages/src/components/layout/Sidebar.json | 24 +++++----- .../settings/navigation/SettingsNavigation.json | 28 ++++++------ src/lib/Menu.js | 6 ++- src/stores/FeaturesStore.js | 4 +- 9 files changed, 90 insertions(+), 77 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index de379875e..f7bacfe0f 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js @@ -6,6 +6,7 @@ import { observer } from 'mobx-react'; import Tabbar from '../services/tabs/Tabbar'; import { ctrlKey } from '../../environment'; +import { workspaceStore } from '../../features/workspaces'; const messages = defineMessages({ settings: { @@ -88,17 +89,19 @@ export default @observer class Sidebar extends Component { enableToolTip={() => this.enableToolTip()} disableToolTip={() => this.disableToolTip()} /> - + {workspaceStore.isFeatureActive ? ( + + ) : null}
-
-
- -
- {getUserWorkspacesRequest.isExecuting ? ( - - ) : ( - - {getUserWorkspacesRequest.error ? ( - - {intl.formatMessage(messages.workspacesRequestFailed)} - - ) : ( - - - {workspaces.map(workspace => ( - onWorkspaceClick(w)} - /> - ))} - -
- )} -
- )} + {updateWorkspaceRequest.wasExecuted && updateWorkspaceRequest.result && ( + + + {intl.formatMessage(messages.updatedInfo)} + + + )} +
+
+ {getUserWorkspacesRequest.isExecuting ? ( + + ) : ( + + {getUserWorkspacesRequest.error ? ( + + {intl.formatMessage(messages.workspacesRequestFailed)} + + ) : ( + + + {workspaces.map(workspace => ( + onWorkspaceClick(w)} + /> + ))} + +
+ )} +
+ )}
); diff --git a/src/features/workspaces/containers/WorkspacesScreen.js b/src/features/workspaces/containers/WorkspacesScreen.js index 89bd2a2ef..3f41de0c2 100644 --- a/src/features/workspaces/containers/WorkspacesScreen.js +++ b/src/features/workspaces/containers/WorkspacesScreen.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import WorkspacesDashboard from '../components/WorkspacesDashboard'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; import { workspaceStore } from '../index'; -import { getUserWorkspacesRequest } from '../api'; +import { getUserWorkspacesRequest, updateWorkspaceRequest } from '../api'; @inject('actions') @observer class WorkspacesScreen extends Component { @@ -23,6 +23,7 @@ class WorkspacesScreen extends Component { actions.workspaces.create(data)} onWorkspaceClick={w => actions.workspaces.edit({ workspace: w })} /> diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index 3cec5f360..f7df7b29c 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js @@ -102,9 +102,7 @@ export default class WorkspacesStore { @action _create = async ({ name }) => { try { const workspace = await createWorkspaceRequest.execute(name); - await getUserWorkspacesRequest.patch((result) => { - result.push(workspace); - }); + await getUserWorkspacesRequest.result.push(workspace); this._edit({ workspace }); } catch (error) { throw error; @@ -114,9 +112,7 @@ export default class WorkspacesStore { @action _delete = async ({ workspace }) => { try { await deleteWorkspaceRequest.execute(workspace); - await getUserWorkspacesRequest.patch((result) => { - result.remove(workspace); - }); + await getUserWorkspacesRequest.result.remove(workspace); this.stores.router.push('/settings/workspaces'); } catch (error) { throw error; @@ -126,10 +122,9 @@ export default class WorkspacesStore { @action _update = async ({ workspace }) => { try { await updateWorkspaceRequest.execute(workspace); - await getUserWorkspacesRequest.patch((result) => { - const localWorkspace = result.find(ws => ws.id === workspace.id); - Object.assign(localWorkspace, workspace); - }); + // Path local result optimistically + const localWorkspace = this._getWorkspaceById(workspace.id); + Object.assign(localWorkspace, workspace); this.stores.router.push('/settings/workspaces'); } catch (error) { throw error; diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index afbacf28a..891ad38d4 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3388,52 +3388,65 @@ "defaultMessage": "!!!Your workspaces", "end": { "column": 3, - "line": 17 + "line": 18 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.headline", "start": { "column": 12, - "line": 14 + "line": 15 } }, { "defaultMessage": "!!!You haven't added any workspaces yet.", "end": { "column": 3, - "line": 21 + "line": 22 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.noWorkspacesAdded", "start": { "column": 19, - "line": 18 + "line": 19 } }, { "defaultMessage": "!!!Could not load your workspaces", "end": { "column": 3, - "line": 25 + "line": 26 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.workspacesRequestFailed", "start": { "column": 27, - "line": 22 + "line": 23 } }, { "defaultMessage": "!!!Try again", "end": { "column": 3, - "line": 29 + "line": 30 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.tryReloadWorkspaces", "start": { "column": 23, - "line": 26 + "line": 27 + } + }, + { + "defaultMessage": "!!!Your changes have been saved", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.updatedInfo", + "start": { + "column": 15, + "line": 31 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 2b4e79621..ad179bc1d 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -252,6 +252,7 @@ "settings.workspaces.headline": "Your workspaces", "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.", "settings.workspaces.tryReloadWorkspaces": "Try again", + "settings.workspaces.updatedInfo": "!!!Your changes have been saved", "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", "sidebar.addNewService": "Add new service", "sidebar.closeWorkspaceDrawer": "Close workspace drawer", @@ -307,4 +308,4 @@ "workspaceDrawer.headline": "Workspaces", "workspaceDrawer.item.noServicesAddedYet": "No services added yet", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json index f875ace8a..d68899d9b 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Your workspaces", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 14, + "line": 15, "column": 12 }, "end": { - "line": 17, + "line": 18, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!You haven't added any workspaces yet.", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 18, + "line": 19, "column": 19 }, "end": { - "line": 21, + "line": 22, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Could not load your workspaces", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 22, + "line": 23, "column": 27 }, "end": { - "line": 25, + "line": 26, "column": 3 } }, @@ -43,11 +43,24 @@ "defaultMessage": "!!!Try again", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 26, + "line": 27, "column": 23 }, "end": { - "line": 29, + "line": 30, + "column": 3 + } + }, + { + "id": "settings.workspaces.updatedInfo", + "defaultMessage": "!!!Your changes have been saved", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 31, + "column": 15 + }, + "end": { + "line": 34, "column": 3 } } diff --git a/src/stores/lib/Request.js b/src/stores/lib/Request.js index 1fb67cc15..486de8a49 100644 --- a/src/stores/lib/Request.js +++ b/src/stores/lib/Request.js @@ -109,7 +109,7 @@ export default class Request { Request._hooks.forEach(hook => hook(this)); } - reset() { + reset = () => { this.result = null; this.isExecuting = false; this.isError = false; @@ -118,5 +118,5 @@ export default class Request { this._promise = Promise; return this; - } + }; } -- cgit v1.2.3-70-g09d2 From 03c76d7a6e5c5529e39f245dd350c0bc8abbd128 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Tue, 26 Mar 2019 16:25:49 +0100 Subject: indicate any server interaction with spinners and infoboxes --- src/features/workspaces/api.js | 2 +- .../workspaces/components/CreateWorkspaceForm.js | 7 ++- .../workspaces/components/EditWorkspaceForm.js | 59 +++++++++------------- .../workspaces/components/WorkspacesDashboard.js | 38 ++++++++++++-- .../workspaces/containers/EditWorkspaceScreen.js | 5 +- .../workspaces/containers/WorkspacesScreen.js | 9 +++- src/i18n/locales/defaultMessages.json | 35 +++++++++---- src/i18n/locales/en-US.json | 5 +- .../workspaces/components/CreateWorkspaceForm.json | 2 +- .../workspaces/components/EditWorkspaceForm.json | 20 ++++---- .../workspaces/components/WorkspacesDashboard.json | 13 +++++ 11 files changed, 127 insertions(+), 68 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/features/workspaces/api.js b/src/features/workspaces/api.js index 3da265e5e..0ec20c9ea 100644 --- a/src/features/workspaces/api.js +++ b/src/features/workspaces/api.js @@ -36,7 +36,7 @@ export const workspaceApi = { const result = await sendAuthRequest(url, { method: 'DELETE' }); debug('deleteWorkspace RESULT', result); if (!result.ok) throw result; - return (await result.json()).deleted; + return true; }, updateWorkspace: async (workspace) => { diff --git a/src/features/workspaces/components/CreateWorkspaceForm.js b/src/features/workspaces/components/CreateWorkspaceForm.js index 83f6e07f7..8b5039246 100644 --- a/src/features/workspaces/components/CreateWorkspaceForm.js +++ b/src/features/workspaces/components/CreateWorkspaceForm.js @@ -10,7 +10,7 @@ import { required } from '../../../helpers/validation-helpers'; const messages = defineMessages({ submitButton: { id: 'settings.workspace.add.form.submitButton', - defaultMessage: '!!!Save workspace', + defaultMessage: '!!!Create workspace', }, name: { id: 'settings.workspace.add.form.name', @@ -40,6 +40,7 @@ class CreateWorkspaceForm extends Component { static propTypes = { classes: PropTypes.object.isRequired, + isSubmitting: PropTypes.bool.isRequired, onSubmit: PropTypes.func.isRequired, }; @@ -69,7 +70,7 @@ class CreateWorkspaceForm extends Component { render() { const { intl } = this.context; - const { classes } = this.props; + const { classes, isSubmitting } = this.props; const { form } = this; return (
@@ -84,6 +85,8 @@ class CreateWorkspaceForm extends Component { type="submit" label={intl.formatMessage(messages.submitButton)} onClick={this.submitForm.bind(this, form)} + busy={isSubmitting} + buttonType={isSubmitting ? 'secondary' : 'primary'} />
); diff --git a/src/features/workspaces/components/EditWorkspaceForm.js b/src/features/workspaces/components/EditWorkspaceForm.js index 48090f608..a9fd4d21c 100644 --- a/src/features/workspaces/components/EditWorkspaceForm.js +++ b/src/features/workspaces/components/EditWorkspaceForm.js @@ -11,6 +11,7 @@ import Service from '../../../models/Service'; import Form from '../../../lib/Form'; import { required } from '../../../helpers/validation-helpers'; import ServiceListItem from './ServiceListItem'; +import Request from '../../../stores/lib/Request'; const messages = defineMessages({ buttonDelete: { @@ -52,12 +53,12 @@ class EditWorkspaceForm extends Component { static propTypes = { classes: PropTypes.object.isRequired, - isDeleting: PropTypes.bool.isRequired, - isSaving: PropTypes.bool.isRequired, onDelete: PropTypes.func.isRequired, onSave: PropTypes.func.isRequired, services: PropTypes.arrayOf(PropTypes.instanceOf(Service)).isRequired, workspace: PropTypes.instanceOf(Workspace).isRequired, + updateWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, + deleteWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, }; form = this.prepareWorkspaceForm(this.props.workspace); @@ -112,14 +113,16 @@ class EditWorkspaceForm extends Component { const { intl } = this.context; const { classes, - isDeleting, - isSaving, onDelete, workspace, services, + deleteWorkspaceRequest, + updateWorkspaceRequest, } = this.props; const { form } = this; const workspaceServices = form.$('services').value; + const isDeleting = deleteWorkspaceRequest.isExecuting; + const isSaving = updateWorkspaceRequest.isExecuting; return (
@@ -151,38 +154,24 @@ class EditWorkspaceForm extends Component {
{/* ===== Delete Button ===== */} - {isDeleting ? ( -
); diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index 3db38aff4..b31581a5b 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js @@ -32,6 +32,10 @@ const messages = defineMessages({ id: 'settings.workspaces.updatedInfo', defaultMessage: '!!!Your changes have been saved', }, + deletedInfo: { + id: 'settings.workspaces.deletedInfo', + defaultMessage: '!!!Workspace has been deleted', + }, }); const styles = () => ({ @@ -49,6 +53,8 @@ class WorkspacesDashboard extends Component { static propTypes = { classes: PropTypes.object.isRequired, getUserWorkspacesRequest: PropTypes.instanceOf(Request).isRequired, + createWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, + deleteWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, updateWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, onCreateWorkspaceSubmit: PropTypes.func.isRequired, onWorkspaceClick: PropTypes.func.isRequired, @@ -63,38 +69,63 @@ class WorkspacesDashboard extends Component { const { classes, getUserWorkspacesRequest, + createWorkspaceRequest, + deleteWorkspaceRequest, updateWorkspaceRequest, onCreateWorkspaceSubmit, onWorkspaceClick, workspaces, } = this.props; const { intl } = this.context; + console.log(deleteWorkspaceRequest.result); return (

{intl.formatMessage(messages.headline)}

+ + {/* ===== Workspace updated info ===== */} {updateWorkspaceRequest.wasExecuted && updateWorkspaceRequest.result && ( {intl.formatMessage(messages.updatedInfo)} )} + + {/* ===== Workspace deleted info ===== */} + {deleteWorkspaceRequest.wasExecuted && deleteWorkspaceRequest.result && ( + + + {intl.formatMessage(messages.deletedInfo)} + + + )} + + {/* ===== Create workspace form ===== */}
- +
+ {getUserWorkspacesRequest.isExecuting ? ( ) : ( + {/* ===== Workspace could not be loaded error ===== */} {getUserWorkspacesRequest.error ? ( ) : ( + {/* ===== Workspaces list ===== */} {workspaces.map(workspace => ( ); diff --git a/src/features/workspaces/containers/WorkspacesScreen.js b/src/features/workspaces/containers/WorkspacesScreen.js index 3f41de0c2..2ab565fa1 100644 --- a/src/features/workspaces/containers/WorkspacesScreen.js +++ b/src/features/workspaces/containers/WorkspacesScreen.js @@ -4,7 +4,12 @@ import PropTypes from 'prop-types'; import WorkspacesDashboard from '../components/WorkspacesDashboard'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; import { workspaceStore } from '../index'; -import { getUserWorkspacesRequest, updateWorkspaceRequest } from '../api'; +import { + createWorkspaceRequest, + deleteWorkspaceRequest, + getUserWorkspacesRequest, + updateWorkspaceRequest, +} from '../api'; @inject('actions') @observer class WorkspacesScreen extends Component { @@ -23,6 +28,8 @@ class WorkspacesScreen extends Component { actions.workspaces.create(data)} onWorkspaceClick={w => actions.workspaces.edit({ workspace: w })} diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 891ad38d4..4b6a8eca9 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3222,7 +3222,7 @@ { "descriptors": [ { - "defaultMessage": "!!!Save workspace", + "defaultMessage": "!!!Create workspace", "end": { "column": 3, "line": 14 @@ -3256,65 +3256,65 @@ "defaultMessage": "!!!Delete workspace", "end": { "column": 3, - "line": 19 + "line": 20 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.buttonDelete", "start": { "column": 16, - "line": 16 + "line": 17 } }, { "defaultMessage": "!!!Save workspace", "end": { "column": 3, - "line": 23 + "line": 24 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.buttonSave", "start": { "column": 14, - "line": 20 + "line": 21 } }, { "defaultMessage": "!!!Name", "end": { "column": 3, - "line": 27 + "line": 28 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.name", "start": { "column": 8, - "line": 24 + "line": 25 } }, { "defaultMessage": "!!!Your workspaces", "end": { "column": 3, - "line": 31 + "line": 32 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.yourWorkspaces", "start": { "column": 18, - "line": 28 + "line": 29 } }, { "defaultMessage": "!!!Services in this Workspace", "end": { "column": 3, - "line": 35 + "line": 36 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.servicesInWorkspaceHeadline", "start": { "column": 31, - "line": 32 + "line": 33 } } ], @@ -3448,6 +3448,19 @@ "column": 15, "line": 31 } + }, + { + "defaultMessage": "!!!Workspace has been deleted", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.deletedInfo", + "start": { + "column": 15, + "line": 35 + } } ], "path": "src/features/workspaces/components/WorkspacesDashboard.json" diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index ad179bc1d..5f7254317 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -243,16 +243,17 @@ "settings.user.form.lastname": "Last Name", "settings.user.form.newPassword": "New password", "settings.workspace.add.form.name": "Name", - "settings.workspace.add.form.submitButton": "Save workspace", + "settings.workspace.add.form.submitButton": "Create workspace", "settings.workspace.form.buttonDelete": "Delete workspace", "settings.workspace.form.buttonSave": "Save workspace", "settings.workspace.form.name": "Name", "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", "settings.workspace.form.yourWorkspaces": "Your workspaces", + "settings.workspaces.deletedInfo": "Workspace has been deleted", "settings.workspaces.headline": "Your workspaces", "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.", "settings.workspaces.tryReloadWorkspaces": "Try again", - "settings.workspaces.updatedInfo": "!!!Your changes have been saved", + "settings.workspaces.updatedInfo": "Your changes have been saved", "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", "sidebar.addNewService": "Add new service", "sidebar.closeWorkspaceDrawer": "Close workspace drawer", diff --git a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json index 1d5063a97..7cc1a374f 100644 --- a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json +++ b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json @@ -1,7 +1,7 @@ [ { "id": "settings.workspace.add.form.submitButton", - "defaultMessage": "!!!Save workspace", + "defaultMessage": "!!!Create workspace", "file": "src/features/workspaces/components/CreateWorkspaceForm.js", "start": { "line": 11, diff --git a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json index 467f49cda..8a26bf45a 100644 --- a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json +++ b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Delete workspace", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 16, + "line": 17, "column": 16 }, "end": { - "line": 19, + "line": 20, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!Save workspace", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 20, + "line": 21, "column": 14 }, "end": { - "line": 23, + "line": 24, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Name", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 24, + "line": 25, "column": 8 }, "end": { - "line": 27, + "line": 28, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Your workspaces", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 28, + "line": 29, "column": 18 }, "end": { - "line": 31, + "line": 32, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Services in this Workspace", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 32, + "line": 33, "column": 31 }, "end": { - "line": 35, + "line": 36, "column": 3 } } diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json index d68899d9b..a957358c8 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json @@ -63,5 +63,18 @@ "line": 34, "column": 3 } + }, + { + "id": "settings.workspaces.deletedInfo", + "defaultMessage": "!!!Workspace has been deleted", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 35, + "column": 15 + }, + "end": { + "line": 38, + "column": 3 + } } ] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From eb57e4f787d06648dab2c473830dcfbfa168e00c Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Thu, 28 Mar 2019 12:13:27 +0100 Subject: add analytic events for workspace actions --- src/components/layout/Sidebar.js | 4 +- .../workspaces/components/CreateWorkspaceForm.js | 6 +- .../workspaces/components/EditWorkspaceForm.js | 16 +- .../workspaces/components/WorkspaceDrawer.js | 13 +- .../workspaces/components/WorkspacesDashboard.js | 1 - src/features/workspaces/index.js | 2 + src/i18n/locales/defaultMessages.json | 272 ++++++++++----------- .../messages/src/components/layout/Sidebar.json | 24 +- .../workspaces/components/CreateWorkspaceForm.json | 8 +- .../workspaces/components/EditWorkspaceForm.json | 20 +- .../workspaces/components/WorkspaceDrawer.json | 12 +- src/i18n/messages/src/lib/Menu.json | 208 ++++++++-------- src/lib/Menu.js | 6 +- src/lib/analytics.js | 4 +- 14 files changed, 310 insertions(+), 286 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index f7bacfe0f..4fa5e79de 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js @@ -6,7 +6,8 @@ import { observer } from 'mobx-react'; import Tabbar from '../services/tabs/Tabbar'; import { ctrlKey } from '../../environment'; -import { workspaceStore } from '../../features/workspaces'; +import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../../features/workspaces'; +import { gaEvent } from '../../lib/analytics'; const messages = defineMessages({ settings: { @@ -95,6 +96,7 @@ export default @observer class Sidebar extends Component { onClick={() => { toggleWorkspaceDrawer(); this.updateToolTip(); + gaEvent(GA_CATEGORY_WORKSPACES, 'toggleDrawer', 'sidebar'); }} className={`sidebar__button sidebar__button--workspaces ${isWorkspaceDrawerOpen ? 'is-active' : ''}`} data-tip={`${intl.formatMessage(workspaceToggleMessage)} (${ctrlKey}+Shift+D)`} diff --git a/src/features/workspaces/components/CreateWorkspaceForm.js b/src/features/workspaces/components/CreateWorkspaceForm.js index 8b5039246..a8f07d0d5 100644 --- a/src/features/workspaces/components/CreateWorkspaceForm.js +++ b/src/features/workspaces/components/CreateWorkspaceForm.js @@ -6,6 +6,8 @@ import { Input, Button } from '@meetfranz/forms'; import injectSheet from 'react-jss'; import Form from '../../../lib/Form'; import { required } from '../../../helpers/validation-helpers'; +import { gaEvent } from '../../../lib/analytics'; +import { GA_CATEGORY_WORKSPACES } from '../index'; const messages = defineMessages({ submitButton: { @@ -63,7 +65,9 @@ class CreateWorkspaceForm extends Component { form.submit({ onSuccess: async (f) => { const { onSubmit } = this.props; - onSubmit(f.values()); + const values = f.values(); + onSubmit(values); + gaEvent(GA_CATEGORY_WORKSPACES, 'create', values.name); }, }); } diff --git a/src/features/workspaces/components/EditWorkspaceForm.js b/src/features/workspaces/components/EditWorkspaceForm.js index a9fd4d21c..e4bf44248 100644 --- a/src/features/workspaces/components/EditWorkspaceForm.js +++ b/src/features/workspaces/components/EditWorkspaceForm.js @@ -12,6 +12,8 @@ import Form from '../../../lib/Form'; import { required } from '../../../helpers/validation-helpers'; import ServiceListItem from './ServiceListItem'; import Request from '../../../stores/lib/Request'; +import { gaEvent } from '../../../lib/analytics'; +import { GA_CATEGORY_WORKSPACES } from '../index'; const messages = defineMessages({ buttonDelete: { @@ -87,17 +89,24 @@ class EditWorkspaceForm extends Component { }); } - submitForm(form) { + save(form) { form.submit({ onSuccess: async (f) => { const { onSave } = this.props; const values = f.values(); onSave(values); + gaEvent(GA_CATEGORY_WORKSPACES, 'save'); }, onError: async () => {}, }); } + delete() { + const { onDelete } = this.props; + onDelete(); + gaEvent(GA_CATEGORY_WORKSPACES, 'delete'); + } + toggleService(service) { const servicesField = this.form.$('services'); const serviceIds = servicesField.value; @@ -113,7 +122,6 @@ class EditWorkspaceForm extends Component { const { intl } = this.context; const { classes, - onDelete, workspace, services, deleteWorkspaceRequest, @@ -161,7 +169,7 @@ class EditWorkspaceForm extends Component { buttonType={isDeleting ? 'secondary' : 'danger'} className="settings__delete-button" disabled={isDeleting} - onClick={onDelete} + onClick={this.delete.bind(this)} /> {/* ===== Save Button ===== */} @@ -73,3 +88,5 @@ PremiumFeatureContainer.wrappedComponent.propTypes = { }).isRequired, }).isRequired, }; + +export default PremiumFeatureContainer; diff --git a/src/components/ui/PremiumFeatureContainer/styles.js b/src/components/ui/PremiumFeatureContainer/styles.js index 81d6666c6..615ed0a79 100644 --- a/src/components/ui/PremiumFeatureContainer/styles.js +++ b/src/components/ui/PremiumFeatureContainer/styles.js @@ -6,6 +6,7 @@ export default theme => ({ padding: 20, 'border-radius': theme.borderRadius, pointerEvents: 'none', + height: 'auto', }, titleContainer: { display: 'flex', @@ -26,7 +27,7 @@ export default theme => ({ content: { opacity: 0.5, 'margin-top': 20, - '& :last-child': { + '& > :last-child': { 'margin-bottom': 0, }, }, diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js index abc8274cf..67f0fc5e6 100644 --- a/src/features/delayApp/index.js +++ b/src/features/delayApp/index.js @@ -55,7 +55,7 @@ export default function init(stores) { setVisibility(true); gaPage('/delayApp'); - gaEvent('delayApp', 'show', 'Delay App Feature'); + gaEvent('DelayApp', 'show', 'Delay App Feature'); timeLastDelay = moment(); shownAfterLaunch = true; diff --git a/src/features/utils/FeatureStore.js b/src/features/utils/FeatureStore.js new file mode 100644 index 000000000..66b66a104 --- /dev/null +++ b/src/features/utils/FeatureStore.js @@ -0,0 +1,21 @@ +import Reaction from '../../stores/lib/Reaction'; + +export class FeatureStore { + _actions = null; + + _reactions = null; + + _listenToActions(actions) { + if (this._actions) this._actions.forEach(a => a[0].off(a[1])); + this._actions = []; + actions.forEach(a => this._actions.push(a)); + this._actions.forEach(a => a[0].listen(a[1])); + } + + _startReactions(reactions) { + if (this._reactions) this._reactions.forEach(r => r.stop()); + this._reactions = []; + reactions.forEach(r => this._reactions.push(new Reaction(r))); + this._reactions.forEach(r => r.start()); + } +} diff --git a/src/features/workspaces/components/CreateWorkspaceForm.js b/src/features/workspaces/components/CreateWorkspaceForm.js index a8f07d0d5..0be2d528f 100644 --- a/src/features/workspaces/components/CreateWorkspaceForm.js +++ b/src/features/workspaces/components/CreateWorkspaceForm.js @@ -30,7 +30,6 @@ const styles = () => ({ }, submitButton: { height: 'inherit', - marginTop: '3px', }, }); diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index 52c3afdcf..1fad1f71d 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js @@ -10,6 +10,8 @@ import WorkspaceItem from './WorkspaceItem'; import CreateWorkspaceForm from './CreateWorkspaceForm'; import Request from '../../../stores/lib/Request'; import Appear from '../../../components/ui/effects/Appear'; +import { workspaceStore } from '../index'; +import PremiumFeatureContainer from '../../../components/ui/PremiumFeatureContainer'; const messages = defineMessages({ headline: { @@ -36,6 +38,14 @@ const messages = defineMessages({ id: 'settings.workspaces.deletedInfo', defaultMessage: '!!!Workspace has been deleted', }, + workspaceFeatureInfo: { + id: 'settings.workspaces.workspaceFeatureInfo', + defaultMessage: '!!!Info about workspace feature', + }, + workspaceFeatureHeadline: { + id: 'settings.workspaces.workspaceFeatureHeadline', + defaultMessage: '!!!Less is More: Introducing Franz Workspaces', + }, }); const styles = () => ({ @@ -46,6 +56,12 @@ const styles = () => ({ appear: { height: 'auto', }, + premiumAnnouncement: { + padding: '20px', + backgroundColor: '#3498db', + marginLeft: '-20px', + height: 'auto', + }, }); @injectSheet(styles) @observer @@ -112,14 +128,24 @@ class WorkspacesDashboard extends Component { )} - {/* ===== Create workspace form ===== */} -
- -
- + + {/* ===== Create workspace form ===== */} +
+ +
+
+ {workspaceStore.isUpgradeToPremiumRequired && ( +
+

{intl.formatMessage(messages.workspaceFeatureHeadline)}

+

{intl.formatMessage(messages.workspaceFeatureInfo)}

+
+ )} {getUserWorkspacesRequest.isExecuting ? ( ) : ( diff --git a/src/features/workspaces/index.js b/src/features/workspaces/index.js index 89999ab0f..524a83e3c 100644 --- a/src/features/workspaces/index.js +++ b/src/features/workspaces/index.js @@ -4,11 +4,12 @@ import { resetApiRequests } from './api'; const debug = require('debug')('Franz:feature:workspaces'); -export const GA_CATEGORY_WORKSPACES = 'workspaces'; +export const GA_CATEGORY_WORKSPACES = 'Workspaces'; export const workspaceStore = new WorkspacesStore(); export default function initWorkspaces(stores, actions) { + stores.workspaces = workspaceStore; const { features, user } = stores; // Toggle workspace feature diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index f7df7b29c..62bf3efb4 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js @@ -3,9 +3,9 @@ import { observable, action, } from 'mobx'; -import Reaction from '../../stores/lib/Reaction'; import { matchRoute } from '../../helpers/routing-helpers'; import { workspaceActions } from './actions'; +import { FeatureStore } from '../utils/FeatureStore'; import { createWorkspaceRequest, deleteWorkspaceRequest, @@ -15,7 +15,11 @@ import { const debug = require('debug')('Franz:feature:workspaces:store'); -export default class WorkspacesStore { +export default class WorkspacesStore extends FeatureStore { + @observable isFeatureEnabled = false; + + @observable isPremiumFeature = true; + @observable isFeatureActive = false; @observable activeWorkspace = null; @@ -33,36 +37,39 @@ export default class WorkspacesStore { return getUserWorkspacesRequest.result || []; } - constructor() { - // Wire-up action handlers - workspaceActions.edit.listen(this._edit); - workspaceActions.create.listen(this._create); - workspaceActions.delete.listen(this._delete); - workspaceActions.update.listen(this._update); - workspaceActions.activate.listen(this._setActiveWorkspace); - workspaceActions.deactivate.listen(this._deactivateActiveWorkspace); - workspaceActions.toggleWorkspaceDrawer.listen(this._toggleWorkspaceDrawer); - workspaceActions.openWorkspaceSettings.listen(this._openWorkspaceSettings); - - // Register and start reactions - this._registerReactions([ - this._updateWorkspaceBeingEdited, - this._updateActiveServiceOnWorkspaceSwitch, - ]); + @computed get isUpgradeToPremiumRequired() { + return this.isFeatureEnabled && !this.isFeatureActive; } start(stores, actions) { debug('WorkspacesStore::start'); this.stores = stores; this.actions = actions; - this._reactions.forEach(r => r.start()); - this.isFeatureActive = true; + + this._listenToActions([ + [workspaceActions.edit, this._edit], + [workspaceActions.create, this._create], + [workspaceActions.delete, this._delete], + [workspaceActions.update, this._update], + [workspaceActions.activate, this._setActiveWorkspace], + [workspaceActions.deactivate, this._deactivateActiveWorkspace], + [workspaceActions.toggleWorkspaceDrawer, this._toggleWorkspaceDrawer], + [workspaceActions.openWorkspaceSettings, this._openWorkspaceSettings], + ]); + + this._startReactions([ + this._setWorkspaceBeingEditedReaction, + this._setActiveServiceOnWorkspaceSwitchReaction, + this._setFeatureEnabledReaction, + this._setIsPremiumFeatureReaction, + ]); + getUserWorkspacesRequest.execute(); + this.isFeatureActive = true; } stop() { debug('WorkspacesStore::stop'); - this._reactions.forEach(r => r.stop()); this.isFeatureActive = false; this.activeWorkspace = null; this.nextWorkspace = null; @@ -85,12 +92,6 @@ export default class WorkspacesStore { // ========== PRIVATE ========= // - _reactions = []; - - _registerReactions(reactions) { - reactions.forEach(r => this._reactions.push(new Reaction(r))); - } - _getWorkspaceById = id => this.workspaces.find(w => w.id === id); // Actions @@ -164,7 +165,17 @@ export default class WorkspacesStore { // Reactions - _updateWorkspaceBeingEdited = () => { + _setFeatureEnabledReaction = () => { + const { isWorkspaceEnabled } = this.stores.features.features; + this.isFeatureEnabled = isWorkspaceEnabled; + }; + + _setIsPremiumFeatureReaction = () => { + const { isWorkspacePremiumFeature } = this.stores.features.features; + this.isPremiumFeature = isWorkspacePremiumFeature; + }; + + _setWorkspaceBeingEditedReaction = () => { const { pathname } = this.stores.router.location; const match = matchRoute('/settings/workspaces/edit/:id', pathname); if (match) { @@ -172,7 +183,7 @@ export default class WorkspacesStore { } }; - _updateActiveServiceOnWorkspaceSwitch = () => { + _setActiveServiceOnWorkspaceSwitchReaction = () => { if (!this.isFeatureActive) return; if (this.activeWorkspace) { const services = this.stores.services.allDisplayed; diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 659b1b361..1747e1976 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -2535,13 +2535,13 @@ "defaultMessage": "!!!Upgrade account", "end": { "column": 3, - "line": 17 + "line": 18 }, "file": "src/components/ui/PremiumFeatureContainer/index.js", "id": "premiumFeature.button.upgradeAccount", "start": { "column": 10, - "line": 14 + "line": 15 } } ], @@ -3388,78 +3388,104 @@ "defaultMessage": "!!!Your workspaces", "end": { "column": 3, - "line": 18 + "line": 20 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.headline", "start": { "column": 12, - "line": 15 + "line": 17 } }, { "defaultMessage": "!!!You haven't added any workspaces yet.", "end": { "column": 3, - "line": 22 + "line": 24 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.noWorkspacesAdded", "start": { "column": 19, - "line": 19 + "line": 21 } }, { "defaultMessage": "!!!Could not load your workspaces", "end": { "column": 3, - "line": 26 + "line": 28 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.workspacesRequestFailed", "start": { "column": 27, - "line": 23 + "line": 25 } }, { "defaultMessage": "!!!Try again", "end": { "column": 3, - "line": 30 + "line": 32 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.tryReloadWorkspaces", "start": { "column": 23, - "line": 27 + "line": 29 } }, { "defaultMessage": "!!!Your changes have been saved", "end": { "column": 3, - "line": 34 + "line": 36 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.updatedInfo", "start": { "column": 15, - "line": 31 + "line": 33 } }, { "defaultMessage": "!!!Workspace has been deleted", "end": { "column": 3, - "line": 38 + "line": 40 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.deletedInfo", "start": { "column": 15, - "line": 35 + "line": 37 + } + }, + { + "defaultMessage": "!!!Info about workspace feature", + "end": { + "column": 3, + "line": 44 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.workspaceFeatureInfo", + "start": { + "column": 24, + "line": 41 + } + }, + { + "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", + "end": { + "column": 3, + "line": 48 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.workspaceFeatureHeadline", + "start": { + "column": 28, + "line": 45 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 5f7254317..987262c35 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -254,6 +254,8 @@ "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.", "settings.workspaces.tryReloadWorkspaces": "Try again", "settings.workspaces.updatedInfo": "Your changes have been saved", + "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Franz Workspaces", + "settings.workspaces.workspaceFeatureInfo": "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. 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.", "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", "sidebar.addNewService": "Add new service", "sidebar.closeWorkspaceDrawer": "Close workspace drawer", diff --git a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json index 582d546fa..320d3ca3e 100644 --- a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json +++ b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Upgrade account", "file": "src/components/ui/PremiumFeatureContainer/index.js", "start": { - "line": 14, + "line": 15, "column": 10 }, "end": { - "line": 17, + "line": 18, "column": 3 } } diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json index a957358c8..ef8f1bebc 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Your workspaces", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 15, + "line": 17, "column": 12 }, "end": { - "line": 18, + "line": 20, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!You haven't added any workspaces yet.", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 19, + "line": 21, "column": 19 }, "end": { - "line": 22, + "line": 24, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Could not load your workspaces", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 23, + "line": 25, "column": 27 }, "end": { - "line": 26, + "line": 28, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Try again", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 27, + "line": 29, "column": 23 }, "end": { - "line": 30, + "line": 32, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Your changes have been saved", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 31, + "line": 33, "column": 15 }, "end": { - "line": 34, + "line": 36, "column": 3 } }, @@ -69,11 +69,37 @@ "defaultMessage": "!!!Workspace has been deleted", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 35, + "line": 37, "column": 15 }, "end": { - "line": 38, + "line": 40, + "column": 3 + } + }, + { + "id": "settings.workspaces.workspaceFeatureInfo", + "defaultMessage": "!!!Info about workspace feature", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 41, + "column": 24 + }, + "end": { + "line": 44, + "column": 3 + } + }, + { + "id": "settings.workspaces.workspaceFeatureHeadline", + "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 45, + "column": 28 + }, + "end": { + "line": 48, "column": 3 } } diff --git a/src/lib/Menu.js b/src/lib/Menu.js index d19aa9d6e..a4e41c17c 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js @@ -323,7 +323,7 @@ const _templateFactory = intl => [ { label: intl.formatMessage(menuItems.workspaces), submenu: [], - visible: workspaceStore.isFeatureActive, + visible: workspaceStore.isFeatureEnabled, }, { label: intl.formatMessage(menuItems.window), @@ -732,7 +732,7 @@ export default class FranzMenu { tpl[3].submenu = serviceTpl; } - if (workspaceStore.isFeatureActive) { + if (workspaceStore.isFeatureEnabled) { tpl[4].submenu = this.workspacesMenu(); } diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index 2bda82e17..52e38ad96 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js @@ -1,4 +1,4 @@ -import { computed, observable, reaction } from 'mobx'; +import { computed, observable, reaction, runInAction } from 'mobx'; import Store from './lib/Store'; import CachedRequest from './lib/CachedRequest'; @@ -17,8 +17,11 @@ export default class FeaturesStore extends Store { @observable featuresRequest = new CachedRequest(this.api.features, 'features'); + @observable features = Object.assign({}, DEFAULT_FEATURES_CONFIG); + async setup() { this.registerReactions([ + this._updateFeatures, this._monitorLoginStatus.bind(this), ]); @@ -37,13 +40,16 @@ export default class FeaturesStore extends Store { return this.defaultFeaturesRequest.execute().result || DEFAULT_FEATURES_CONFIG; } - @computed get features() { + _updateFeatures = () => { + const features = Object.assign({}, DEFAULT_FEATURES_CONFIG); if (this.stores.user.isLoggedIn) { - return Object.assign({}, DEFAULT_FEATURES_CONFIG, this.featuresRequest.execute().result); + const requestResult = this.featuresRequest.execute().result; + Object.assign(features, requestResult); } - - return DEFAULT_FEATURES_CONFIG; - } + runInAction('FeaturesStore::_updateFeatures', () => { + this.features = features; + }); + }; _monitorLoginStatus() { if (this.stores.user.isLoggedIn) { -- cgit v1.2.3-70-g09d2 From b75206e9a0a2c0c7ffb6052ec0f18c6b9ef5a825 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Wed, 3 Apr 2019 15:14:45 +0200 Subject: add workspace feature info in drawer for free users --- src/features/spellchecker/index.js | 2 - .../workspaces/components/WorkspaceDrawer.js | 81 ++++++++++++++++------ .../workspaces/components/WorkspacesDashboard.js | 15 ++-- src/features/workspaces/store.js | 2 +- src/i18n/locales/defaultMessages.json | 38 ++++++++-- src/i18n/locales/en-US.json | 4 +- .../workspaces/components/WorkspaceDrawer.json | 38 ++++++++-- 7 files changed, 137 insertions(+), 43 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/features/spellchecker/index.js b/src/features/spellchecker/index.js index 94883ad17..79a2172b4 100644 --- a/src/features/spellchecker/index.js +++ b/src/features/spellchecker/index.js @@ -14,8 +14,6 @@ export default function init(stores) { autorun(() => { const { isSpellcheckerPremiumFeature } = stores.features.features; - console.log('isSpellcheckerPremiumFeature', isSpellcheckerPremiumFeature); - config.isPremium = isSpellcheckerPremiumFeature !== undefined ? isSpellcheckerPremiumFeature : DEFAULT_FEATURES_CONFIG.isSpellcheckerPremiumFeature; if (!stores.user.data.isPremium && config.isPremium && stores.settings.app.enableSpellchecking) { diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index 4d48c45ef..6eacafa68 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -2,8 +2,9 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; import injectSheet from 'react-jss'; -import { defineMessages, intlShape } from 'react-intl'; +import { defineMessages, FormattedHTMLMessage, intlShape } from 'react-intl'; import { H1, Icon } from '@meetfranz/ui'; +import { Button } from '@meetfranz/forms/lib'; import ReactTooltip from 'react-tooltip'; import WorkspaceDrawerItem from './WorkspaceDrawerItem'; @@ -24,6 +25,14 @@ const messages = defineMessages({ id: 'workspaceDrawer.addWorkspaceTooltip', defaultMessage: '!!!Add workspace', }, + workspaceFeatureInfo: { + id: 'workspaceDrawer.workspaceFeatureInfo', + defaultMessage: '!!!Info about workspace feature', + }, + premiumCtaButtonLabel: { + id: 'workspaceDrawer.premiumCtaButtonLabel', + defaultMessage: '!!!Create your first workspace', + }, }); const styles = theme => ({ @@ -48,6 +57,19 @@ const styles = theme => ({ fill: theme.workspaceDrawerAddButtonHoverColor, }, }, + workspaces: { + height: 'auto', + }, + premiumAnnouncement: { + padding: '20px', + paddingTop: '0', + height: 'auto', + }, + premiumCtaButton: { + marginTop: '20px', + width: '100%', + color: 'white !important', + }, }); @injectSheet(styles) @observer @@ -84,7 +106,10 @@ class WorkspaceDrawer extends Component { {intl.formatMessage(messages.headline)} { + workspaceActions.openWorkspaceSettings(); + gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerHeadline'); + }} data-tip={`${intl.formatMessage(messages.addWorkspaceTooltip)}`} > -
- { - workspaceActions.deactivate(); - gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); - }} - services={getServicesForWorkspace(null)} - isActive={actualWorkspace == null} - /> - {workspaces.map(workspace => ( + {workspaceStore.isPremiumUpgradeRequired ? ( +
+ +
+ ) : ( +
{ - workspaceActions.activate({ workspace }); + workspaceActions.deactivate(); gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); }} - services={getServicesForWorkspace(workspace)} + services={getServicesForWorkspace(null)} + isActive={actualWorkspace == null} /> - ))} -
+ {workspaces.map(workspace => ( + { + workspaceActions.activate({ workspace }); + gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); + }} + services={getServicesForWorkspace(workspace)} + /> + ))} +
+ )} ); diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index 1fad1f71d..b141dc960 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js @@ -51,7 +51,6 @@ const messages = defineMessages({ const styles = () => ({ createForm: { height: 'auto', - marginBottom: '20px', }, appear: { height: 'auto', @@ -60,6 +59,7 @@ const styles = () => ({ padding: '20px', backgroundColor: '#3498db', marginLeft: '-20px', + marginBottom: '20px', height: 'auto', }, }); @@ -128,6 +128,13 @@ class WorkspacesDashboard extends Component { )} + {workspaceStore.isPremiumUpgradeRequired && ( +
+

{intl.formatMessage(messages.workspaceFeatureHeadline)}

+

{intl.formatMessage(messages.workspaceFeatureInfo)}

+
+ )} + - {workspaceStore.isUpgradeToPremiumRequired && ( -
-

{intl.formatMessage(messages.workspaceFeatureHeadline)}

-

{intl.formatMessage(messages.workspaceFeatureInfo)}

-
- )} {getUserWorkspacesRequest.isExecuting ? ( ) : ( diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index 62bf3efb4..712945bdc 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js @@ -37,7 +37,7 @@ export default class WorkspacesStore extends FeatureStore { return getUserWorkspacesRequest.result || []; } - @computed get isUpgradeToPremiumRequired() { + @computed get isPremiumUpgradeRequired() { return this.isFeatureEnabled && !this.isFeatureActive; } diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 1747e1976..a8f4a2cbf 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3326,39 +3326,65 @@ "defaultMessage": "!!!Workspaces", "end": { "column": 3, - "line": 18 + "line": 19 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", "id": "workspaceDrawer.headline", "start": { "column": 12, - "line": 15 + "line": 16 } }, { "defaultMessage": "!!!All services", "end": { "column": 3, - "line": 22 + "line": 23 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", "id": "workspaceDrawer.allServices", "start": { "column": 15, - "line": 19 + "line": 20 } }, { "defaultMessage": "!!!Add workspace", "end": { "column": 3, - "line": 26 + "line": 27 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", "id": "workspaceDrawer.addWorkspaceTooltip", "start": { "column": 23, - "line": 23 + "line": 24 + } + }, + { + "defaultMessage": "!!!Info about workspace feature", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.workspaceFeatureInfo", + "start": { + "column": 24, + "line": 28 + } + }, + { + "defaultMessage": "!!!Create your first workspace", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.premiumCtaButton", + "start": { + "column": 20, + "line": 32 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 987262c35..981946d00 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -310,5 +310,7 @@ "workspaceDrawer.allServices": "All services", "workspaceDrawer.headline": "Workspaces", "workspaceDrawer.item.noServicesAddedYet": "No services added yet", + "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", + "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json index 7026708e2..acd304253 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Workspaces", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { - "line": 15, + "line": 16, "column": 12 }, "end": { - "line": 18, + "line": 19, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!All services", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { - "line": 19, + "line": 20, "column": 15 }, "end": { - "line": 22, + "line": 23, "column": 3 } }, @@ -30,11 +30,37 @@ "defaultMessage": "!!!Add workspace", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { - "line": 23, + "line": 24, "column": 23 }, "end": { - "line": 26, + "line": 27, + "column": 3 + } + }, + { + "id": "workspaceDrawer.workspaceFeatureInfo", + "defaultMessage": "!!!Info about workspace feature", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 28, + "column": 24 + }, + "end": { + "line": 31, + "column": 3 + } + }, + { + "id": "workspaceDrawer.premiumCtaButtonLabel", + "defaultMessage": "!!!Create your first workspace", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 32, + "column": 25 + }, + "end": { + "line": 35, "column": 3 } } -- cgit v1.2.3-70-g09d2 From 6b38abc9011648a1f54b1ef3e3fb29d13750750c Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Wed, 3 Apr 2019 16:59:24 +0200 Subject: add workspace premium badge in settings nav --- .../settings/navigation/SettingsNavigation.js | 9 +++++- src/i18n/locales/defaultMessages.json | 32 +++++++++++----------- src/i18n/locales/en-US.json | 2 +- .../settings/navigation/SettingsNavigation.json | 28 +++++++++---------- src/stores/FeaturesStore.js | 7 ++++- src/styles/settings.scss | 10 +++++++ 6 files changed, 55 insertions(+), 33 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index dc3c1d6f1..945285f5a 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js @@ -2,6 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { defineMessages, intlShape } from 'react-intl'; import { inject, observer } from 'mobx-react'; +import { Icon } from '@meetfranz/ui'; import Link from '../../ui/Link'; import { workspaceStore } from '../../../features/workspaces'; @@ -77,7 +78,13 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp > {intl.formatMessage(messages.yourWorkspaces)} {' '} - {workspaceCount} + {workspaceStore.isPremiumUpgradeRequired ? ( + + + + ) : ( + {workspaceCount} + )} ) : null} 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.

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.

", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json index 96a42aa80..de78a71cf 100644 --- a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json +++ b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Available services", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 10, + "line": 11, "column": 21 }, "end": { - "line": 13, + "line": 14, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!Your services", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 14, + "line": 15, "column": 16 }, "end": { - "line": 17, + "line": 18, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Your workspaces", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 18, + "line": 19, "column": 18 }, "end": { - "line": 21, + "line": 22, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Account", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 22, + "line": 23, "column": 11 }, "end": { - "line": 25, + "line": 26, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Settings", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 26, + "line": 27, "column": 12 }, "end": { - "line": 29, + "line": 30, "column": 3 } }, @@ -69,11 +69,11 @@ "defaultMessage": "!!!Invite Friends", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 30, + "line": 31, "column": 17 }, "end": { - "line": 33, + "line": 34, "column": 3 } }, @@ -82,11 +82,11 @@ "defaultMessage": "!!!Logout", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 34, + "line": 35, "column": 10 }, "end": { - "line": 37, + "line": 38, "column": 3 } } diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index 52e38ad96..8fe576813 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js @@ -1,4 +1,9 @@ -import { computed, observable, reaction, runInAction } from 'mobx'; +import { + computed, + observable, + reaction, + runInAction, +} from 'mobx'; import Store from './lib/Store'; import CachedRequest from './lib/CachedRequest'; diff --git a/src/styles/settings.scss b/src/styles/settings.scss index 9fde9a7bf..d97d4ac2c 100644 --- a/src/styles/settings.scss +++ b/src/styles/settings.scss @@ -85,6 +85,11 @@ .badge { background: $dark-theme-gray-lighter; color: $dark-theme-gray-smoke; + + &.badge--pro { + background: $theme-brand-primary; + padding: 4px 6px 3px 7px; + } } &:hover { @@ -93,6 +98,11 @@ .badge { background: $dark-theme-gray-lighter; color: $dark-theme-gray-smoke; + + &.badge--pro { + background: $theme-brand-primary; + padding: 4px 6px 3px 7px; + } } } -- cgit v1.2.3-70-g09d2 From 4e5726914a0c32fc445b2aae364baf0d006024a8 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Wed, 3 Apr 2019 17:17:54 +0200 Subject: fix premium workspace badge in settings menu for light theme --- src/components/settings/navigation/SettingsNavigation.js | 2 +- src/i18n/locales/defaultMessages.json | 2 +- src/i18n/locales/en-US.json | 2 +- src/i18n/messages/src/features/shareFranz/Component.json | 2 +- src/styles/settings.scss | 13 ++++++++++++- 5 files changed, 16 insertions(+), 5 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index 945285f5a..1c51d50d6 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js @@ -80,7 +80,7 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp {' '} {workspaceStore.isPremiumUpgradeRequired ? ( - + ) : ( {workspaceCount} diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 5e3988781..500053377 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3204,7 +3204,7 @@ } }, { - "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @MeetFranz", + "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", "end": { "column": 3, "line": 42 diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index c36801d4a..9770ff0d5 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -313,4 +313,4 @@ "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file diff --git a/src/i18n/messages/src/features/shareFranz/Component.json b/src/i18n/messages/src/features/shareFranz/Component.json index 0fec9db64..34a43d5a0 100644 --- a/src/i18n/messages/src/features/shareFranz/Component.json +++ b/src/i18n/messages/src/features/shareFranz/Component.json @@ -79,7 +79,7 @@ }, { "id": "feature.shareFranz.shareText.twitter", - "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @MeetFranz", + "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", "file": "src/features/shareFranz/Component.js", "start": { "line": 39, diff --git a/src/styles/settings.scss b/src/styles/settings.scss index d97d4ac2c..b4f013cad 100644 --- a/src/styles/settings.scss +++ b/src/styles/settings.scss @@ -433,10 +433,21 @@ text-decoration: none; transition: background $theme-transition-time, color $theme-transition-time; + .badge--pro { + background: $theme-brand-primary !important; + padding: 4px 6px 3px 7px; + + .badge-icon-pro { + fill: white; + } + } + &:hover { background: darken($theme-gray-lightest, 5%); - .badge { background: #FFF; } + .badge { + background: #FFF; + } } &.is-active { -- cgit v1.2.3-70-g09d2 From afed692390713ceebd8c6610d1d93a6a4ac89076 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Thu, 4 Apr 2019 16:16:13 +0200 Subject: fix issues for users that have workspace but downgraded to free --- src/containers/layout/AppLayoutContainer.js | 1 + .../workspaces/components/WorkspaceDrawer.js | 41 ++++++++++---- .../workspaces/components/WorkspacesDashboard.js | 62 +++++++++++----------- src/i18n/locales/defaultMessages.json | 13 +++++ src/i18n/locales/en-US.json | 3 +- .../workspaces/components/WorkspaceDrawer.json | 13 +++++ 6 files changed, 90 insertions(+), 43 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index 4329c3097..52d4e0c27 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js @@ -90,6 +90,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e getServicesForWorkspace={workspace => ( workspace ? workspace.services.map(id => services.one(id).name) : services.all.map(s => s.name) )} + onUpgradeAccountClick={() => openSettings({ path: 'user' })} /> ); diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index 3602da792..baf59a1fb 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -33,6 +33,10 @@ const messages = defineMessages({ id: 'workspaceDrawer.premiumCtaButtonLabel', defaultMessage: '!!!Create your first workspace', }, + reactivatePremiumAccount: { + id: 'workspaceDrawer.reactivatePremiumAccountLabel', + defaultMessage: '!!!Reactivate premium account', + }, }); const styles = theme => ({ @@ -77,6 +81,7 @@ class WorkspaceDrawer extends Component { static propTypes = { classes: PropTypes.object.isRequired, getServicesForWorkspace: PropTypes.func.isRequired, + onUpgradeAccountClick: PropTypes.func.isRequired, }; static contextTypes = { @@ -91,6 +96,7 @@ class WorkspaceDrawer extends Component { const { classes, getServicesForWorkspace, + onUpgradeAccountClick, } = this.props; const { intl } = this.context; const { @@ -119,19 +125,32 @@ class WorkspaceDrawer extends Component { /> - {!workspaceStore.userHasWorkspaces ? ( + {workspaceStore.isPremiumUpgradeRequired ? (
-
) : (
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index a0a34c778..18813e267 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js @@ -147,38 +147,38 @@ class WorkspacesDashboard extends Component { onSubmit={onCreateWorkspaceSubmit} />
+ {getUserWorkspacesRequest.isExecuting ? ( + + ) : ( + + {/* ===== Workspace could not be loaded error ===== */} + {getUserWorkspacesRequest.error ? ( + + {intl.formatMessage(messages.workspacesRequestFailed)} + + ) : ( +
+ {/* ===== Workspaces list ===== */} + + {workspaces.map(workspace => ( + onWorkspaceClick(w)} + /> + ))} + +
+ )} +
+ )} - {getUserWorkspacesRequest.isExecuting ? ( - - ) : ( - - {/* ===== Workspace could not be loaded error ===== */} - {getUserWorkspacesRequest.error ? ( - - {intl.formatMessage(messages.workspacesRequestFailed)} - - ) : ( - - {/* ===== Workspaces list ===== */} - - {workspaces.map(workspace => ( - onWorkspaceClick(w)} - /> - ))} - -
- )} -
- )}
); diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 500053377..ec519bad5 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3386,6 +3386,19 @@ "column": 25, "line": 32 } + }, + { + "defaultMessage": "!!!Reactivate your premium account!", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.reactivatePremiumAccountLabel", + "start": { + "column": 28, + "line": 36 + } } ], "path": "src/features/workspaces/components/WorkspaceDrawer.json" diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 9770ff0d5..ed5d5e345 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -311,6 +311,7 @@ "workspaceDrawer.headline": "Workspaces", "workspaceDrawer.item.noServicesAddedYet": "No services added yet", "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", + "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account", "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json index acd304253..37bae262a 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json @@ -63,5 +63,18 @@ "line": 35, "column": 3 } + }, + { + "id": "workspaceDrawer.reactivatePremiumAccountLabel", + "defaultMessage": "!!!Reactivate premium account", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 36, + "column": 28 + }, + "end": { + "line": 39, + "column": 3 + } } ] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 387c73b2e6463238dc1c9c9ccde3c0e16ff33121 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Thu, 4 Apr 2019 16:18:33 +0200 Subject: border radius for premium intro in workspace settings --- src/features/workspaces/components/WorkspacesDashboard.js | 3 ++- src/i18n/locales/defaultMessages.json | 2 +- src/i18n/locales/en-US.json | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index 18813e267..a8b3b376c 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js @@ -48,7 +48,7 @@ const messages = defineMessages({ }, }); -const styles = () => ({ +const styles = (theme) => ({ createForm: { height: 'auto', }, @@ -62,6 +62,7 @@ const styles = () => ({ marginBottom: '20px', height: 'auto', color: 'white', + borderRadius: theme.borderRadius, }, }); diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index ec519bad5..e5c1ea259 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3388,7 +3388,7 @@ } }, { - "defaultMessage": "!!!Reactivate your premium account!", + "defaultMessage": "!!!Reactivate premium account", "end": { "column": 3, "line": 39 diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index ed5d5e345..c694b8729 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -314,4 +314,4 @@ "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account", "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 7caccf36dd55a8c7ac9dcd5e154634607adf5ef6 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Fri, 5 Apr 2019 21:02:55 +0200 Subject: add small text label for adding new workspace to drawer --- .../workspaces/components/WorkspaceDrawer.js | 42 ++++++++++++++++++++-- src/i18n/locales/defaultMessages.json | 13 +++++++ src/i18n/locales/en-US.json | 1 + .../workspaces/components/WorkspaceDrawer.json | 13 +++++++ 4 files changed, 67 insertions(+), 2 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index f35faf691..0befcc869 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -37,6 +37,10 @@ const messages = defineMessages({ id: 'workspaceDrawer.reactivatePremiumAccountLabel', defaultMessage: '!!!Reactivate premium account', }, + addNewWorkspaceLabel: { + id: 'workspaceDrawer.addNewWorkspaceLabel', + defaultMessage: '!!!add new workspace', + }, }); const styles = theme => ({ @@ -48,11 +52,11 @@ const styles = theme => ({ fontSize: '24px', marginTop: '38px', marginBottom: '25px', - marginLeft: `${theme.workspaceDrawerPadding}px`, + marginLeft: theme.workspaceDrawerPadding, }, addWorkspaceButton: { float: 'right', - marginRight: `${theme.workspaceDrawerPadding}px`, + marginRight: theme.workspaceDrawerPadding, marginTop: '2px', }, addWorkspaceButtonIcon: { @@ -74,6 +78,24 @@ const styles = theme => ({ width: '100%', color: 'white !important', }, + addNewWorkspaceLabel: { + height: 'auto', + color: theme.workspaceDrawerServicesColor, + marginTop: 20, + marginLeft: theme.workspaceDrawerPadding, + '& > span': { + fontSize: '13px', + marginLeft: 10, + position: 'relative', + top: -3, + }, + '&:hover': { + color: theme.workspaceDrawerAddButtonHoverColor, + '& > svg': { + fill: theme.workspaceDrawerAddButtonHoverColor, + }, + }, + }, }); @injectSheet(styles) @observer @@ -180,6 +202,22 @@ class WorkspaceDrawer extends Component { ))}
)} +
{ + workspaceActions.openWorkspaceSettings(); + gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerAddLabel'); + }} + > + + + {intl.formatMessage(messages.addNewWorkspaceLabel)} + +
); diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index e5c1ea259..05df4cbac 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3399,6 +3399,19 @@ "column": 28, "line": 36 } + }, + { + "defaultMessage": "!!!add new workspace", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.addNewWorkspaceLabel", + "start": { + "column": 24, + "line": 40 + } } ], "path": "src/features/workspaces/components/WorkspaceDrawer.json" diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index c694b8729..78dcd83d7 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -306,6 +306,7 @@ "validation.url": "{field} is not a valid URL", "welcome.loginButton": "Login to your account", "welcome.signupButton": "Create a free account", + "workspaceDrawer.addNewWorkspaceLabel": "add new workspace", "workspaceDrawer.addWorkspaceTooltip": "Add workspace", "workspaceDrawer.allServices": "All services", "workspaceDrawer.headline": "Workspaces", diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json index 37bae262a..9b0b80321 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json @@ -76,5 +76,18 @@ "line": 39, "column": 3 } + }, + { + "id": "workspaceDrawer.addNewWorkspaceLabel", + "defaultMessage": "!!!add new workspace", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 40, + "column": 24 + }, + "end": { + "line": 43, + "column": 3 + } } ] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 4421584d41a5182b0f93f0ed7e3c73d34f98d3de Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Sun, 7 Apr 2019 19:56:00 +0200 Subject: change plus icon in workspace drawer to settings icon --- .../workspaces/components/WorkspaceDrawer.js | 22 +++++------ .../components/WorkspaceServiceListItem.js | 43 +++++++++++++++++----- src/i18n/locales/defaultMessages.json | 6 +-- src/i18n/locales/en-US.json | 2 +- .../workspaces/components/WorkspaceDrawer.json | 6 +-- 5 files changed, 52 insertions(+), 27 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index 0befcc869..bb77aa72d 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -21,9 +21,9 @@ const messages = defineMessages({ id: 'workspaceDrawer.allServices', defaultMessage: '!!!All services', }, - addWorkspaceTooltip: { - id: 'workspaceDrawer.addWorkspaceTooltip', - defaultMessage: '!!!Add workspace', + workspacesSettingsTooltip: { + id: 'workspaceDrawer.workspacesSettingsTooltip', + defaultMessage: '!!!Workspaces settings', }, workspaceFeatureInfo: { id: 'workspaceDrawer.workspaceFeatureInfo', @@ -54,12 +54,12 @@ const styles = theme => ({ marginBottom: '25px', marginLeft: theme.workspaceDrawerPadding, }, - addWorkspaceButton: { + workspacesSettingsButton: { float: 'right', marginRight: theme.workspaceDrawerPadding, marginTop: '2px', }, - addWorkspaceButtonIcon: { + workspacesSettingsButtonIcon: { fill: theme.workspaceDrawerAddButtonColor, '&:hover': { fill: theme.workspaceDrawerAddButtonHoverColor, @@ -133,17 +133,17 @@ class WorkspaceDrawer extends Component {

{intl.formatMessage(messages.headline)} { workspaceActions.openWorkspaceSettings(); - gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerHeadline'); + gaEvent(GA_CATEGORY_WORKSPACES, 'settings', 'drawerHeadline'); }} - data-tip={`${intl.formatMessage(messages.addWorkspaceTooltip)}`} + data-tip={`${intl.formatMessage(messages.workspacesSettingsTooltip)}`} >

@@ -212,7 +212,7 @@ class WorkspaceDrawer extends Component { {intl.formatMessage(messages.addNewWorkspaceLabel)} diff --git a/src/features/workspaces/components/WorkspaceServiceListItem.js b/src/features/workspaces/components/WorkspaceServiceListItem.js index 7b516d056..e05b21440 100644 --- a/src/features/workspaces/components/WorkspaceServiceListItem.js +++ b/src/features/workspaces/components/WorkspaceServiceListItem.js @@ -2,23 +2,37 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; import injectSheet from 'react-jss'; +import classnames from 'classnames'; import { Toggle } from '@meetfranz/forms'; import Service from '../../../models/Service'; import ServiceIcon from '../../../components/ui/ServiceIcon'; const styles = theme => ({ - service: { - height: theme.workspaceSettings.listItemHeight, + listItem: { + height: theme.workspaces.settings.listItems.height, + borderBottom: `1px solid ${theme.workspaces.settings.listItems.borderColor}`, display: 'flex', + alignItems: 'center', }, - name: { - marginTop: '4px', + serviceIcon: { + padding: theme.workspaces.settings.listItems.padding, + }, + toggle: { + height: 'auto', + margin: 0, + }, + label: { + padding: theme.workspaces.settings.listItems.padding, + flexGrow: 1, + }, + disabledLabel: { + color: theme.workspaces.settings.listItems.disabled.color, }, }); @injectSheet(styles) @observer -class ServiceListItem extends Component { +class WorkspaceServiceListItem extends Component { static propTypes = { classes: PropTypes.object.isRequired, isInWorkspace: PropTypes.bool.isRequired, @@ -35,16 +49,27 @@ class ServiceListItem extends Component { } = this.props; return ( -
- +
+ + + {service.name} +
); } } -export default ServiceListItem; +export default WorkspaceServiceListItem; diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 05df4cbac..f882e6030 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3349,15 +3349,15 @@ } }, { - "defaultMessage": "!!!Add workspace", + "defaultMessage": "!!!Workspaces settings", "end": { "column": 3, "line": 27 }, "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.addWorkspaceTooltip", + "id": "workspaceDrawer.workspacesSettingsTooltip", "start": { - "column": 23, + "column": 29, "line": 24 } }, diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 78dcd83d7..e55489418 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -307,12 +307,12 @@ "welcome.loginButton": "Login to your account", "welcome.signupButton": "Create a free account", "workspaceDrawer.addNewWorkspaceLabel": "add new workspace", - "workspaceDrawer.addWorkspaceTooltip": "Add workspace", "workspaceDrawer.allServices": "All services", "workspaceDrawer.headline": "Workspaces", "workspaceDrawer.item.noServicesAddedYet": "No services added yet", "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account", "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", + "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" } \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json index 9b0b80321..d347622d2 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json @@ -26,12 +26,12 @@ } }, { - "id": "workspaceDrawer.addWorkspaceTooltip", - "defaultMessage": "!!!Add workspace", + "id": "workspaceDrawer.workspacesSettingsTooltip", + "defaultMessage": "!!!Workspaces settings", "file": "src/features/workspaces/components/WorkspaceDrawer.js", "start": { "line": 24, - "column": 23 + "column": 29 }, "end": { "line": 27, -- cgit v1.2.3-70-g09d2 From 073212bf046b9218f9e3129988b1b63fba5d685d Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Wed, 10 Apr 2019 16:12:38 +0200 Subject: added generic pro badge component for settings nav --- packages/ui/src/badge/ProBadge.tsx | 65 ++++++++++++++++++++++ packages/ui/src/index.ts | 1 + .../settings/navigation/SettingsNavigation.js | 13 +++-- src/features/workspaces/store.js | 12 ++-- src/i18n/locales/defaultMessages.json | 28 +++++----- src/i18n/locales/en-US.json | 2 +- .../settings/navigation/SettingsNavigation.json | 28 +++++----- src/stores/UIStore.js | 9 +-- src/styles/settings.scss | 26 --------- uidev/src/stories/badge.stories.tsx | 12 +++- 10 files changed, 125 insertions(+), 71 deletions(-) create mode 100644 packages/ui/src/badge/ProBadge.tsx (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/packages/ui/src/badge/ProBadge.tsx b/packages/ui/src/badge/ProBadge.tsx new file mode 100644 index 000000000..eb00e156d --- /dev/null +++ b/packages/ui/src/badge/ProBadge.tsx @@ -0,0 +1,65 @@ +import { Theme } from '@meetfranz/theme'; +import classnames from 'classnames'; +import React, { Component } from 'react'; +import injectStyle from 'react-jss'; + +import { Icon, Badge } from '../'; +import { IWithStyle } from '../typings/generic'; + +interface IProps extends IWithStyle { + badgeClasses?: string; + iconClasses?: string; + inverted?: boolean; +} + +const styles = (theme: Theme) => ({ + badge: { + height: 'auto', + padding: [4, 6, 2, 7], + borderRadius: theme.borderRadiusSmall, + }, + invertedBadge: { + background: theme.styleTypes.primary.contrast, + color: theme.styleTypes.primary.accent, + }, + icon: { + fill: theme.styleTypes.primary.contrast, + }, + invertedIcon: { + fill: theme.styleTypes.primary.accent, + }, +}); + +class ProBadgeComponent extends Component { + render() { + const { + classes, + badgeClasses, + iconClasses, + inverted, + } = this.props; + + return ( + + + + ); + } +} + +export const ProBadge = injectStyle(styles)(ProBadgeComponent); diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index 1eeec5144..666495ce9 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -3,3 +3,4 @@ export { Infobox } from './infobox'; export * from './headline'; export { Loader } from './loader'; export { Badge } from './badge'; +export { ProBadge } from './badge/ProBadge'; diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index 1c51d50d6..993b0a44a 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js @@ -2,10 +2,11 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { defineMessages, intlShape } from 'react-intl'; import { inject, observer } from 'mobx-react'; -import { Icon } from '@meetfranz/ui'; +import { ProBadge } from '@meetfranz/ui'; import Link from '../../ui/Link'; import { workspaceStore } from '../../../features/workspaces'; +import UIStore from '../../../stores/UIStore'; const messages = defineMessages({ availableServices: { @@ -40,6 +41,9 @@ const messages = defineMessages({ export default @inject('stores') @observer class SettingsNavigation extends Component { static propTypes = { + stores: PropTypes.shape({ + ui: PropTypes.instanceOf(UIStore).isRequired, + }).isRequired, serviceCount: PropTypes.number.isRequired, workspaceCount: PropTypes.number.isRequired, }; @@ -49,7 +53,8 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp }; render() { - const { serviceCount, workspaceCount } = this.props; + const { serviceCount, workspaceCount, stores } = this.props; + const { isDarkThemeActive } = stores.ui; const { intl } = this.context; return ( @@ -79,9 +84,7 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp {intl.formatMessage(messages.yourWorkspaces)} {' '} {workspaceStore.isPremiumUpgradeRequired ? ( - - - + ) : ( {workspaceCount} )} diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index 2e1764f99..ba48022c2 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js @@ -36,6 +36,8 @@ export default class WorkspacesStore extends FeatureStore { @observable isWorkspaceDrawerOpen = false; + @observable isSettingsRouteActive = null; + @computed get workspaces() { if (!this.isFeatureActive) return []; return getUserWorkspacesRequest.result || []; @@ -104,8 +106,6 @@ export default class WorkspacesStore extends FeatureStore { _wasDrawerOpenBeforeSettingsRoute = null; - _isSettingsRouteActive = null; - _getWorkspaceById = id => this.workspaces.find(w => w.id === id); _updateSettings = (changes) => { @@ -239,17 +239,17 @@ export default class WorkspacesStore extends FeatureStore { _openDrawerWithSettingsReaction = () => { const { router } = this.stores; const isWorkspaceSettingsRoute = router.location.pathname.includes(WORKSPACES_ROUTES.ROOT); - const isSwitchingToSettingsRoute = !this._isSettingsRouteActive && isWorkspaceSettingsRoute; - const isLeavingSettingsRoute = !isWorkspaceSettingsRoute && this._isSettingsRouteActive; + const isSwitchingToSettingsRoute = !this.isSettingsRouteActive && isWorkspaceSettingsRoute; + const isLeavingSettingsRoute = !isWorkspaceSettingsRoute && this.isSettingsRouteActive; if (isSwitchingToSettingsRoute) { - this._isSettingsRouteActive = true; + this.isSettingsRouteActive = true; this._wasDrawerOpenBeforeSettingsRoute = this.isWorkspaceDrawerOpen; if (!this._wasDrawerOpenBeforeSettingsRoute) { workspaceActions.toggleWorkspaceDrawer(); } } else if (isLeavingSettingsRoute) { - this._isSettingsRouteActive = false; + this.isSettingsRouteActive = false; if (!this._wasDrawerOpenBeforeSettingsRoute && this.isWorkspaceDrawerOpen) { workspaceActions.toggleWorkspaceDrawer(); } diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index f882e6030..791c4dd53 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -1302,91 +1302,91 @@ "defaultMessage": "!!!Available services", "end": { "column": 3, - "line": 14 + "line": 15 }, "file": "src/components/settings/navigation/SettingsNavigation.js", "id": "settings.navigation.availableServices", "start": { "column": 21, - "line": 11 + "line": 12 } }, { "defaultMessage": "!!!Your services", "end": { "column": 3, - "line": 18 + "line": 19 }, "file": "src/components/settings/navigation/SettingsNavigation.js", "id": "settings.navigation.yourServices", "start": { "column": 16, - "line": 15 + "line": 16 } }, { "defaultMessage": "!!!Your workspaces", "end": { "column": 3, - "line": 22 + "line": 23 }, "file": "src/components/settings/navigation/SettingsNavigation.js", "id": "settings.navigation.yourWorkspaces", "start": { "column": 18, - "line": 19 + "line": 20 } }, { "defaultMessage": "!!!Account", "end": { "column": 3, - "line": 26 + "line": 27 }, "file": "src/components/settings/navigation/SettingsNavigation.js", "id": "settings.navigation.account", "start": { "column": 11, - "line": 23 + "line": 24 } }, { "defaultMessage": "!!!Settings", "end": { "column": 3, - "line": 30 + "line": 31 }, "file": "src/components/settings/navigation/SettingsNavigation.js", "id": "settings.navigation.settings", "start": { "column": 12, - "line": 27 + "line": 28 } }, { "defaultMessage": "!!!Invite Friends", "end": { "column": 3, - "line": 34 + "line": 35 }, "file": "src/components/settings/navigation/SettingsNavigation.js", "id": "settings.navigation.inviteFriends", "start": { "column": 17, - "line": 31 + "line": 32 } }, { "defaultMessage": "!!!Logout", "end": { "column": 3, - "line": 38 + "line": 39 }, "file": "src/components/settings/navigation/SettingsNavigation.js", "id": "settings.navigation.logout", "start": { "column": 10, - "line": 35 + "line": 36 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index db1d51f3b..6591af2e2 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -315,4 +315,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json index de78a71cf..77b0ed8a4 100644 --- a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json +++ b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Available services", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 11, + "line": 12, "column": 21 }, "end": { - "line": 14, + "line": 15, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!Your services", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 15, + "line": 16, "column": 16 }, "end": { - "line": 18, + "line": 19, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Your workspaces", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 19, + "line": 20, "column": 18 }, "end": { - "line": 22, + "line": 23, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Account", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 23, + "line": 24, "column": 11 }, "end": { - "line": 26, + "line": 27, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Settings", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 27, + "line": 28, "column": 12 }, "end": { - "line": 30, + "line": 31, "column": 3 } }, @@ -69,11 +69,11 @@ "defaultMessage": "!!!Invite Friends", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 31, + "line": 32, "column": 17 }, "end": { - "line": 34, + "line": 35, "column": 3 } }, @@ -82,11 +82,11 @@ "defaultMessage": "!!!Logout", "file": "src/components/settings/navigation/SettingsNavigation.js", "start": { - "line": 35, + "line": 36, "column": 10 }, "end": { - "line": 38, + "line": 39, "column": 3 } } diff --git a/src/stores/UIStore.js b/src/stores/UIStore.js index bb7965a4a..a95a8e1e0 100644 --- a/src/stores/UIStore.js +++ b/src/stores/UIStore.js @@ -21,11 +21,12 @@ export default class UIStore extends Store { return (settings.app.isAppMuted && settings.app.showMessageBadgeWhenMuted) || !settings.isAppMuted; } - @computed get theme() { - if (this.stores.settings.all.app.darkMode) { - return theme('dark'); - } + @computed get isDarkThemeActive() { + return this.stores.settings.all.app.darkMode; + } + @computed get theme() { + if (this.isDarkThemeActive) return theme('dark'); return theme('default'); } diff --git a/src/styles/settings.scss b/src/styles/settings.scss index 6340f2951..dd6f56d2b 100644 --- a/src/styles/settings.scss +++ b/src/styles/settings.scss @@ -85,11 +85,6 @@ .badge { background: $dark-theme-gray-lighter; color: $dark-theme-gray-smoke; - - &.badge--pro { - background: $theme-brand-primary; - padding: 4px 6px 3px 7px; - } } &:hover { @@ -98,11 +93,6 @@ .badge { background: $dark-theme-gray-lighter; color: $dark-theme-gray-smoke; - - &.badge--pro { - background: $theme-brand-primary; - padding: 4px 6px 3px 7px; - } } } @@ -433,15 +423,6 @@ text-decoration: none; transition: background $theme-transition-time, color $theme-transition-time; - .badge--pro { - background: $theme-brand-primary !important; - padding: 4px 6px 3px 7px; - - .badge-icon-pro { - fill: white; - } - } - &:hover { background: darken($theme-gray-lightest, 5%); @@ -454,13 +435,6 @@ background: $theme-brand-primary; color: #FFF; - .badge--pro { - background: white !important; - .badge-icon-pro { - fill: $theme-brand-primary; - } - } - .badge { background: #FFF; color: $theme-brand-primary; diff --git a/uidev/src/stories/badge.stories.tsx b/uidev/src/stories/badge.stories.tsx index 6de2034bf..d7b4d55b5 100644 --- a/uidev/src/stories/badge.stories.tsx +++ b/uidev/src/stories/badge.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { Badge } from '@meetfranz/ui'; +import { Badge, ProBadge } from '@meetfranz/ui'; import { storiesOf } from '../stores/stories'; storiesOf('Badge') @@ -18,4 +18,14 @@ storiesOf('Badge') danger inverted + )) + .add('Pro Badge', () => ( + <> + + + )) + .add('Pro Badge inverted', () => ( + <> + + )); -- cgit v1.2.3-70-g09d2 From 4c762972ab51e6017607f0450c2647f4c0e5660f Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Wed, 10 Apr 2019 16:27:44 +0200 Subject: add premium badge to workspace drawer headline --- packages/ui/src/badge/ProBadge.tsx | 1 - .../workspaces/components/WorkspaceDrawer.js | 49 ++++++++++++++-------- src/i18n/locales/defaultMessages.json | 13 ++++++ src/i18n/locales/en-US.json | 1 + .../workspaces/components/WorkspaceDrawer.json | 13 ++++++ 5 files changed, 59 insertions(+), 18 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/packages/ui/src/badge/ProBadge.tsx b/packages/ui/src/badge/ProBadge.tsx index eb00e156d..612e23210 100644 --- a/packages/ui/src/badge/ProBadge.tsx +++ b/packages/ui/src/badge/ProBadge.tsx @@ -47,7 +47,6 @@ class ProBadgeComponent extends Component { inverted && classes.invertedBadge, badgeClasses, ])} - data-type="franz-badge" > ({ @@ -54,6 +58,9 @@ const styles = theme => ({ marginBottom: '25px', marginLeft: theme.workspaces.drawer.padding, }, + headlineProBadge: { + marginRight: 15, + }, workspacesSettingsButton: { float: 'right', marginRight: theme.workspaces.drawer.padding, @@ -134,6 +141,14 @@ class WorkspaceDrawer extends Component { return (

+ {workspaceStore.isPremiumUpgradeRequired && ( + + + + )} {intl.formatMessage(messages.headline)} ))} +
{ + workspaceActions.openWorkspaceSettings(); + gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerAddLabel'); + }} + > + + + {intl.formatMessage(messages.addNewWorkspaceLabel)} + +

)} -
{ - workspaceActions.openWorkspaceSettings(); - gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerAddLabel'); - }} - > - - - {intl.formatMessage(messages.addNewWorkspaceLabel)} - -
); diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 791c4dd53..11a23805c 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3412,6 +3412,19 @@ "column": 24, "line": 40 } + }, + { + "defaultMessage": "!!!Premium feature", + "end": { + "column": 3, + "line": 47 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.proFeatureBadge", + "start": { + "column": 23, + "line": 44 + } } ], "path": "src/features/workspaces/components/WorkspaceDrawer.json" diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 6591af2e2..a2f460f67 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -311,6 +311,7 @@ "workspaceDrawer.headline": "Workspaces", "workspaceDrawer.item.noServicesAddedYet": "No services added yet", "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", + "workspaceDrawer.proFeatureBadge": "Premium feature", "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account", "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json index d347622d2..9f0935620 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json @@ -89,5 +89,18 @@ "line": 43, "column": 3 } + }, + { + "id": "workspaceDrawer.proFeatureBadge", + "defaultMessage": "!!!Premium feature", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 44, + "column": 23 + }, + "end": { + "line": 47, + "column": 3 + } } ] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 664b59789ca032eaa393af52ff2559e173a9b0b5 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Wed, 10 Apr 2019 16:37:04 +0200 Subject: add context menu for workspace drawer items --- .../workspaces/components/WorkspaceDrawer.js | 1 + .../workspaces/components/WorkspaceDrawerItem.js | 29 ++++++++++++++++++++++ src/i18n/locales/defaultMessages.json | 17 +++++++++++-- src/i18n/locales/en-US.json | 3 ++- .../workspaces/components/WorkspaceDrawerItem.json | 17 +++++++++++-- 5 files changed, 62 insertions(+), 5 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index 64c98dc63..684e50dd0 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -215,6 +215,7 @@ class WorkspaceDrawer extends Component { workspaceActions.toggleWorkspaceDrawer(); gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); }} + onContextMenuEditClick={() => workspaceActions.edit({ workspace })} services={getServicesForWorkspace(workspace)} /> ))} diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.js b/src/features/workspaces/components/WorkspaceDrawerItem.js index 57f0754d9..59a2144d3 100644 --- a/src/features/workspaces/components/WorkspaceDrawerItem.js +++ b/src/features/workspaces/components/WorkspaceDrawerItem.js @@ -1,3 +1,4 @@ +import { remote } from 'electron'; import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; @@ -5,11 +6,17 @@ import injectSheet from 'react-jss'; import classnames from 'classnames'; import { defineMessages, intlShape } from 'react-intl'; +const { Menu } = remote; + const messages = defineMessages({ noServicesAddedYet: { id: 'workspaceDrawer.item.noServicesAddedYet', defaultMessage: '!!!No services added yet', }, + contextMenuEdit: { + id: 'workspaceDrawer.item.contextMenuEdit', + defaultMessage: '!!!edit', + }, }); const styles = theme => ({ @@ -61,6 +68,11 @@ class WorkspaceDrawerItem extends Component { name: PropTypes.string.isRequired, onClick: PropTypes.func.isRequired, services: PropTypes.arrayOf(PropTypes.string).isRequired, + onContextMenuEditClick: PropTypes.func, + }; + + static defaultProps = { + onContextMenuEditClick: null, }; static contextTypes = { @@ -73,9 +85,23 @@ class WorkspaceDrawerItem extends Component { isActive, name, onClick, + onContextMenuEditClick, services, } = this.props; const { intl } = this.context; + + const contextMenuTemplate = [{ + label: name, + enabled: false, + }, { + type: 'separator', + }, { + label: intl.formatMessage(messages.contextMenuEdit), + click: onContextMenuEditClick, + }]; + + const contextMenu = Menu.buildFromTemplate(contextMenuTemplate); + return (
( + onContextMenuEditClick && contextMenu.popup(remote.getCurrentWindow()) + )} > 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.

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.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json index cdbd1d5b5..4ff190606 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json @@ -4,11 +4,24 @@ "defaultMessage": "!!!No services added yet", "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", "start": { - "line": 9, + "line": 12, "column": 22 }, "end": { - "line": 12, + "line": 15, + "column": 3 + } + }, + { + "id": "workspaceDrawer.item.contextMenuEdit", + "defaultMessage": "!!!edit", + "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", + "start": { + "line": 16, + "column": 19 + }, + "end": { + "line": 19, "column": 3 } } -- cgit v1.2.3-70-g09d2 From ca9d5863f9067f2a32498da763cd536e0bcc5c77 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Thu, 11 Apr 2019 12:53:16 +0200 Subject: refactor announcements to newest feature pattern --- src/components/layout/AppLayout.js | 2 +- src/containers/layout/AppLayoutContainer.js | 5 +- src/features/announcements/Component.js | 77 --------------------- src/features/announcements/api.js | 6 +- .../announcements/components/AnnouncementScreen.js | 79 ++++++++++++++++++++++ src/features/announcements/index.js | 17 ++--- src/features/announcements/state.js | 17 ----- src/features/announcements/store.js | 49 ++++++++------ src/i18n/locales/defaultMessages.json | 18 +++++ .../components/AnnouncementScreen.json | 15 ++++ 10 files changed, 156 insertions(+), 129 deletions(-) delete mode 100644 src/features/announcements/Component.js create mode 100644 src/features/announcements/components/AnnouncementScreen.js delete mode 100644 src/features/announcements/state.js create mode 100644 src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index 985475c8d..eb3f03f12 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js @@ -14,7 +14,7 @@ import ErrorBoundary from '../util/ErrorBoundary'; // import globalMessages from '../../i18n/globalMessages'; import { isWindows } from '../../environment'; -import AnnouncementScreen from '../../features/announcements/Component'; +import AnnouncementScreen from '../../features/announcements/components/AnnouncementScreen'; import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; import { workspaceStore } from '../../features/workspaces'; diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index 0357f63bd..8a0e105e7 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js @@ -20,10 +20,11 @@ import Services from '../../components/services/content/Services'; import AppLoader from '../../components/ui/AppLoader'; import { state as delayAppState } from '../../features/delayApp'; -import { announcementsState } from '../../features/announcements/state'; +import { } from '../../features/announcements/store'; import { workspaceActions } from '../../features/workspaces/actions'; import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer'; import { workspaceStore } from '../../features/workspaces'; +import { announcementsStore } from '../../features/announcements'; export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { static defaultProps = { @@ -150,7 +151,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e areRequiredRequestsLoading={requests.areRequiredRequestsLoading} darkMode={settings.all.app.darkMode} isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible} - isAnnouncementVisible={announcementsState.isAnnouncementVisible} + isAnnouncementVisible={announcementsStore.isAnnouncementVisible} > {React.Children.count(children) > 0 ? children : null} diff --git a/src/features/announcements/Component.js b/src/features/announcements/Component.js deleted file mode 100644 index 5d95f5d84..000000000 --- a/src/features/announcements/Component.js +++ /dev/null @@ -1,77 +0,0 @@ -import React, { Component } from 'react'; -import marked from 'marked'; -import PropTypes from 'prop-types'; -import { inject, observer } from 'mobx-react'; -import { defineMessages, intlShape } from 'react-intl'; -import injectSheet from 'react-jss'; -import { themeSidebarWidth } from '@meetfranz/theme/lib/themes/legacy'; -import state from './state'; - -const messages = defineMessages({ - headline: { - id: 'feature.announcements.headline', - defaultMessage: '!!!What\'s new in Franz {version}?', - }, -}); - -const styles = theme => ({ - container: { - background: theme.colorBackground, - position: 'absolute', - top: 0, - zIndex: 140, - width: `calc(100% - ${themeSidebarWidth})`, - display: 'flex', - 'flex-direction': 'column', - 'align-items': 'center', - 'justify-content': 'center', - }, - headline: { - color: theme.colorHeadline, - margin: [25, 0, 40], - 'max-width': 500, - 'text-align': 'center', - 'line-height': '1.3em', - }, - body: { - '& h3': { - fontSize: '24px', - margin: '1.5em 0 1em 0', - }, - '& li': { - marginBottom: '1em', - }, - }, -}); - - -@inject('actions') @injectSheet(styles) @observer -class AnnouncementScreen extends Component { - static propTypes = { - classes: PropTypes.object.isRequired, - }; - - static contextTypes = { - intl: intlShape, - }; - - render() { - const { classes } = this.props; - const { intl } = this.context; - return ( -
-

- {intl.formatMessage(messages.headline, { version: state.currentVersion })} -

-
-
- ); - } -} - -export default AnnouncementScreen; diff --git a/src/features/announcements/api.js b/src/features/announcements/api.js index ec16066a6..09fcb8235 100644 --- a/src/features/announcements/api.js +++ b/src/features/announcements/api.js @@ -1,8 +1,9 @@ import { remote } from 'electron'; +import Request from '../../stores/lib/Request'; const debug = require('debug')('Franz:feature:announcements:api'); -export default { +export const announcementsApi = { async getCurrentVersion() { debug('getting current version of electron app'); return Promise.resolve(remote.app.getVersion()); @@ -17,3 +18,6 @@ export default { return data.body; }, }; + +export const getCurrentVersionRequest = new Request(announcementsApi, 'getCurrentVersion'); +export const getAnnouncementRequest = new Request(announcementsApi, 'getAnnouncementForVersion'); diff --git a/src/features/announcements/components/AnnouncementScreen.js b/src/features/announcements/components/AnnouncementScreen.js new file mode 100644 index 000000000..5b3e7aeaa --- /dev/null +++ b/src/features/announcements/components/AnnouncementScreen.js @@ -0,0 +1,79 @@ +import React, { Component } from 'react'; +import marked from 'marked'; +import PropTypes from 'prop-types'; +import { inject, observer } from 'mobx-react'; +import { defineMessages, intlShape } from 'react-intl'; +import injectSheet from 'react-jss'; +import { themeSidebarWidth } from '../../../../packages/theme/lib/themes/legacy'; +import { announcementsStore } from '../index'; + +const messages = defineMessages({ + headline: { + id: 'feature.announcements.headline', + defaultMessage: '!!!What\'s new in Franz {version}?', + }, +}); + +const styles = theme => ({ + container: { + background: theme.colorBackground, + position: 'absolute', + top: 0, + zIndex: 140, + width: `calc(100% - ${themeSidebarWidth})`, + display: 'flex', + 'flex-direction': 'column', + 'align-items': 'center', + 'justify-content': 'center', + }, + headline: { + color: theme.colorHeadline, + margin: [25, 0, 40], + 'max-width': 500, + 'text-align': 'center', + 'line-height': '1.3em', + }, + body: { + '& h3': { + fontSize: '24px', + margin: '1.5em 0 1em 0', + }, + '& li': { + marginBottom: '1em', + }, + }, +}); + + +@inject('actions') @injectSheet(styles) @observer +class AnnouncementScreen extends Component { + static propTypes = { + classes: PropTypes.object.isRequired, + }; + + static contextTypes = { + intl: intlShape, + }; + + render() { + const { classes } = this.props; + const { intl } = this.context; + return ( +
+

+ {intl.formatMessage(messages.headline, { + version: announcementsStore.currentVersion, + })} +

+
+
+ ); + } +} + +export default AnnouncementScreen; diff --git a/src/features/announcements/index.js b/src/features/announcements/index.js index 5ea74e0af..c087689a7 100644 --- a/src/features/announcements/index.js +++ b/src/features/announcements/index.js @@ -1,11 +1,9 @@ -import { reaction, runInAction } from 'mobx'; +import { reaction } from 'mobx'; import { AnnouncementsStore } from './store'; -import api from './api'; -import state, { resetState } from './state'; const debug = require('debug')('Franz:feature:announcements'); -let store = null; +export const announcementsStore = new AnnouncementsStore(); export default function initAnnouncements(stores, actions) { // const { features } = stores; @@ -19,15 +17,10 @@ export default function initAnnouncements(stores, actions) { (isEnabled) => { if (isEnabled) { debug('Initializing `announcements` feature'); - store = new AnnouncementsStore(stores, api, actions, state); - store.initialize(); - runInAction(() => { state.isFeatureActive = true; }); - } else if (store) { + announcementsStore.start(stores, actions); + } else if (announcementsStore.isFeatureActive) { debug('Disabling `announcements` feature'); - runInAction(() => { state.isFeatureActive = false; }); - store.teardown(); - store = null; - resetState(); // Reset state to default + announcementsStore.stop(); } }, { diff --git a/src/features/announcements/state.js b/src/features/announcements/state.js deleted file mode 100644 index 81b632253..000000000 --- a/src/features/announcements/state.js +++ /dev/null @@ -1,17 +0,0 @@ -import { observable } from 'mobx'; - -const defaultState = { - announcement: null, - currentVersion: null, - lastUsedVersion: null, - isAnnouncementVisible: false, - isFeatureActive: false, -}; - -export const announcementsState = observable(defaultState); - -export function resetState() { - Object.assign(announcementsState, defaultState); -} - -export default announcementsState; diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js index 004a44062..c59700926 100644 --- a/src/features/announcements/store.js +++ b/src/features/announcements/store.js @@ -1,28 +1,39 @@ import { action, observable, reaction } from 'mobx'; import semver from 'semver'; - -import Request from '../../stores/lib/Request'; -import Store from '../../stores/lib/Store'; +import { FeatureStore } from '../utils/FeatureStore'; +import { getAnnouncementRequest, getCurrentVersionRequest } from './api'; const debug = require('debug')('Franz:feature:announcements:store'); -export class AnnouncementsStore extends Store { - @observable getCurrentVersion = new Request(this.api, 'getCurrentVersion'); +export class AnnouncementsStore extends FeatureStore { - @observable getAnnouncement = new Request(this.api, 'getAnnouncementForVersion'); + @observable announcement = null; - constructor(stores, api, actions, state) { - super(stores, api, actions); - this.state = state; - } + @observable currentVersion = null; + + @observable lastUsedVersion = null; + + @observable isAnnouncementVisible = false; - async setup() { + @observable isFeatureActive = false; + + async start(stores, actions) { + debug('AnnouncementsStore::start'); + this.stores = stores; + this.actions = actions; await this.fetchLastUsedVersion(); await this.fetchCurrentVersion(); await this.fetchReleaseAnnouncement(); this.showAnnouncementIfNotSeenYet(); this.actions.announcements.show.listen(this._showAnnouncement.bind(this)); + this.isFeatureActive = true; + } + + stop() { + debug('AnnouncementsStore::stop'); + this.isFeatureActive = false; + this.isAnnouncementVisible = false; } // ====== PUBLIC ====== @@ -35,14 +46,14 @@ export class AnnouncementsStore extends Store { async fetchCurrentVersion() { debug('getting current version from api'); - const version = await this.getCurrentVersion.execute(); + const version = await getCurrentVersionRequest.execute(); this._setCurrentVersion(version); } async fetchReleaseAnnouncement() { debug('getting release announcement from api'); try { - const announcement = await this.getAnnouncement.execute(this.state.currentVersion); + const announcement = await getAnnouncementRequest.execute(this.currentVersion); this._setAnnouncement(announcement); } catch (error) { this._setAnnouncement(null); @@ -50,7 +61,7 @@ export class AnnouncementsStore extends Store { } showAnnouncementIfNotSeenYet() { - const { announcement, currentVersion, lastUsedVersion } = this.state; + const { announcement, currentVersion, lastUsedVersion } = this; if (announcement && semver.gt(currentVersion, lastUsedVersion)) { debug(`${currentVersion} < ${lastUsedVersion}: announcement is shown`); this._showAnnouncement(); @@ -64,21 +75,21 @@ export class AnnouncementsStore extends Store { @action _setCurrentVersion(version) { debug(`setting current version to ${version}`); - this.state.currentVersion = version; + this.currentVersion = version; } @action _setLastUsedVersion(version) { debug(`setting last used version to ${version}`); - this.state.lastUsedVersion = version; + this.lastUsedVersion = version; } @action _setAnnouncement(announcement) { debug(`setting announcement to ${announcement}`); - this.state.announcement = announcement; + this.announcement = announcement; } @action _showAnnouncement() { - this.state.isAnnouncementVisible = true; + this.isAnnouncementVisible = true; this.actions.service.blurActive(); const dispose = reaction( () => this.stores.services.active, @@ -90,6 +101,6 @@ export class AnnouncementsStore extends Store { } @action _hideAnnouncement() { - this.state.isAnnouncementVisible = false; + this.isAnnouncementVisible = false; } } diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 698698515..1dd31324e 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3097,6 +3097,24 @@ ], "path": "src/features/announcements/Component.json" }, + { + "descriptors": [ + { + "defaultMessage": "!!!What's new in Franz {version}?", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/features/announcements/components/AnnouncementScreen.js", + "id": "feature.announcements.headline", + "start": { + "column": 12, + "line": 11 + } + } + ], + "path": "src/features/announcements/components/AnnouncementScreen.json" + }, { "descriptors": [ { diff --git a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json new file mode 100644 index 000000000..225670ee2 --- /dev/null +++ b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json @@ -0,0 +1,15 @@ +[ + { + "id": "feature.announcements.headline", + "defaultMessage": "!!!What's new in Franz {version}?", + "file": "src/features/announcements/components/AnnouncementScreen.js", + "start": { + "line": 11, + "column": 12 + }, + "end": { + "line": 14, + "column": 3 + } + } +] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From eaf4aff646eed56e65c8dd8e70143ab5634ad4b4 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Thu, 11 Apr 2019 16:44:16 +0200 Subject: WIP: announcement feature and workspace fixes --- packages/theme/src/themes/dark/index.ts | 19 -- packages/theme/src/themes/default/index.ts | 20 -- src/features/announcements/actions.js | 4 +- src/features/announcements/api.js | 18 +- .../announcements/components/AnnouncementScreen.js | 152 ++++++++++++--- src/features/announcements/store.js | 151 +++++++++------ src/features/utils/FeatureStore.js | 29 ++- src/features/workspaces/store.js | 18 +- src/i18n/locales/defaultMessages.json | 6 +- src/i18n/locales/en-US.json | 6 +- .../src/features/announcements/Component.json | 4 +- .../components/AnnouncementScreen.json | 8 +- src/i18n/messages/src/lib/Menu.json | 214 ++++++++++----------- src/lib/Menu.js | 15 +- src/stores/index.js | 4 + 15 files changed, 405 insertions(+), 263 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/packages/theme/src/themes/dark/index.ts b/packages/theme/src/themes/dark/index.ts index fd04b106c..b17dc8965 100644 --- a/packages/theme/src/themes/dark/index.ts +++ b/packages/theme/src/themes/dark/index.ts @@ -111,22 +111,3 @@ export const workspaces = merge({}, defaultStyles.workspaces, { }, }, }); - -// // Workspace settings -// export const workspaceSettings = merge({}, defaultStyles.workspaceSettings, { -// listItemBorderColor: legacyStyles.darkThemeGrayDarker, -// listItemHoverBgColor: legacyStyles.darkThemeGrayDarker, -// }); -// -// // Workspace Drawer -// export const workspaceDrawerBackground = color(colorBackground).lighten(0.3).hex(); -// export const workspaceDrawerAddButtonColor = legacyStyles.darkThemeGrayLighter; -// export const workspaceDrawerAddButtonHoverColor = legacyStyles.darkThemeGraySmoke; -// export const workspaceDrawerItemBorder = color(workspaceDrawerBackground).lighten(0.2).hex(); -// export const workspaceDrawerItemHoverBackground = color(workspaceDrawerBackground).lighten(0.2).hex(); -// export const workspaceDrawerItemActiveBackground = defaultStyles.brandPrimary; -// export const workspaceDrawerItemNameColor = colorText; -// export const workspaceDrawerItemNameActiveColor = 'white'; -// export const workspaceDrawerServicesColor = color(colorText).darken(0.5).hex(); -// export const workspaceDrawerServicesActiveColor = color(defaultStyles.brandPrimary).lighten(0.5).hex(); -// diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts index d0493b82f..46d29f593 100644 --- a/packages/theme/src/themes/default/index.ts +++ b/packages/theme/src/themes/default/index.ts @@ -200,23 +200,3 @@ export const workspaces = { spinnerColor: 'white', }, }; - -// export const workspaceSettings = { -// listItemHeight: 57, -// listItemBorderColor: legacyStyles.themeGrayLightest, -// listItemHoverBgColor: legacyStyles.themeGrayLightest, -// }; -// -// // Workspace Drawer -// export const workspaceDrawerWidth = 300; -// export const workspaceDrawerPadding = 20; -// export const workspaceDrawerBackground = color(colorBackground).lighten(0.1).hex(); -// export const workspaceDrawerAddButtonColor = legacyStyles.themeGrayLight; -// export const workspaceDrawerAddButtonHoverColor = color(legacyStyles.themeGrayLight).lighten(0.1).hex(); -// export const workspaceDrawerItemHoverBackground = color(workspaceDrawerBackground).darken(0.01).hex(); -// export const workspaceDrawerItemActiveBackground = legacyStyles.themeGrayLightest; -// export const workspaceDrawerItemBorder = color(workspaceDrawerBackground).darken(0.05).hex(); -// export const workspaceDrawerItemNameColor = colorText; -// export const workspaceDrawerItemNameActiveColor = colorText; -// export const workspaceDrawerServicesColor = color(colorText).lighten(1.5).hex(); -// export const workspaceDrawerServicesActiveColor = workspaceDrawerServicesColor; diff --git a/src/features/announcements/actions.js b/src/features/announcements/actions.js index 68b262ded..bab496314 100644 --- a/src/features/announcements/actions.js +++ b/src/features/announcements/actions.js @@ -2,7 +2,9 @@ import PropTypes from 'prop-types'; import { createActionsFromDefinitions } from '../../actions/lib/actions'; export const announcementActions = createActionsFromDefinitions({ - show: {}, + show: { + targetVersion: PropTypes.string, + }, }, PropTypes.checkPropTypes); export default announcementActions; diff --git a/src/features/announcements/api.js b/src/features/announcements/api.js index 09fcb8235..a581bd8de 100644 --- a/src/features/announcements/api.js +++ b/src/features/announcements/api.js @@ -1,5 +1,6 @@ import { remote } from 'electron'; import Request from '../../stores/lib/Request'; +import { API, API_VERSION } from '../../environment'; const debug = require('debug')('Franz:feature:announcements:api'); @@ -9,15 +10,24 @@ export const announcementsApi = { return Promise.resolve(remote.app.getVersion()); }, - async getAnnouncementForVersion(version) { - debug('fetching release announcement from Github'); + async getChangelog(version) { + debug('fetching release changelog from Github'); const url = `https://api.github.com/repos/meetfranz/franz/releases/tags/v${version}`; const request = await window.fetch(url, { method: 'GET' }); - if (!request.ok) throw request; + if (!request.ok) return null; const data = await request.json(); return data.body; }, + + async getAnnouncement(version) { + debug('fetching release announcement from api'); + const url = `${API}/${API_VERSION}/announcements/${version}`; + const response = await window.fetch(url, { method: 'GET' }); + if (!response.ok) return null; + return response.json(); + }, }; export const getCurrentVersionRequest = new Request(announcementsApi, 'getCurrentVersion'); -export const getAnnouncementRequest = new Request(announcementsApi, 'getAnnouncementForVersion'); +export const getChangelogRequest = new Request(announcementsApi, 'getChangelog'); +export const getAnnouncementRequest = new Request(announcementsApi, 'getAnnouncement'); diff --git a/src/features/announcements/components/AnnouncementScreen.js b/src/features/announcements/components/AnnouncementScreen.js index 5b3e7aeaa..2d5efc396 100644 --- a/src/features/announcements/components/AnnouncementScreen.js +++ b/src/features/announcements/components/AnnouncementScreen.js @@ -4,27 +4,29 @@ import PropTypes from 'prop-types'; import { inject, observer } from 'mobx-react'; import { defineMessages, intlShape } from 'react-intl'; import injectSheet from 'react-jss'; -import { themeSidebarWidth } from '../../../../packages/theme/lib/themes/legacy'; +import { Button } from '@meetfranz/forms'; + import { announcementsStore } from '../index'; +import UIStore from '../../../stores/UIStore'; const messages = defineMessages({ headline: { - id: 'feature.announcements.headline', - defaultMessage: '!!!What\'s new in Franz {version}?', + id: 'feature.announcements.changelog.headline', + defaultMessage: '!!!Changes in Franz {version}', }, }); +const smallScreen = '1000px'; + const styles = theme => ({ container: { background: theme.colorBackground, position: 'absolute', top: 0, zIndex: 140, - width: `calc(100% - ${themeSidebarWidth})`, - display: 'flex', - 'flex-direction': 'column', - 'align-items': 'center', - 'justify-content': 'center', + width: '100%', + height: '100%', + overflowY: 'auto', }, headline: { color: theme.colorHeadline, @@ -33,7 +35,76 @@ const styles = theme => ({ 'text-align': 'center', 'line-height': '1.3em', }, - body: { + announcement: { + height: '100vh', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + }, + main: { + flexGrow: 1, + '& h1': { + marginTop: 40, + fontSize: 50, + color: theme.styleTypes.primary.accent, + textAlign: 'center', + [`@media(min-width: ${smallScreen})`]: { + marginTop: 75, + }, + }, + '& h2': { + fontSize: 24, + fontWeight: 300, + color: theme.colorText, + textAlign: 'center', + }, + }, + mainBody: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + width: 'calc(100% - 80px)', + height: 'auto', + margin: '0 auto', + [`@media(min-width: ${smallScreen})`]: { + flexDirection: 'row', + justifyContent: 'center', + }, + }, + mainImage: { + minWidth: 250, + maxWidth: 400, + margin: '0 auto', + marginBottom: 40, + '& img': { + width: '100%', + }, + [`@media(min-width: ${smallScreen})`]: { + margin: 0, + }, + }, + mainText: { + height: 'auto', + maxWidth: 600, + textAlign: 'center', + '& p': { + lineHeight: '1.5em', + }, + [`@media(min-width: ${smallScreen})`]: { + textAlign: 'left', + }, + }, + mainCtaButton: { + textAlign: 'center', + marginTop: 40, + [`@media(min-width: ${smallScreen})`]: { + textAlign: 'left', + }, + }, + spotlight: { + height: 'auto', + }, + changelog: { '& h3': { fontSize: '24px', margin: '1.5em 0 1em 0', @@ -45,10 +116,13 @@ const styles = theme => ({ }); -@inject('actions') @injectSheet(styles) @observer +@inject('stores', 'actions') @injectSheet(styles) @observer class AnnouncementScreen extends Component { static propTypes = { classes: PropTypes.object.isRequired, + stores: PropTypes.shape({ + ui: PropTypes.instanceOf(UIStore).isRequired, + }).isRequired, }; static contextTypes = { @@ -56,21 +130,55 @@ class AnnouncementScreen extends Component { }; render() { - const { classes } = this.props; + const { classes, stores } = this.props; const { intl } = this.context; + const { changelog, announcement } = announcementsStore; + const themeImage = stores.ui.isDarkThemeActive ? 'dark' : 'light'; return (
-

- {intl.formatMessage(messages.headline, { - version: announcementsStore.currentVersion, - })} -

-
+
+
+

{announcement.main.headline}

+

{announcement.main.subHeadline}

+
+
+ +
+
+

+

+
+
+
+
+ {announcement.spotlight && ( +
+

{announcement.spotlight.title}

+
+ )} +
+ {changelog && ( +
+

+ {intl.formatMessage(messages.headline, { + version: announcementsStore.currentVersion, + })} +

+
+
+ )}
); } diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js index c59700926..d4fb0a52c 100644 --- a/src/features/announcements/store.js +++ b/src/features/announcements/store.js @@ -1,96 +1,93 @@ -import { action, observable, reaction } from 'mobx'; +import { + action, + computed, + observable, + reaction, +} from 'mobx'; import semver from 'semver'; +import localStorage from 'mobx-localstorage'; + import { FeatureStore } from '../utils/FeatureStore'; -import { getAnnouncementRequest, getCurrentVersionRequest } from './api'; +import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api'; +import { announcementActions } from './actions'; + +const LOCAL_STORAGE_KEY = 'announcements'; const debug = require('debug')('Franz:feature:announcements:store'); export class AnnouncementsStore extends FeatureStore { - - @observable announcement = null; - - @observable currentVersion = null; - - @observable lastUsedVersion = null; + @observable targetVersion = null; @observable isAnnouncementVisible = false; @observable isFeatureActive = false; - async start(stores, actions) { - debug('AnnouncementsStore::start'); - this.stores = stores; - this.actions = actions; - await this.fetchLastUsedVersion(); - await this.fetchCurrentVersion(); - await this.fetchReleaseAnnouncement(); - this.showAnnouncementIfNotSeenYet(); - - this.actions.announcements.show.listen(this._showAnnouncement.bind(this)); - this.isFeatureActive = true; + @computed get changelog() { + return getChangelogRequest.result; } - stop() { - debug('AnnouncementsStore::stop'); - this.isFeatureActive = false; - this.isAnnouncementVisible = false; + @computed get announcement() { + return getAnnouncementRequest.result; } - // ====== PUBLIC ====== - - async fetchLastUsedVersion() { - debug('getting last used version from local storage'); - const lastUsedVersion = window.localStorage.getItem('lastUsedVersion'); - this._setLastUsedVersion(lastUsedVersion == null ? '0.0.0' : lastUsedVersion); + @computed get settings() { + return localStorage.getItem(LOCAL_STORAGE_KEY) || {}; } - async fetchCurrentVersion() { - debug('getting current version from api'); - const version = await getCurrentVersionRequest.execute(); - this._setCurrentVersion(version); + @computed get lastSeenAnnouncementVersion() { + return this.settings.lastSeenAnnouncementVersion || null; } - async fetchReleaseAnnouncement() { - debug('getting release announcement from api'); - try { - const announcement = await getAnnouncementRequest.execute(this.currentVersion); - this._setAnnouncement(announcement); - } catch (error) { - this._setAnnouncement(null); - } + @computed get currentVersion() { + return getCurrentVersionRequest.result; } - showAnnouncementIfNotSeenYet() { - const { announcement, currentVersion, lastUsedVersion } = this; - if (announcement && semver.gt(currentVersion, lastUsedVersion)) { - debug(`${currentVersion} < ${lastUsedVersion}: announcement is shown`); - this._showAnnouncement(); - } else { - debug(`${currentVersion} >= ${lastUsedVersion}: announcement is hidden`); - this._hideAnnouncement(); - } + @computed get isNewUser() { + return this.stores.settings.stats.appStarts <= 1; } - // ====== PRIVATE ====== + async start(stores, actions) { + debug('AnnouncementsStore::start'); + this.stores = stores; + this.actions = actions; + getCurrentVersionRequest.execute(); - @action _setCurrentVersion(version) { - debug(`setting current version to ${version}`); - this.currentVersion = version; - } + this._registerActions([ + [announcementActions.show, this._showAnnouncement], + ]); - @action _setLastUsedVersion(version) { - debug(`setting last used version to ${version}`); - this.lastUsedVersion = version; + this._registerReactions([ + this._fetchAnnouncements, + this._showAnnouncementToUsersWhoUpdatedApp, + ]); + this.isFeatureActive = true; } - @action _setAnnouncement(announcement) { - debug(`setting announcement to ${announcement}`); - this.announcement = announcement; + stop() { + super.stop(); + debug('AnnouncementsStore::stop'); + this.isFeatureActive = false; + this.isAnnouncementVisible = false; } - @action _showAnnouncement() { + // ======= HELPERS ======= // + + _updateSettings = (changes) => { + localStorage.setItem(LOCAL_STORAGE_KEY, { + ...this.settings, + ...changes, + }); + }; + + // ======= ACTIONS ======= // + + @action _showAnnouncement = ({ targetVersion } = {}) => { + this.targetVersion = targetVersion || this.currentVersion; this.isAnnouncementVisible = true; this.actions.service.blurActive(); + this._updateSettings({ + lastSeenAnnouncementVersion: this.currentVersion, + }); const dispose = reaction( () => this.stores.services.active, () => { @@ -98,9 +95,37 @@ export class AnnouncementsStore extends FeatureStore { dispose(); }, ); - } + }; @action _hideAnnouncement() { this.isAnnouncementVisible = false; } + + // ======= REACTIONS ======== + + _showAnnouncementToUsersWhoUpdatedApp = () => { + const { announcement, isNewUser } = this; + console.log(announcement, isNewUser); + // Check if there is an announcement and on't show announcements to new users + if (!announcement || isNewUser) return; + + this._showAnnouncement(); + + // Check if the user has already used current version (= has seen the announcement) + // const { currentVersion, lastSeenAnnouncementVersion } = this; + // if (semver.gt(currentVersion, lastSeenAnnouncementVersion)) { + // debug(`${currentVersion} < ${lastSeenAnnouncementVersion}: announcement is shown`); + // this._showAnnouncement(); + // } else { + // debug(`${currentVersion} >= ${lastSeenAnnouncementVersion}: announcement is hidden`); + // this._hideAnnouncement(); + // } + }; + + _fetchAnnouncements = () => { + const targetVersion = this.targetVersion || this.currentVersion; + if (!targetVersion) return; + getChangelogRequest.execute('5.0.1'); + getAnnouncementRequest.execute('5.1.0'); + } } diff --git a/src/features/utils/FeatureStore.js b/src/features/utils/FeatureStore.js index 66b66a104..48962561d 100644 --- a/src/features/utils/FeatureStore.js +++ b/src/features/utils/FeatureStore.js @@ -5,17 +5,38 @@ export class FeatureStore { _reactions = null; - _listenToActions(actions) { - if (this._actions) this._actions.forEach(a => a[0].off(a[1])); + _registerActions(actions) { this._actions = []; actions.forEach(a => this._actions.push(a)); + this._startListeningToActions(); + } + + _startListeningToActions() { + this._stopListeningToActions(); this._actions.forEach(a => a[0].listen(a[1])); } - _startReactions(reactions) { - if (this._reactions) this._reactions.forEach(r => r.stop()); + _stopListeningToActions() { + this._actions.forEach(a => a[0].off(a[1])); + } + + _registerReactions(reactions) { this._reactions = []; reactions.forEach(r => this._reactions.push(new Reaction(r))); + this._startReactions(); + } + + _startReactions() { + this._stopReactions(); this._reactions.forEach(r => r.start()); } + + _stopReactions() { + this._reactions.forEach(r => r.stop()); + } + + stop() { + this._stopListeningToActions(); + this._stopReactions(); + } } diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index ea601700e..4841a4e08 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js @@ -51,12 +51,16 @@ export default class WorkspacesStore extends FeatureStore { return getUserWorkspacesRequest.wasExecuted && this.workspaces.length > 0; } + @computed get isUserAllowedToUseFeature() { + return !this.isPremiumUpgradeRequired; + } + start(stores, actions) { debug('WorkspacesStore::start'); this.stores = stores; this.actions = actions; - this._listenToActions([ + this._registerActions([ [workspaceActions.edit, this._edit], [workspaceActions.create, this._create], [workspaceActions.delete, this._delete], @@ -67,7 +71,7 @@ export default class WorkspacesStore extends FeatureStore { [workspaceActions.openWorkspaceSettings, this._openWorkspaceSettings], ]); - this._startReactions([ + this._registerReactions([ this._setWorkspaceBeingEditedReaction, this._setActiveServiceOnWorkspaceSwitchReaction, this._setFeatureEnabledReaction, @@ -75,6 +79,7 @@ export default class WorkspacesStore extends FeatureStore { this._activateLastUsedWorkspaceReaction, this._openDrawerWithSettingsReaction, this._cleanupInvalidServiceReferences, + this._disableActionsForFreeUser, ]); getUserWorkspacesRequest.execute(); @@ -82,6 +87,7 @@ export default class WorkspacesStore extends FeatureStore { } stop() { + super.stop(); debug('WorkspacesStore::stop'); this.isFeatureActive = false; this.activeWorkspace = null; @@ -273,4 +279,12 @@ export default class WorkspacesStore extends FeatureStore { getUserWorkspacesRequest.execute(); } }; + + _disableActionsForFreeUser = () => { + if (!this.isUserAllowedToUseFeature) { + this._stopListeningToActions(); + } else { + this._startListeningToActions(); + } + } } diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 1dd31324e..5ad7a8bd8 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3088,7 +3088,7 @@ "line": 14 }, "file": "src/features/announcements/Component.js", - "id": "feature.announcements.headline", + "id": "feature.announcements.changelog.headline", "start": { "column": 12, "line": 11 @@ -3106,7 +3106,7 @@ "line": 14 }, "file": "src/features/announcements/components/AnnouncementScreen.js", - "id": "feature.announcements.headline", + "id": "feature.announcements.changelog.headline", "start": { "column": 12, "line": 11 @@ -4470,4 +4470,4 @@ ], "path": "src/lib/Menu.json" } -] \ No newline at end of file +] diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 13775d758..958b6fb6a 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -1,7 +1,7 @@ { "app.errorHandler.action": "Reload", "app.errorHandler.headline": "Something went wrong", - "feature.announcements.headline": "What's new in Franz {version}?", + "feature.announcements.changelog.headline": "Changes in Franz {version}", "feature.delayApp.action": "Get a Franz Supporter License", "feature.delayApp.headline": "Please purchase a Franz Supporter License to skip waiting", "feature.delayApp.text": "Franz will continue in {seconds} seconds.", @@ -44,7 +44,7 @@ "login.submit.label": "Sign in", "login.tokenExpired": "Your session expired, please login again.", "menu.app.about": "About Franz", - "menu.app.announcement": "What's new in Franz?", + "menu.app.announcement": "What's new?", "menu.app.hide": "Hide", "menu.app.hideOthers": "Hide Others", "menu.app.quit": "Quit", @@ -319,4 +319,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/features/announcements/Component.json b/src/i18n/messages/src/features/announcements/Component.json index 18e1b84c5..c31c35fc7 100644 --- a/src/i18n/messages/src/features/announcements/Component.json +++ b/src/i18n/messages/src/features/announcements/Component.json @@ -1,6 +1,6 @@ [ { - "id": "feature.announcements.headline", + "id": "feature.announcements.changelog.headline", "defaultMessage": "!!!What's new in Franz {version}?", "file": "src/features/announcements/Component.js", "start": { @@ -12,4 +12,4 @@ "column": 3 } } -] \ No newline at end of file +] diff --git a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json index 225670ee2..874c9dd9d 100644 --- a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json +++ b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json @@ -1,14 +1,14 @@ [ { - "id": "feature.announcements.headline", - "defaultMessage": "!!!What's new in Franz {version}?", + "id": "feature.announcements.changelog.headline", + "defaultMessage": "!!!Changes in Franz {version}", "file": "src/features/announcements/components/AnnouncementScreen.js", "start": { - "line": 11, + "line": 13, "column": 12 }, "end": { - "line": 14, + "line": 16, "column": 3 } } diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json index f4cd35582..a2ce34cd4 100644 --- a/src/i18n/messages/src/lib/Menu.json +++ b/src/i18n/messages/src/lib/Menu.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Edit", "file": "src/lib/Menu.js", "start": { - "line": 13, + "line": 14, "column": 8 }, "end": { - "line": 16, + "line": 17, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!Undo", "file": "src/lib/Menu.js", "start": { - "line": 17, + "line": 18, "column": 8 }, "end": { - "line": 20, + "line": 21, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Redo", "file": "src/lib/Menu.js", "start": { - "line": 21, + "line": 22, "column": 8 }, "end": { - "line": 24, + "line": 25, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Cut", "file": "src/lib/Menu.js", "start": { - "line": 25, + "line": 26, "column": 7 }, "end": { - "line": 28, + "line": 29, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Copy", "file": "src/lib/Menu.js", "start": { - "line": 29, + "line": 30, "column": 8 }, "end": { - "line": 32, + "line": 33, "column": 3 } }, @@ -69,11 +69,11 @@ "defaultMessage": "!!!Paste", "file": "src/lib/Menu.js", "start": { - "line": 33, + "line": 34, "column": 9 }, "end": { - "line": 36, + "line": 37, "column": 3 } }, @@ -82,11 +82,11 @@ "defaultMessage": "!!!Paste And Match Style", "file": "src/lib/Menu.js", "start": { - "line": 37, + "line": 38, "column": 22 }, "end": { - "line": 40, + "line": 41, "column": 3 } }, @@ -95,11 +95,11 @@ "defaultMessage": "!!!Delete", "file": "src/lib/Menu.js", "start": { - "line": 41, + "line": 42, "column": 10 }, "end": { - "line": 44, + "line": 45, "column": 3 } }, @@ -108,11 +108,11 @@ "defaultMessage": "!!!Select All", "file": "src/lib/Menu.js", "start": { - "line": 45, + "line": 46, "column": 13 }, "end": { - "line": 48, + "line": 49, "column": 3 } }, @@ -121,11 +121,11 @@ "defaultMessage": "!!!Speech", "file": "src/lib/Menu.js", "start": { - "line": 49, + "line": 50, "column": 10 }, "end": { - "line": 52, + "line": 53, "column": 3 } }, @@ -134,11 +134,11 @@ "defaultMessage": "!!!Start Speaking", "file": "src/lib/Menu.js", "start": { - "line": 53, + "line": 54, "column": 17 }, "end": { - "line": 56, + "line": 57, "column": 3 } }, @@ -147,11 +147,11 @@ "defaultMessage": "!!!Stop Speaking", "file": "src/lib/Menu.js", "start": { - "line": 57, + "line": 58, "column": 16 }, "end": { - "line": 60, + "line": 61, "column": 3 } }, @@ -160,11 +160,11 @@ "defaultMessage": "!!!Start Dictation", "file": "src/lib/Menu.js", "start": { - "line": 61, + "line": 62, "column": 18 }, "end": { - "line": 64, + "line": 65, "column": 3 } }, @@ -173,11 +173,11 @@ "defaultMessage": "!!!Emoji & Symbols", "file": "src/lib/Menu.js", "start": { - "line": 65, + "line": 66, "column": 16 }, "end": { - "line": 68, + "line": 69, "column": 3 } }, @@ -186,11 +186,11 @@ "defaultMessage": "!!!Actual Size", "file": "src/lib/Menu.js", "start": { - "line": 69, + "line": 70, "column": 13 }, "end": { - "line": 72, + "line": 73, "column": 3 } }, @@ -199,11 +199,11 @@ "defaultMessage": "!!!Zoom In", "file": "src/lib/Menu.js", "start": { - "line": 73, + "line": 74, "column": 10 }, "end": { - "line": 76, + "line": 77, "column": 3 } }, @@ -212,11 +212,11 @@ "defaultMessage": "!!!Zoom Out", "file": "src/lib/Menu.js", "start": { - "line": 77, + "line": 78, "column": 11 }, "end": { - "line": 80, + "line": 81, "column": 3 } }, @@ -225,11 +225,11 @@ "defaultMessage": "!!!Enter Full Screen", "file": "src/lib/Menu.js", "start": { - "line": 81, + "line": 82, "column": 19 }, "end": { - "line": 84, + "line": 85, "column": 3 } }, @@ -238,11 +238,11 @@ "defaultMessage": "!!!Exit Full Screen", "file": "src/lib/Menu.js", "start": { - "line": 85, + "line": 86, "column": 18 }, "end": { - "line": 88, + "line": 89, "column": 3 } }, @@ -251,11 +251,11 @@ "defaultMessage": "!!!Toggle Full Screen", "file": "src/lib/Menu.js", "start": { - "line": 89, + "line": 90, "column": 20 }, "end": { - "line": 92, + "line": 93, "column": 3 } }, @@ -264,11 +264,11 @@ "defaultMessage": "!!!Toggle Developer Tools", "file": "src/lib/Menu.js", "start": { - "line": 93, + "line": 94, "column": 18 }, "end": { - "line": 96, + "line": 97, "column": 3 } }, @@ -277,11 +277,11 @@ "defaultMessage": "!!!Toggle Service Developer Tools", "file": "src/lib/Menu.js", "start": { - "line": 97, + "line": 98, "column": 25 }, "end": { - "line": 100, + "line": 101, "column": 3 } }, @@ -290,11 +290,11 @@ "defaultMessage": "!!!Reload Service", "file": "src/lib/Menu.js", "start": { - "line": 101, + "line": 102, "column": 17 }, "end": { - "line": 104, + "line": 105, "column": 3 } }, @@ -303,11 +303,11 @@ "defaultMessage": "!!!Reload Franz", "file": "src/lib/Menu.js", "start": { - "line": 105, + "line": 106, "column": 15 }, "end": { - "line": 108, + "line": 109, "column": 3 } }, @@ -316,11 +316,11 @@ "defaultMessage": "!!!Minimize", "file": "src/lib/Menu.js", "start": { - "line": 109, + "line": 110, "column": 12 }, "end": { - "line": 112, + "line": 113, "column": 3 } }, @@ -329,11 +329,11 @@ "defaultMessage": "!!!Close", "file": "src/lib/Menu.js", "start": { - "line": 113, + "line": 114, "column": 9 }, "end": { - "line": 116, + "line": 117, "column": 3 } }, @@ -342,11 +342,11 @@ "defaultMessage": "!!!Learn More", "file": "src/lib/Menu.js", "start": { - "line": 117, + "line": 118, "column": 13 }, "end": { - "line": 120, + "line": 121, "column": 3 } }, @@ -355,11 +355,11 @@ "defaultMessage": "!!!Changelog", "file": "src/lib/Menu.js", "start": { - "line": 121, + "line": 122, "column": 13 }, "end": { - "line": 124, + "line": 125, "column": 3 } }, @@ -368,11 +368,11 @@ "defaultMessage": "!!!Support", "file": "src/lib/Menu.js", "start": { - "line": 125, + "line": 126, "column": 11 }, "end": { - "line": 128, + "line": 129, "column": 3 } }, @@ -381,11 +381,11 @@ "defaultMessage": "!!!Terms of Service", "file": "src/lib/Menu.js", "start": { - "line": 129, + "line": 130, "column": 7 }, "end": { - "line": 132, + "line": 133, "column": 3 } }, @@ -394,11 +394,11 @@ "defaultMessage": "!!!Privacy Statement", "file": "src/lib/Menu.js", "start": { - "line": 133, + "line": 134, "column": 11 }, "end": { - "line": 136, + "line": 137, "column": 3 } }, @@ -407,11 +407,11 @@ "defaultMessage": "!!!File", "file": "src/lib/Menu.js", "start": { - "line": 137, + "line": 138, "column": 8 }, "end": { - "line": 140, + "line": 141, "column": 3 } }, @@ -420,11 +420,11 @@ "defaultMessage": "!!!View", "file": "src/lib/Menu.js", "start": { - "line": 141, + "line": 142, "column": 8 }, "end": { - "line": 144, + "line": 145, "column": 3 } }, @@ -433,11 +433,11 @@ "defaultMessage": "!!!Services", "file": "src/lib/Menu.js", "start": { - "line": 145, + "line": 146, "column": 12 }, "end": { - "line": 148, + "line": 149, "column": 3 } }, @@ -446,11 +446,11 @@ "defaultMessage": "!!!Window", "file": "src/lib/Menu.js", "start": { - "line": 149, + "line": 150, "column": 10 }, "end": { - "line": 152, + "line": 153, "column": 3 } }, @@ -459,11 +459,11 @@ "defaultMessage": "!!!Help", "file": "src/lib/Menu.js", "start": { - "line": 153, + "line": 154, "column": 8 }, "end": { - "line": 156, + "line": 157, "column": 3 } }, @@ -472,24 +472,24 @@ "defaultMessage": "!!!About Franz", "file": "src/lib/Menu.js", "start": { - "line": 157, + "line": 158, "column": 9 }, "end": { - "line": 160, + "line": 161, "column": 3 } }, { "id": "menu.app.announcement", - "defaultMessage": "!!!What's new in Franz?", + "defaultMessage": "!!!What's new?", "file": "src/lib/Menu.js", "start": { - "line": 161, + "line": 162, "column": 16 }, "end": { - "line": 164, + "line": 165, "column": 3 } }, @@ -498,11 +498,11 @@ "defaultMessage": "!!!Settings", "file": "src/lib/Menu.js", "start": { - "line": 165, + "line": 166, "column": 12 }, "end": { - "line": 168, + "line": 169, "column": 3 } }, @@ -511,11 +511,11 @@ "defaultMessage": "!!!Hide", "file": "src/lib/Menu.js", "start": { - "line": 169, + "line": 170, "column": 8 }, "end": { - "line": 172, + "line": 173, "column": 3 } }, @@ -524,11 +524,11 @@ "defaultMessage": "!!!Hide Others", "file": "src/lib/Menu.js", "start": { - "line": 173, + "line": 174, "column": 14 }, "end": { - "line": 176, + "line": 177, "column": 3 } }, @@ -537,11 +537,11 @@ "defaultMessage": "!!!Unhide", "file": "src/lib/Menu.js", "start": { - "line": 177, + "line": 178, "column": 10 }, "end": { - "line": 180, + "line": 181, "column": 3 } }, @@ -550,11 +550,11 @@ "defaultMessage": "!!!Quit", "file": "src/lib/Menu.js", "start": { - "line": 181, + "line": 182, "column": 8 }, "end": { - "line": 184, + "line": 185, "column": 3 } }, @@ -563,11 +563,11 @@ "defaultMessage": "!!!Add New Service...", "file": "src/lib/Menu.js", "start": { - "line": 185, + "line": 186, "column": 17 }, "end": { - "line": 188, + "line": 189, "column": 3 } }, @@ -576,11 +576,11 @@ "defaultMessage": "!!!Add New Workspace...", "file": "src/lib/Menu.js", "start": { - "line": 189, + "line": 190, "column": 19 }, "end": { - "line": 192, + "line": 193, "column": 3 } }, @@ -589,11 +589,11 @@ "defaultMessage": "!!!Open workspace drawer", "file": "src/lib/Menu.js", "start": { - "line": 193, + "line": 194, "column": 23 }, "end": { - "line": 196, + "line": 197, "column": 3 } }, @@ -602,11 +602,11 @@ "defaultMessage": "!!!Close workspace drawer", "file": "src/lib/Menu.js", "start": { - "line": 197, + "line": 198, "column": 24 }, "end": { - "line": 200, + "line": 201, "column": 3 } }, @@ -615,11 +615,11 @@ "defaultMessage": "!!!Activate next service...", "file": "src/lib/Menu.js", "start": { - "line": 201, + "line": 202, "column": 23 }, "end": { - "line": 204, + "line": 205, "column": 3 } }, @@ -628,11 +628,11 @@ "defaultMessage": "!!!Activate previous service...", "file": "src/lib/Menu.js", "start": { - "line": 205, + "line": 206, "column": 27 }, "end": { - "line": 208, + "line": 209, "column": 3 } }, @@ -641,11 +641,11 @@ "defaultMessage": "!!!Disable notifications & audio", "file": "src/lib/Menu.js", "start": { - "line": 209, + "line": 210, "column": 11 }, "end": { - "line": 212, + "line": 213, "column": 3 } }, @@ -654,11 +654,11 @@ "defaultMessage": "!!!Enable notifications & audio", "file": "src/lib/Menu.js", "start": { - "line": 213, + "line": 214, "column": 13 }, "end": { - "line": 216, + "line": 217, "column": 3 } }, @@ -667,11 +667,11 @@ "defaultMessage": "!!!Workspaces", "file": "src/lib/Menu.js", "start": { - "line": 217, + "line": 218, "column": 14 }, "end": { - "line": 220, + "line": 221, "column": 3 } }, @@ -680,11 +680,11 @@ "defaultMessage": "!!!Default", "file": "src/lib/Menu.js", "start": { - "line": 221, + "line": 222, "column": 20 }, "end": { - "line": 224, + "line": 225, "column": 3 } } diff --git a/src/lib/Menu.js b/src/lib/Menu.js index 46a347237..3df06e05a 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js @@ -6,6 +6,7 @@ import { isMac, ctrlKey, cmdKey } from '../environment'; import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../features/workspaces/index'; import { workspaceActions } from '../features/workspaces/actions'; import { gaEvent } from './analytics'; +import announcementActions from '../features/announcements/actions'; const { app, Menu, dialog } = remote; @@ -160,7 +161,7 @@ const menuItems = defineMessages({ }, announcement: { id: 'menu.app.announcement', - defaultMessage: '!!!What\'s new in Franz?', + defaultMessage: '!!!What\'s new?', }, settings: { id: 'menu.app.settings', @@ -352,8 +353,10 @@ const _templateFactory = intl => [ click() { shell.openExternal('https://meetfranz.com'); }, }, { - label: intl.formatMessage(menuItems.changelog), - click() { shell.openExternal('https://github.com/meetfranz/franz/blob/master/CHANGELOG.md'); }, + label: intl.formatMessage(menuItems.announcement), + click: () => { + announcementActions.show(); + }, }, { type: 'separator', @@ -621,12 +624,6 @@ export default class FranzMenu { label: intl.formatMessage(menuItems.about), role: 'about', }, - { - label: intl.formatMessage(menuItems.announcement), - click: () => { - this.actions.announcements.show(); - }, - }, { type: 'separator', }, diff --git a/src/stores/index.js b/src/stores/index.js index 96b844c95..1912418a2 100644 --- a/src/stores/index.js +++ b/src/stores/index.js @@ -10,6 +10,8 @@ import PaymentStore from './PaymentStore'; import NewsStore from './NewsStore'; import RequestStore from './RequestStore'; import GlobalErrorStore from './GlobalErrorStore'; +import { workspaceStore } from '../features/workspaces'; +import { announcementsStore } from '../features/announcements'; export default (api, actions, router) => { const stores = {}; @@ -27,6 +29,8 @@ export default (api, actions, router) => { news: new NewsStore(stores, api, actions), requests: new RequestStore(stores, api, actions), globalError: new GlobalErrorStore(stores, api, actions), + workspaces: workspaceStore, + announcements: announcementsStore, }); // Initialize all stores Object.keys(stores).forEach((name) => { -- cgit v1.2.3-70-g09d2 From 70cfc34d8c834185e6a3afc8488846bd997b0343 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 12 Apr 2019 08:55:11 +0200 Subject: Update strings --- src/i18n/locales/defaultMessages.json | 222 +++++++++++++++++----------------- src/i18n/locales/en-US.json | 2 +- 2 files changed, 112 insertions(+), 112 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 5ad7a8bd8..877e67588 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3100,16 +3100,16 @@ { "descriptors": [ { - "defaultMessage": "!!!What's new in Franz {version}?", + "defaultMessage": "!!!Changes in Franz {version}", "end": { "column": 3, - "line": 14 + "line": 23 }, "file": "src/features/announcements/components/AnnouncementScreen.js", "id": "feature.announcements.changelog.headline", "start": { "column": 12, - "line": 11 + "line": 20 } } ], @@ -3782,692 +3782,692 @@ "defaultMessage": "!!!Edit", "end": { "column": 3, - "line": 16 + "line": 17 }, "file": "src/lib/Menu.js", "id": "menu.edit", "start": { "column": 8, - "line": 13 + "line": 14 } }, { "defaultMessage": "!!!Undo", "end": { "column": 3, - "line": 20 + "line": 21 }, "file": "src/lib/Menu.js", "id": "menu.edit.undo", "start": { "column": 8, - "line": 17 + "line": 18 } }, { "defaultMessage": "!!!Redo", "end": { "column": 3, - "line": 24 + "line": 25 }, "file": "src/lib/Menu.js", "id": "menu.edit.redo", "start": { "column": 8, - "line": 21 + "line": 22 } }, { "defaultMessage": "!!!Cut", "end": { "column": 3, - "line": 28 + "line": 29 }, "file": "src/lib/Menu.js", "id": "menu.edit.cut", "start": { "column": 7, - "line": 25 + "line": 26 } }, { "defaultMessage": "!!!Copy", "end": { "column": 3, - "line": 32 + "line": 33 }, "file": "src/lib/Menu.js", "id": "menu.edit.copy", "start": { "column": 8, - "line": 29 + "line": 30 } }, { "defaultMessage": "!!!Paste", "end": { "column": 3, - "line": 36 + "line": 37 }, "file": "src/lib/Menu.js", "id": "menu.edit.paste", "start": { "column": 9, - "line": 33 + "line": 34 } }, { "defaultMessage": "!!!Paste And Match Style", "end": { "column": 3, - "line": 40 + "line": 41 }, "file": "src/lib/Menu.js", "id": "menu.edit.pasteAndMatchStyle", "start": { "column": 22, - "line": 37 + "line": 38 } }, { "defaultMessage": "!!!Delete", "end": { "column": 3, - "line": 44 + "line": 45 }, "file": "src/lib/Menu.js", "id": "menu.edit.delete", "start": { "column": 10, - "line": 41 + "line": 42 } }, { "defaultMessage": "!!!Select All", "end": { "column": 3, - "line": 48 + "line": 49 }, "file": "src/lib/Menu.js", "id": "menu.edit.selectAll", "start": { "column": 13, - "line": 45 + "line": 46 } }, { "defaultMessage": "!!!Speech", "end": { "column": 3, - "line": 52 + "line": 53 }, "file": "src/lib/Menu.js", "id": "menu.edit.speech", "start": { "column": 10, - "line": 49 + "line": 50 } }, { "defaultMessage": "!!!Start Speaking", "end": { "column": 3, - "line": 56 + "line": 57 }, "file": "src/lib/Menu.js", "id": "menu.edit.startSpeaking", "start": { "column": 17, - "line": 53 + "line": 54 } }, { "defaultMessage": "!!!Stop Speaking", "end": { "column": 3, - "line": 60 + "line": 61 }, "file": "src/lib/Menu.js", "id": "menu.edit.stopSpeaking", "start": { "column": 16, - "line": 57 + "line": 58 } }, { "defaultMessage": "!!!Start Dictation", "end": { "column": 3, - "line": 64 + "line": 65 }, "file": "src/lib/Menu.js", "id": "menu.edit.startDictation", "start": { "column": 18, - "line": 61 + "line": 62 } }, { "defaultMessage": "!!!Emoji & Symbols", "end": { "column": 3, - "line": 68 + "line": 69 }, "file": "src/lib/Menu.js", "id": "menu.edit.emojiSymbols", "start": { "column": 16, - "line": 65 + "line": 66 } }, { "defaultMessage": "!!!Actual Size", "end": { "column": 3, - "line": 72 + "line": 73 }, "file": "src/lib/Menu.js", "id": "menu.view.resetZoom", "start": { "column": 13, - "line": 69 + "line": 70 } }, { "defaultMessage": "!!!Zoom In", "end": { "column": 3, - "line": 76 + "line": 77 }, "file": "src/lib/Menu.js", "id": "menu.view.zoomIn", "start": { "column": 10, - "line": 73 + "line": 74 } }, { "defaultMessage": "!!!Zoom Out", "end": { "column": 3, - "line": 80 + "line": 81 }, "file": "src/lib/Menu.js", "id": "menu.view.zoomOut", "start": { "column": 11, - "line": 77 + "line": 78 } }, { "defaultMessage": "!!!Enter Full Screen", "end": { "column": 3, - "line": 84 + "line": 85 }, "file": "src/lib/Menu.js", "id": "menu.view.enterFullScreen", "start": { "column": 19, - "line": 81 + "line": 82 } }, { "defaultMessage": "!!!Exit Full Screen", "end": { "column": 3, - "line": 88 + "line": 89 }, "file": "src/lib/Menu.js", "id": "menu.view.exitFullScreen", "start": { "column": 18, - "line": 85 + "line": 86 } }, { "defaultMessage": "!!!Toggle Full Screen", "end": { "column": 3, - "line": 92 + "line": 93 }, "file": "src/lib/Menu.js", "id": "menu.view.toggleFullScreen", "start": { "column": 20, - "line": 89 + "line": 90 } }, { "defaultMessage": "!!!Toggle Developer Tools", "end": { "column": 3, - "line": 96 + "line": 97 }, "file": "src/lib/Menu.js", "id": "menu.view.toggleDevTools", "start": { "column": 18, - "line": 93 + "line": 94 } }, { "defaultMessage": "!!!Toggle Service Developer Tools", "end": { "column": 3, - "line": 100 + "line": 101 }, "file": "src/lib/Menu.js", "id": "menu.view.toggleServiceDevTools", "start": { "column": 25, - "line": 97 + "line": 98 } }, { "defaultMessage": "!!!Reload Service", "end": { "column": 3, - "line": 104 + "line": 105 }, "file": "src/lib/Menu.js", "id": "menu.view.reloadService", "start": { "column": 17, - "line": 101 + "line": 102 } }, { "defaultMessage": "!!!Reload Franz", "end": { "column": 3, - "line": 108 + "line": 109 }, "file": "src/lib/Menu.js", "id": "menu.view.reloadFranz", "start": { "column": 15, - "line": 105 + "line": 106 } }, { "defaultMessage": "!!!Minimize", "end": { "column": 3, - "line": 112 + "line": 113 }, "file": "src/lib/Menu.js", "id": "menu.window.minimize", "start": { "column": 12, - "line": 109 + "line": 110 } }, { "defaultMessage": "!!!Close", "end": { "column": 3, - "line": 116 + "line": 117 }, "file": "src/lib/Menu.js", "id": "menu.window.close", "start": { "column": 9, - "line": 113 + "line": 114 } }, { "defaultMessage": "!!!Learn More", "end": { "column": 3, - "line": 120 + "line": 121 }, "file": "src/lib/Menu.js", "id": "menu.help.learnMore", "start": { "column": 13, - "line": 117 + "line": 118 } }, { "defaultMessage": "!!!Changelog", "end": { "column": 3, - "line": 124 + "line": 125 }, "file": "src/lib/Menu.js", "id": "menu.help.changelog", "start": { "column": 13, - "line": 121 + "line": 122 } }, { "defaultMessage": "!!!Support", "end": { "column": 3, - "line": 128 + "line": 129 }, "file": "src/lib/Menu.js", "id": "menu.help.support", "start": { "column": 11, - "line": 125 + "line": 126 } }, { "defaultMessage": "!!!Terms of Service", "end": { "column": 3, - "line": 132 + "line": 133 }, "file": "src/lib/Menu.js", "id": "menu.help.tos", "start": { "column": 7, - "line": 129 + "line": 130 } }, { "defaultMessage": "!!!Privacy Statement", "end": { "column": 3, - "line": 136 + "line": 137 }, "file": "src/lib/Menu.js", "id": "menu.help.privacy", "start": { "column": 11, - "line": 133 + "line": 134 } }, { "defaultMessage": "!!!File", "end": { "column": 3, - "line": 140 + "line": 141 }, "file": "src/lib/Menu.js", "id": "menu.file", "start": { "column": 8, - "line": 137 + "line": 138 } }, { "defaultMessage": "!!!View", "end": { "column": 3, - "line": 144 + "line": 145 }, "file": "src/lib/Menu.js", "id": "menu.view", "start": { "column": 8, - "line": 141 + "line": 142 } }, { "defaultMessage": "!!!Services", "end": { "column": 3, - "line": 148 + "line": 149 }, "file": "src/lib/Menu.js", "id": "menu.services", "start": { "column": 12, - "line": 145 + "line": 146 } }, { "defaultMessage": "!!!Window", "end": { "column": 3, - "line": 152 + "line": 153 }, "file": "src/lib/Menu.js", "id": "menu.window", "start": { "column": 10, - "line": 149 + "line": 150 } }, { "defaultMessage": "!!!Help", "end": { "column": 3, - "line": 156 + "line": 157 }, "file": "src/lib/Menu.js", "id": "menu.help", "start": { "column": 8, - "line": 153 + "line": 154 } }, { "defaultMessage": "!!!About Franz", "end": { "column": 3, - "line": 160 + "line": 161 }, "file": "src/lib/Menu.js", "id": "menu.app.about", "start": { "column": 9, - "line": 157 + "line": 158 } }, { - "defaultMessage": "!!!What's new in Franz?", + "defaultMessage": "!!!What's new?", "end": { "column": 3, - "line": 164 + "line": 165 }, "file": "src/lib/Menu.js", "id": "menu.app.announcement", "start": { "column": 16, - "line": 161 + "line": 162 } }, { "defaultMessage": "!!!Settings", "end": { "column": 3, - "line": 168 + "line": 169 }, "file": "src/lib/Menu.js", "id": "menu.app.settings", "start": { "column": 12, - "line": 165 + "line": 166 } }, { "defaultMessage": "!!!Hide", "end": { "column": 3, - "line": 172 + "line": 173 }, "file": "src/lib/Menu.js", "id": "menu.app.hide", "start": { "column": 8, - "line": 169 + "line": 170 } }, { "defaultMessage": "!!!Hide Others", "end": { "column": 3, - "line": 176 + "line": 177 }, "file": "src/lib/Menu.js", "id": "menu.app.hideOthers", "start": { "column": 14, - "line": 173 + "line": 174 } }, { "defaultMessage": "!!!Unhide", "end": { "column": 3, - "line": 180 + "line": 181 }, "file": "src/lib/Menu.js", "id": "menu.app.unhide", "start": { "column": 10, - "line": 177 + "line": 178 } }, { "defaultMessage": "!!!Quit", "end": { "column": 3, - "line": 184 + "line": 185 }, "file": "src/lib/Menu.js", "id": "menu.app.quit", "start": { "column": 8, - "line": 181 + "line": 182 } }, { "defaultMessage": "!!!Add New Service...", "end": { "column": 3, - "line": 188 + "line": 189 }, "file": "src/lib/Menu.js", "id": "menu.services.addNewService", "start": { "column": 17, - "line": 185 + "line": 186 } }, { "defaultMessage": "!!!Add New Workspace...", "end": { "column": 3, - "line": 192 + "line": 193 }, "file": "src/lib/Menu.js", "id": "menu.workspaces.addNewWorkspace", "start": { "column": 19, - "line": 189 + "line": 190 } }, { "defaultMessage": "!!!Open workspace drawer", "end": { "column": 3, - "line": 196 + "line": 197 }, "file": "src/lib/Menu.js", "id": "menu.workspaces.openWorkspaceDrawer", "start": { "column": 23, - "line": 193 + "line": 194 } }, { "defaultMessage": "!!!Close workspace drawer", "end": { "column": 3, - "line": 200 + "line": 201 }, "file": "src/lib/Menu.js", "id": "menu.workspaces.closeWorkspaceDrawer", "start": { "column": 24, - "line": 197 + "line": 198 } }, { "defaultMessage": "!!!Activate next service...", "end": { "column": 3, - "line": 204 + "line": 205 }, "file": "src/lib/Menu.js", "id": "menu.services.setNextServiceActive", "start": { "column": 23, - "line": 201 + "line": 202 } }, { "defaultMessage": "!!!Activate previous service...", "end": { "column": 3, - "line": 208 + "line": 209 }, "file": "src/lib/Menu.js", "id": "menu.services.activatePreviousService", "start": { "column": 27, - "line": 205 + "line": 206 } }, { "defaultMessage": "!!!Disable notifications & audio", "end": { "column": 3, - "line": 212 + "line": 213 }, "file": "src/lib/Menu.js", "id": "sidebar.muteApp", "start": { "column": 11, - "line": 209 + "line": 210 } }, { "defaultMessage": "!!!Enable notifications & audio", "end": { "column": 3, - "line": 216 + "line": 217 }, "file": "src/lib/Menu.js", "id": "sidebar.unmuteApp", "start": { "column": 13, - "line": 213 + "line": 214 } }, { "defaultMessage": "!!!Workspaces", "end": { "column": 3, - "line": 220 + "line": 221 }, "file": "src/lib/Menu.js", "id": "menu.workspaces", "start": { "column": 14, - "line": 217 + "line": 218 } }, { "defaultMessage": "!!!Default", "end": { "column": 3, - "line": 224 + "line": 225 }, "file": "src/lib/Menu.js", "id": "menu.workspaces.defaultWorkspace", "start": { "column": 20, - "line": 221 + "line": 222 } } ], "path": "src/lib/Menu.json" } -] +] \ No newline at end of file diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 958b6fb6a..07602e61f 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -319,4 +319,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file -- cgit v1.2.3-70-g09d2 From c557a47341e8e4034be81f42b35caf7bdfb3d48d Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 12 Apr 2019 13:40:36 +0200 Subject: Add language disclaimer --- src/components/settings/settings/EditSettingsForm.js | 8 ++++++++ src/i18n/locales/defaultMessages.json | 13 +++++++++++++ src/i18n/locales/en-US.json | 3 ++- .../src/components/settings/settings/EditSettingsForm.json | 13 +++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 8429d0ecb..efd453356 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js @@ -81,6 +81,10 @@ const messages = defineMessages({ id: 'settings.app.restartRequired', defaultMessage: '!!!Changes require restart', }, + languageDisclaimer: { + id: 'settings.app.languageDisclaimer', + defaultMessage: '!!!Official translations are English & German. All other languages are community based translations.', + }, }); export default @observer class EditSettingsForm extends Component { @@ -239,6 +243,10 @@ export default @observer class EditSettingsForm extends Component { {intl.formatMessage(messages.currentVersion)} {' '} {remote.app.getVersion()} +

+ + {intl.formatMessage(messages.languageDisclaimer)} +

diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 65799b614..bb7784257 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -2237,6 +2237,19 @@ "column": 29, "line": 80 } + }, + { + "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", + "end": { + "column": 3, + "line": 87 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.languageDisclaimer", + "start": { + "column": 22, + "line": 84 + } } ], "path": "src/components/settings/settings/EditSettingsForm.json" diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 84a71117a..a9d0f789d 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -162,6 +162,7 @@ "settings.app.headlineGeneral": "General", "settings.app.headlineLanguage": "Language", "settings.app.headlineUpdates": "Updates", + "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", "settings.app.restartRequired": "Changes require restart", "settings.app.subheadlineCache": "Cache", "settings.app.translationHelp": "Help us to translate Franz into your language.", @@ -317,4 +318,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json index c64f477be..fa21db10a 100644 --- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json +++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json @@ -219,5 +219,18 @@ "line": 83, "column": 3 } + }, + { + "id": "settings.app.languageDisclaimer", + "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 84, + "column": 22 + }, + "end": { + "line": 87, + "column": 3 + } } ] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 76bf7b840ea7d607a21b0294d10be01b26ad0607 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Fri, 12 Apr 2019 15:51:57 +0200 Subject: merge-in latest develop --- package-lock.json | 108 +- package.json | 4 +- packages/theme/src/themes/default/index.ts | 1 - .../settings/settings/EditSettingsForm.js | 8 + src/features/announcements/store.js | 14 +- src/features/utils/ActionBinding.js | 29 + src/features/utils/FeatureStore.js | 17 +- src/features/workspaces/store.js | 20 +- src/i18n/locales/defaultMessages.json | 4473 -------------------- src/i18n/locales/en-US.json | 3 +- src/i18n/messages/src/components/auth/Import.json | 54 - src/i18n/messages/src/components/auth/Invite.json | 93 - src/i18n/messages/src/components/auth/Login.json | 119 - .../messages/src/components/auth/Password.json | 93 - src/i18n/messages/src/components/auth/Pricing.json | 54 - src/i18n/messages/src/components/auth/Signup.json | 158 - src/i18n/messages/src/components/auth/Welcome.json | 28 - .../messages/src/components/layout/AppLayout.json | 80 - .../messages/src/components/layout/Sidebar.json | 80 - .../content/ErrorHandlers/WebviewErrorHandler.json | 67 - .../services/content/ServiceDisabled.json | 28 - .../src/components/services/content/Services.json | 28 - .../services/content/WebviewCrashHandler.json | 54 - .../src/components/services/tabs/TabItem.json | 119 - .../settings/account/AccountDashboard.json | 197 - .../settings/navigation/SettingsNavigation.json | 93 - .../settings/recipes/RecipesDashboard.json | 106 - .../settings/services/EditServiceForm.json | 288 -- .../components/settings/services/ServiceError.json | 54 - .../components/settings/services/ServiceItem.json | 41 - .../settings/services/ServicesDashboard.json | 119 - .../settings/settings/EditSettingsForm.json | 223 - .../src/components/settings/user/EditUserForm.json | 80 - .../components/subscription/SubscriptionForm.json | 171 - .../components/subscription/SubscriptionPopup.json | 28 - .../ui/PremiumFeatureContainer/index.json | 15 - .../src/components/ui/WebviewLoader/index.json | 15 - .../src/components/util/ErrorBoundary/index.json | 28 - .../src/containers/settings/EditServiceScreen.json | 197 - .../containers/settings/EditSettingsScreen.json | 158 - .../src/containers/settings/EditUserScreen.json | 119 - .../src/features/announcements/Component.json | 15 - .../components/AnnouncementScreen.json | 15 - .../messages/src/features/delayApp/Component.json | 41 - .../src/features/shareFranz/Component.json | 93 - .../workspaces/components/CreateWorkspaceForm.json | 28 - .../workspaces/components/EditWorkspaceForm.json | 67 - .../workspaces/components/WorkspaceDrawer.json | 106 - .../workspaces/components/WorkspaceDrawerItem.json | 28 - .../components/WorkspaceSwitchingIndicator.json | 15 - .../workspaces/components/WorkspacesDashboard.json | 106 - .../messages/src/helpers/validation-helpers.json | 67 - src/i18n/messages/src/i18n/globalMessages.json | 80 - src/i18n/messages/src/lib/Menu.json | 691 --- src/index.js | 14 + src/stores/UserStore.js | 1 + src/stores/lib/Reaction.js | 9 +- 57 files changed, 142 insertions(+), 8898 deletions(-) create mode 100644 src/features/utils/ActionBinding.js delete mode 100644 src/i18n/locales/defaultMessages.json delete mode 100644 src/i18n/messages/src/components/auth/Import.json delete mode 100644 src/i18n/messages/src/components/auth/Invite.json delete mode 100644 src/i18n/messages/src/components/auth/Login.json delete mode 100644 src/i18n/messages/src/components/auth/Password.json delete mode 100644 src/i18n/messages/src/components/auth/Pricing.json delete mode 100644 src/i18n/messages/src/components/auth/Signup.json delete mode 100644 src/i18n/messages/src/components/auth/Welcome.json delete mode 100644 src/i18n/messages/src/components/layout/AppLayout.json delete mode 100644 src/i18n/messages/src/components/layout/Sidebar.json delete mode 100644 src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json delete mode 100644 src/i18n/messages/src/components/services/content/ServiceDisabled.json delete mode 100644 src/i18n/messages/src/components/services/content/Services.json delete mode 100644 src/i18n/messages/src/components/services/content/WebviewCrashHandler.json delete mode 100644 src/i18n/messages/src/components/services/tabs/TabItem.json delete mode 100644 src/i18n/messages/src/components/settings/account/AccountDashboard.json delete mode 100644 src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json delete mode 100644 src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json delete mode 100644 src/i18n/messages/src/components/settings/services/EditServiceForm.json delete mode 100644 src/i18n/messages/src/components/settings/services/ServiceError.json delete mode 100644 src/i18n/messages/src/components/settings/services/ServiceItem.json delete mode 100644 src/i18n/messages/src/components/settings/services/ServicesDashboard.json delete mode 100644 src/i18n/messages/src/components/settings/settings/EditSettingsForm.json delete mode 100644 src/i18n/messages/src/components/settings/user/EditUserForm.json delete mode 100644 src/i18n/messages/src/components/subscription/SubscriptionForm.json delete mode 100644 src/i18n/messages/src/components/subscription/SubscriptionPopup.json delete mode 100644 src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json delete mode 100644 src/i18n/messages/src/components/ui/WebviewLoader/index.json delete mode 100644 src/i18n/messages/src/components/util/ErrorBoundary/index.json delete mode 100644 src/i18n/messages/src/containers/settings/EditServiceScreen.json delete mode 100644 src/i18n/messages/src/containers/settings/EditSettingsScreen.json delete mode 100644 src/i18n/messages/src/containers/settings/EditUserScreen.json delete mode 100644 src/i18n/messages/src/features/announcements/Component.json delete mode 100644 src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json delete mode 100644 src/i18n/messages/src/features/delayApp/Component.json delete mode 100644 src/i18n/messages/src/features/shareFranz/Component.json delete mode 100644 src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json delete mode 100644 src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json delete mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json delete mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json delete mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json delete mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json delete mode 100644 src/i18n/messages/src/helpers/validation-helpers.json delete mode 100644 src/i18n/messages/src/i18n/globalMessages.json delete mode 100644 src/i18n/messages/src/lib/Menu.json (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/package-lock.json b/package-lock.json index 33f7d69f2..70f3b2484 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6153,9 +6153,9 @@ } }, "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "requires": { "safe-buffer": "^5.0.1" } @@ -6173,9 +6173,9 @@ "dev": true }, "electron": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/electron/-/electron-4.0.8.tgz", - "integrity": "sha512-FOBJIHkuv8wc15N+ZyqwDzPavYVu5CHMBEf14jHDWv7QW2vkEIpJjVK+PIT31kfZfvjsIP0j2wvA/FBsiqB7pw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/electron/-/electron-4.1.4.tgz", + "integrity": "sha512-MelOjntJvd33izEjR6H4N/Uii7y535z/b2BuYXJGLNSHL6o1IlyhUQmfiT87kWABayERgeuYERgvsyf956OOFw==", "dev": true, "requires": { "@types/node": "^10.12.18", @@ -6184,9 +6184,9 @@ }, "dependencies": { "@types/node": { - "version": "10.12.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.30.tgz", - "integrity": "sha512-nsqTN6zUcm9xtdJiM9OvOJ5EF0kOI8f1Zuug27O/rgtxCRJHGqncSWfCMZUP852dCKPsDsYXGvBhxfRjDBkF5Q==", + "version": "10.14.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.4.tgz", + "integrity": "sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg==", "dev": true } } @@ -10191,7 +10191,8 @@ "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true }, "hoist-non-react-statics": { "version": "3.3.0", @@ -11186,11 +11187,6 @@ "buffer-alloc": "^1.2.0" } }, - "isemail": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", - "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -11217,17 +11213,6 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "joi": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", - "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", - "requires": { - "hoek": "2.x.x", - "isemail": "1.x.x", - "moment": "2.x.x", - "topo": "1.x.x" - } - }, "js-base64": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", @@ -11341,15 +11326,20 @@ "dev": true }, "jsonwebtoken": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", - "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", - "requires": { - "joi": "^6.10.1", - "jws": "^3.1.4", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", - "ms": "^2.0.0", - "xtend": "^4.0.1" + "ms": "^2.1.1", + "semver": "^5.6.0" } }, "jsprim": { @@ -11475,21 +11465,21 @@ "dev": true }, "jwa": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.2.0.tgz", - "integrity": "sha512-Grku9ZST5NNQ3hqNUodSkDfEBqAmGA1R8yiyPHOnLzEKI0GaCQC/XhFmsheXYuXzFQJdILbh+lYBiliqG5R/Vg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "requires": { "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", + "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "jws": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.1.tgz", - "integrity": "sha512-bGA2omSrFUkd72dhh05bIAN832znP4wOU3lfuXtRBuGTbsmNmDXMQg28f0Vsxaxgk4myF5YkKQpz6qeRpMgX9g==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { - "jwa": "^1.2.0", + "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, @@ -11882,6 +11872,11 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -11894,6 +11889,11 @@ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", "dev": true }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -11905,17 +11905,25 @@ "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", "dev": true }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, "lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "lodash.keys": { "version": "3.1.2", @@ -17724,14 +17732,6 @@ "through2": "^2.0.3" } }, - "topo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", - "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", - "requires": { - "hoek": "2.x.x" - } - }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", diff --git a/package.json b/package.json index 7e926139d..c43e0b3a9 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "electron-window-state": "5.0.3", "fs-extra": "7.0.1", "hex-to-rgba": "1.0.2", - "jsonwebtoken": "^7.4.1", + "jsonwebtoken": "8.5.1", "lodash": "^4.17.4", "marked": "0.6.1", "mdi": "^1.9.33", @@ -114,7 +114,7 @@ "cross-env": "^5.0.5", "cz-conventional-changelog": "2.1.0", "dotenv": "^4.0.0", - "electron": "4.0.8", + "electron": "4.1.4", "electron-builder": "20.38.4", "electron-rebuild": "1.8.4", "eslint": "5.10.0", diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts index a85dcb366..0f02fa3c8 100644 --- a/packages/theme/src/themes/default/index.ts +++ b/packages/theme/src/themes/default/index.ts @@ -1,7 +1,6 @@ import color from 'color'; import { cloneDeep } from 'lodash'; -import { theme } from '../..'; import * as legacyStyles from '../legacy'; export interface IStyleTypes { diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 8429d0ecb..efd453356 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js @@ -81,6 +81,10 @@ const messages = defineMessages({ id: 'settings.app.restartRequired', defaultMessage: '!!!Changes require restart', }, + languageDisclaimer: { + id: 'settings.app.languageDisclaimer', + defaultMessage: '!!!Official translations are English & German. All other languages are community based translations.', + }, }); export default @observer class EditSettingsForm extends Component { @@ -239,6 +243,10 @@ export default @observer class EditSettingsForm extends Component { {intl.formatMessage(messages.currentVersion)} {' '} {remote.app.getVersion()} +

+ + {intl.formatMessage(messages.languageDisclaimer)} +

diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js index 3c46828bb..b99309ca7 100644 --- a/src/features/announcements/store.js +++ b/src/features/announcements/store.js @@ -10,6 +10,8 @@ import localStorage from 'mobx-localstorage'; import { FeatureStore } from '../utils/FeatureStore'; import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api'; import { announcementActions } from './actions'; +import { createActionBindings } from '../utils/ActionBinding'; +import { createReactions } from '../../stores/lib/Reaction'; const LOCAL_STORAGE_KEY = 'announcements'; @@ -52,14 +54,15 @@ export class AnnouncementsStore extends FeatureStore { this.actions = actions; getCurrentVersionRequest.execute(); - this._registerActions([ + this._registerActions(createActionBindings([ [announcementActions.show, this._showAnnouncement], - ]); + ])); - this._registerReactions([ + this._reactions = createReactions([ this._fetchAnnouncements, this._showAnnouncementToUsersWhoUpdatedApp, ]); + this._registerReactions(this._reactions); this.isFeatureActive = true; } @@ -105,7 +108,6 @@ export class AnnouncementsStore extends FeatureStore { _showAnnouncementToUsersWhoUpdatedApp = () => { const { announcement, isNewUser } = this; - console.log(announcement, isNewUser); // Check if there is an announcement and on't show announcements to new users if (!announcement || isNewUser) return; @@ -125,7 +127,7 @@ export class AnnouncementsStore extends FeatureStore { _fetchAnnouncements = () => { const targetVersion = this.targetVersion || this.currentVersion; if (!targetVersion) return; - getChangelogRequest.execute('5.0.1'); - getAnnouncementRequest.execute('5.1.0'); + getChangelogRequest.execute(targetVersion); + getAnnouncementRequest.execute(targetVersion); } } diff --git a/src/features/utils/ActionBinding.js b/src/features/utils/ActionBinding.js new file mode 100644 index 000000000..497aa071b --- /dev/null +++ b/src/features/utils/ActionBinding.js @@ -0,0 +1,29 @@ +export default class ActionBinding { + action; + + isActive = false; + + constructor(action) { + this.action = action; + } + + start() { + if (!this.isActive) { + const { action } = this; + action[0].listen(action[1]); + this.isActive = true; + } + } + + stop() { + if (this.isActive) { + const { action } = this; + action[0].off(action[1]); + this.isActive = false; + } + } +} + +export const createActionBindings = actions => ( + actions.map(a => new ActionBinding(a)) +); diff --git a/src/features/utils/FeatureStore.js b/src/features/utils/FeatureStore.js index d863f7464..967e745b2 100644 --- a/src/features/utils/FeatureStore.js +++ b/src/features/utils/FeatureStore.js @@ -1,4 +1,4 @@ -import Reaction from '../../stores/lib/Reaction'; +import { union } from 'lodash'; export class FeatureStore { _actions = null; @@ -13,25 +13,24 @@ export class FeatureStore { // ACTIONS _registerActions(actions) { - this._actions = []; - actions.forEach(a => this._actions.push(a)); - this._startActions(this._actions); + this._actions = union(this._actions, actions); + this._startActions(); } _startActions(actions = this._actions) { - actions.forEach(a => a[0].listen(a[1])); + console.log(actions); + actions.forEach(a => a.start()); } _stopActions(actions = this._actions) { - actions.forEach(a => a[0].off(a[1])); + actions.forEach(a => a.stop()); } // REACTIONS _registerReactions(reactions) { - this._reactions = []; - reactions.forEach(r => this._reactions.push(new Reaction(r))); - this._startReactions(this._reactions); + this._reactions = union(this._reactions, reactions); + this._startReactions(); } _startReactions(reactions = this._reactions) { diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index bb18dc182..e11513d1f 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js @@ -14,6 +14,8 @@ import { updateWorkspaceRequest, } from './api'; import { WORKSPACES_ROUTES } from './index'; +import { createReactions } from '../../stores/lib/Reaction'; +import { createActionBindings } from '../utils/ActionBinding'; const debug = require('debug')('Franz:feature:workspaces:store'); @@ -80,41 +82,39 @@ export default class WorkspacesStore extends FeatureStore { // ACTIONS - this._freeUserActions = [ + this._freeUserActions = createActionBindings([ [workspaceActions.toggleWorkspaceDrawer, this._toggleWorkspaceDrawer], [workspaceActions.openWorkspaceSettings, this._openWorkspaceSettings], - ]; - this._premiumUserActions = [ + ]); + this._premiumUserActions = createActionBindings([ [workspaceActions.edit, this._edit], [workspaceActions.create, this._create], [workspaceActions.delete, this._delete], [workspaceActions.update, this._update], [workspaceActions.activate, this._setActiveWorkspace], [workspaceActions.deactivate, this._deactivateActiveWorkspace], - ]; + ]); this._allActions = this._freeUserActions.concat(this._premiumUserActions); this._registerActions(this._allActions); // REACTIONS - this._freeUserReactions = [ + this._freeUserReactions = createReactions([ this._stopPremiumActionsAndReactions, this._openDrawerWithSettingsReaction, this._setFeatureEnabledReaction, this._setIsPremiumFeatureReaction, this._cleanupInvalidServiceReferences, - ]; - this._premiumUserReactions = [ + ]); + this._premiumUserReactions = createReactions([ this._setActiveServiceOnWorkspaceSwitchReaction, this._activateLastUsedWorkspaceReaction, this._setWorkspaceBeingEditedReaction, - ]; + ]); this._allReactions = this._freeUserReactions.concat(this._premiumUserReactions); this._registerReactions(this._allReactions); - console.log(this._reactions); - getUserWorkspacesRequest.execute(); this.isFeatureActive = true; } diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json deleted file mode 100644 index 877e67588..000000000 --- a/src/i18n/locales/defaultMessages.json +++ /dev/null @@ -1,4473 +0,0 @@ -[ - { - "descriptors": [ - { - "defaultMessage": "!!!Import your Franz 4 services", - "end": { - "column": 3, - "line": 16 - }, - "file": "src/components/auth/Import.js", - "id": "import.headline", - "start": { - "column": 12, - "line": 13 - } - }, - { - "defaultMessage": "!!!Services not yet supported in Franz 5", - "end": { - "column": 3, - "line": 20 - }, - "file": "src/components/auth/Import.js", - "id": "import.notSupportedHeadline", - "start": { - "column": 24, - "line": 17 - } - }, - { - "defaultMessage": "!!!Import {count} services", - "end": { - "column": 3, - "line": 24 - }, - "file": "src/components/auth/Import.js", - "id": "import.submit.label", - "start": { - "column": 21, - "line": 21 - } - }, - { - "defaultMessage": "!!!I want to add services manually", - "end": { - "column": 3, - "line": 28 - }, - "file": "src/components/auth/Import.js", - "id": "import.skip.label", - "start": { - "column": 19, - "line": 25 - } - } - ], - "path": "src/components/auth/Import.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Invite Friends", - "end": { - "column": 3, - "line": 19 - }, - "file": "src/components/auth/Invite.js", - "id": "settings.invite.headline", - "start": { - "column": 20, - "line": 16 - } - }, - { - "defaultMessage": "!!!Invite 3 of your friends or colleagues", - "end": { - "column": 3, - "line": 23 - }, - "file": "src/components/auth/Invite.js", - "id": "invite.headline.friends", - "start": { - "column": 12, - "line": 20 - } - }, - { - "defaultMessage": "!!!Name", - "end": { - "column": 3, - "line": 27 - }, - "file": "src/components/auth/Invite.js", - "id": "invite.name.label", - "start": { - "column": 13, - "line": 24 - } - }, - { - "defaultMessage": "!!!Email address", - "end": { - "column": 3, - "line": 31 - }, - "file": "src/components/auth/Invite.js", - "id": "invite.email.label", - "start": { - "column": 14, - "line": 28 - } - }, - { - "defaultMessage": "!!!Send invites", - "end": { - "column": 3, - "line": 35 - }, - "file": "src/components/auth/Invite.js", - "id": "invite.submit.label", - "start": { - "column": 21, - "line": 32 - } - }, - { - "defaultMessage": "!!!I want to do this later", - "end": { - "column": 3, - "line": 39 - }, - "file": "src/components/auth/Invite.js", - "id": "invite.skip.label", - "start": { - "column": 19, - "line": 36 - } - }, - { - "defaultMessage": "!!!Invitations sent successfully", - "end": { - "column": 3, - "line": 43 - }, - "file": "src/components/auth/Invite.js", - "id": "invite.successInfo", - "start": { - "column": 21, - "line": 40 - } - } - ], - "path": "src/components/auth/Invite.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Sign in", - "end": { - "column": 3, - "line": 20 - }, - "file": "src/components/auth/Login.js", - "id": "login.headline", - "start": { - "column": 12, - "line": 17 - } - }, - { - "defaultMessage": "!!!Email address", - "end": { - "column": 3, - "line": 24 - }, - "file": "src/components/auth/Login.js", - "id": "login.email.label", - "start": { - "column": 14, - "line": 21 - } - }, - { - "defaultMessage": "!!!Password", - "end": { - "column": 3, - "line": 28 - }, - "file": "src/components/auth/Login.js", - "id": "login.password.label", - "start": { - "column": 17, - "line": 25 - } - }, - { - "defaultMessage": "!!!Sign in", - "end": { - "column": 3, - "line": 32 - }, - "file": "src/components/auth/Login.js", - "id": "login.submit.label", - "start": { - "column": 21, - "line": 29 - } - }, - { - "defaultMessage": "!!!Email or password not valid", - "end": { - "column": 3, - "line": 36 - }, - "file": "src/components/auth/Login.js", - "id": "login.invalidCredentials", - "start": { - "column": 22, - "line": 33 - } - }, - { - "defaultMessage": "!!!Your session expired, please login again.", - "end": { - "column": 3, - "line": 40 - }, - "file": "src/components/auth/Login.js", - "id": "login.tokenExpired", - "start": { - "column": 16, - "line": 37 - } - }, - { - "defaultMessage": "!!!Your session expired, please login again.", - "end": { - "column": 3, - "line": 44 - }, - "file": "src/components/auth/Login.js", - "id": "login.serverLogout", - "start": { - "column": 16, - "line": 41 - } - }, - { - "defaultMessage": "!!!Create a free account", - "end": { - "column": 3, - "line": 48 - }, - "file": "src/components/auth/Login.js", - "id": "login.link.signup", - "start": { - "column": 14, - "line": 45 - } - }, - { - "defaultMessage": "!!!Forgot password", - "end": { - "column": 3, - "line": 52 - }, - "file": "src/components/auth/Login.js", - "id": "login.link.password", - "start": { - "column": 16, - "line": 49 - } - } - ], - "path": "src/components/auth/Login.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Forgot password", - "end": { - "column": 3, - "line": 17 - }, - "file": "src/components/auth/Password.js", - "id": "password.headline", - "start": { - "column": 12, - "line": 14 - } - }, - { - "defaultMessage": "!!!Email address", - "end": { - "column": 3, - "line": 21 - }, - "file": "src/components/auth/Password.js", - "id": "password.email.label", - "start": { - "column": 14, - "line": 18 - } - }, - { - "defaultMessage": "!!!Submit", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/components/auth/Password.js", - "id": "password.submit.label", - "start": { - "column": 21, - "line": 22 - } - }, - { - "defaultMessage": "!!!Your new password was sent to your email address", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/components/auth/Password.js", - "id": "password.successInfo", - "start": { - "column": 15, - "line": 26 - } - }, - { - "defaultMessage": "!!!No user affiliated with that email address", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/components/auth/Password.js", - "id": "password.noUser", - "start": { - "column": 10, - "line": 30 - } - }, - { - "defaultMessage": "!!!Create a free account", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/components/auth/Password.js", - "id": "password.link.signup", - "start": { - "column": 14, - "line": 34 - } - }, - { - "defaultMessage": "!!!Sign in to your account", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/components/auth/Password.js", - "id": "password.link.login", - "start": { - "column": 13, - "line": 38 - } - } - ], - "path": "src/components/auth/Password.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Support Franz", - "end": { - "column": 3, - "line": 16 - }, - "file": "src/components/auth/Pricing.js", - "id": "pricing.headline", - "start": { - "column": 12, - "line": 13 - } - }, - { - "defaultMessage": "!!!Select your support plan", - "end": { - "column": 3, - "line": 20 - }, - "file": "src/components/auth/Pricing.js", - "id": "pricing.support.label", - "start": { - "column": 23, - "line": 17 - } - }, - { - "defaultMessage": "!!!Support the development of Franz", - "end": { - "column": 3, - "line": 24 - }, - "file": "src/components/auth/Pricing.js", - "id": "pricing.submit.label", - "start": { - "column": 21, - "line": 21 - } - }, - { - "defaultMessage": "!!!I don't want to support the development of Franz.", - "end": { - "column": 3, - "line": 28 - }, - "file": "src/components/auth/Pricing.js", - "id": "pricing.link.skipPayment", - "start": { - "column": 15, - "line": 25 - } - } - ], - "path": "src/components/auth/Pricing.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Sign up", - "end": { - "column": 3, - "line": 21 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.headline", - "start": { - "column": 12, - "line": 18 - } - }, - { - "defaultMessage": "!!!Firstname", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.firstname.label", - "start": { - "column": 18, - "line": 22 - } - }, - { - "defaultMessage": "!!!Lastname", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.lastname.label", - "start": { - "column": 17, - "line": 26 - } - }, - { - "defaultMessage": "!!!Email address", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.email.label", - "start": { - "column": 14, - "line": 30 - } - }, - { - "defaultMessage": "!!!Company", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.company.label", - "start": { - "column": 16, - "line": 34 - } - }, - { - "defaultMessage": "!!!Password", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.password.label", - "start": { - "column": 17, - "line": 38 - } - }, - { - "defaultMessage": "!!!By creating a Franz account you accept the", - "end": { - "column": 3, - "line": 45 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.legal.info", - "start": { - "column": 13, - "line": 42 - } - }, - { - "defaultMessage": "!!!Terms of service", - "end": { - "column": 3, - "line": 49 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.legal.terms", - "start": { - "column": 9, - "line": 46 - } - }, - { - "defaultMessage": "!!!Privacy Statement", - "end": { - "column": 3, - "line": 53 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.legal.privacy", - "start": { - "column": 11, - "line": 50 - } - }, - { - "defaultMessage": "!!!Create account", - "end": { - "column": 3, - "line": 57 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.submit.label", - "start": { - "column": 21, - "line": 54 - } - }, - { - "defaultMessage": "!!!Already have an account, sign in?", - "end": { - "column": 3, - "line": 61 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.link.login", - "start": { - "column": 13, - "line": 58 - } - }, - { - "defaultMessage": "!!!A user with that email address already exists", - "end": { - "column": 3, - "line": 65 - }, - "file": "src/components/auth/Signup.js", - "id": "signup.emailDuplicate", - "start": { - "column": 18, - "line": 62 - } - } - ], - "path": "src/components/auth/Signup.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Create a free account", - "end": { - "column": 3, - "line": 12 - }, - "file": "src/components/auth/Welcome.js", - "id": "welcome.signupButton", - "start": { - "column": 16, - "line": 9 - } - }, - { - "defaultMessage": "!!!Login to your account", - "end": { - "column": 3, - "line": 16 - }, - "file": "src/components/auth/Welcome.js", - "id": "welcome.loginButton", - "start": { - "column": 15, - "line": 13 - } - } - ], - "path": "src/components/auth/Welcome.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Your services have been updated.", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/components/layout/AppLayout.js", - "id": "infobar.servicesUpdated", - "start": { - "column": 19, - "line": 26 - } - }, - { - "defaultMessage": "!!!A new update for Franz is available.", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/components/layout/AppLayout.js", - "id": "infobar.updateAvailable", - "start": { - "column": 19, - "line": 30 - } - }, - { - "defaultMessage": "!!!Reload services", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/components/layout/AppLayout.js", - "id": "infobar.buttonReloadServices", - "start": { - "column": 24, - "line": 34 - } - }, - { - "defaultMessage": "!!!Changelog", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/components/layout/AppLayout.js", - "id": "infobar.buttonChangelog", - "start": { - "column": 13, - "line": 38 - } - }, - { - "defaultMessage": "!!!Restart & install update", - "end": { - "column": 3, - "line": 45 - }, - "file": "src/components/layout/AppLayout.js", - "id": "infobar.buttonInstallUpdate", - "start": { - "column": 23, - "line": 42 - } - }, - { - "defaultMessage": "!!!Could not load services and user information", - "end": { - "column": 3, - "line": 49 - }, - "file": "src/components/layout/AppLayout.js", - "id": "infobar.requiredRequestsFailed", - "start": { - "column": 26, - "line": 46 - } - } - ], - "path": "src/components/layout/AppLayout.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Settings", - "end": { - "column": 3, - "line": 16 - }, - "file": "src/components/layout/Sidebar.js", - "id": "sidebar.settings", - "start": { - "column": 12, - "line": 13 - } - }, - { - "defaultMessage": "!!!Add new service", - "end": { - "column": 3, - "line": 20 - }, - "file": "src/components/layout/Sidebar.js", - "id": "sidebar.addNewService", - "start": { - "column": 17, - "line": 17 - } - }, - { - "defaultMessage": "!!!Disable notifications & audio", - "end": { - "column": 3, - "line": 24 - }, - "file": "src/components/layout/Sidebar.js", - "id": "sidebar.muteApp", - "start": { - "column": 8, - "line": 21 - } - }, - { - "defaultMessage": "!!!Enable notifications & audio", - "end": { - "column": 3, - "line": 28 - }, - "file": "src/components/layout/Sidebar.js", - "id": "sidebar.unmuteApp", - "start": { - "column": 10, - "line": 25 - } - }, - { - "defaultMessage": "!!!Open workspace drawer", - "end": { - "column": 3, - "line": 32 - }, - "file": "src/components/layout/Sidebar.js", - "id": "sidebar.openWorkspaceDrawer", - "start": { - "column": 23, - "line": 29 - } - }, - { - "defaultMessage": "!!!Close workspace drawer", - "end": { - "column": 3, - "line": 36 - }, - "file": "src/components/layout/Sidebar.js", - "id": "sidebar.closeWorkspaceDrawer", - "start": { - "column": 24, - "line": 33 - } - } - ], - "path": "src/components/layout/Sidebar.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Oh no!", - "end": { - "column": 3, - "line": 15 - }, - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "id": "service.errorHandler.headline", - "start": { - "column": 12, - "line": 12 - } - }, - { - "defaultMessage": "!!!{name} has failed to load.", - "end": { - "column": 3, - "line": 19 - }, - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "id": "service.errorHandler.text", - "start": { - "column": 8, - "line": 16 - } - }, - { - "defaultMessage": "!!!Reload {name}", - "end": { - "column": 3, - "line": 23 - }, - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "id": "service.errorHandler.action", - "start": { - "column": 10, - "line": 20 - } - }, - { - "defaultMessage": "!!!Edit {name}", - "end": { - "column": 3, - "line": 27 - }, - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "id": "service.errorHandler.editAction", - "start": { - "column": 14, - "line": 24 - } - }, - { - "defaultMessage": "!!!Error:", - "end": { - "column": 3, - "line": 31 - }, - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "id": "service.errorHandler.message", - "start": { - "column": 16, - "line": 28 - } - } - ], - "path": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!{name} is disabled", - "end": { - "column": 3, - "line": 12 - }, - "file": "src/components/services/content/ServiceDisabled.js", - "id": "service.disabledHandler.headline", - "start": { - "column": 12, - "line": 9 - } - }, - { - "defaultMessage": "!!!Enable {name}", - "end": { - "column": 3, - "line": 16 - }, - "file": "src/components/services/content/ServiceDisabled.js", - "id": "service.disabledHandler.action", - "start": { - "column": 10, - "line": 13 - } - } - ], - "path": "src/components/services/content/ServiceDisabled.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Welcome to Franz", - "end": { - "column": 3, - "line": 14 - }, - "file": "src/components/services/content/Services.js", - "id": "services.welcome", - "start": { - "column": 11, - "line": 11 - } - }, - { - "defaultMessage": "!!!Get started", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/services/content/Services.js", - "id": "services.getStarted", - "start": { - "column": 14, - "line": 15 - } - } - ], - "path": "src/components/services/content/Services.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Oh no!", - "end": { - "column": 3, - "line": 13 - }, - "file": "src/components/services/content/WebviewCrashHandler.js", - "id": "service.crashHandler.headline", - "start": { - "column": 12, - "line": 10 - } - }, - { - "defaultMessage": "!!!{name} has caused an error.", - "end": { - "column": 3, - "line": 17 - }, - "file": "src/components/services/content/WebviewCrashHandler.js", - "id": "service.crashHandler.text", - "start": { - "column": 8, - "line": 14 - } - }, - { - "defaultMessage": "!!!Reload {name}", - "end": { - "column": 3, - "line": 21 - }, - "file": "src/components/services/content/WebviewCrashHandler.js", - "id": "service.crashHandler.action", - "start": { - "column": 10, - "line": 18 - } - }, - { - "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/components/services/content/WebviewCrashHandler.js", - "id": "service.crashHandler.autoReload", - "start": { - "column": 14, - "line": 22 - } - } - ], - "path": "src/components/services/content/WebviewCrashHandler.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Reload", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.reload", - "start": { - "column": 10, - "line": 15 - } - }, - { - "defaultMessage": "!!!Edit", - "end": { - "column": 3, - "line": 22 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.edit", - "start": { - "column": 8, - "line": 19 - } - }, - { - "defaultMessage": "!!!Disable notifications", - "end": { - "column": 3, - "line": 26 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.disableNotifications", - "start": { - "column": 24, - "line": 23 - } - }, - { - "defaultMessage": "!!!Enable notifications", - "end": { - "column": 3, - "line": 30 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.enableNotification", - "start": { - "column": 23, - "line": 27 - } - }, - { - "defaultMessage": "!!!Disable audio", - "end": { - "column": 3, - "line": 34 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.disableAudio", - "start": { - "column": 16, - "line": 31 - } - }, - { - "defaultMessage": "!!!Enable audio", - "end": { - "column": 3, - "line": 38 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.enableAudio", - "start": { - "column": 15, - "line": 35 - } - }, - { - "defaultMessage": "!!!Disable Service", - "end": { - "column": 3, - "line": 42 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.disableService", - "start": { - "column": 18, - "line": 39 - } - }, - { - "defaultMessage": "!!!Enable Service", - "end": { - "column": 3, - "line": 46 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.enableService", - "start": { - "column": 17, - "line": 43 - } - }, - { - "defaultMessage": "!!!Delete Service", - "end": { - "column": 3, - "line": 50 - }, - "file": "src/components/services/tabs/TabItem.js", - "id": "tabs.item.deleteService", - "start": { - "column": 17, - "line": 47 - } - } - ], - "path": "src/components/services/tabs/TabItem.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Account", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.headline", - "start": { - "column": 12, - "line": 15 - } - }, - { - "defaultMessage": "!!!Your Subscription", - "end": { - "column": 3, - "line": 22 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.headlineSubscription", - "start": { - "column": 24, - "line": 19 - } - }, - { - "defaultMessage": "!!!Upgrade your Account", - "end": { - "column": 3, - "line": 26 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.headlineUpgrade", - "start": { - "column": 19, - "line": 23 - } - }, - { - "defaultMessage": "!!Invoices", - "end": { - "column": 3, - "line": 30 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.headlineInvoices", - "start": { - "column": 20, - "line": 27 - } - }, - { - "defaultMessage": "!!Danger Zone", - "end": { - "column": 3, - "line": 34 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.headlineDangerZone", - "start": { - "column": 22, - "line": 31 - } - }, - { - "defaultMessage": "!!!Manage your subscription", - "end": { - "column": 3, - "line": 38 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.manageSubscription.label", - "start": { - "column": 33, - "line": 35 - } - }, - { - "defaultMessage": "!!!Basic Account", - "end": { - "column": 3, - "line": 42 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.accountType.basic", - "start": { - "column": 20, - "line": 39 - } - }, - { - "defaultMessage": "!!!Premium Supporter Account", - "end": { - "column": 3, - "line": 46 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.accountType.premium", - "start": { - "column": 22, - "line": 43 - } - }, - { - "defaultMessage": "!!!Edit Account", - "end": { - "column": 3, - "line": 50 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.account.editButton", - "start": { - "column": 21, - "line": 47 - } - }, - { - "defaultMessage": "!!!Download", - "end": { - "column": 3, - "line": 54 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.invoiceDownload", - "start": { - "column": 19, - "line": 51 - } - }, - { - "defaultMessage": "!!!Could not load user information", - "end": { - "column": 3, - "line": 58 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.userInfoRequestFailed", - "start": { - "column": 25, - "line": 55 - } - }, - { - "defaultMessage": "!!!Try again", - "end": { - "column": 3, - "line": 62 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.tryReloadUserInfoRequest", - "start": { - "column": 28, - "line": 59 - } - }, - { - "defaultMessage": "!!!Delete account", - "end": { - "column": 3, - "line": 66 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.deleteAccount", - "start": { - "column": 17, - "line": 63 - } - }, - { - "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", - "end": { - "column": 3, - "line": 70 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.deleteInfo", - "start": { - "column": 14, - "line": 67 - } - }, - { - "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", - "end": { - "column": 3, - "line": 74 - }, - "file": "src/components/settings/account/AccountDashboard.js", - "id": "settings.account.deleteEmailSent", - "start": { - "column": 19, - "line": 71 - } - } - ], - "path": "src/components/settings/account/AccountDashboard.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Available services", - "end": { - "column": 3, - "line": 15 - }, - "file": "src/components/settings/navigation/SettingsNavigation.js", - "id": "settings.navigation.availableServices", - "start": { - "column": 21, - "line": 12 - } - }, - { - "defaultMessage": "!!!Your services", - "end": { - "column": 3, - "line": 19 - }, - "file": "src/components/settings/navigation/SettingsNavigation.js", - "id": "settings.navigation.yourServices", - "start": { - "column": 16, - "line": 16 - } - }, - { - "defaultMessage": "!!!Your workspaces", - "end": { - "column": 3, - "line": 23 - }, - "file": "src/components/settings/navigation/SettingsNavigation.js", - "id": "settings.navigation.yourWorkspaces", - "start": { - "column": 18, - "line": 20 - } - }, - { - "defaultMessage": "!!!Account", - "end": { - "column": 3, - "line": 27 - }, - "file": "src/components/settings/navigation/SettingsNavigation.js", - "id": "settings.navigation.account", - "start": { - "column": 11, - "line": 24 - } - }, - { - "defaultMessage": "!!!Settings", - "end": { - "column": 3, - "line": 31 - }, - "file": "src/components/settings/navigation/SettingsNavigation.js", - "id": "settings.navigation.settings", - "start": { - "column": 12, - "line": 28 - } - }, - { - "defaultMessage": "!!!Invite Friends", - "end": { - "column": 3, - "line": 35 - }, - "file": "src/components/settings/navigation/SettingsNavigation.js", - "id": "settings.navigation.inviteFriends", - "start": { - "column": 17, - "line": 32 - } - }, - { - "defaultMessage": "!!!Logout", - "end": { - "column": 3, - "line": 39 - }, - "file": "src/components/settings/navigation/SettingsNavigation.js", - "id": "settings.navigation.logout", - "start": { - "column": 10, - "line": 36 - } - } - ], - "path": "src/components/settings/navigation/SettingsNavigation.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Available Services", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/settings/recipes/RecipesDashboard.js", - "id": "settings.recipes.headline", - "start": { - "column": 12, - "line": 15 - } - }, - { - "defaultMessage": "!!!Search service", - "end": { - "column": 3, - "line": 22 - }, - "file": "src/components/settings/recipes/RecipesDashboard.js", - "id": "settings.searchService", - "start": { - "column": 17, - "line": 19 - } - }, - { - "defaultMessage": "!!!Most popular", - "end": { - "column": 3, - "line": 26 - }, - "file": "src/components/settings/recipes/RecipesDashboard.js", - "id": "settings.recipes.mostPopular", - "start": { - "column": 22, - "line": 23 - } - }, - { - "defaultMessage": "!!!All services", - "end": { - "column": 3, - "line": 30 - }, - "file": "src/components/settings/recipes/RecipesDashboard.js", - "id": "settings.recipes.all", - "start": { - "column": 14, - "line": 27 - } - }, - { - "defaultMessage": "!!!Development", - "end": { - "column": 3, - "line": 34 - }, - "file": "src/components/settings/recipes/RecipesDashboard.js", - "id": "settings.recipes.dev", - "start": { - "column": 14, - "line": 31 - } - }, - { - "defaultMessage": "!!!Sorry, but no service matched your search term.", - "end": { - "column": 3, - "line": 38 - }, - "file": "src/components/settings/recipes/RecipesDashboard.js", - "id": "settings.recipes.nothingFound", - "start": { - "column": 16, - "line": 35 - } - }, - { - "defaultMessage": "!!!Service successfully added", - "end": { - "column": 3, - "line": 42 - }, - "file": "src/components/settings/recipes/RecipesDashboard.js", - "id": "settings.recipes.servicesSuccessfulAddedInfo", - "start": { - "column": 31, - "line": 39 - } - }, - { - "defaultMessage": "!!!Missing a service?", - "end": { - "column": 3, - "line": 46 - }, - "file": "src/components/settings/recipes/RecipesDashboard.js", - "id": "settings.recipes.missingService", - "start": { - "column": 18, - "line": 43 - } - } - ], - "path": "src/components/settings/recipes/RecipesDashboard.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Save service", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.saveButton", - "start": { - "column": 15, - "line": 22 - } - }, - { - "defaultMessage": "!!!Delete Service", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.deleteButton", - "start": { - "column": 17, - "line": 26 - } - }, - { - "defaultMessage": "!!!Available services", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.availableServices", - "start": { - "column": 21, - "line": 30 - } - }, - { - "defaultMessage": "!!!Your services", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.yourServices", - "start": { - "column": 16, - "line": 34 - } - }, - { - "defaultMessage": "!!!Add {name}", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.addServiceHeadline", - "start": { - "column": 22, - "line": 38 - } - }, - { - "defaultMessage": "!!!Edit {name}", - "end": { - "column": 3, - "line": 45 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.editServiceHeadline", - "start": { - "column": 23, - "line": 42 - } - }, - { - "defaultMessage": "!!!Hosted", - "end": { - "column": 3, - "line": 49 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.tabHosted", - "start": { - "column": 13, - "line": 46 - } - }, - { - "defaultMessage": "!!!Self hosted ⭐️", - "end": { - "column": 3, - "line": 53 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.tabOnPremise", - "start": { - "column": 16, - "line": 50 - } - }, - { - "defaultMessage": "!!!Use the hosted {name} service.", - "end": { - "column": 3, - "line": 57 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.useHostedService", - "start": { - "column": 20, - "line": 54 - } - }, - { - "defaultMessage": "!!!Could not validate custom {name} server.", - "end": { - "column": 3, - "line": 61 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.customUrlValidationError", - "start": { - "column": 28, - "line": 58 - } - }, - { - "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", - "end": { - "column": 3, - "line": 65 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.customUrlPremiumInfo", - "start": { - "column": 24, - "line": 62 - } - }, - { - "defaultMessage": "!!!Upgrade your account", - "end": { - "column": 3, - "line": 69 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.customUrlUpgradeAccount", - "start": { - "column": 27, - "line": 66 - } - }, - { - "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", - "end": { - "column": 3, - "line": 73 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.indirectMessageInfo", - "start": { - "column": 23, - "line": 70 - } - }, - { - "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", - "end": { - "column": 3, - "line": 77 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.isMutedInfo", - "start": { - "column": 15, - "line": 74 - } - }, - { - "defaultMessage": "!!!Notifications", - "end": { - "column": 3, - "line": 81 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.headlineNotifications", - "start": { - "column": 25, - "line": 78 - } - }, - { - "defaultMessage": "!!!Unread message badges", - "end": { - "column": 3, - "line": 85 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.headlineBadges", - "start": { - "column": 18, - "line": 82 - } - }, - { - "defaultMessage": "!!!General", - "end": { - "column": 3, - "line": 89 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.headlineGeneral", - "start": { - "column": 19, - "line": 86 - } - }, - { - "defaultMessage": "!!!Delete", - "end": { - "column": 3, - "line": 93 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.iconDelete", - "start": { - "column": 14, - "line": 90 - } - }, - { - "defaultMessage": "!!!Drop your image, or click here", - "end": { - "column": 3, - "line": 97 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.iconUpload", - "start": { - "column": 14, - "line": 94 - } - }, - { - "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", - "end": { - "column": 3, - "line": 101 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.proxy.headline", - "start": { - "column": 17, - "line": 98 - } - }, - { - "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", - "end": { - "column": 3, - "line": 105 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.proxy.restartInfo", - "start": { - "column": 20, - "line": 102 - } - }, - { - "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", - "end": { - "column": 3, - "line": 109 - }, - "file": "src/components/settings/services/EditServiceForm.js", - "id": "settings.service.form.proxy.info", - "start": { - "column": 13, - "line": 106 - } - } - ], - "path": "src/components/settings/services/EditServiceForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Error", - "end": { - "column": 3, - "line": 13 - }, - "file": "src/components/settings/services/ServiceError.js", - "id": "settings.service.error.headline", - "start": { - "column": 12, - "line": 10 - } - }, - { - "defaultMessage": "!!!Back to services", - "end": { - "column": 3, - "line": 17 - }, - "file": "src/components/settings/services/ServiceError.js", - "id": "settings.service.error.goBack", - "start": { - "column": 10, - "line": 14 - } - }, - { - "defaultMessage": "!!!Available services", - "end": { - "column": 3, - "line": 21 - }, - "file": "src/components/settings/services/ServiceError.js", - "id": "settings.service.form.availableServices", - "start": { - "column": 21, - "line": 18 - } - }, - { - "defaultMessage": "!!!Could not load service recipe.", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/components/settings/services/ServiceError.js", - "id": "settings.service.error.message", - "start": { - "column": 16, - "line": 22 - } - } - ], - "path": "src/components/settings/services/ServiceError.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Service is disabled", - "end": { - "column": 3, - "line": 14 - }, - "file": "src/components/settings/services/ServiceItem.js", - "id": "settings.services.tooltip.isDisabled", - "start": { - "column": 21, - "line": 11 - } - }, - { - "defaultMessage": "!!!Notifications are disabled", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/settings/services/ServiceItem.js", - "id": "settings.services.tooltip.notificationsDisabled", - "start": { - "column": 32, - "line": 15 - } - }, - { - "defaultMessage": "!!!All sounds are muted", - "end": { - "column": 3, - "line": 22 - }, - "file": "src/components/settings/services/ServiceItem.js", - "id": "settings.services.tooltip.isMuted", - "start": { - "column": 18, - "line": 19 - } - } - ], - "path": "src/components/settings/services/ServiceItem.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Your services", - "end": { - "column": 3, - "line": 17 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.services.headline", - "start": { - "column": 12, - "line": 14 - } - }, - { - "defaultMessage": "!!!Search service", - "end": { - "column": 3, - "line": 21 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.searchService", - "start": { - "column": 17, - "line": 18 - } - }, - { - "defaultMessage": "!!!You haven't added any services yet.", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.services.noServicesAdded", - "start": { - "column": 19, - "line": 22 - } - }, - { - "defaultMessage": "!!!Sorry, but no service matched your search term.", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.recipes.nothingFound", - "start": { - "column": 18, - "line": 26 - } - }, - { - "defaultMessage": "!!!Discover services", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.services.discoverServices", - "start": { - "column": 20, - "line": 30 - } - }, - { - "defaultMessage": "!!!Could not load your services", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.services.servicesRequestFailed", - "start": { - "column": 25, - "line": 34 - } - }, - { - "defaultMessage": "!!!Try again", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.account.tryReloadServices", - "start": { - "column": 21, - "line": 38 - } - }, - { - "defaultMessage": "!!!Your changes have been saved", - "end": { - "column": 3, - "line": 45 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.services.updatedInfo", - "start": { - "column": 15, - "line": 42 - } - }, - { - "defaultMessage": "!!!Service has been deleted", - "end": { - "column": 3, - "line": 49 - }, - "file": "src/components/settings/services/ServicesDashboard.js", - "id": "settings.services.deletedInfo", - "start": { - "column": 15, - "line": 46 - } - } - ], - "path": "src/components/settings/services/ServicesDashboard.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Settings", - "end": { - "column": 3, - "line": 19 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.headline", - "start": { - "column": 12, - "line": 16 - } - }, - { - "defaultMessage": "!!!General", - "end": { - "column": 3, - "line": 23 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.headlineGeneral", - "start": { - "column": 19, - "line": 20 - } - }, - { - "defaultMessage": "!!!Language", - "end": { - "column": 3, - "line": 27 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.headlineLanguage", - "start": { - "column": 20, - "line": 24 - } - }, - { - "defaultMessage": "!!!Updates", - "end": { - "column": 3, - "line": 31 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.headlineUpdates", - "start": { - "column": 19, - "line": 28 - } - }, - { - "defaultMessage": "!!!Appearance", - "end": { - "column": 3, - "line": 35 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.headlineAppearance", - "start": { - "column": 22, - "line": 32 - } - }, - { - "defaultMessage": "!!!Advanced", - "end": { - "column": 3, - "line": 39 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.headlineAdvanced", - "start": { - "column": 20, - "line": 36 - } - }, - { - "defaultMessage": "!!!Help us to translate Franz into your language.", - "end": { - "column": 3, - "line": 43 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.translationHelp", - "start": { - "column": 19, - "line": 40 - } - }, - { - "defaultMessage": "!!!Cache", - "end": { - "column": 3, - "line": 47 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.subheadlineCache", - "start": { - "column": 20, - "line": 44 - } - }, - { - "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", - "end": { - "column": 3, - "line": 51 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.cacheInfo", - "start": { - "column": 13, - "line": 48 - } - }, - { - "defaultMessage": "!!!Clear cache", - "end": { - "column": 3, - "line": 55 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.buttonClearAllCache", - "start": { - "column": 23, - "line": 52 - } - }, - { - "defaultMessage": "!!!Check for updates", - "end": { - "column": 3, - "line": 59 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.buttonSearchForUpdate", - "start": { - "column": 25, - "line": 56 - } - }, - { - "defaultMessage": "!!!Restart & install update", - "end": { - "column": 3, - "line": 63 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.buttonInstallUpdate", - "start": { - "column": 23, - "line": 60 - } - }, - { - "defaultMessage": "!!!Is searching for update", - "end": { - "column": 3, - "line": 67 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.updateStatusSearching", - "start": { - "column": 25, - "line": 64 - } - }, - { - "defaultMessage": "!!!Update available, downloading...", - "end": { - "column": 3, - "line": 71 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.updateStatusAvailable", - "start": { - "column": 25, - "line": 68 - } - }, - { - "defaultMessage": "!!!You are using the latest version of Franz", - "end": { - "column": 3, - "line": 75 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.updateStatusUpToDate", - "start": { - "column": 24, - "line": 72 - } - }, - { - "defaultMessage": "!!!Current version:", - "end": { - "column": 3, - "line": 79 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.currentVersion", - "start": { - "column": 18, - "line": 76 - } - }, - { - "defaultMessage": "!!!Changes require restart", - "end": { - "column": 3, - "line": 83 - }, - "file": "src/components/settings/settings/EditSettingsForm.js", - "id": "settings.app.restartRequired", - "start": { - "column": 29, - "line": 80 - } - } - ], - "path": "src/components/settings/settings/EditSettingsForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Account", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/settings/user/EditUserForm.js", - "id": "settings.account.headline", - "start": { - "column": 12, - "line": 15 - } - }, - { - "defaultMessage": "!!!Update Profile", - "end": { - "column": 3, - "line": 22 - }, - "file": "src/components/settings/user/EditUserForm.js", - "id": "settings.account.headlineProfile", - "start": { - "column": 19, - "line": 19 - } - }, - { - "defaultMessage": "!!!Account Information", - "end": { - "column": 3, - "line": 26 - }, - "file": "src/components/settings/user/EditUserForm.js", - "id": "settings.account.headlineAccount", - "start": { - "column": 19, - "line": 23 - } - }, - { - "defaultMessage": "!!!Change Password", - "end": { - "column": 3, - "line": 30 - }, - "file": "src/components/settings/user/EditUserForm.js", - "id": "settings.account.headlinePassword", - "start": { - "column": 20, - "line": 27 - } - }, - { - "defaultMessage": "!!!Your changes have been saved", - "end": { - "column": 3, - "line": 34 - }, - "file": "src/components/settings/user/EditUserForm.js", - "id": "settings.account.successInfo", - "start": { - "column": 15, - "line": 31 - } - }, - { - "defaultMessage": "!!!Update profile", - "end": { - "column": 3, - "line": 38 - }, - "file": "src/components/settings/user/EditUserForm.js", - "id": "settings.account.buttonSave", - "start": { - "column": 14, - "line": 35 - } - } - ], - "path": "src/components/settings/user/EditUserForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Support the development of Franz", - "end": { - "column": 3, - "line": 17 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.submit.label", - "start": { - "column": 21, - "line": 14 - } - }, - { - "defaultMessage": "!!!Could not initialize payment form", - "end": { - "column": 3, - "line": 21 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.paymentSessionError", - "start": { - "column": 23, - "line": 18 - } - }, - { - "defaultMessage": "!!!free", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.type.free", - "start": { - "column": 12, - "line": 22 - } - }, - { - "defaultMessage": "!!!month", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.type.month", - "start": { - "column": 15, - "line": 26 - } - }, - { - "defaultMessage": "!!!year", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.type.year", - "start": { - "column": 14, - "line": 30 - } - }, - { - "defaultMessage": "!!!The Franz Premium Supporter Account includes", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.includedFeatures", - "start": { - "column": 20, - "line": 34 - } - }, - { - "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.features.onpremise.mattermost", - "start": { - "column": 13, - "line": 38 - } - }, - { - "defaultMessage": "!!!No app delays & nagging to upgrade license", - "end": { - "column": 3, - "line": 45 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.features.noInterruptions", - "start": { - "column": 19, - "line": 42 - } - }, - { - "defaultMessage": "!!!Proxy support for services", - "end": { - "column": 3, - "line": 49 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.features.proxy", - "start": { - "column": 9, - "line": 46 - } - }, - { - "defaultMessage": "!!!Support for Spellchecker", - "end": { - "column": 3, - "line": 53 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.features.spellchecker", - "start": { - "column": 16, - "line": 50 - } - }, - { - "defaultMessage": "!!!No ads, ever!", - "end": { - "column": 3, - "line": 57 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.features.ads", - "start": { - "column": 7, - "line": 54 - } - }, - { - "defaultMessage": "!!!coming soon", - "end": { - "column": 3, - "line": 61 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.features.comingSoon", - "start": { - "column": 14, - "line": 58 - } - }, - { - "defaultMessage": "!!!EU residents: local sales tax may apply", - "end": { - "column": 3, - "line": 65 - }, - "file": "src/components/subscription/SubscriptionForm.js", - "id": "subscription.euTaxInfo", - "start": { - "column": 13, - "line": 62 - } - } - ], - "path": "src/components/subscription/SubscriptionForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Cancel", - "end": { - "column": 3, - "line": 14 - }, - "file": "src/components/subscription/SubscriptionPopup.js", - "id": "subscriptionPopup.buttonCancel", - "start": { - "column": 16, - "line": 11 - } - }, - { - "defaultMessage": "!!!Done", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/subscription/SubscriptionPopup.js", - "id": "subscriptionPopup.buttonDone", - "start": { - "column": 14, - "line": 15 - } - } - ], - "path": "src/components/subscription/SubscriptionPopup.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Upgrade account", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/ui/PremiumFeatureContainer/index.js", - "id": "premiumFeature.button.upgradeAccount", - "start": { - "column": 10, - "line": 15 - } - } - ], - "path": "src/components/ui/PremiumFeatureContainer/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Loading", - "end": { - "column": 3, - "line": 14 - }, - "file": "src/components/ui/WebviewLoader/index.js", - "id": "service.webviewLoader.loading", - "start": { - "column": 11, - "line": 11 - } - } - ], - "path": "src/components/ui/WebviewLoader/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Something went wrong.", - "end": { - "column": 3, - "line": 14 - }, - "file": "src/components/util/ErrorBoundary/index.js", - "id": "app.errorHandler.headline", - "start": { - "column": 12, - "line": 11 - } - }, - { - "defaultMessage": "!!!Reload", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/components/util/ErrorBoundary/index.js", - "id": "app.errorHandler.action", - "start": { - "column": 10, - "line": 15 - } - } - ], - "path": "src/components/util/ErrorBoundary/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Name", - "end": { - "column": 3, - "line": 31 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.name", - "start": { - "column": 8, - "line": 28 - } - }, - { - "defaultMessage": "!!!Enable service", - "end": { - "column": 3, - "line": 35 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.enableService", - "start": { - "column": 17, - "line": 32 - } - }, - { - "defaultMessage": "!!!Enable Notifications", - "end": { - "column": 3, - "line": 39 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.enableNotification", - "start": { - "column": 22, - "line": 36 - } - }, - { - "defaultMessage": "!!!Show unread message badges", - "end": { - "column": 3, - "line": 43 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.enableBadge", - "start": { - "column": 15, - "line": 40 - } - }, - { - "defaultMessage": "!!!Enable audio", - "end": { - "column": 3, - "line": 47 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.enableAudio", - "start": { - "column": 15, - "line": 44 - } - }, - { - "defaultMessage": "!!!Team", - "end": { - "column": 3, - "line": 51 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.team", - "start": { - "column": 8, - "line": 48 - } - }, - { - "defaultMessage": "!!!Custom server", - "end": { - "column": 3, - "line": 55 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.customUrl", - "start": { - "column": 13, - "line": 52 - } - }, - { - "defaultMessage": "!!!Show message badge for all new messages", - "end": { - "column": 3, - "line": 59 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.indirectMessages", - "start": { - "column": 20, - "line": 56 - } - }, - { - "defaultMessage": "!!!Custom icon", - "end": { - "column": 3, - "line": 63 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.icon", - "start": { - "column": 8, - "line": 60 - } - }, - { - "defaultMessage": "!!!Enable Dark Mode", - "end": { - "column": 3, - "line": 67 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.enableDarkMode", - "start": { - "column": 18, - "line": 64 - } - }, - { - "defaultMessage": "!!!Use Proxy", - "end": { - "column": 3, - "line": 71 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.proxy.isEnabled", - "start": { - "column": 15, - "line": 68 - } - }, - { - "defaultMessage": "!!!Proxy Host/IP", - "end": { - "column": 3, - "line": 75 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.proxy.host", - "start": { - "column": 13, - "line": 72 - } - }, - { - "defaultMessage": "!!!Port", - "end": { - "column": 3, - "line": 79 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.proxy.port", - "start": { - "column": 13, - "line": 76 - } - }, - { - "defaultMessage": "!!!User", - "end": { - "column": 3, - "line": 83 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.proxy.user", - "start": { - "column": 13, - "line": 80 - } - }, - { - "defaultMessage": "!!!Password", - "end": { - "column": 3, - "line": 87 - }, - "file": "src/containers/settings/EditServiceScreen.js", - "id": "settings.service.form.proxy.password", - "start": { - "column": 17, - "line": 84 - } - } - ], - "path": "src/containers/settings/EditServiceScreen.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Launch Franz on start", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.autoLaunchOnStart", - "start": { - "column": 21, - "line": 22 - } - }, - { - "defaultMessage": "!!!Open in background", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.autoLaunchInBackground", - "start": { - "column": 26, - "line": 26 - } - }, - { - "defaultMessage": "!!!Keep Franz in background when closing the window", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.runInBackground", - "start": { - "column": 19, - "line": 30 - } - }, - { - "defaultMessage": "!!!Show Franz in system tray", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.enableSystemTray", - "start": { - "column": 20, - "line": 34 - } - }, - { - "defaultMessage": "!!!Minimize Franz to system tray", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.minimizeToSystemTray", - "start": { - "column": 24, - "line": 38 - } - }, - { - "defaultMessage": "!!!Language", - "end": { - "column": 3, - "line": 45 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.language", - "start": { - "column": 12, - "line": 42 - } - }, - { - "defaultMessage": "!!!Dark Mode", - "end": { - "column": 3, - "line": 49 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.darkMode", - "start": { - "column": 12, - "line": 46 - } - }, - { - "defaultMessage": "!!!Display disabled services tabs", - "end": { - "column": 3, - "line": 53 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.showDisabledServices", - "start": { - "column": 24, - "line": 50 - } - }, - { - "defaultMessage": "!!!Show unread message badge when notifications are disabled", - "end": { - "column": 3, - "line": 57 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.showMessagesBadgesWhenMuted", - "start": { - "column": 29, - "line": 54 - } - }, - { - "defaultMessage": "!!!Enable spell checking", - "end": { - "column": 3, - "line": 61 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.enableSpellchecking", - "start": { - "column": 23, - "line": 58 - } - }, - { - "defaultMessage": "!!!Enable GPU Acceleration", - "end": { - "column": 3, - "line": 65 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.enableGPUAcceleration", - "start": { - "column": 25, - "line": 62 - } - }, - { - "defaultMessage": "!!!Include beta versions", - "end": { - "column": 3, - "line": 69 - }, - "file": "src/containers/settings/EditSettingsScreen.js", - "id": "settings.app.form.beta", - "start": { - "column": 8, - "line": 66 - } - } - ], - "path": "src/containers/settings/EditSettingsScreen.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Firstname", - "end": { - "column": 3, - "line": 17 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.firstname", - "start": { - "column": 13, - "line": 14 - } - }, - { - "defaultMessage": "!!!Lastname", - "end": { - "column": 3, - "line": 21 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.lastname", - "start": { - "column": 12, - "line": 18 - } - }, - { - "defaultMessage": "!!!Email", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.email", - "start": { - "column": 9, - "line": 22 - } - }, - { - "defaultMessage": "!!!Account type", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.accountType.label", - "start": { - "column": 20, - "line": 26 - } - }, - { - "defaultMessage": "!!!Individual", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.accountType.individual", - "start": { - "column": 25, - "line": 30 - } - }, - { - "defaultMessage": "!!!Non-Profit", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.accountType.non-profit", - "start": { - "column": 24, - "line": 34 - } - }, - { - "defaultMessage": "!!!Company", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.accountType.company", - "start": { - "column": 22, - "line": 38 - } - }, - { - "defaultMessage": "!!!Current password", - "end": { - "column": 3, - "line": 45 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.currentPassword", - "start": { - "column": 19, - "line": 42 - } - }, - { - "defaultMessage": "!!!New password", - "end": { - "column": 3, - "line": 49 - }, - "file": "src/containers/settings/EditUserScreen.js", - "id": "settings.user.form.newPassword", - "start": { - "column": 15, - "line": 46 - } - } - ], - "path": "src/containers/settings/EditUserScreen.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!What's new in Franz {version}?", - "end": { - "column": 3, - "line": 14 - }, - "file": "src/features/announcements/Component.js", - "id": "feature.announcements.changelog.headline", - "start": { - "column": 12, - "line": 11 - } - } - ], - "path": "src/features/announcements/Component.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Changes in Franz {version}", - "end": { - "column": 3, - "line": 23 - }, - "file": "src/features/announcements/components/AnnouncementScreen.js", - "id": "feature.announcements.changelog.headline", - "start": { - "column": 12, - "line": 20 - } - } - ], - "path": "src/features/announcements/components/AnnouncementScreen.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Please purchase license to skip waiting", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/features/delayApp/Component.js", - "id": "feature.delayApp.headline", - "start": { - "column": 12, - "line": 15 - } - }, - { - "defaultMessage": "!!!Get a Franz Supporter License", - "end": { - "column": 3, - "line": 22 - }, - "file": "src/features/delayApp/Component.js", - "id": "feature.delayApp.action", - "start": { - "column": 10, - "line": 19 - } - }, - { - "defaultMessage": "!!!Franz will continue in {seconds} seconds.", - "end": { - "column": 3, - "line": 26 - }, - "file": "src/features/delayApp/Component.js", - "id": "feature.delayApp.text", - "start": { - "column": 8, - "line": 23 - } - } - ], - "path": "src/features/delayApp/Component.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Franz is better together!", - "end": { - "column": 3, - "line": 18 - }, - "file": "src/features/shareFranz/Component.js", - "id": "feature.shareFranz.headline", - "start": { - "column": 12, - "line": 15 - } - }, - { - "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", - "end": { - "column": 3, - "line": 22 - }, - "file": "src/features/shareFranz/Component.js", - "id": "feature.shareFranz.text", - "start": { - "column": 8, - "line": 19 - } - }, - { - "defaultMessage": "!!!Share as email", - "end": { - "column": 3, - "line": 26 - }, - "file": "src/features/shareFranz/Component.js", - "id": "feature.shareFranz.action.email", - "start": { - "column": 16, - "line": 23 - } - }, - { - "defaultMessage": "!!!Share on Facebook", - "end": { - "column": 3, - "line": 30 - }, - "file": "src/features/shareFranz/Component.js", - "id": "feature.shareFranz.action.facebook", - "start": { - "column": 19, - "line": 27 - } - }, - { - "defaultMessage": "!!!Share on Twitter", - "end": { - "column": 3, - "line": 34 - }, - "file": "src/features/shareFranz/Component.js", - "id": "feature.shareFranz.action.twitter", - "start": { - "column": 18, - "line": 31 - } - }, - { - "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", - "end": { - "column": 3, - "line": 38 - }, - "file": "src/features/shareFranz/Component.js", - "id": "feature.shareFranz.shareText.email", - "start": { - "column": 18, - "line": 35 - } - }, - { - "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", - "end": { - "column": 3, - "line": 42 - }, - "file": "src/features/shareFranz/Component.js", - "id": "feature.shareFranz.shareText.twitter", - "start": { - "column": 20, - "line": 39 - } - } - ], - "path": "src/features/shareFranz/Component.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Create workspace", - "end": { - "column": 3, - "line": 16 - }, - "file": "src/features/workspaces/components/CreateWorkspaceForm.js", - "id": "settings.workspace.add.form.submitButton", - "start": { - "column": 16, - "line": 13 - } - }, - { - "defaultMessage": "!!!Name", - "end": { - "column": 3, - "line": 20 - }, - "file": "src/features/workspaces/components/CreateWorkspaceForm.js", - "id": "settings.workspace.add.form.name", - "start": { - "column": 8, - "line": 17 - } - } - ], - "path": "src/features/workspaces/components/CreateWorkspaceForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Delete workspace", - "end": { - "column": 3, - "line": 22 - }, - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "id": "settings.workspace.form.buttonDelete", - "start": { - "column": 16, - "line": 19 - } - }, - { - "defaultMessage": "!!!Save workspace", - "end": { - "column": 3, - "line": 26 - }, - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "id": "settings.workspace.form.buttonSave", - "start": { - "column": 14, - "line": 23 - } - }, - { - "defaultMessage": "!!!Name", - "end": { - "column": 3, - "line": 30 - }, - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "id": "settings.workspace.form.name", - "start": { - "column": 8, - "line": 27 - } - }, - { - "defaultMessage": "!!!Your workspaces", - "end": { - "column": 3, - "line": 34 - }, - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "id": "settings.workspace.form.yourWorkspaces", - "start": { - "column": 18, - "line": 31 - } - }, - { - "defaultMessage": "!!!Services in this Workspace", - "end": { - "column": 3, - "line": 38 - }, - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "id": "settings.workspace.form.servicesInWorkspaceHeadline", - "start": { - "column": 31, - "line": 35 - } - } - ], - "path": "src/features/workspaces/components/EditWorkspaceForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Workspaces", - "end": { - "column": 3, - "line": 19 - }, - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.headline", - "start": { - "column": 12, - "line": 16 - } - }, - { - "defaultMessage": "!!!All services", - "end": { - "column": 3, - "line": 23 - }, - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.allServices", - "start": { - "column": 15, - "line": 20 - } - }, - { - "defaultMessage": "!!!Workspaces settings", - "end": { - "column": 3, - "line": 27 - }, - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.workspacesSettingsTooltip", - "start": { - "column": 29, - "line": 24 - } - }, - { - "defaultMessage": "!!!Info about workspace feature", - "end": { - "column": 3, - "line": 31 - }, - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.workspaceFeatureInfo", - "start": { - "column": 24, - "line": 28 - } - }, - { - "defaultMessage": "!!!Create your first workspace", - "end": { - "column": 3, - "line": 35 - }, - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.premiumCtaButtonLabel", - "start": { - "column": 25, - "line": 32 - } - }, - { - "defaultMessage": "!!!Reactivate premium account", - "end": { - "column": 3, - "line": 39 - }, - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.reactivatePremiumAccountLabel", - "start": { - "column": 28, - "line": 36 - } - }, - { - "defaultMessage": "!!!add new workspace", - "end": { - "column": 3, - "line": 43 - }, - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.addNewWorkspaceLabel", - "start": { - "column": 24, - "line": 40 - } - }, - { - "defaultMessage": "!!!Premium feature", - "end": { - "column": 3, - "line": 47 - }, - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "id": "workspaceDrawer.proFeatureBadge", - "start": { - "column": 23, - "line": 44 - } - } - ], - "path": "src/features/workspaces/components/WorkspaceDrawer.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!No services added yet", - "end": { - "column": 3, - "line": 15 - }, - "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", - "id": "workspaceDrawer.item.noServicesAddedYet", - "start": { - "column": 22, - "line": 12 - } - }, - { - "defaultMessage": "!!!edit", - "end": { - "column": 3, - "line": 19 - }, - "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", - "id": "workspaceDrawer.item.contextMenuEdit", - "start": { - "column": 19, - "line": 16 - } - } - ], - "path": "src/features/workspaces/components/WorkspaceDrawerItem.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Your workspaces", - "end": { - "column": 3, - "line": 20 - }, - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "id": "settings.workspaces.headline", - "start": { - "column": 12, - "line": 17 - } - }, - { - "defaultMessage": "!!!You haven't added any workspaces yet.", - "end": { - "column": 3, - "line": 24 - }, - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "id": "settings.workspaces.noWorkspacesAdded", - "start": { - "column": 19, - "line": 21 - } - }, - { - "defaultMessage": "!!!Could not load your workspaces", - "end": { - "column": 3, - "line": 28 - }, - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "id": "settings.workspaces.workspacesRequestFailed", - "start": { - "column": 27, - "line": 25 - } - }, - { - "defaultMessage": "!!!Try again", - "end": { - "column": 3, - "line": 32 - }, - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "id": "settings.workspaces.tryReloadWorkspaces", - "start": { - "column": 23, - "line": 29 - } - }, - { - "defaultMessage": "!!!Your changes have been saved", - "end": { - "column": 3, - "line": 36 - }, - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "id": "settings.workspaces.updatedInfo", - "start": { - "column": 15, - "line": 33 - } - }, - { - "defaultMessage": "!!!Workspace has been deleted", - "end": { - "column": 3, - "line": 40 - }, - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "id": "settings.workspaces.deletedInfo", - "start": { - "column": 15, - "line": 37 - } - }, - { - "defaultMessage": "!!!Info about workspace feature", - "end": { - "column": 3, - "line": 44 - }, - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "id": "settings.workspaces.workspaceFeatureInfo", - "start": { - "column": 24, - "line": 41 - } - }, - { - "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", - "end": { - "column": 3, - "line": 48 - }, - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "id": "settings.workspaces.workspaceFeatureHeadline", - "start": { - "column": 28, - "line": 45 - } - } - ], - "path": "src/features/workspaces/components/WorkspacesDashboard.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Switching to", - "end": { - "column": 3, - "line": 15 - }, - "file": "src/features/workspaces/components/WorkspaceSwitchingIndicator.js", - "id": "workspaces.switchingIndicator.switchingTo", - "start": { - "column": 15, - "line": 12 - } - } - ], - "path": "src/features/workspaces/components/WorkspaceSwitchingIndicator.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Field is required", - "end": { - "column": 3, - "line": 7 - }, - "file": "src/helpers/validation-helpers.js", - "id": "validation.required", - "start": { - "column": 12, - "line": 4 - } - }, - { - "defaultMessage": "!!!Email not valid", - "end": { - "column": 3, - "line": 11 - }, - "file": "src/helpers/validation-helpers.js", - "id": "validation.email", - "start": { - "column": 9, - "line": 8 - } - }, - { - "defaultMessage": "!!!Not a valid URL", - "end": { - "column": 3, - "line": 15 - }, - "file": "src/helpers/validation-helpers.js", - "id": "validation.url", - "start": { - "column": 7, - "line": 12 - } - }, - { - "defaultMessage": "!!!Too few characters", - "end": { - "column": 3, - "line": 19 - }, - "file": "src/helpers/validation-helpers.js", - "id": "validation.minLength", - "start": { - "column": 13, - "line": 16 - } - }, - { - "defaultMessage": "!!!At least one is required", - "end": { - "column": 3, - "line": 23 - }, - "file": "src/helpers/validation-helpers.js", - "id": "validation.oneRequired", - "start": { - "column": 15, - "line": 20 - } - } - ], - "path": "src/helpers/validation-helpers.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Can't connect to Franz Online Services", - "end": { - "column": 3, - "line": 7 - }, - "file": "src/i18n/globalMessages.js", - "id": "global.api.unhealthy", - "start": { - "column": 16, - "line": 4 - } - }, - { - "defaultMessage": "!!!You are not connected to the internet.", - "end": { - "column": 3, - "line": 11 - }, - "file": "src/i18n/globalMessages.js", - "id": "global.notConnectedToTheInternet", - "start": { - "column": 29, - "line": 8 - } - }, - { - "defaultMessage": "!!!Spell checking language", - "end": { - "column": 3, - "line": 15 - }, - "file": "src/i18n/globalMessages.js", - "id": "global.spellchecking.language", - "start": { - "column": 24, - "line": 12 - } - }, - { - "defaultMessage": "!!!Use System Default ({default})", - "end": { - "column": 3, - "line": 19 - }, - "file": "src/i18n/globalMessages.js", - "id": "global.spellchecker.useDefault", - "start": { - "column": 29, - "line": 16 - } - }, - { - "defaultMessage": "!!!Detect language automatically", - "end": { - "column": 3, - "line": 23 - }, - "file": "src/i18n/globalMessages.js", - "id": "global.spellchecking.autodetect", - "start": { - "column": 34, - "line": 20 - } - }, - { - "defaultMessage": "!!!Automatic", - "end": { - "column": 3, - "line": 27 - }, - "file": "src/i18n/globalMessages.js", - "id": "global.spellchecking.autodetect.short", - "start": { - "column": 39, - "line": 24 - } - } - ], - "path": "src/i18n/globalMessages.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Edit", - "end": { - "column": 3, - "line": 17 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit", - "start": { - "column": 8, - "line": 14 - } - }, - { - "defaultMessage": "!!!Undo", - "end": { - "column": 3, - "line": 21 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.undo", - "start": { - "column": 8, - "line": 18 - } - }, - { - "defaultMessage": "!!!Redo", - "end": { - "column": 3, - "line": 25 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.redo", - "start": { - "column": 8, - "line": 22 - } - }, - { - "defaultMessage": "!!!Cut", - "end": { - "column": 3, - "line": 29 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.cut", - "start": { - "column": 7, - "line": 26 - } - }, - { - "defaultMessage": "!!!Copy", - "end": { - "column": 3, - "line": 33 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.copy", - "start": { - "column": 8, - "line": 30 - } - }, - { - "defaultMessage": "!!!Paste", - "end": { - "column": 3, - "line": 37 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.paste", - "start": { - "column": 9, - "line": 34 - } - }, - { - "defaultMessage": "!!!Paste And Match Style", - "end": { - "column": 3, - "line": 41 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.pasteAndMatchStyle", - "start": { - "column": 22, - "line": 38 - } - }, - { - "defaultMessage": "!!!Delete", - "end": { - "column": 3, - "line": 45 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.delete", - "start": { - "column": 10, - "line": 42 - } - }, - { - "defaultMessage": "!!!Select All", - "end": { - "column": 3, - "line": 49 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.selectAll", - "start": { - "column": 13, - "line": 46 - } - }, - { - "defaultMessage": "!!!Speech", - "end": { - "column": 3, - "line": 53 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.speech", - "start": { - "column": 10, - "line": 50 - } - }, - { - "defaultMessage": "!!!Start Speaking", - "end": { - "column": 3, - "line": 57 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.startSpeaking", - "start": { - "column": 17, - "line": 54 - } - }, - { - "defaultMessage": "!!!Stop Speaking", - "end": { - "column": 3, - "line": 61 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.stopSpeaking", - "start": { - "column": 16, - "line": 58 - } - }, - { - "defaultMessage": "!!!Start Dictation", - "end": { - "column": 3, - "line": 65 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.startDictation", - "start": { - "column": 18, - "line": 62 - } - }, - { - "defaultMessage": "!!!Emoji & Symbols", - "end": { - "column": 3, - "line": 69 - }, - "file": "src/lib/Menu.js", - "id": "menu.edit.emojiSymbols", - "start": { - "column": 16, - "line": 66 - } - }, - { - "defaultMessage": "!!!Actual Size", - "end": { - "column": 3, - "line": 73 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.resetZoom", - "start": { - "column": 13, - "line": 70 - } - }, - { - "defaultMessage": "!!!Zoom In", - "end": { - "column": 3, - "line": 77 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.zoomIn", - "start": { - "column": 10, - "line": 74 - } - }, - { - "defaultMessage": "!!!Zoom Out", - "end": { - "column": 3, - "line": 81 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.zoomOut", - "start": { - "column": 11, - "line": 78 - } - }, - { - "defaultMessage": "!!!Enter Full Screen", - "end": { - "column": 3, - "line": 85 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.enterFullScreen", - "start": { - "column": 19, - "line": 82 - } - }, - { - "defaultMessage": "!!!Exit Full Screen", - "end": { - "column": 3, - "line": 89 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.exitFullScreen", - "start": { - "column": 18, - "line": 86 - } - }, - { - "defaultMessage": "!!!Toggle Full Screen", - "end": { - "column": 3, - "line": 93 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.toggleFullScreen", - "start": { - "column": 20, - "line": 90 - } - }, - { - "defaultMessage": "!!!Toggle Developer Tools", - "end": { - "column": 3, - "line": 97 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.toggleDevTools", - "start": { - "column": 18, - "line": 94 - } - }, - { - "defaultMessage": "!!!Toggle Service Developer Tools", - "end": { - "column": 3, - "line": 101 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.toggleServiceDevTools", - "start": { - "column": 25, - "line": 98 - } - }, - { - "defaultMessage": "!!!Reload Service", - "end": { - "column": 3, - "line": 105 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.reloadService", - "start": { - "column": 17, - "line": 102 - } - }, - { - "defaultMessage": "!!!Reload Franz", - "end": { - "column": 3, - "line": 109 - }, - "file": "src/lib/Menu.js", - "id": "menu.view.reloadFranz", - "start": { - "column": 15, - "line": 106 - } - }, - { - "defaultMessage": "!!!Minimize", - "end": { - "column": 3, - "line": 113 - }, - "file": "src/lib/Menu.js", - "id": "menu.window.minimize", - "start": { - "column": 12, - "line": 110 - } - }, - { - "defaultMessage": "!!!Close", - "end": { - "column": 3, - "line": 117 - }, - "file": "src/lib/Menu.js", - "id": "menu.window.close", - "start": { - "column": 9, - "line": 114 - } - }, - { - "defaultMessage": "!!!Learn More", - "end": { - "column": 3, - "line": 121 - }, - "file": "src/lib/Menu.js", - "id": "menu.help.learnMore", - "start": { - "column": 13, - "line": 118 - } - }, - { - "defaultMessage": "!!!Changelog", - "end": { - "column": 3, - "line": 125 - }, - "file": "src/lib/Menu.js", - "id": "menu.help.changelog", - "start": { - "column": 13, - "line": 122 - } - }, - { - "defaultMessage": "!!!Support", - "end": { - "column": 3, - "line": 129 - }, - "file": "src/lib/Menu.js", - "id": "menu.help.support", - "start": { - "column": 11, - "line": 126 - } - }, - { - "defaultMessage": "!!!Terms of Service", - "end": { - "column": 3, - "line": 133 - }, - "file": "src/lib/Menu.js", - "id": "menu.help.tos", - "start": { - "column": 7, - "line": 130 - } - }, - { - "defaultMessage": "!!!Privacy Statement", - "end": { - "column": 3, - "line": 137 - }, - "file": "src/lib/Menu.js", - "id": "menu.help.privacy", - "start": { - "column": 11, - "line": 134 - } - }, - { - "defaultMessage": "!!!File", - "end": { - "column": 3, - "line": 141 - }, - "file": "src/lib/Menu.js", - "id": "menu.file", - "start": { - "column": 8, - "line": 138 - } - }, - { - "defaultMessage": "!!!View", - "end": { - "column": 3, - "line": 145 - }, - "file": "src/lib/Menu.js", - "id": "menu.view", - "start": { - "column": 8, - "line": 142 - } - }, - { - "defaultMessage": "!!!Services", - "end": { - "column": 3, - "line": 149 - }, - "file": "src/lib/Menu.js", - "id": "menu.services", - "start": { - "column": 12, - "line": 146 - } - }, - { - "defaultMessage": "!!!Window", - "end": { - "column": 3, - "line": 153 - }, - "file": "src/lib/Menu.js", - "id": "menu.window", - "start": { - "column": 10, - "line": 150 - } - }, - { - "defaultMessage": "!!!Help", - "end": { - "column": 3, - "line": 157 - }, - "file": "src/lib/Menu.js", - "id": "menu.help", - "start": { - "column": 8, - "line": 154 - } - }, - { - "defaultMessage": "!!!About Franz", - "end": { - "column": 3, - "line": 161 - }, - "file": "src/lib/Menu.js", - "id": "menu.app.about", - "start": { - "column": 9, - "line": 158 - } - }, - { - "defaultMessage": "!!!What's new?", - "end": { - "column": 3, - "line": 165 - }, - "file": "src/lib/Menu.js", - "id": "menu.app.announcement", - "start": { - "column": 16, - "line": 162 - } - }, - { - "defaultMessage": "!!!Settings", - "end": { - "column": 3, - "line": 169 - }, - "file": "src/lib/Menu.js", - "id": "menu.app.settings", - "start": { - "column": 12, - "line": 166 - } - }, - { - "defaultMessage": "!!!Hide", - "end": { - "column": 3, - "line": 173 - }, - "file": "src/lib/Menu.js", - "id": "menu.app.hide", - "start": { - "column": 8, - "line": 170 - } - }, - { - "defaultMessage": "!!!Hide Others", - "end": { - "column": 3, - "line": 177 - }, - "file": "src/lib/Menu.js", - "id": "menu.app.hideOthers", - "start": { - "column": 14, - "line": 174 - } - }, - { - "defaultMessage": "!!!Unhide", - "end": { - "column": 3, - "line": 181 - }, - "file": "src/lib/Menu.js", - "id": "menu.app.unhide", - "start": { - "column": 10, - "line": 178 - } - }, - { - "defaultMessage": "!!!Quit", - "end": { - "column": 3, - "line": 185 - }, - "file": "src/lib/Menu.js", - "id": "menu.app.quit", - "start": { - "column": 8, - "line": 182 - } - }, - { - "defaultMessage": "!!!Add New Service...", - "end": { - "column": 3, - "line": 189 - }, - "file": "src/lib/Menu.js", - "id": "menu.services.addNewService", - "start": { - "column": 17, - "line": 186 - } - }, - { - "defaultMessage": "!!!Add New Workspace...", - "end": { - "column": 3, - "line": 193 - }, - "file": "src/lib/Menu.js", - "id": "menu.workspaces.addNewWorkspace", - "start": { - "column": 19, - "line": 190 - } - }, - { - "defaultMessage": "!!!Open workspace drawer", - "end": { - "column": 3, - "line": 197 - }, - "file": "src/lib/Menu.js", - "id": "menu.workspaces.openWorkspaceDrawer", - "start": { - "column": 23, - "line": 194 - } - }, - { - "defaultMessage": "!!!Close workspace drawer", - "end": { - "column": 3, - "line": 201 - }, - "file": "src/lib/Menu.js", - "id": "menu.workspaces.closeWorkspaceDrawer", - "start": { - "column": 24, - "line": 198 - } - }, - { - "defaultMessage": "!!!Activate next service...", - "end": { - "column": 3, - "line": 205 - }, - "file": "src/lib/Menu.js", - "id": "menu.services.setNextServiceActive", - "start": { - "column": 23, - "line": 202 - } - }, - { - "defaultMessage": "!!!Activate previous service...", - "end": { - "column": 3, - "line": 209 - }, - "file": "src/lib/Menu.js", - "id": "menu.services.activatePreviousService", - "start": { - "column": 27, - "line": 206 - } - }, - { - "defaultMessage": "!!!Disable notifications & audio", - "end": { - "column": 3, - "line": 213 - }, - "file": "src/lib/Menu.js", - "id": "sidebar.muteApp", - "start": { - "column": 11, - "line": 210 - } - }, - { - "defaultMessage": "!!!Enable notifications & audio", - "end": { - "column": 3, - "line": 217 - }, - "file": "src/lib/Menu.js", - "id": "sidebar.unmuteApp", - "start": { - "column": 13, - "line": 214 - } - }, - { - "defaultMessage": "!!!Workspaces", - "end": { - "column": 3, - "line": 221 - }, - "file": "src/lib/Menu.js", - "id": "menu.workspaces", - "start": { - "column": 14, - "line": 218 - } - }, - { - "defaultMessage": "!!!Default", - "end": { - "column": 3, - "line": 225 - }, - "file": "src/lib/Menu.js", - "id": "menu.workspaces.defaultWorkspace", - "start": { - "column": 20, - "line": 222 - } - } - ], - "path": "src/lib/Menu.json" - } -] \ No newline at end of file diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 07602e61f..70b869557 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -164,6 +164,7 @@ "settings.app.headlineGeneral": "General", "settings.app.headlineLanguage": "Language", "settings.app.headlineUpdates": "Updates", + "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", "settings.app.restartRequired": "Changes require restart", "settings.app.subheadlineCache": "Cache", "settings.app.translationHelp": "Help us to translate Franz into your language.", @@ -319,4 +320,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/components/auth/Import.json b/src/i18n/messages/src/components/auth/Import.json deleted file mode 100644 index 264fc729b..000000000 --- a/src/i18n/messages/src/components/auth/Import.json +++ /dev/null @@ -1,54 +0,0 @@ -[ - { - "id": "import.headline", - "defaultMessage": "!!!Import your Franz 4 services", - "file": "src/components/auth/Import.js", - "start": { - "line": 13, - "column": 12 - }, - "end": { - "line": 16, - "column": 3 - } - }, - { - "id": "import.notSupportedHeadline", - "defaultMessage": "!!!Services not yet supported in Franz 5", - "file": "src/components/auth/Import.js", - "start": { - "line": 17, - "column": 24 - }, - "end": { - "line": 20, - "column": 3 - } - }, - { - "id": "import.submit.label", - "defaultMessage": "!!!Import {count} services", - "file": "src/components/auth/Import.js", - "start": { - "line": 21, - "column": 21 - }, - "end": { - "line": 24, - "column": 3 - } - }, - { - "id": "import.skip.label", - "defaultMessage": "!!!I want to add services manually", - "file": "src/components/auth/Import.js", - "start": { - "line": 25, - "column": 19 - }, - "end": { - "line": 28, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Invite.json b/src/i18n/messages/src/components/auth/Invite.json deleted file mode 100644 index 57c9bddcf..000000000 --- a/src/i18n/messages/src/components/auth/Invite.json +++ /dev/null @@ -1,93 +0,0 @@ -[ - { - "id": "settings.invite.headline", - "defaultMessage": "!!!Invite Friends", - "file": "src/components/auth/Invite.js", - "start": { - "line": 16, - "column": 20 - }, - "end": { - "line": 19, - "column": 3 - } - }, - { - "id": "invite.headline.friends", - "defaultMessage": "!!!Invite 3 of your friends or colleagues", - "file": "src/components/auth/Invite.js", - "start": { - "line": 20, - "column": 12 - }, - "end": { - "line": 23, - "column": 3 - } - }, - { - "id": "invite.name.label", - "defaultMessage": "!!!Name", - "file": "src/components/auth/Invite.js", - "start": { - "line": 24, - "column": 13 - }, - "end": { - "line": 27, - "column": 3 - } - }, - { - "id": "invite.email.label", - "defaultMessage": "!!!Email address", - "file": "src/components/auth/Invite.js", - "start": { - "line": 28, - "column": 14 - }, - "end": { - "line": 31, - "column": 3 - } - }, - { - "id": "invite.submit.label", - "defaultMessage": "!!!Send invites", - "file": "src/components/auth/Invite.js", - "start": { - "line": 32, - "column": 21 - }, - "end": { - "line": 35, - "column": 3 - } - }, - { - "id": "invite.skip.label", - "defaultMessage": "!!!I want to do this later", - "file": "src/components/auth/Invite.js", - "start": { - "line": 36, - "column": 19 - }, - "end": { - "line": 39, - "column": 3 - } - }, - { - "id": "invite.successInfo", - "defaultMessage": "!!!Invitations sent successfully", - "file": "src/components/auth/Invite.js", - "start": { - "line": 40, - "column": 21 - }, - "end": { - "line": 43, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Login.json b/src/i18n/messages/src/components/auth/Login.json deleted file mode 100644 index 177f6000b..000000000 --- a/src/i18n/messages/src/components/auth/Login.json +++ /dev/null @@ -1,119 +0,0 @@ -[ - { - "id": "login.headline", - "defaultMessage": "!!!Sign in", - "file": "src/components/auth/Login.js", - "start": { - "line": 17, - "column": 12 - }, - "end": { - "line": 20, - "column": 3 - } - }, - { - "id": "login.email.label", - "defaultMessage": "!!!Email address", - "file": "src/components/auth/Login.js", - "start": { - "line": 21, - "column": 14 - }, - "end": { - "line": 24, - "column": 3 - } - }, - { - "id": "login.password.label", - "defaultMessage": "!!!Password", - "file": "src/components/auth/Login.js", - "start": { - "line": 25, - "column": 17 - }, - "end": { - "line": 28, - "column": 3 - } - }, - { - "id": "login.submit.label", - "defaultMessage": "!!!Sign in", - "file": "src/components/auth/Login.js", - "start": { - "line": 29, - "column": 21 - }, - "end": { - "line": 32, - "column": 3 - } - }, - { - "id": "login.invalidCredentials", - "defaultMessage": "!!!Email or password not valid", - "file": "src/components/auth/Login.js", - "start": { - "line": 33, - "column": 22 - }, - "end": { - "line": 36, - "column": 3 - } - }, - { - "id": "login.tokenExpired", - "defaultMessage": "!!!Your session expired, please login again.", - "file": "src/components/auth/Login.js", - "start": { - "line": 37, - "column": 16 - }, - "end": { - "line": 40, - "column": 3 - } - }, - { - "id": "login.serverLogout", - "defaultMessage": "!!!Your session expired, please login again.", - "file": "src/components/auth/Login.js", - "start": { - "line": 41, - "column": 16 - }, - "end": { - "line": 44, - "column": 3 - } - }, - { - "id": "login.link.signup", - "defaultMessage": "!!!Create a free account", - "file": "src/components/auth/Login.js", - "start": { - "line": 45, - "column": 14 - }, - "end": { - "line": 48, - "column": 3 - } - }, - { - "id": "login.link.password", - "defaultMessage": "!!!Forgot password", - "file": "src/components/auth/Login.js", - "start": { - "line": 49, - "column": 16 - }, - "end": { - "line": 52, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Password.json b/src/i18n/messages/src/components/auth/Password.json deleted file mode 100644 index f335b3acb..000000000 --- a/src/i18n/messages/src/components/auth/Password.json +++ /dev/null @@ -1,93 +0,0 @@ -[ - { - "id": "password.headline", - "defaultMessage": "!!!Forgot password", - "file": "src/components/auth/Password.js", - "start": { - "line": 14, - "column": 12 - }, - "end": { - "line": 17, - "column": 3 - } - }, - { - "id": "password.email.label", - "defaultMessage": "!!!Email address", - "file": "src/components/auth/Password.js", - "start": { - "line": 18, - "column": 14 - }, - "end": { - "line": 21, - "column": 3 - } - }, - { - "id": "password.submit.label", - "defaultMessage": "!!!Submit", - "file": "src/components/auth/Password.js", - "start": { - "line": 22, - "column": 21 - }, - "end": { - "line": 25, - "column": 3 - } - }, - { - "id": "password.successInfo", - "defaultMessage": "!!!Your new password was sent to your email address", - "file": "src/components/auth/Password.js", - "start": { - "line": 26, - "column": 15 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "password.noUser", - "defaultMessage": "!!!No user affiliated with that email address", - "file": "src/components/auth/Password.js", - "start": { - "line": 30, - "column": 10 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "password.link.signup", - "defaultMessage": "!!!Create a free account", - "file": "src/components/auth/Password.js", - "start": { - "line": 34, - "column": 14 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "password.link.login", - "defaultMessage": "!!!Sign in to your account", - "file": "src/components/auth/Password.js", - "start": { - "line": 38, - "column": 13 - }, - "end": { - "line": 41, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json deleted file mode 100644 index f711a55b4..000000000 --- a/src/i18n/messages/src/components/auth/Pricing.json +++ /dev/null @@ -1,54 +0,0 @@ -[ - { - "id": "pricing.headline", - "defaultMessage": "!!!Support Franz", - "file": "src/components/auth/Pricing.js", - "start": { - "line": 13, - "column": 12 - }, - "end": { - "line": 16, - "column": 3 - } - }, - { - "id": "pricing.support.label", - "defaultMessage": "!!!Select your support plan", - "file": "src/components/auth/Pricing.js", - "start": { - "line": 17, - "column": 23 - }, - "end": { - "line": 20, - "column": 3 - } - }, - { - "id": "pricing.submit.label", - "defaultMessage": "!!!Support the development of Franz", - "file": "src/components/auth/Pricing.js", - "start": { - "line": 21, - "column": 21 - }, - "end": { - "line": 24, - "column": 3 - } - }, - { - "id": "pricing.link.skipPayment", - "defaultMessage": "!!!I don't want to support the development of Franz.", - "file": "src/components/auth/Pricing.js", - "start": { - "line": 25, - "column": 15 - }, - "end": { - "line": 28, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Signup.json b/src/i18n/messages/src/components/auth/Signup.json deleted file mode 100644 index a09745048..000000000 --- a/src/i18n/messages/src/components/auth/Signup.json +++ /dev/null @@ -1,158 +0,0 @@ -[ - { - "id": "signup.headline", - "defaultMessage": "!!!Sign up", - "file": "src/components/auth/Signup.js", - "start": { - "line": 18, - "column": 12 - }, - "end": { - "line": 21, - "column": 3 - } - }, - { - "id": "signup.firstname.label", - "defaultMessage": "!!!Firstname", - "file": "src/components/auth/Signup.js", - "start": { - "line": 22, - "column": 18 - }, - "end": { - "line": 25, - "column": 3 - } - }, - { - "id": "signup.lastname.label", - "defaultMessage": "!!!Lastname", - "file": "src/components/auth/Signup.js", - "start": { - "line": 26, - "column": 17 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "signup.email.label", - "defaultMessage": "!!!Email address", - "file": "src/components/auth/Signup.js", - "start": { - "line": 30, - "column": 14 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "signup.company.label", - "defaultMessage": "!!!Company", - "file": "src/components/auth/Signup.js", - "start": { - "line": 34, - "column": 16 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "signup.password.label", - "defaultMessage": "!!!Password", - "file": "src/components/auth/Signup.js", - "start": { - "line": 38, - "column": 17 - }, - "end": { - "line": 41, - "column": 3 - } - }, - { - "id": "signup.legal.info", - "defaultMessage": "!!!By creating a Franz account you accept the", - "file": "src/components/auth/Signup.js", - "start": { - "line": 42, - "column": 13 - }, - "end": { - "line": 45, - "column": 3 - } - }, - { - "id": "signup.legal.terms", - "defaultMessage": "!!!Terms of service", - "file": "src/components/auth/Signup.js", - "start": { - "line": 46, - "column": 9 - }, - "end": { - "line": 49, - "column": 3 - } - }, - { - "id": "signup.legal.privacy", - "defaultMessage": "!!!Privacy Statement", - "file": "src/components/auth/Signup.js", - "start": { - "line": 50, - "column": 11 - }, - "end": { - "line": 53, - "column": 3 - } - }, - { - "id": "signup.submit.label", - "defaultMessage": "!!!Create account", - "file": "src/components/auth/Signup.js", - "start": { - "line": 54, - "column": 21 - }, - "end": { - "line": 57, - "column": 3 - } - }, - { - "id": "signup.link.login", - "defaultMessage": "!!!Already have an account, sign in?", - "file": "src/components/auth/Signup.js", - "start": { - "line": 58, - "column": 13 - }, - "end": { - "line": 61, - "column": 3 - } - }, - { - "id": "signup.emailDuplicate", - "defaultMessage": "!!!A user with that email address already exists", - "file": "src/components/auth/Signup.js", - "start": { - "line": 62, - "column": 18 - }, - "end": { - "line": 65, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Welcome.json b/src/i18n/messages/src/components/auth/Welcome.json deleted file mode 100644 index b4d2ce689..000000000 --- a/src/i18n/messages/src/components/auth/Welcome.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "id": "welcome.signupButton", - "defaultMessage": "!!!Create a free account", - "file": "src/components/auth/Welcome.js", - "start": { - "line": 9, - "column": 16 - }, - "end": { - "line": 12, - "column": 3 - } - }, - { - "id": "welcome.loginButton", - "defaultMessage": "!!!Login to your account", - "file": "src/components/auth/Welcome.js", - "start": { - "line": 13, - "column": 15 - }, - "end": { - "line": 16, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json deleted file mode 100644 index 4dd354afc..000000000 --- a/src/i18n/messages/src/components/layout/AppLayout.json +++ /dev/null @@ -1,80 +0,0 @@ -[ - { - "id": "infobar.servicesUpdated", - "defaultMessage": "!!!Your services have been updated.", - "file": "src/components/layout/AppLayout.js", - "start": { - "line": 26, - "column": 19 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "infobar.updateAvailable", - "defaultMessage": "!!!A new update for Franz is available.", - "file": "src/components/layout/AppLayout.js", - "start": { - "line": 30, - "column": 19 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "infobar.buttonReloadServices", - "defaultMessage": "!!!Reload services", - "file": "src/components/layout/AppLayout.js", - "start": { - "line": 34, - "column": 24 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "infobar.buttonChangelog", - "defaultMessage": "!!!Changelog", - "file": "src/components/layout/AppLayout.js", - "start": { - "line": 38, - "column": 13 - }, - "end": { - "line": 41, - "column": 3 - } - }, - { - "id": "infobar.buttonInstallUpdate", - "defaultMessage": "!!!Restart & install update", - "file": "src/components/layout/AppLayout.js", - "start": { - "line": 42, - "column": 23 - }, - "end": { - "line": 45, - "column": 3 - } - }, - { - "id": "infobar.requiredRequestsFailed", - "defaultMessage": "!!!Could not load services and user information", - "file": "src/components/layout/AppLayout.js", - "start": { - "line": 46, - "column": 26 - }, - "end": { - "line": 49, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json deleted file mode 100644 index d67adc96e..000000000 --- a/src/i18n/messages/src/components/layout/Sidebar.json +++ /dev/null @@ -1,80 +0,0 @@ -[ - { - "id": "sidebar.settings", - "defaultMessage": "!!!Settings", - "file": "src/components/layout/Sidebar.js", - "start": { - "line": 13, - "column": 12 - }, - "end": { - "line": 16, - "column": 3 - } - }, - { - "id": "sidebar.addNewService", - "defaultMessage": "!!!Add new service", - "file": "src/components/layout/Sidebar.js", - "start": { - "line": 17, - "column": 17 - }, - "end": { - "line": 20, - "column": 3 - } - }, - { - "id": "sidebar.muteApp", - "defaultMessage": "!!!Disable notifications & audio", - "file": "src/components/layout/Sidebar.js", - "start": { - "line": 21, - "column": 8 - }, - "end": { - "line": 24, - "column": 3 - } - }, - { - "id": "sidebar.unmuteApp", - "defaultMessage": "!!!Enable notifications & audio", - "file": "src/components/layout/Sidebar.js", - "start": { - "line": 25, - "column": 10 - }, - "end": { - "line": 28, - "column": 3 - } - }, - { - "id": "sidebar.openWorkspaceDrawer", - "defaultMessage": "!!!Open workspace drawer", - "file": "src/components/layout/Sidebar.js", - "start": { - "line": 29, - "column": 23 - }, - "end": { - "line": 32, - "column": 3 - } - }, - { - "id": "sidebar.closeWorkspaceDrawer", - "defaultMessage": "!!!Close workspace drawer", - "file": "src/components/layout/Sidebar.js", - "start": { - "line": 33, - "column": 24 - }, - "end": { - "line": 36, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json b/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json deleted file mode 100644 index c8fe802df..000000000 --- a/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "id": "service.errorHandler.headline", - "defaultMessage": "!!!Oh no!", - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "start": { - "line": 12, - "column": 12 - }, - "end": { - "line": 15, - "column": 3 - } - }, - { - "id": "service.errorHandler.text", - "defaultMessage": "!!!{name} has failed to load.", - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "start": { - "line": 16, - "column": 8 - }, - "end": { - "line": 19, - "column": 3 - } - }, - { - "id": "service.errorHandler.action", - "defaultMessage": "!!!Reload {name}", - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "start": { - "line": 20, - "column": 10 - }, - "end": { - "line": 23, - "column": 3 - } - }, - { - "id": "service.errorHandler.editAction", - "defaultMessage": "!!!Edit {name}", - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "start": { - "line": 24, - "column": 14 - }, - "end": { - "line": 27, - "column": 3 - } - }, - { - "id": "service.errorHandler.message", - "defaultMessage": "!!!Error:", - "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", - "start": { - "line": 28, - "column": 16 - }, - "end": { - "line": 31, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/content/ServiceDisabled.json b/src/i18n/messages/src/components/services/content/ServiceDisabled.json deleted file mode 100644 index 8bfad28c7..000000000 --- a/src/i18n/messages/src/components/services/content/ServiceDisabled.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "id": "service.disabledHandler.headline", - "defaultMessage": "!!!{name} is disabled", - "file": "src/components/services/content/ServiceDisabled.js", - "start": { - "line": 9, - "column": 12 - }, - "end": { - "line": 12, - "column": 3 - } - }, - { - "id": "service.disabledHandler.action", - "defaultMessage": "!!!Enable {name}", - "file": "src/components/services/content/ServiceDisabled.js", - "start": { - "line": 13, - "column": 10 - }, - "end": { - "line": 16, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/content/Services.json b/src/i18n/messages/src/components/services/content/Services.json deleted file mode 100644 index 884ab0c90..000000000 --- a/src/i18n/messages/src/components/services/content/Services.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "id": "services.welcome", - "defaultMessage": "!!!Welcome to Franz", - "file": "src/components/services/content/Services.js", - "start": { - "line": 11, - "column": 11 - }, - "end": { - "line": 14, - "column": 3 - } - }, - { - "id": "services.getStarted", - "defaultMessage": "!!!Get started", - "file": "src/components/services/content/Services.js", - "start": { - "line": 15, - "column": 14 - }, - "end": { - "line": 18, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json b/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json deleted file mode 100644 index c3d6c41a5..000000000 --- a/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json +++ /dev/null @@ -1,54 +0,0 @@ -[ - { - "id": "service.crashHandler.headline", - "defaultMessage": "!!!Oh no!", - "file": "src/components/services/content/WebviewCrashHandler.js", - "start": { - "line": 10, - "column": 12 - }, - "end": { - "line": 13, - "column": 3 - } - }, - { - "id": "service.crashHandler.text", - "defaultMessage": "!!!{name} has caused an error.", - "file": "src/components/services/content/WebviewCrashHandler.js", - "start": { - "line": 14, - "column": 8 - }, - "end": { - "line": 17, - "column": 3 - } - }, - { - "id": "service.crashHandler.action", - "defaultMessage": "!!!Reload {name}", - "file": "src/components/services/content/WebviewCrashHandler.js", - "start": { - "line": 18, - "column": 10 - }, - "end": { - "line": 21, - "column": 3 - } - }, - { - "id": "service.crashHandler.autoReload", - "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds", - "file": "src/components/services/content/WebviewCrashHandler.js", - "start": { - "line": 22, - "column": 14 - }, - "end": { - "line": 25, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/tabs/TabItem.json b/src/i18n/messages/src/components/services/tabs/TabItem.json deleted file mode 100644 index 08a07845c..000000000 --- a/src/i18n/messages/src/components/services/tabs/TabItem.json +++ /dev/null @@ -1,119 +0,0 @@ -[ - { - "id": "tabs.item.reload", - "defaultMessage": "!!!Reload", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 15, - "column": 10 - }, - "end": { - "line": 18, - "column": 3 - } - }, - { - "id": "tabs.item.edit", - "defaultMessage": "!!!Edit", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 19, - "column": 8 - }, - "end": { - "line": 22, - "column": 3 - } - }, - { - "id": "tabs.item.disableNotifications", - "defaultMessage": "!!!Disable notifications", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 23, - "column": 24 - }, - "end": { - "line": 26, - "column": 3 - } - }, - { - "id": "tabs.item.enableNotification", - "defaultMessage": "!!!Enable notifications", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 27, - "column": 23 - }, - "end": { - "line": 30, - "column": 3 - } - }, - { - "id": "tabs.item.disableAudio", - "defaultMessage": "!!!Disable audio", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 31, - "column": 16 - }, - "end": { - "line": 34, - "column": 3 - } - }, - { - "id": "tabs.item.enableAudio", - "defaultMessage": "!!!Enable audio", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 35, - "column": 15 - }, - "end": { - "line": 38, - "column": 3 - } - }, - { - "id": "tabs.item.disableService", - "defaultMessage": "!!!Disable Service", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 39, - "column": 18 - }, - "end": { - "line": 42, - "column": 3 - } - }, - { - "id": "tabs.item.enableService", - "defaultMessage": "!!!Enable Service", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 43, - "column": 17 - }, - "end": { - "line": 46, - "column": 3 - } - }, - { - "id": "tabs.item.deleteService", - "defaultMessage": "!!!Delete Service", - "file": "src/components/services/tabs/TabItem.js", - "start": { - "line": 47, - "column": 17 - }, - "end": { - "line": 50, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/account/AccountDashboard.json b/src/i18n/messages/src/components/settings/account/AccountDashboard.json deleted file mode 100644 index 603950395..000000000 --- a/src/i18n/messages/src/components/settings/account/AccountDashboard.json +++ /dev/null @@ -1,197 +0,0 @@ -[ - { - "id": "settings.account.headline", - "defaultMessage": "!!!Account", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 15, - "column": 12 - }, - "end": { - "line": 18, - "column": 3 - } - }, - { - "id": "settings.account.headlineSubscription", - "defaultMessage": "!!!Your Subscription", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 19, - "column": 24 - }, - "end": { - "line": 22, - "column": 3 - } - }, - { - "id": "settings.account.headlineUpgrade", - "defaultMessage": "!!!Upgrade your Account", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 23, - "column": 19 - }, - "end": { - "line": 26, - "column": 3 - } - }, - { - "id": "settings.account.headlineInvoices", - "defaultMessage": "!!Invoices", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 27, - "column": 20 - }, - "end": { - "line": 30, - "column": 3 - } - }, - { - "id": "settings.account.headlineDangerZone", - "defaultMessage": "!!Danger Zone", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 31, - "column": 22 - }, - "end": { - "line": 34, - "column": 3 - } - }, - { - "id": "settings.account.manageSubscription.label", - "defaultMessage": "!!!Manage your subscription", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 35, - "column": 33 - }, - "end": { - "line": 38, - "column": 3 - } - }, - { - "id": "settings.account.accountType.basic", - "defaultMessage": "!!!Basic Account", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 39, - "column": 20 - }, - "end": { - "line": 42, - "column": 3 - } - }, - { - "id": "settings.account.accountType.premium", - "defaultMessage": "!!!Premium Supporter Account", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 43, - "column": 22 - }, - "end": { - "line": 46, - "column": 3 - } - }, - { - "id": "settings.account.account.editButton", - "defaultMessage": "!!!Edit Account", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 47, - "column": 21 - }, - "end": { - "line": 50, - "column": 3 - } - }, - { - "id": "settings.account.invoiceDownload", - "defaultMessage": "!!!Download", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 51, - "column": 19 - }, - "end": { - "line": 54, - "column": 3 - } - }, - { - "id": "settings.account.userInfoRequestFailed", - "defaultMessage": "!!!Could not load user information", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 55, - "column": 25 - }, - "end": { - "line": 58, - "column": 3 - } - }, - { - "id": "settings.account.tryReloadUserInfoRequest", - "defaultMessage": "!!!Try again", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 59, - "column": 28 - }, - "end": { - "line": 62, - "column": 3 - } - }, - { - "id": "settings.account.deleteAccount", - "defaultMessage": "!!!Delete account", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 63, - "column": 17 - }, - "end": { - "line": 66, - "column": 3 - } - }, - { - "id": "settings.account.deleteInfo", - "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 67, - "column": 14 - }, - "end": { - "line": 70, - "column": 3 - } - }, - { - "id": "settings.account.deleteEmailSent", - "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", - "file": "src/components/settings/account/AccountDashboard.js", - "start": { - "line": 71, - "column": 19 - }, - "end": { - "line": 74, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json deleted file mode 100644 index 77b0ed8a4..000000000 --- a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json +++ /dev/null @@ -1,93 +0,0 @@ -[ - { - "id": "settings.navigation.availableServices", - "defaultMessage": "!!!Available services", - "file": "src/components/settings/navigation/SettingsNavigation.js", - "start": { - "line": 12, - "column": 21 - }, - "end": { - "line": 15, - "column": 3 - } - }, - { - "id": "settings.navigation.yourServices", - "defaultMessage": "!!!Your services", - "file": "src/components/settings/navigation/SettingsNavigation.js", - "start": { - "line": 16, - "column": 16 - }, - "end": { - "line": 19, - "column": 3 - } - }, - { - "id": "settings.navigation.yourWorkspaces", - "defaultMessage": "!!!Your workspaces", - "file": "src/components/settings/navigation/SettingsNavigation.js", - "start": { - "line": 20, - "column": 18 - }, - "end": { - "line": 23, - "column": 3 - } - }, - { - "id": "settings.navigation.account", - "defaultMessage": "!!!Account", - "file": "src/components/settings/navigation/SettingsNavigation.js", - "start": { - "line": 24, - "column": 11 - }, - "end": { - "line": 27, - "column": 3 - } - }, - { - "id": "settings.navigation.settings", - "defaultMessage": "!!!Settings", - "file": "src/components/settings/navigation/SettingsNavigation.js", - "start": { - "line": 28, - "column": 12 - }, - "end": { - "line": 31, - "column": 3 - } - }, - { - "id": "settings.navigation.inviteFriends", - "defaultMessage": "!!!Invite Friends", - "file": "src/components/settings/navigation/SettingsNavigation.js", - "start": { - "line": 32, - "column": 17 - }, - "end": { - "line": 35, - "column": 3 - } - }, - { - "id": "settings.navigation.logout", - "defaultMessage": "!!!Logout", - "file": "src/components/settings/navigation/SettingsNavigation.js", - "start": { - "line": 36, - "column": 10 - }, - "end": { - "line": 39, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json deleted file mode 100644 index 7d9ed3283..000000000 --- a/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json +++ /dev/null @@ -1,106 +0,0 @@ -[ - { - "id": "settings.recipes.headline", - "defaultMessage": "!!!Available Services", - "file": "src/components/settings/recipes/RecipesDashboard.js", - "start": { - "line": 15, - "column": 12 - }, - "end": { - "line": 18, - "column": 3 - } - }, - { - "id": "settings.searchService", - "defaultMessage": "!!!Search service", - "file": "src/components/settings/recipes/RecipesDashboard.js", - "start": { - "line": 19, - "column": 17 - }, - "end": { - "line": 22, - "column": 3 - } - }, - { - "id": "settings.recipes.mostPopular", - "defaultMessage": "!!!Most popular", - "file": "src/components/settings/recipes/RecipesDashboard.js", - "start": { - "line": 23, - "column": 22 - }, - "end": { - "line": 26, - "column": 3 - } - }, - { - "id": "settings.recipes.all", - "defaultMessage": "!!!All services", - "file": "src/components/settings/recipes/RecipesDashboard.js", - "start": { - "line": 27, - "column": 14 - }, - "end": { - "line": 30, - "column": 3 - } - }, - { - "id": "settings.recipes.dev", - "defaultMessage": "!!!Development", - "file": "src/components/settings/recipes/RecipesDashboard.js", - "start": { - "line": 31, - "column": 14 - }, - "end": { - "line": 34, - "column": 3 - } - }, - { - "id": "settings.recipes.nothingFound", - "defaultMessage": "!!!Sorry, but no service matched your search term.", - "file": "src/components/settings/recipes/RecipesDashboard.js", - "start": { - "line": 35, - "column": 16 - }, - "end": { - "line": 38, - "column": 3 - } - }, - { - "id": "settings.recipes.servicesSuccessfulAddedInfo", - "defaultMessage": "!!!Service successfully added", - "file": "src/components/settings/recipes/RecipesDashboard.js", - "start": { - "line": 39, - "column": 31 - }, - "end": { - "line": 42, - "column": 3 - } - }, - { - "id": "settings.recipes.missingService", - "defaultMessage": "!!!Missing a service?", - "file": "src/components/settings/recipes/RecipesDashboard.js", - "start": { - "line": 43, - "column": 18 - }, - "end": { - "line": 46, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/services/EditServiceForm.json b/src/i18n/messages/src/components/settings/services/EditServiceForm.json deleted file mode 100644 index 42b741b7a..000000000 --- a/src/i18n/messages/src/components/settings/services/EditServiceForm.json +++ /dev/null @@ -1,288 +0,0 @@ -[ - { - "id": "settings.service.form.saveButton", - "defaultMessage": "!!!Save service", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 22, - "column": 15 - }, - "end": { - "line": 25, - "column": 3 - } - }, - { - "id": "settings.service.form.deleteButton", - "defaultMessage": "!!!Delete Service", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 26, - "column": 17 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "settings.service.form.availableServices", - "defaultMessage": "!!!Available services", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 30, - "column": 21 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "settings.service.form.yourServices", - "defaultMessage": "!!!Your services", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 34, - "column": 16 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "settings.service.form.addServiceHeadline", - "defaultMessage": "!!!Add {name}", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 38, - "column": 22 - }, - "end": { - "line": 41, - "column": 3 - } - }, - { - "id": "settings.service.form.editServiceHeadline", - "defaultMessage": "!!!Edit {name}", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 42, - "column": 23 - }, - "end": { - "line": 45, - "column": 3 - } - }, - { - "id": "settings.service.form.tabHosted", - "defaultMessage": "!!!Hosted", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 46, - "column": 13 - }, - "end": { - "line": 49, - "column": 3 - } - }, - { - "id": "settings.service.form.tabOnPremise", - "defaultMessage": "!!!Self hosted ⭐️", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 50, - "column": 16 - }, - "end": { - "line": 53, - "column": 3 - } - }, - { - "id": "settings.service.form.useHostedService", - "defaultMessage": "!!!Use the hosted {name} service.", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 54, - "column": 20 - }, - "end": { - "line": 57, - "column": 3 - } - }, - { - "id": "settings.service.form.customUrlValidationError", - "defaultMessage": "!!!Could not validate custom {name} server.", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 58, - "column": 28 - }, - "end": { - "line": 61, - "column": 3 - } - }, - { - "id": "settings.service.form.customUrlPremiumInfo", - "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 62, - "column": 24 - }, - "end": { - "line": 65, - "column": 3 - } - }, - { - "id": "settings.service.form.customUrlUpgradeAccount", - "defaultMessage": "!!!Upgrade your account", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 66, - "column": 27 - }, - "end": { - "line": 69, - "column": 3 - } - }, - { - "id": "settings.service.form.indirectMessageInfo", - "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 70, - "column": 23 - }, - "end": { - "line": 73, - "column": 3 - } - }, - { - "id": "settings.service.form.isMutedInfo", - "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 74, - "column": 15 - }, - "end": { - "line": 77, - "column": 3 - } - }, - { - "id": "settings.service.form.headlineNotifications", - "defaultMessage": "!!!Notifications", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 78, - "column": 25 - }, - "end": { - "line": 81, - "column": 3 - } - }, - { - "id": "settings.service.form.headlineBadges", - "defaultMessage": "!!!Unread message badges", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 82, - "column": 18 - }, - "end": { - "line": 85, - "column": 3 - } - }, - { - "id": "settings.service.form.headlineGeneral", - "defaultMessage": "!!!General", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 86, - "column": 19 - }, - "end": { - "line": 89, - "column": 3 - } - }, - { - "id": "settings.service.form.iconDelete", - "defaultMessage": "!!!Delete", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 90, - "column": 14 - }, - "end": { - "line": 93, - "column": 3 - } - }, - { - "id": "settings.service.form.iconUpload", - "defaultMessage": "!!!Drop your image, or click here", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 94, - "column": 14 - }, - "end": { - "line": 97, - "column": 3 - } - }, - { - "id": "settings.service.form.proxy.headline", - "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 98, - "column": 17 - }, - "end": { - "line": 101, - "column": 3 - } - }, - { - "id": "settings.service.form.proxy.restartInfo", - "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 102, - "column": 20 - }, - "end": { - "line": 105, - "column": 3 - } - }, - { - "id": "settings.service.form.proxy.info", - "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", - "file": "src/components/settings/services/EditServiceForm.js", - "start": { - "line": 106, - "column": 13 - }, - "end": { - "line": 109, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/services/ServiceError.json b/src/i18n/messages/src/components/settings/services/ServiceError.json deleted file mode 100644 index 648fc5b3e..000000000 --- a/src/i18n/messages/src/components/settings/services/ServiceError.json +++ /dev/null @@ -1,54 +0,0 @@ -[ - { - "id": "settings.service.error.headline", - "defaultMessage": "!!!Error", - "file": "src/components/settings/services/ServiceError.js", - "start": { - "line": 10, - "column": 12 - }, - "end": { - "line": 13, - "column": 3 - } - }, - { - "id": "settings.service.error.goBack", - "defaultMessage": "!!!Back to services", - "file": "src/components/settings/services/ServiceError.js", - "start": { - "line": 14, - "column": 10 - }, - "end": { - "line": 17, - "column": 3 - } - }, - { - "id": "settings.service.form.availableServices", - "defaultMessage": "!!!Available services", - "file": "src/components/settings/services/ServiceError.js", - "start": { - "line": 18, - "column": 21 - }, - "end": { - "line": 21, - "column": 3 - } - }, - { - "id": "settings.service.error.message", - "defaultMessage": "!!!Could not load service recipe.", - "file": "src/components/settings/services/ServiceError.js", - "start": { - "line": 22, - "column": 16 - }, - "end": { - "line": 25, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/services/ServiceItem.json b/src/i18n/messages/src/components/settings/services/ServiceItem.json deleted file mode 100644 index ffea8b9e1..000000000 --- a/src/i18n/messages/src/components/settings/services/ServiceItem.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "id": "settings.services.tooltip.isDisabled", - "defaultMessage": "!!!Service is disabled", - "file": "src/components/settings/services/ServiceItem.js", - "start": { - "line": 11, - "column": 21 - }, - "end": { - "line": 14, - "column": 3 - } - }, - { - "id": "settings.services.tooltip.notificationsDisabled", - "defaultMessage": "!!!Notifications are disabled", - "file": "src/components/settings/services/ServiceItem.js", - "start": { - "line": 15, - "column": 32 - }, - "end": { - "line": 18, - "column": 3 - } - }, - { - "id": "settings.services.tooltip.isMuted", - "defaultMessage": "!!!All sounds are muted", - "file": "src/components/settings/services/ServiceItem.js", - "start": { - "line": 19, - "column": 18 - }, - "end": { - "line": 22, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/services/ServicesDashboard.json b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json deleted file mode 100644 index 3803c6512..000000000 --- a/src/i18n/messages/src/components/settings/services/ServicesDashboard.json +++ /dev/null @@ -1,119 +0,0 @@ -[ - { - "id": "settings.services.headline", - "defaultMessage": "!!!Your services", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 14, - "column": 12 - }, - "end": { - "line": 17, - "column": 3 - } - }, - { - "id": "settings.searchService", - "defaultMessage": "!!!Search service", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 18, - "column": 17 - }, - "end": { - "line": 21, - "column": 3 - } - }, - { - "id": "settings.services.noServicesAdded", - "defaultMessage": "!!!You haven't added any services yet.", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 22, - "column": 19 - }, - "end": { - "line": 25, - "column": 3 - } - }, - { - "id": "settings.recipes.nothingFound", - "defaultMessage": "!!!Sorry, but no service matched your search term.", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 26, - "column": 18 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "settings.services.discoverServices", - "defaultMessage": "!!!Discover services", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 30, - "column": 20 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "settings.services.servicesRequestFailed", - "defaultMessage": "!!!Could not load your services", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 34, - "column": 25 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "settings.account.tryReloadServices", - "defaultMessage": "!!!Try again", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 38, - "column": 21 - }, - "end": { - "line": 41, - "column": 3 - } - }, - { - "id": "settings.services.updatedInfo", - "defaultMessage": "!!!Your changes have been saved", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 42, - "column": 15 - }, - "end": { - "line": 45, - "column": 3 - } - }, - { - "id": "settings.services.deletedInfo", - "defaultMessage": "!!!Service has been deleted", - "file": "src/components/settings/services/ServicesDashboard.js", - "start": { - "line": 46, - "column": 15 - }, - "end": { - "line": 49, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json deleted file mode 100644 index c64f477be..000000000 --- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json +++ /dev/null @@ -1,223 +0,0 @@ -[ - { - "id": "settings.app.headline", - "defaultMessage": "!!!Settings", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 16, - "column": 12 - }, - "end": { - "line": 19, - "column": 3 - } - }, - { - "id": "settings.app.headlineGeneral", - "defaultMessage": "!!!General", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 20, - "column": 19 - }, - "end": { - "line": 23, - "column": 3 - } - }, - { - "id": "settings.app.headlineLanguage", - "defaultMessage": "!!!Language", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 24, - "column": 20 - }, - "end": { - "line": 27, - "column": 3 - } - }, - { - "id": "settings.app.headlineUpdates", - "defaultMessage": "!!!Updates", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 28, - "column": 19 - }, - "end": { - "line": 31, - "column": 3 - } - }, - { - "id": "settings.app.headlineAppearance", - "defaultMessage": "!!!Appearance", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 32, - "column": 22 - }, - "end": { - "line": 35, - "column": 3 - } - }, - { - "id": "settings.app.headlineAdvanced", - "defaultMessage": "!!!Advanced", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 36, - "column": 20 - }, - "end": { - "line": 39, - "column": 3 - } - }, - { - "id": "settings.app.translationHelp", - "defaultMessage": "!!!Help us to translate Franz into your language.", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 40, - "column": 19 - }, - "end": { - "line": 43, - "column": 3 - } - }, - { - "id": "settings.app.subheadlineCache", - "defaultMessage": "!!!Cache", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 44, - "column": 20 - }, - "end": { - "line": 47, - "column": 3 - } - }, - { - "id": "settings.app.cacheInfo", - "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 48, - "column": 13 - }, - "end": { - "line": 51, - "column": 3 - } - }, - { - "id": "settings.app.buttonClearAllCache", - "defaultMessage": "!!!Clear cache", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 52, - "column": 23 - }, - "end": { - "line": 55, - "column": 3 - } - }, - { - "id": "settings.app.buttonSearchForUpdate", - "defaultMessage": "!!!Check for updates", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 56, - "column": 25 - }, - "end": { - "line": 59, - "column": 3 - } - }, - { - "id": "settings.app.buttonInstallUpdate", - "defaultMessage": "!!!Restart & install update", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 60, - "column": 23 - }, - "end": { - "line": 63, - "column": 3 - } - }, - { - "id": "settings.app.updateStatusSearching", - "defaultMessage": "!!!Is searching for update", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 64, - "column": 25 - }, - "end": { - "line": 67, - "column": 3 - } - }, - { - "id": "settings.app.updateStatusAvailable", - "defaultMessage": "!!!Update available, downloading...", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 68, - "column": 25 - }, - "end": { - "line": 71, - "column": 3 - } - }, - { - "id": "settings.app.updateStatusUpToDate", - "defaultMessage": "!!!You are using the latest version of Franz", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 72, - "column": 24 - }, - "end": { - "line": 75, - "column": 3 - } - }, - { - "id": "settings.app.currentVersion", - "defaultMessage": "!!!Current version:", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 76, - "column": 18 - }, - "end": { - "line": 79, - "column": 3 - } - }, - { - "id": "settings.app.restartRequired", - "defaultMessage": "!!!Changes require restart", - "file": "src/components/settings/settings/EditSettingsForm.js", - "start": { - "line": 80, - "column": 29 - }, - "end": { - "line": 83, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/user/EditUserForm.json b/src/i18n/messages/src/components/settings/user/EditUserForm.json deleted file mode 100644 index 3a59f8681..000000000 --- a/src/i18n/messages/src/components/settings/user/EditUserForm.json +++ /dev/null @@ -1,80 +0,0 @@ -[ - { - "id": "settings.account.headline", - "defaultMessage": "!!!Account", - "file": "src/components/settings/user/EditUserForm.js", - "start": { - "line": 15, - "column": 12 - }, - "end": { - "line": 18, - "column": 3 - } - }, - { - "id": "settings.account.headlineProfile", - "defaultMessage": "!!!Update Profile", - "file": "src/components/settings/user/EditUserForm.js", - "start": { - "line": 19, - "column": 19 - }, - "end": { - "line": 22, - "column": 3 - } - }, - { - "id": "settings.account.headlineAccount", - "defaultMessage": "!!!Account Information", - "file": "src/components/settings/user/EditUserForm.js", - "start": { - "line": 23, - "column": 19 - }, - "end": { - "line": 26, - "column": 3 - } - }, - { - "id": "settings.account.headlinePassword", - "defaultMessage": "!!!Change Password", - "file": "src/components/settings/user/EditUserForm.js", - "start": { - "line": 27, - "column": 20 - }, - "end": { - "line": 30, - "column": 3 - } - }, - { - "id": "settings.account.successInfo", - "defaultMessage": "!!!Your changes have been saved", - "file": "src/components/settings/user/EditUserForm.js", - "start": { - "line": 31, - "column": 15 - }, - "end": { - "line": 34, - "column": 3 - } - }, - { - "id": "settings.account.buttonSave", - "defaultMessage": "!!!Update profile", - "file": "src/components/settings/user/EditUserForm.js", - "start": { - "line": 35, - "column": 14 - }, - "end": { - "line": 38, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/subscription/SubscriptionForm.json b/src/i18n/messages/src/components/subscription/SubscriptionForm.json deleted file mode 100644 index cc7470358..000000000 --- a/src/i18n/messages/src/components/subscription/SubscriptionForm.json +++ /dev/null @@ -1,171 +0,0 @@ -[ - { - "id": "subscription.submit.label", - "defaultMessage": "!!!Support the development of Franz", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 14, - "column": 21 - }, - "end": { - "line": 17, - "column": 3 - } - }, - { - "id": "subscription.paymentSessionError", - "defaultMessage": "!!!Could not initialize payment form", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 18, - "column": 23 - }, - "end": { - "line": 21, - "column": 3 - } - }, - { - "id": "subscription.type.free", - "defaultMessage": "!!!free", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 22, - "column": 12 - }, - "end": { - "line": 25, - "column": 3 - } - }, - { - "id": "subscription.type.month", - "defaultMessage": "!!!month", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 26, - "column": 15 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "subscription.type.year", - "defaultMessage": "!!!year", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 30, - "column": 14 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "subscription.includedFeatures", - "defaultMessage": "!!!The Franz Premium Supporter Account includes", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 34, - "column": 20 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "subscription.features.onpremise.mattermost", - "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 38, - "column": 13 - }, - "end": { - "line": 41, - "column": 3 - } - }, - { - "id": "subscription.features.noInterruptions", - "defaultMessage": "!!!No app delays & nagging to upgrade license", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 42, - "column": 19 - }, - "end": { - "line": 45, - "column": 3 - } - }, - { - "id": "subscription.features.proxy", - "defaultMessage": "!!!Proxy support for services", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 46, - "column": 9 - }, - "end": { - "line": 49, - "column": 3 - } - }, - { - "id": "subscription.features.spellchecker", - "defaultMessage": "!!!Support for Spellchecker", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 50, - "column": 16 - }, - "end": { - "line": 53, - "column": 3 - } - }, - { - "id": "subscription.features.ads", - "defaultMessage": "!!!No ads, ever!", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 54, - "column": 7 - }, - "end": { - "line": 57, - "column": 3 - } - }, - { - "id": "subscription.features.comingSoon", - "defaultMessage": "!!!coming soon", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 58, - "column": 14 - }, - "end": { - "line": 61, - "column": 3 - } - }, - { - "id": "subscription.euTaxInfo", - "defaultMessage": "!!!EU residents: local sales tax may apply", - "file": "src/components/subscription/SubscriptionForm.js", - "start": { - "line": 62, - "column": 13 - }, - "end": { - "line": 65, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/subscription/SubscriptionPopup.json b/src/i18n/messages/src/components/subscription/SubscriptionPopup.json deleted file mode 100644 index c06da7531..000000000 --- a/src/i18n/messages/src/components/subscription/SubscriptionPopup.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "id": "subscriptionPopup.buttonCancel", - "defaultMessage": "!!!Cancel", - "file": "src/components/subscription/SubscriptionPopup.js", - "start": { - "line": 11, - "column": 16 - }, - "end": { - "line": 14, - "column": 3 - } - }, - { - "id": "subscriptionPopup.buttonDone", - "defaultMessage": "!!!Done", - "file": "src/components/subscription/SubscriptionPopup.js", - "start": { - "line": 15, - "column": 14 - }, - "end": { - "line": 18, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json deleted file mode 100644 index 320d3ca3e..000000000 --- a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "id": "premiumFeature.button.upgradeAccount", - "defaultMessage": "!!!Upgrade account", - "file": "src/components/ui/PremiumFeatureContainer/index.js", - "start": { - "line": 15, - "column": 10 - }, - "end": { - "line": 18, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/ui/WebviewLoader/index.json b/src/i18n/messages/src/components/ui/WebviewLoader/index.json deleted file mode 100644 index ef3e4b593..000000000 --- a/src/i18n/messages/src/components/ui/WebviewLoader/index.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "id": "service.webviewLoader.loading", - "defaultMessage": "!!!Loading", - "file": "src/components/ui/WebviewLoader/index.js", - "start": { - "line": 11, - "column": 11 - }, - "end": { - "line": 14, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/components/util/ErrorBoundary/index.json b/src/i18n/messages/src/components/util/ErrorBoundary/index.json deleted file mode 100644 index 43c323031..000000000 --- a/src/i18n/messages/src/components/util/ErrorBoundary/index.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "id": "app.errorHandler.headline", - "defaultMessage": "!!!Something went wrong.", - "file": "src/components/util/ErrorBoundary/index.js", - "start": { - "line": 11, - "column": 12 - }, - "end": { - "line": 14, - "column": 3 - } - }, - { - "id": "app.errorHandler.action", - "defaultMessage": "!!!Reload", - "file": "src/components/util/ErrorBoundary/index.js", - "start": { - "line": 15, - "column": 10 - }, - "end": { - "line": 18, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/containers/settings/EditServiceScreen.json b/src/i18n/messages/src/containers/settings/EditServiceScreen.json deleted file mode 100644 index 42ca42125..000000000 --- a/src/i18n/messages/src/containers/settings/EditServiceScreen.json +++ /dev/null @@ -1,197 +0,0 @@ -[ - { - "id": "settings.service.form.name", - "defaultMessage": "!!!Name", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 28, - "column": 8 - }, - "end": { - "line": 31, - "column": 3 - } - }, - { - "id": "settings.service.form.enableService", - "defaultMessage": "!!!Enable service", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 32, - "column": 17 - }, - "end": { - "line": 35, - "column": 3 - } - }, - { - "id": "settings.service.form.enableNotification", - "defaultMessage": "!!!Enable Notifications", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 36, - "column": 22 - }, - "end": { - "line": 39, - "column": 3 - } - }, - { - "id": "settings.service.form.enableBadge", - "defaultMessage": "!!!Show unread message badges", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 40, - "column": 15 - }, - "end": { - "line": 43, - "column": 3 - } - }, - { - "id": "settings.service.form.enableAudio", - "defaultMessage": "!!!Enable audio", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 44, - "column": 15 - }, - "end": { - "line": 47, - "column": 3 - } - }, - { - "id": "settings.service.form.team", - "defaultMessage": "!!!Team", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 48, - "column": 8 - }, - "end": { - "line": 51, - "column": 3 - } - }, - { - "id": "settings.service.form.customUrl", - "defaultMessage": "!!!Custom server", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 52, - "column": 13 - }, - "end": { - "line": 55, - "column": 3 - } - }, - { - "id": "settings.service.form.indirectMessages", - "defaultMessage": "!!!Show message badge for all new messages", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 56, - "column": 20 - }, - "end": { - "line": 59, - "column": 3 - } - }, - { - "id": "settings.service.form.icon", - "defaultMessage": "!!!Custom icon", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 60, - "column": 8 - }, - "end": { - "line": 63, - "column": 3 - } - }, - { - "id": "settings.service.form.enableDarkMode", - "defaultMessage": "!!!Enable Dark Mode", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 64, - "column": 18 - }, - "end": { - "line": 67, - "column": 3 - } - }, - { - "id": "settings.service.form.proxy.isEnabled", - "defaultMessage": "!!!Use Proxy", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 68, - "column": 15 - }, - "end": { - "line": 71, - "column": 3 - } - }, - { - "id": "settings.service.form.proxy.host", - "defaultMessage": "!!!Proxy Host/IP", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 72, - "column": 13 - }, - "end": { - "line": 75, - "column": 3 - } - }, - { - "id": "settings.service.form.proxy.port", - "defaultMessage": "!!!Port", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 76, - "column": 13 - }, - "end": { - "line": 79, - "column": 3 - } - }, - { - "id": "settings.service.form.proxy.user", - "defaultMessage": "!!!User", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 80, - "column": 13 - }, - "end": { - "line": 83, - "column": 3 - } - }, - { - "id": "settings.service.form.proxy.password", - "defaultMessage": "!!!Password", - "file": "src/containers/settings/EditServiceScreen.js", - "start": { - "line": 84, - "column": 17 - }, - "end": { - "line": 87, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json deleted file mode 100644 index d3b413540..000000000 --- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json +++ /dev/null @@ -1,158 +0,0 @@ -[ - { - "id": "settings.app.form.autoLaunchOnStart", - "defaultMessage": "!!!Launch Franz on start", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 22, - "column": 21 - }, - "end": { - "line": 25, - "column": 3 - } - }, - { - "id": "settings.app.form.autoLaunchInBackground", - "defaultMessage": "!!!Open in background", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 26, - "column": 26 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "settings.app.form.runInBackground", - "defaultMessage": "!!!Keep Franz in background when closing the window", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 30, - "column": 19 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "settings.app.form.enableSystemTray", - "defaultMessage": "!!!Show Franz in system tray", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 34, - "column": 20 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "settings.app.form.minimizeToSystemTray", - "defaultMessage": "!!!Minimize Franz to system tray", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 38, - "column": 24 - }, - "end": { - "line": 41, - "column": 3 - } - }, - { - "id": "settings.app.form.language", - "defaultMessage": "!!!Language", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 42, - "column": 12 - }, - "end": { - "line": 45, - "column": 3 - } - }, - { - "id": "settings.app.form.darkMode", - "defaultMessage": "!!!Dark Mode", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 46, - "column": 12 - }, - "end": { - "line": 49, - "column": 3 - } - }, - { - "id": "settings.app.form.showDisabledServices", - "defaultMessage": "!!!Display disabled services tabs", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 50, - "column": 24 - }, - "end": { - "line": 53, - "column": 3 - } - }, - { - "id": "settings.app.form.showMessagesBadgesWhenMuted", - "defaultMessage": "!!!Show unread message badge when notifications are disabled", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 54, - "column": 29 - }, - "end": { - "line": 57, - "column": 3 - } - }, - { - "id": "settings.app.form.enableSpellchecking", - "defaultMessage": "!!!Enable spell checking", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 58, - "column": 23 - }, - "end": { - "line": 61, - "column": 3 - } - }, - { - "id": "settings.app.form.enableGPUAcceleration", - "defaultMessage": "!!!Enable GPU Acceleration", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 62, - "column": 25 - }, - "end": { - "line": 65, - "column": 3 - } - }, - { - "id": "settings.app.form.beta", - "defaultMessage": "!!!Include beta versions", - "file": "src/containers/settings/EditSettingsScreen.js", - "start": { - "line": 66, - "column": 8 - }, - "end": { - "line": 69, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/containers/settings/EditUserScreen.json b/src/i18n/messages/src/containers/settings/EditUserScreen.json deleted file mode 100644 index 70ff29945..000000000 --- a/src/i18n/messages/src/containers/settings/EditUserScreen.json +++ /dev/null @@ -1,119 +0,0 @@ -[ - { - "id": "settings.user.form.firstname", - "defaultMessage": "!!!Firstname", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 14, - "column": 13 - }, - "end": { - "line": 17, - "column": 3 - } - }, - { - "id": "settings.user.form.lastname", - "defaultMessage": "!!!Lastname", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 18, - "column": 12 - }, - "end": { - "line": 21, - "column": 3 - } - }, - { - "id": "settings.user.form.email", - "defaultMessage": "!!!Email", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 22, - "column": 9 - }, - "end": { - "line": 25, - "column": 3 - } - }, - { - "id": "settings.user.form.accountType.label", - "defaultMessage": "!!!Account type", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 26, - "column": 20 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "settings.user.form.accountType.individual", - "defaultMessage": "!!!Individual", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 30, - "column": 25 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "settings.user.form.accountType.non-profit", - "defaultMessage": "!!!Non-Profit", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 34, - "column": 24 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "settings.user.form.accountType.company", - "defaultMessage": "!!!Company", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 38, - "column": 22 - }, - "end": { - "line": 41, - "column": 3 - } - }, - { - "id": "settings.user.form.currentPassword", - "defaultMessage": "!!!Current password", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 42, - "column": 19 - }, - "end": { - "line": 45, - "column": 3 - } - }, - { - "id": "settings.user.form.newPassword", - "defaultMessage": "!!!New password", - "file": "src/containers/settings/EditUserScreen.js", - "start": { - "line": 46, - "column": 15 - }, - "end": { - "line": 49, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/announcements/Component.json b/src/i18n/messages/src/features/announcements/Component.json deleted file mode 100644 index c31c35fc7..000000000 --- a/src/i18n/messages/src/features/announcements/Component.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "id": "feature.announcements.changelog.headline", - "defaultMessage": "!!!What's new in Franz {version}?", - "file": "src/features/announcements/Component.js", - "start": { - "line": 11, - "column": 12 - }, - "end": { - "line": 14, - "column": 3 - } - } -] diff --git a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json deleted file mode 100644 index eb1b66916..000000000 --- a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "id": "feature.announcements.changelog.headline", - "defaultMessage": "!!!Changes in Franz {version}", - "file": "src/features/announcements/components/AnnouncementScreen.js", - "start": { - "line": 20, - "column": 12 - }, - "end": { - "line": 23, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/delayApp/Component.json b/src/i18n/messages/src/features/delayApp/Component.json deleted file mode 100644 index bacd9444a..000000000 --- a/src/i18n/messages/src/features/delayApp/Component.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "id": "feature.delayApp.headline", - "defaultMessage": "!!!Please purchase license to skip waiting", - "file": "src/features/delayApp/Component.js", - "start": { - "line": 15, - "column": 12 - }, - "end": { - "line": 18, - "column": 3 - } - }, - { - "id": "feature.delayApp.action", - "defaultMessage": "!!!Get a Franz Supporter License", - "file": "src/features/delayApp/Component.js", - "start": { - "line": 19, - "column": 10 - }, - "end": { - "line": 22, - "column": 3 - } - }, - { - "id": "feature.delayApp.text", - "defaultMessage": "!!!Franz will continue in {seconds} seconds.", - "file": "src/features/delayApp/Component.js", - "start": { - "line": 23, - "column": 8 - }, - "end": { - "line": 26, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/shareFranz/Component.json b/src/i18n/messages/src/features/shareFranz/Component.json deleted file mode 100644 index 34a43d5a0..000000000 --- a/src/i18n/messages/src/features/shareFranz/Component.json +++ /dev/null @@ -1,93 +0,0 @@ -[ - { - "id": "feature.shareFranz.headline", - "defaultMessage": "!!!Franz is better together!", - "file": "src/features/shareFranz/Component.js", - "start": { - "line": 15, - "column": 12 - }, - "end": { - "line": 18, - "column": 3 - } - }, - { - "id": "feature.shareFranz.text", - "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", - "file": "src/features/shareFranz/Component.js", - "start": { - "line": 19, - "column": 8 - }, - "end": { - "line": 22, - "column": 3 - } - }, - { - "id": "feature.shareFranz.action.email", - "defaultMessage": "!!!Share as email", - "file": "src/features/shareFranz/Component.js", - "start": { - "line": 23, - "column": 16 - }, - "end": { - "line": 26, - "column": 3 - } - }, - { - "id": "feature.shareFranz.action.facebook", - "defaultMessage": "!!!Share on Facebook", - "file": "src/features/shareFranz/Component.js", - "start": { - "line": 27, - "column": 19 - }, - "end": { - "line": 30, - "column": 3 - } - }, - { - "id": "feature.shareFranz.action.twitter", - "defaultMessage": "!!!Share on Twitter", - "file": "src/features/shareFranz/Component.js", - "start": { - "line": 31, - "column": 18 - }, - "end": { - "line": 34, - "column": 3 - } - }, - { - "id": "feature.shareFranz.shareText.email", - "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", - "file": "src/features/shareFranz/Component.js", - "start": { - "line": 35, - "column": 18 - }, - "end": { - "line": 38, - "column": 3 - } - }, - { - "id": "feature.shareFranz.shareText.twitter", - "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", - "file": "src/features/shareFranz/Component.js", - "start": { - "line": 39, - "column": 20 - }, - "end": { - "line": 42, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json deleted file mode 100644 index f62bac42c..000000000 --- a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "id": "settings.workspace.add.form.submitButton", - "defaultMessage": "!!!Create workspace", - "file": "src/features/workspaces/components/CreateWorkspaceForm.js", - "start": { - "line": 13, - "column": 16 - }, - "end": { - "line": 16, - "column": 3 - } - }, - { - "id": "settings.workspace.add.form.name", - "defaultMessage": "!!!Name", - "file": "src/features/workspaces/components/CreateWorkspaceForm.js", - "start": { - "line": 17, - "column": 8 - }, - "end": { - "line": 20, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json deleted file mode 100644 index 7b0c3e1ce..000000000 --- a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "id": "settings.workspace.form.buttonDelete", - "defaultMessage": "!!!Delete workspace", - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "start": { - "line": 19, - "column": 16 - }, - "end": { - "line": 22, - "column": 3 - } - }, - { - "id": "settings.workspace.form.buttonSave", - "defaultMessage": "!!!Save workspace", - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "start": { - "line": 23, - "column": 14 - }, - "end": { - "line": 26, - "column": 3 - } - }, - { - "id": "settings.workspace.form.name", - "defaultMessage": "!!!Name", - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "start": { - "line": 27, - "column": 8 - }, - "end": { - "line": 30, - "column": 3 - } - }, - { - "id": "settings.workspace.form.yourWorkspaces", - "defaultMessage": "!!!Your workspaces", - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "start": { - "line": 31, - "column": 18 - }, - "end": { - "line": 34, - "column": 3 - } - }, - { - "id": "settings.workspace.form.servicesInWorkspaceHeadline", - "defaultMessage": "!!!Services in this Workspace", - "file": "src/features/workspaces/components/EditWorkspaceForm.js", - "start": { - "line": 35, - "column": 31 - }, - "end": { - "line": 38, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json deleted file mode 100644 index 9f0935620..000000000 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ /dev/null @@ -1,106 +0,0 @@ -[ - { - "id": "workspaceDrawer.headline", - "defaultMessage": "!!!Workspaces", - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "start": { - "line": 16, - "column": 12 - }, - "end": { - "line": 19, - "column": 3 - } - }, - { - "id": "workspaceDrawer.allServices", - "defaultMessage": "!!!All services", - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "start": { - "line": 20, - "column": 15 - }, - "end": { - "line": 23, - "column": 3 - } - }, - { - "id": "workspaceDrawer.workspacesSettingsTooltip", - "defaultMessage": "!!!Workspaces settings", - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "start": { - "line": 24, - "column": 29 - }, - "end": { - "line": 27, - "column": 3 - } - }, - { - "id": "workspaceDrawer.workspaceFeatureInfo", - "defaultMessage": "!!!Info about workspace feature", - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "start": { - "line": 28, - "column": 24 - }, - "end": { - "line": 31, - "column": 3 - } - }, - { - "id": "workspaceDrawer.premiumCtaButtonLabel", - "defaultMessage": "!!!Create your first workspace", - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "start": { - "line": 32, - "column": 25 - }, - "end": { - "line": 35, - "column": 3 - } - }, - { - "id": "workspaceDrawer.reactivatePremiumAccountLabel", - "defaultMessage": "!!!Reactivate premium account", - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "start": { - "line": 36, - "column": 28 - }, - "end": { - "line": 39, - "column": 3 - } - }, - { - "id": "workspaceDrawer.addNewWorkspaceLabel", - "defaultMessage": "!!!add new workspace", - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "start": { - "line": 40, - "column": 24 - }, - "end": { - "line": 43, - "column": 3 - } - }, - { - "id": "workspaceDrawer.proFeatureBadge", - "defaultMessage": "!!!Premium feature", - "file": "src/features/workspaces/components/WorkspaceDrawer.js", - "start": { - "line": 44, - "column": 23 - }, - "end": { - "line": 47, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json deleted file mode 100644 index 4ff190606..000000000 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "id": "workspaceDrawer.item.noServicesAddedYet", - "defaultMessage": "!!!No services added yet", - "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", - "start": { - "line": 12, - "column": 22 - }, - "end": { - "line": 15, - "column": 3 - } - }, - { - "id": "workspaceDrawer.item.contextMenuEdit", - "defaultMessage": "!!!edit", - "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", - "start": { - "line": 16, - "column": 19 - }, - "end": { - "line": 19, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json deleted file mode 100644 index 4f3e6d55c..000000000 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "id": "workspaces.switchingIndicator.switchingTo", - "defaultMessage": "!!!Switching to", - "file": "src/features/workspaces/components/WorkspaceSwitchingIndicator.js", - "start": { - "line": 12, - "column": 15 - }, - "end": { - "line": 15, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json deleted file mode 100644 index ef8f1bebc..000000000 --- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json +++ /dev/null @@ -1,106 +0,0 @@ -[ - { - "id": "settings.workspaces.headline", - "defaultMessage": "!!!Your workspaces", - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "start": { - "line": 17, - "column": 12 - }, - "end": { - "line": 20, - "column": 3 - } - }, - { - "id": "settings.workspaces.noWorkspacesAdded", - "defaultMessage": "!!!You haven't added any workspaces yet.", - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "start": { - "line": 21, - "column": 19 - }, - "end": { - "line": 24, - "column": 3 - } - }, - { - "id": "settings.workspaces.workspacesRequestFailed", - "defaultMessage": "!!!Could not load your workspaces", - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "start": { - "line": 25, - "column": 27 - }, - "end": { - "line": 28, - "column": 3 - } - }, - { - "id": "settings.workspaces.tryReloadWorkspaces", - "defaultMessage": "!!!Try again", - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "start": { - "line": 29, - "column": 23 - }, - "end": { - "line": 32, - "column": 3 - } - }, - { - "id": "settings.workspaces.updatedInfo", - "defaultMessage": "!!!Your changes have been saved", - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "start": { - "line": 33, - "column": 15 - }, - "end": { - "line": 36, - "column": 3 - } - }, - { - "id": "settings.workspaces.deletedInfo", - "defaultMessage": "!!!Workspace has been deleted", - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "start": { - "line": 37, - "column": 15 - }, - "end": { - "line": 40, - "column": 3 - } - }, - { - "id": "settings.workspaces.workspaceFeatureInfo", - "defaultMessage": "!!!Info about workspace feature", - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "start": { - "line": 41, - "column": 24 - }, - "end": { - "line": 44, - "column": 3 - } - }, - { - "id": "settings.workspaces.workspaceFeatureHeadline", - "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", - "file": "src/features/workspaces/components/WorkspacesDashboard.js", - "start": { - "line": 45, - "column": 28 - }, - "end": { - "line": 48, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/helpers/validation-helpers.json b/src/i18n/messages/src/helpers/validation-helpers.json deleted file mode 100644 index 86bfe1500..000000000 --- a/src/i18n/messages/src/helpers/validation-helpers.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "id": "validation.required", - "defaultMessage": "!!!Field is required", - "file": "src/helpers/validation-helpers.js", - "start": { - "line": 4, - "column": 12 - }, - "end": { - "line": 7, - "column": 3 - } - }, - { - "id": "validation.email", - "defaultMessage": "!!!Email not valid", - "file": "src/helpers/validation-helpers.js", - "start": { - "line": 8, - "column": 9 - }, - "end": { - "line": 11, - "column": 3 - } - }, - { - "id": "validation.url", - "defaultMessage": "!!!Not a valid URL", - "file": "src/helpers/validation-helpers.js", - "start": { - "line": 12, - "column": 7 - }, - "end": { - "line": 15, - "column": 3 - } - }, - { - "id": "validation.minLength", - "defaultMessage": "!!!Too few characters", - "file": "src/helpers/validation-helpers.js", - "start": { - "line": 16, - "column": 13 - }, - "end": { - "line": 19, - "column": 3 - } - }, - { - "id": "validation.oneRequired", - "defaultMessage": "!!!At least one is required", - "file": "src/helpers/validation-helpers.js", - "start": { - "line": 20, - "column": 15 - }, - "end": { - "line": 23, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json deleted file mode 100644 index 28001614f..000000000 --- a/src/i18n/messages/src/i18n/globalMessages.json +++ /dev/null @@ -1,80 +0,0 @@ -[ - { - "id": "global.api.unhealthy", - "defaultMessage": "!!!Can't connect to Franz Online Services", - "file": "src/i18n/globalMessages.js", - "start": { - "line": 4, - "column": 16 - }, - "end": { - "line": 7, - "column": 3 - } - }, - { - "id": "global.notConnectedToTheInternet", - "defaultMessage": "!!!You are not connected to the internet.", - "file": "src/i18n/globalMessages.js", - "start": { - "line": 8, - "column": 29 - }, - "end": { - "line": 11, - "column": 3 - } - }, - { - "id": "global.spellchecking.language", - "defaultMessage": "!!!Spell checking language", - "file": "src/i18n/globalMessages.js", - "start": { - "line": 12, - "column": 24 - }, - "end": { - "line": 15, - "column": 3 - } - }, - { - "id": "global.spellchecker.useDefault", - "defaultMessage": "!!!Use System Default ({default})", - "file": "src/i18n/globalMessages.js", - "start": { - "line": 16, - "column": 29 - }, - "end": { - "line": 19, - "column": 3 - } - }, - { - "id": "global.spellchecking.autodetect", - "defaultMessage": "!!!Detect language automatically", - "file": "src/i18n/globalMessages.js", - "start": { - "line": 20, - "column": 34 - }, - "end": { - "line": 23, - "column": 3 - } - }, - { - "id": "global.spellchecking.autodetect.short", - "defaultMessage": "!!!Automatic", - "file": "src/i18n/globalMessages.js", - "start": { - "line": 24, - "column": 39 - }, - "end": { - "line": 27, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json deleted file mode 100644 index a2ce34cd4..000000000 --- a/src/i18n/messages/src/lib/Menu.json +++ /dev/null @@ -1,691 +0,0 @@ -[ - { - "id": "menu.edit", - "defaultMessage": "!!!Edit", - "file": "src/lib/Menu.js", - "start": { - "line": 14, - "column": 8 - }, - "end": { - "line": 17, - "column": 3 - } - }, - { - "id": "menu.edit.undo", - "defaultMessage": "!!!Undo", - "file": "src/lib/Menu.js", - "start": { - "line": 18, - "column": 8 - }, - "end": { - "line": 21, - "column": 3 - } - }, - { - "id": "menu.edit.redo", - "defaultMessage": "!!!Redo", - "file": "src/lib/Menu.js", - "start": { - "line": 22, - "column": 8 - }, - "end": { - "line": 25, - "column": 3 - } - }, - { - "id": "menu.edit.cut", - "defaultMessage": "!!!Cut", - "file": "src/lib/Menu.js", - "start": { - "line": 26, - "column": 7 - }, - "end": { - "line": 29, - "column": 3 - } - }, - { - "id": "menu.edit.copy", - "defaultMessage": "!!!Copy", - "file": "src/lib/Menu.js", - "start": { - "line": 30, - "column": 8 - }, - "end": { - "line": 33, - "column": 3 - } - }, - { - "id": "menu.edit.paste", - "defaultMessage": "!!!Paste", - "file": "src/lib/Menu.js", - "start": { - "line": 34, - "column": 9 - }, - "end": { - "line": 37, - "column": 3 - } - }, - { - "id": "menu.edit.pasteAndMatchStyle", - "defaultMessage": "!!!Paste And Match Style", - "file": "src/lib/Menu.js", - "start": { - "line": 38, - "column": 22 - }, - "end": { - "line": 41, - "column": 3 - } - }, - { - "id": "menu.edit.delete", - "defaultMessage": "!!!Delete", - "file": "src/lib/Menu.js", - "start": { - "line": 42, - "column": 10 - }, - "end": { - "line": 45, - "column": 3 - } - }, - { - "id": "menu.edit.selectAll", - "defaultMessage": "!!!Select All", - "file": "src/lib/Menu.js", - "start": { - "line": 46, - "column": 13 - }, - "end": { - "line": 49, - "column": 3 - } - }, - { - "id": "menu.edit.speech", - "defaultMessage": "!!!Speech", - "file": "src/lib/Menu.js", - "start": { - "line": 50, - "column": 10 - }, - "end": { - "line": 53, - "column": 3 - } - }, - { - "id": "menu.edit.startSpeaking", - "defaultMessage": "!!!Start Speaking", - "file": "src/lib/Menu.js", - "start": { - "line": 54, - "column": 17 - }, - "end": { - "line": 57, - "column": 3 - } - }, - { - "id": "menu.edit.stopSpeaking", - "defaultMessage": "!!!Stop Speaking", - "file": "src/lib/Menu.js", - "start": { - "line": 58, - "column": 16 - }, - "end": { - "line": 61, - "column": 3 - } - }, - { - "id": "menu.edit.startDictation", - "defaultMessage": "!!!Start Dictation", - "file": "src/lib/Menu.js", - "start": { - "line": 62, - "column": 18 - }, - "end": { - "line": 65, - "column": 3 - } - }, - { - "id": "menu.edit.emojiSymbols", - "defaultMessage": "!!!Emoji & Symbols", - "file": "src/lib/Menu.js", - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 69, - "column": 3 - } - }, - { - "id": "menu.view.resetZoom", - "defaultMessage": "!!!Actual Size", - "file": "src/lib/Menu.js", - "start": { - "line": 70, - "column": 13 - }, - "end": { - "line": 73, - "column": 3 - } - }, - { - "id": "menu.view.zoomIn", - "defaultMessage": "!!!Zoom In", - "file": "src/lib/Menu.js", - "start": { - "line": 74, - "column": 10 - }, - "end": { - "line": 77, - "column": 3 - } - }, - { - "id": "menu.view.zoomOut", - "defaultMessage": "!!!Zoom Out", - "file": "src/lib/Menu.js", - "start": { - "line": 78, - "column": 11 - }, - "end": { - "line": 81, - "column": 3 - } - }, - { - "id": "menu.view.enterFullScreen", - "defaultMessage": "!!!Enter Full Screen", - "file": "src/lib/Menu.js", - "start": { - "line": 82, - "column": 19 - }, - "end": { - "line": 85, - "column": 3 - } - }, - { - "id": "menu.view.exitFullScreen", - "defaultMessage": "!!!Exit Full Screen", - "file": "src/lib/Menu.js", - "start": { - "line": 86, - "column": 18 - }, - "end": { - "line": 89, - "column": 3 - } - }, - { - "id": "menu.view.toggleFullScreen", - "defaultMessage": "!!!Toggle Full Screen", - "file": "src/lib/Menu.js", - "start": { - "line": 90, - "column": 20 - }, - "end": { - "line": 93, - "column": 3 - } - }, - { - "id": "menu.view.toggleDevTools", - "defaultMessage": "!!!Toggle Developer Tools", - "file": "src/lib/Menu.js", - "start": { - "line": 94, - "column": 18 - }, - "end": { - "line": 97, - "column": 3 - } - }, - { - "id": "menu.view.toggleServiceDevTools", - "defaultMessage": "!!!Toggle Service Developer Tools", - "file": "src/lib/Menu.js", - "start": { - "line": 98, - "column": 25 - }, - "end": { - "line": 101, - "column": 3 - } - }, - { - "id": "menu.view.reloadService", - "defaultMessage": "!!!Reload Service", - "file": "src/lib/Menu.js", - "start": { - "line": 102, - "column": 17 - }, - "end": { - "line": 105, - "column": 3 - } - }, - { - "id": "menu.view.reloadFranz", - "defaultMessage": "!!!Reload Franz", - "file": "src/lib/Menu.js", - "start": { - "line": 106, - "column": 15 - }, - "end": { - "line": 109, - "column": 3 - } - }, - { - "id": "menu.window.minimize", - "defaultMessage": "!!!Minimize", - "file": "src/lib/Menu.js", - "start": { - "line": 110, - "column": 12 - }, - "end": { - "line": 113, - "column": 3 - } - }, - { - "id": "menu.window.close", - "defaultMessage": "!!!Close", - "file": "src/lib/Menu.js", - "start": { - "line": 114, - "column": 9 - }, - "end": { - "line": 117, - "column": 3 - } - }, - { - "id": "menu.help.learnMore", - "defaultMessage": "!!!Learn More", - "file": "src/lib/Menu.js", - "start": { - "line": 118, - "column": 13 - }, - "end": { - "line": 121, - "column": 3 - } - }, - { - "id": "menu.help.changelog", - "defaultMessage": "!!!Changelog", - "file": "src/lib/Menu.js", - "start": { - "line": 122, - "column": 13 - }, - "end": { - "line": 125, - "column": 3 - } - }, - { - "id": "menu.help.support", - "defaultMessage": "!!!Support", - "file": "src/lib/Menu.js", - "start": { - "line": 126, - "column": 11 - }, - "end": { - "line": 129, - "column": 3 - } - }, - { - "id": "menu.help.tos", - "defaultMessage": "!!!Terms of Service", - "file": "src/lib/Menu.js", - "start": { - "line": 130, - "column": 7 - }, - "end": { - "line": 133, - "column": 3 - } - }, - { - "id": "menu.help.privacy", - "defaultMessage": "!!!Privacy Statement", - "file": "src/lib/Menu.js", - "start": { - "line": 134, - "column": 11 - }, - "end": { - "line": 137, - "column": 3 - } - }, - { - "id": "menu.file", - "defaultMessage": "!!!File", - "file": "src/lib/Menu.js", - "start": { - "line": 138, - "column": 8 - }, - "end": { - "line": 141, - "column": 3 - } - }, - { - "id": "menu.view", - "defaultMessage": "!!!View", - "file": "src/lib/Menu.js", - "start": { - "line": 142, - "column": 8 - }, - "end": { - "line": 145, - "column": 3 - } - }, - { - "id": "menu.services", - "defaultMessage": "!!!Services", - "file": "src/lib/Menu.js", - "start": { - "line": 146, - "column": 12 - }, - "end": { - "line": 149, - "column": 3 - } - }, - { - "id": "menu.window", - "defaultMessage": "!!!Window", - "file": "src/lib/Menu.js", - "start": { - "line": 150, - "column": 10 - }, - "end": { - "line": 153, - "column": 3 - } - }, - { - "id": "menu.help", - "defaultMessage": "!!!Help", - "file": "src/lib/Menu.js", - "start": { - "line": 154, - "column": 8 - }, - "end": { - "line": 157, - "column": 3 - } - }, - { - "id": "menu.app.about", - "defaultMessage": "!!!About Franz", - "file": "src/lib/Menu.js", - "start": { - "line": 158, - "column": 9 - }, - "end": { - "line": 161, - "column": 3 - } - }, - { - "id": "menu.app.announcement", - "defaultMessage": "!!!What's new?", - "file": "src/lib/Menu.js", - "start": { - "line": 162, - "column": 16 - }, - "end": { - "line": 165, - "column": 3 - } - }, - { - "id": "menu.app.settings", - "defaultMessage": "!!!Settings", - "file": "src/lib/Menu.js", - "start": { - "line": 166, - "column": 12 - }, - "end": { - "line": 169, - "column": 3 - } - }, - { - "id": "menu.app.hide", - "defaultMessage": "!!!Hide", - "file": "src/lib/Menu.js", - "start": { - "line": 170, - "column": 8 - }, - "end": { - "line": 173, - "column": 3 - } - }, - { - "id": "menu.app.hideOthers", - "defaultMessage": "!!!Hide Others", - "file": "src/lib/Menu.js", - "start": { - "line": 174, - "column": 14 - }, - "end": { - "line": 177, - "column": 3 - } - }, - { - "id": "menu.app.unhide", - "defaultMessage": "!!!Unhide", - "file": "src/lib/Menu.js", - "start": { - "line": 178, - "column": 10 - }, - "end": { - "line": 181, - "column": 3 - } - }, - { - "id": "menu.app.quit", - "defaultMessage": "!!!Quit", - "file": "src/lib/Menu.js", - "start": { - "line": 182, - "column": 8 - }, - "end": { - "line": 185, - "column": 3 - } - }, - { - "id": "menu.services.addNewService", - "defaultMessage": "!!!Add New Service...", - "file": "src/lib/Menu.js", - "start": { - "line": 186, - "column": 17 - }, - "end": { - "line": 189, - "column": 3 - } - }, - { - "id": "menu.workspaces.addNewWorkspace", - "defaultMessage": "!!!Add New Workspace...", - "file": "src/lib/Menu.js", - "start": { - "line": 190, - "column": 19 - }, - "end": { - "line": 193, - "column": 3 - } - }, - { - "id": "menu.workspaces.openWorkspaceDrawer", - "defaultMessage": "!!!Open workspace drawer", - "file": "src/lib/Menu.js", - "start": { - "line": 194, - "column": 23 - }, - "end": { - "line": 197, - "column": 3 - } - }, - { - "id": "menu.workspaces.closeWorkspaceDrawer", - "defaultMessage": "!!!Close workspace drawer", - "file": "src/lib/Menu.js", - "start": { - "line": 198, - "column": 24 - }, - "end": { - "line": 201, - "column": 3 - } - }, - { - "id": "menu.services.setNextServiceActive", - "defaultMessage": "!!!Activate next service...", - "file": "src/lib/Menu.js", - "start": { - "line": 202, - "column": 23 - }, - "end": { - "line": 205, - "column": 3 - } - }, - { - "id": "menu.services.activatePreviousService", - "defaultMessage": "!!!Activate previous service...", - "file": "src/lib/Menu.js", - "start": { - "line": 206, - "column": 27 - }, - "end": { - "line": 209, - "column": 3 - } - }, - { - "id": "sidebar.muteApp", - "defaultMessage": "!!!Disable notifications & audio", - "file": "src/lib/Menu.js", - "start": { - "line": 210, - "column": 11 - }, - "end": { - "line": 213, - "column": 3 - } - }, - { - "id": "sidebar.unmuteApp", - "defaultMessage": "!!!Enable notifications & audio", - "file": "src/lib/Menu.js", - "start": { - "line": 214, - "column": 13 - }, - "end": { - "line": 217, - "column": 3 - } - }, - { - "id": "menu.workspaces", - "defaultMessage": "!!!Workspaces", - "file": "src/lib/Menu.js", - "start": { - "line": 218, - "column": 14 - }, - "end": { - "line": 221, - "column": 3 - } - }, - { - "id": "menu.workspaces.defaultWorkspace", - "defaultMessage": "!!!Default", - "file": "src/lib/Menu.js", - "start": { - "line": 222, - "column": 20 - }, - "end": { - "line": 225, - "column": 3 - } - } -] \ No newline at end of file diff --git a/src/index.js b/src/index.js index 05c793d98..3fe996aa7 100644 --- a/src/index.js +++ b/src/index.js @@ -305,6 +305,20 @@ const createWindow = () => { }); }; +// Allow passing command line parameters/switches to electron +// https://electronjs.org/docs/api/chrome-command-line-switches +// used for Kerberos support +// Usage e.g. MACOS +// $ Franz.app/Contents/MacOS/Franz --auth-server-whitelist *.mydomain.com --auth-negotiate-delegate-whitelist *.mydomain.com +const argv = require('minimist')(process.argv.slice(1)); + +if (argv['auth-server-whitelist']) { + app.commandLine.appendSwitch('auth-server-whitelist', argv['auth-server-whitelist']); +} +if (argv['auth-negotiate-delegate-whitelist']) { + app.commandLine.appendSwitch('auth-negotiate-delegate-whitelist', argv['auth-negotiate-delegate-whitelist']); +} + // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index 534690fbb..31555dd5c 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js @@ -178,6 +178,7 @@ export default class UserStore extends Store { password, accountType, company, + locale: this.stores.app.locale, }); this.hasCompletedSignup = false; diff --git a/src/stores/lib/Reaction.js b/src/stores/lib/Reaction.js index b123ec01c..f2642908f 100644 --- a/src/stores/lib/Reaction.js +++ b/src/stores/lib/Reaction.js @@ -1,4 +1,3 @@ -// @flow import { autorun } from 'mobx'; export default class Reaction { @@ -15,14 +14,18 @@ export default class Reaction { start() { if (!this.isRunning) { this.dispose = autorun(() => this.reaction()); - this.isRunning = true; + this.isActive = true; } } stop() { if (this.isRunning) { this.dispose(); - this.isRunning = true; + this.isActive = false; } } } + +export const createReactions = reactions => ( + reactions.map(r => new Reaction(r)) +); -- cgit v1.2.3-70-g09d2 From 2cbdda19fd93fdd48caa2faa501356979d9d03ae Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Fri, 12 Apr 2019 15:54:08 +0200 Subject: add i18n files --- src/i18n/locales/defaultMessages.json | 4468 ++++++++++++++++++++ src/i18n/messages/src/components/auth/Import.json | 54 + src/i18n/messages/src/components/auth/Invite.json | 93 + src/i18n/messages/src/components/auth/Login.json | 119 + .../messages/src/components/auth/Password.json | 93 + src/i18n/messages/src/components/auth/Pricing.json | 54 + src/i18n/messages/src/components/auth/Signup.json | 158 + src/i18n/messages/src/components/auth/Welcome.json | 28 + .../messages/src/components/layout/AppLayout.json | 80 + .../messages/src/components/layout/Sidebar.json | 80 + .../content/ErrorHandlers/WebviewErrorHandler.json | 67 + .../services/content/ServiceDisabled.json | 28 + .../src/components/services/content/Services.json | 28 + .../services/content/WebviewCrashHandler.json | 54 + .../src/components/services/tabs/TabItem.json | 119 + .../settings/account/AccountDashboard.json | 197 + .../settings/navigation/SettingsNavigation.json | 93 + .../settings/recipes/RecipesDashboard.json | 106 + .../settings/services/EditServiceForm.json | 288 ++ .../components/settings/services/ServiceError.json | 54 + .../components/settings/services/ServiceItem.json | 41 + .../settings/services/ServicesDashboard.json | 119 + .../settings/settings/EditSettingsForm.json | 236 ++ .../src/components/settings/user/EditUserForm.json | 80 + .../components/subscription/SubscriptionForm.json | 171 + .../components/subscription/SubscriptionPopup.json | 28 + .../ui/PremiumFeatureContainer/index.json | 15 + .../src/components/ui/WebviewLoader/index.json | 15 + .../src/components/util/ErrorBoundary/index.json | 28 + .../src/containers/settings/EditServiceScreen.json | 197 + .../containers/settings/EditSettingsScreen.json | 158 + .../src/containers/settings/EditUserScreen.json | 119 + .../components/AnnouncementScreen.json | 15 + .../messages/src/features/delayApp/Component.json | 41 + .../src/features/shareFranz/Component.json | 93 + .../workspaces/components/CreateWorkspaceForm.json | 28 + .../workspaces/components/EditWorkspaceForm.json | 67 + .../workspaces/components/WorkspaceDrawer.json | 106 + .../workspaces/components/WorkspaceDrawerItem.json | 28 + .../components/WorkspaceSwitchingIndicator.json | 15 + .../workspaces/components/WorkspacesDashboard.json | 106 + .../messages/src/helpers/validation-helpers.json | 67 + src/i18n/messages/src/i18n/globalMessages.json | 80 + src/i18n/messages/src/lib/Menu.json | 691 +++ 44 files changed, 8805 insertions(+) create mode 100644 src/i18n/locales/defaultMessages.json create mode 100644 src/i18n/messages/src/components/auth/Import.json create mode 100644 src/i18n/messages/src/components/auth/Invite.json create mode 100644 src/i18n/messages/src/components/auth/Login.json create mode 100644 src/i18n/messages/src/components/auth/Password.json create mode 100644 src/i18n/messages/src/components/auth/Pricing.json create mode 100644 src/i18n/messages/src/components/auth/Signup.json create mode 100644 src/i18n/messages/src/components/auth/Welcome.json create mode 100644 src/i18n/messages/src/components/layout/AppLayout.json create mode 100644 src/i18n/messages/src/components/layout/Sidebar.json create mode 100644 src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json create mode 100644 src/i18n/messages/src/components/services/content/ServiceDisabled.json create mode 100644 src/i18n/messages/src/components/services/content/Services.json create mode 100644 src/i18n/messages/src/components/services/content/WebviewCrashHandler.json create mode 100644 src/i18n/messages/src/components/services/tabs/TabItem.json create mode 100644 src/i18n/messages/src/components/settings/account/AccountDashboard.json create mode 100644 src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json create mode 100644 src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json create mode 100644 src/i18n/messages/src/components/settings/services/EditServiceForm.json create mode 100644 src/i18n/messages/src/components/settings/services/ServiceError.json create mode 100644 src/i18n/messages/src/components/settings/services/ServiceItem.json create mode 100644 src/i18n/messages/src/components/settings/services/ServicesDashboard.json create mode 100644 src/i18n/messages/src/components/settings/settings/EditSettingsForm.json create mode 100644 src/i18n/messages/src/components/settings/user/EditUserForm.json create mode 100644 src/i18n/messages/src/components/subscription/SubscriptionForm.json create mode 100644 src/i18n/messages/src/components/subscription/SubscriptionPopup.json create mode 100644 src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json create mode 100644 src/i18n/messages/src/components/ui/WebviewLoader/index.json create mode 100644 src/i18n/messages/src/components/util/ErrorBoundary/index.json create mode 100644 src/i18n/messages/src/containers/settings/EditServiceScreen.json create mode 100644 src/i18n/messages/src/containers/settings/EditSettingsScreen.json create mode 100644 src/i18n/messages/src/containers/settings/EditUserScreen.json create mode 100644 src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json create mode 100644 src/i18n/messages/src/features/delayApp/Component.json create mode 100644 src/i18n/messages/src/features/shareFranz/Component.json create mode 100644 src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json create mode 100644 src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json create mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json create mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json create mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json create mode 100644 src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json create mode 100644 src/i18n/messages/src/helpers/validation-helpers.json create mode 100644 src/i18n/messages/src/i18n/globalMessages.json create mode 100644 src/i18n/messages/src/lib/Menu.json (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json new file mode 100644 index 000000000..3323aa310 --- /dev/null +++ b/src/i18n/locales/defaultMessages.json @@ -0,0 +1,4468 @@ +[ + { + "descriptors": [ + { + "defaultMessage": "!!!Import your Franz 4 services", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/auth/Import.js", + "id": "import.headline", + "start": { + "column": 12, + "line": 13 + } + }, + { + "defaultMessage": "!!!Services not yet supported in Franz 5", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/auth/Import.js", + "id": "import.notSupportedHeadline", + "start": { + "column": 24, + "line": 17 + } + }, + { + "defaultMessage": "!!!Import {count} services", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/components/auth/Import.js", + "id": "import.submit.label", + "start": { + "column": 21, + "line": 21 + } + }, + { + "defaultMessage": "!!!I want to add services manually", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/auth/Import.js", + "id": "import.skip.label", + "start": { + "column": 19, + "line": 25 + } + } + ], + "path": "src/components/auth/Import.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Invite Friends", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/components/auth/Invite.js", + "id": "settings.invite.headline", + "start": { + "column": 20, + "line": 16 + } + }, + { + "defaultMessage": "!!!Invite 3 of your friends or colleagues", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.headline.friends", + "start": { + "column": 12, + "line": 20 + } + }, + { + "defaultMessage": "!!!Name", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.name.label", + "start": { + "column": 13, + "line": 24 + } + }, + { + "defaultMessage": "!!!Email address", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.email.label", + "start": { + "column": 14, + "line": 28 + } + }, + { + "defaultMessage": "!!!Send invites", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.submit.label", + "start": { + "column": 21, + "line": 32 + } + }, + { + "defaultMessage": "!!!I want to do this later", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.skip.label", + "start": { + "column": 19, + "line": 36 + } + }, + { + "defaultMessage": "!!!Invitations sent successfully", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.successInfo", + "start": { + "column": 21, + "line": 40 + } + } + ], + "path": "src/components/auth/Invite.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Sign in", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/auth/Login.js", + "id": "login.headline", + "start": { + "column": 12, + "line": 17 + } + }, + { + "defaultMessage": "!!!Email address", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/components/auth/Login.js", + "id": "login.email.label", + "start": { + "column": 14, + "line": 21 + } + }, + { + "defaultMessage": "!!!Password", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/auth/Login.js", + "id": "login.password.label", + "start": { + "column": 17, + "line": 25 + } + }, + { + "defaultMessage": "!!!Sign in", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/components/auth/Login.js", + "id": "login.submit.label", + "start": { + "column": 21, + "line": 29 + } + }, + { + "defaultMessage": "!!!Email or password not valid", + "end": { + "column": 3, + "line": 36 + }, + "file": "src/components/auth/Login.js", + "id": "login.invalidCredentials", + "start": { + "column": 22, + "line": 33 + } + }, + { + "defaultMessage": "!!!Your session expired, please login again.", + "end": { + "column": 3, + "line": 40 + }, + "file": "src/components/auth/Login.js", + "id": "login.tokenExpired", + "start": { + "column": 16, + "line": 37 + } + }, + { + "defaultMessage": "!!!Your session expired, please login again.", + "end": { + "column": 3, + "line": 44 + }, + "file": "src/components/auth/Login.js", + "id": "login.serverLogout", + "start": { + "column": 16, + "line": 41 + } + }, + { + "defaultMessage": "!!!Create a free account", + "end": { + "column": 3, + "line": 48 + }, + "file": "src/components/auth/Login.js", + "id": "login.link.signup", + "start": { + "column": 14, + "line": 45 + } + }, + { + "defaultMessage": "!!!Forgot password", + "end": { + "column": 3, + "line": 52 + }, + "file": "src/components/auth/Login.js", + "id": "login.link.password", + "start": { + "column": 16, + "line": 49 + } + } + ], + "path": "src/components/auth/Login.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Forgot password", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/auth/Password.js", + "id": "password.headline", + "start": { + "column": 12, + "line": 14 + } + }, + { + "defaultMessage": "!!!Email address", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/auth/Password.js", + "id": "password.email.label", + "start": { + "column": 14, + "line": 18 + } + }, + { + "defaultMessage": "!!!Submit", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/auth/Password.js", + "id": "password.submit.label", + "start": { + "column": 21, + "line": 22 + } + }, + { + "defaultMessage": "!!!Your new password was sent to your email address", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/auth/Password.js", + "id": "password.successInfo", + "start": { + "column": 15, + "line": 26 + } + }, + { + "defaultMessage": "!!!No user affiliated with that email address", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/auth/Password.js", + "id": "password.noUser", + "start": { + "column": 10, + "line": 30 + } + }, + { + "defaultMessage": "!!!Create a free account", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/auth/Password.js", + "id": "password.link.signup", + "start": { + "column": 14, + "line": 34 + } + }, + { + "defaultMessage": "!!!Sign in to your account", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/auth/Password.js", + "id": "password.link.login", + "start": { + "column": 13, + "line": 38 + } + } + ], + "path": "src/components/auth/Password.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Support Franz", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.headline", + "start": { + "column": 12, + "line": 13 + } + }, + { + "defaultMessage": "!!!Select your support plan", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.support.label", + "start": { + "column": 23, + "line": 17 + } + }, + { + "defaultMessage": "!!!Support the development of Franz", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.submit.label", + "start": { + "column": 21, + "line": 21 + } + }, + { + "defaultMessage": "!!!I don't want to support the development of Franz.", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.link.skipPayment", + "start": { + "column": 15, + "line": 25 + } + } + ], + "path": "src/components/auth/Pricing.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Sign up", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.headline", + "start": { + "column": 12, + "line": 18 + } + }, + { + "defaultMessage": "!!!Firstname", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.firstname.label", + "start": { + "column": 18, + "line": 22 + } + }, + { + "defaultMessage": "!!!Lastname", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.lastname.label", + "start": { + "column": 17, + "line": 26 + } + }, + { + "defaultMessage": "!!!Email address", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.email.label", + "start": { + "column": 14, + "line": 30 + } + }, + { + "defaultMessage": "!!!Company", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.company.label", + "start": { + "column": 16, + "line": 34 + } + }, + { + "defaultMessage": "!!!Password", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.password.label", + "start": { + "column": 17, + "line": 38 + } + }, + { + "defaultMessage": "!!!By creating a Franz account you accept the", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.legal.info", + "start": { + "column": 13, + "line": 42 + } + }, + { + "defaultMessage": "!!!Terms of service", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.legal.terms", + "start": { + "column": 9, + "line": 46 + } + }, + { + "defaultMessage": "!!!Privacy Statement", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.legal.privacy", + "start": { + "column": 11, + "line": 50 + } + }, + { + "defaultMessage": "!!!Create account", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.submit.label", + "start": { + "column": 21, + "line": 54 + } + }, + { + "defaultMessage": "!!!Already have an account, sign in?", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.link.login", + "start": { + "column": 13, + "line": 58 + } + }, + { + "defaultMessage": "!!!A user with that email address already exists", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.emailDuplicate", + "start": { + "column": 18, + "line": 62 + } + } + ], + "path": "src/components/auth/Signup.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Create a free account", + "end": { + "column": 3, + "line": 12 + }, + "file": "src/components/auth/Welcome.js", + "id": "welcome.signupButton", + "start": { + "column": 16, + "line": 9 + } + }, + { + "defaultMessage": "!!!Login to your account", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/auth/Welcome.js", + "id": "welcome.loginButton", + "start": { + "column": 15, + "line": 13 + } + } + ], + "path": "src/components/auth/Welcome.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your services have been updated.", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.servicesUpdated", + "start": { + "column": 19, + "line": 26 + } + }, + { + "defaultMessage": "!!!A new update for Franz is available.", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.updateAvailable", + "start": { + "column": 19, + "line": 30 + } + }, + { + "defaultMessage": "!!!Reload services", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.buttonReloadServices", + "start": { + "column": 24, + "line": 34 + } + }, + { + "defaultMessage": "!!!Changelog", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.buttonChangelog", + "start": { + "column": 13, + "line": 38 + } + }, + { + "defaultMessage": "!!!Restart & install update", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.buttonInstallUpdate", + "start": { + "column": 23, + "line": 42 + } + }, + { + "defaultMessage": "!!!Could not load services and user information", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.requiredRequestsFailed", + "start": { + "column": 26, + "line": 46 + } + } + ], + "path": "src/components/layout/AppLayout.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.settings", + "start": { + "column": 12, + "line": 13 + } + }, + { + "defaultMessage": "!!!Add new service", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.addNewService", + "start": { + "column": 17, + "line": 17 + } + }, + { + "defaultMessage": "!!!Disable notifications & audio", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.muteApp", + "start": { + "column": 8, + "line": 21 + } + }, + { + "defaultMessage": "!!!Enable notifications & audio", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.unmuteApp", + "start": { + "column": 10, + "line": 25 + } + }, + { + "defaultMessage": "!!!Open workspace drawer", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.openWorkspaceDrawer", + "start": { + "column": 23, + "line": 29 + } + }, + { + "defaultMessage": "!!!Close workspace drawer", + "end": { + "column": 3, + "line": 36 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.closeWorkspaceDrawer", + "start": { + "column": 24, + "line": 33 + } + } + ], + "path": "src/components/layout/Sidebar.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Oh no!", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.headline", + "start": { + "column": 12, + "line": 12 + } + }, + { + "defaultMessage": "!!!{name} has failed to load.", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.text", + "start": { + "column": 8, + "line": 16 + } + }, + { + "defaultMessage": "!!!Reload {name}", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.action", + "start": { + "column": 10, + "line": 20 + } + }, + { + "defaultMessage": "!!!Edit {name}", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.editAction", + "start": { + "column": 14, + "line": 24 + } + }, + { + "defaultMessage": "!!!Error:", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.message", + "start": { + "column": 16, + "line": 28 + } + } + ], + "path": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!{name} is disabled", + "end": { + "column": 3, + "line": 12 + }, + "file": "src/components/services/content/ServiceDisabled.js", + "id": "service.disabledHandler.headline", + "start": { + "column": 12, + "line": 9 + } + }, + { + "defaultMessage": "!!!Enable {name}", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/services/content/ServiceDisabled.js", + "id": "service.disabledHandler.action", + "start": { + "column": 10, + "line": 13 + } + } + ], + "path": "src/components/services/content/ServiceDisabled.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Welcome to Franz", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/services/content/Services.js", + "id": "services.welcome", + "start": { + "column": 11, + "line": 11 + } + }, + { + "defaultMessage": "!!!Get started", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/services/content/Services.js", + "id": "services.getStarted", + "start": { + "column": 14, + "line": 15 + } + } + ], + "path": "src/components/services/content/Services.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Oh no!", + "end": { + "column": 3, + "line": 13 + }, + "file": "src/components/services/content/WebviewCrashHandler.js", + "id": "service.crashHandler.headline", + "start": { + "column": 12, + "line": 10 + } + }, + { + "defaultMessage": "!!!{name} has caused an error.", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/services/content/WebviewCrashHandler.js", + "id": "service.crashHandler.text", + "start": { + "column": 8, + "line": 14 + } + }, + { + "defaultMessage": "!!!Reload {name}", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/services/content/WebviewCrashHandler.js", + "id": "service.crashHandler.action", + "start": { + "column": 10, + "line": 18 + } + }, + { + "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/services/content/WebviewCrashHandler.js", + "id": "service.crashHandler.autoReload", + "start": { + "column": 14, + "line": 22 + } + } + ], + "path": "src/components/services/content/WebviewCrashHandler.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Reload", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.reload", + "start": { + "column": 10, + "line": 15 + } + }, + { + "defaultMessage": "!!!Edit", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.edit", + "start": { + "column": 8, + "line": 19 + } + }, + { + "defaultMessage": "!!!Disable notifications", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.disableNotifications", + "start": { + "column": 24, + "line": 23 + } + }, + { + "defaultMessage": "!!!Enable notifications", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.enableNotification", + "start": { + "column": 23, + "line": 27 + } + }, + { + "defaultMessage": "!!!Disable audio", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.disableAudio", + "start": { + "column": 16, + "line": 31 + } + }, + { + "defaultMessage": "!!!Enable audio", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.enableAudio", + "start": { + "column": 15, + "line": 35 + } + }, + { + "defaultMessage": "!!!Disable Service", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.disableService", + "start": { + "column": 18, + "line": 39 + } + }, + { + "defaultMessage": "!!!Enable Service", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.enableService", + "start": { + "column": 17, + "line": 43 + } + }, + { + "defaultMessage": "!!!Delete Service", + "end": { + "column": 3, + "line": 50 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.deleteService", + "start": { + "column": 17, + "line": 47 + } + } + ], + "path": "src/components/services/tabs/TabItem.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Account", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Your Subscription", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headlineSubscription", + "start": { + "column": 24, + "line": 19 + } + }, + { + "defaultMessage": "!!!Upgrade your Account", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headlineUpgrade", + "start": { + "column": 19, + "line": 23 + } + }, + { + "defaultMessage": "!!Invoices", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headlineInvoices", + "start": { + "column": 20, + "line": 27 + } + }, + { + "defaultMessage": "!!Danger Zone", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headlineDangerZone", + "start": { + "column": 22, + "line": 31 + } + }, + { + "defaultMessage": "!!!Manage your subscription", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.manageSubscription.label", + "start": { + "column": 33, + "line": 35 + } + }, + { + "defaultMessage": "!!!Basic Account", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.accountType.basic", + "start": { + "column": 20, + "line": 39 + } + }, + { + "defaultMessage": "!!!Premium Supporter Account", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.accountType.premium", + "start": { + "column": 22, + "line": 43 + } + }, + { + "defaultMessage": "!!!Edit Account", + "end": { + "column": 3, + "line": 50 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.account.editButton", + "start": { + "column": 21, + "line": 47 + } + }, + { + "defaultMessage": "!!!Download", + "end": { + "column": 3, + "line": 54 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.invoiceDownload", + "start": { + "column": 19, + "line": 51 + } + }, + { + "defaultMessage": "!!!Could not load user information", + "end": { + "column": 3, + "line": 58 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.userInfoRequestFailed", + "start": { + "column": 25, + "line": 55 + } + }, + { + "defaultMessage": "!!!Try again", + "end": { + "column": 3, + "line": 62 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.tryReloadUserInfoRequest", + "start": { + "column": 28, + "line": 59 + } + }, + { + "defaultMessage": "!!!Delete account", + "end": { + "column": 3, + "line": 66 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.deleteAccount", + "start": { + "column": 17, + "line": 63 + } + }, + { + "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", + "end": { + "column": 3, + "line": 70 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.deleteInfo", + "start": { + "column": 14, + "line": 67 + } + }, + { + "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", + "end": { + "column": 3, + "line": 74 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.deleteEmailSent", + "start": { + "column": 19, + "line": 71 + } + } + ], + "path": "src/components/settings/account/AccountDashboard.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Available services", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.availableServices", + "start": { + "column": 21, + "line": 12 + } + }, + { + "defaultMessage": "!!!Your services", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.yourServices", + "start": { + "column": 16, + "line": 16 + } + }, + { + "defaultMessage": "!!!Your workspaces", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.yourWorkspaces", + "start": { + "column": 18, + "line": 20 + } + }, + { + "defaultMessage": "!!!Account", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.account", + "start": { + "column": 11, + "line": 24 + } + }, + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.settings", + "start": { + "column": 12, + "line": 28 + } + }, + { + "defaultMessage": "!!!Invite Friends", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.inviteFriends", + "start": { + "column": 17, + "line": 32 + } + }, + { + "defaultMessage": "!!!Logout", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.logout", + "start": { + "column": 10, + "line": 36 + } + } + ], + "path": "src/components/settings/navigation/SettingsNavigation.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Available Services", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Search service", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.searchService", + "start": { + "column": 17, + "line": 19 + } + }, + { + "defaultMessage": "!!!Most popular", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.mostPopular", + "start": { + "column": 22, + "line": 23 + } + }, + { + "defaultMessage": "!!!All services", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.all", + "start": { + "column": 14, + "line": 27 + } + }, + { + "defaultMessage": "!!!Development", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.dev", + "start": { + "column": 14, + "line": 31 + } + }, + { + "defaultMessage": "!!!Sorry, but no service matched your search term.", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.nothingFound", + "start": { + "column": 16, + "line": 35 + } + }, + { + "defaultMessage": "!!!Service successfully added", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.servicesSuccessfulAddedInfo", + "start": { + "column": 31, + "line": 39 + } + }, + { + "defaultMessage": "!!!Missing a service?", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.missingService", + "start": { + "column": 18, + "line": 43 + } + } + ], + "path": "src/components/settings/recipes/RecipesDashboard.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Save service", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.saveButton", + "start": { + "column": 15, + "line": 22 + } + }, + { + "defaultMessage": "!!!Delete Service", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.deleteButton", + "start": { + "column": 17, + "line": 26 + } + }, + { + "defaultMessage": "!!!Available services", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.availableServices", + "start": { + "column": 21, + "line": 30 + } + }, + { + "defaultMessage": "!!!Your services", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.yourServices", + "start": { + "column": 16, + "line": 34 + } + }, + { + "defaultMessage": "!!!Add {name}", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.addServiceHeadline", + "start": { + "column": 22, + "line": 38 + } + }, + { + "defaultMessage": "!!!Edit {name}", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.editServiceHeadline", + "start": { + "column": 23, + "line": 42 + } + }, + { + "defaultMessage": "!!!Hosted", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.tabHosted", + "start": { + "column": 13, + "line": 46 + } + }, + { + "defaultMessage": "!!!Self hosted ⭐️", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.tabOnPremise", + "start": { + "column": 16, + "line": 50 + } + }, + { + "defaultMessage": "!!!Use the hosted {name} service.", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.useHostedService", + "start": { + "column": 20, + "line": 54 + } + }, + { + "defaultMessage": "!!!Could not validate custom {name} server.", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.customUrlValidationError", + "start": { + "column": 28, + "line": 58 + } + }, + { + "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.customUrlPremiumInfo", + "start": { + "column": 24, + "line": 62 + } + }, + { + "defaultMessage": "!!!Upgrade your account", + "end": { + "column": 3, + "line": 69 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.customUrlUpgradeAccount", + "start": { + "column": 27, + "line": 66 + } + }, + { + "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", + "end": { + "column": 3, + "line": 73 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.indirectMessageInfo", + "start": { + "column": 23, + "line": 70 + } + }, + { + "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", + "end": { + "column": 3, + "line": 77 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.isMutedInfo", + "start": { + "column": 15, + "line": 74 + } + }, + { + "defaultMessage": "!!!Notifications", + "end": { + "column": 3, + "line": 81 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.headlineNotifications", + "start": { + "column": 25, + "line": 78 + } + }, + { + "defaultMessage": "!!!Unread message badges", + "end": { + "column": 3, + "line": 85 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.headlineBadges", + "start": { + "column": 18, + "line": 82 + } + }, + { + "defaultMessage": "!!!General", + "end": { + "column": 3, + "line": 89 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.headlineGeneral", + "start": { + "column": 19, + "line": 86 + } + }, + { + "defaultMessage": "!!!Delete", + "end": { + "column": 3, + "line": 93 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.iconDelete", + "start": { + "column": 14, + "line": 90 + } + }, + { + "defaultMessage": "!!!Drop your image, or click here", + "end": { + "column": 3, + "line": 97 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.iconUpload", + "start": { + "column": 14, + "line": 94 + } + }, + { + "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", + "end": { + "column": 3, + "line": 101 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.proxy.headline", + "start": { + "column": 17, + "line": 98 + } + }, + { + "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", + "end": { + "column": 3, + "line": 105 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.proxy.restartInfo", + "start": { + "column": 20, + "line": 102 + } + }, + { + "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", + "end": { + "column": 3, + "line": 109 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.proxy.info", + "start": { + "column": 13, + "line": 106 + } + } + ], + "path": "src/components/settings/services/EditServiceForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Error", + "end": { + "column": 3, + "line": 13 + }, + "file": "src/components/settings/services/ServiceError.js", + "id": "settings.service.error.headline", + "start": { + "column": 12, + "line": 10 + } + }, + { + "defaultMessage": "!!!Back to services", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/settings/services/ServiceError.js", + "id": "settings.service.error.goBack", + "start": { + "column": 10, + "line": 14 + } + }, + { + "defaultMessage": "!!!Available services", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/settings/services/ServiceError.js", + "id": "settings.service.form.availableServices", + "start": { + "column": 21, + "line": 18 + } + }, + { + "defaultMessage": "!!!Could not load service recipe.", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/settings/services/ServiceError.js", + "id": "settings.service.error.message", + "start": { + "column": 16, + "line": 22 + } + } + ], + "path": "src/components/settings/services/ServiceError.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Service is disabled", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/settings/services/ServiceItem.js", + "id": "settings.services.tooltip.isDisabled", + "start": { + "column": 21, + "line": 11 + } + }, + { + "defaultMessage": "!!!Notifications are disabled", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/settings/services/ServiceItem.js", + "id": "settings.services.tooltip.notificationsDisabled", + "start": { + "column": 32, + "line": 15 + } + }, + { + "defaultMessage": "!!!All sounds are muted", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/settings/services/ServiceItem.js", + "id": "settings.services.tooltip.isMuted", + "start": { + "column": 18, + "line": 19 + } + } + ], + "path": "src/components/settings/services/ServiceItem.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your services", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.headline", + "start": { + "column": 12, + "line": 14 + } + }, + { + "defaultMessage": "!!!Search service", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.searchService", + "start": { + "column": 17, + "line": 18 + } + }, + { + "defaultMessage": "!!!You haven't added any services yet.", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.noServicesAdded", + "start": { + "column": 19, + "line": 22 + } + }, + { + "defaultMessage": "!!!Sorry, but no service matched your search term.", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.recipes.nothingFound", + "start": { + "column": 18, + "line": 26 + } + }, + { + "defaultMessage": "!!!Discover services", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.discoverServices", + "start": { + "column": 20, + "line": 30 + } + }, + { + "defaultMessage": "!!!Could not load your services", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.servicesRequestFailed", + "start": { + "column": 25, + "line": 34 + } + }, + { + "defaultMessage": "!!!Try again", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.account.tryReloadServices", + "start": { + "column": 21, + "line": 38 + } + }, + { + "defaultMessage": "!!!Your changes have been saved", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.updatedInfo", + "start": { + "column": 15, + "line": 42 + } + }, + { + "defaultMessage": "!!!Service has been deleted", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.deletedInfo", + "start": { + "column": 15, + "line": 46 + } + } + ], + "path": "src/components/settings/services/ServicesDashboard.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headline", + "start": { + "column": 12, + "line": 16 + } + }, + { + "defaultMessage": "!!!General", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineGeneral", + "start": { + "column": 19, + "line": 20 + } + }, + { + "defaultMessage": "!!!Language", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineLanguage", + "start": { + "column": 20, + "line": 24 + } + }, + { + "defaultMessage": "!!!Updates", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineUpdates", + "start": { + "column": 19, + "line": 28 + } + }, + { + "defaultMessage": "!!!Appearance", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineAppearance", + "start": { + "column": 22, + "line": 32 + } + }, + { + "defaultMessage": "!!!Advanced", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineAdvanced", + "start": { + "column": 20, + "line": 36 + } + }, + { + "defaultMessage": "!!!Help us to translate Franz into your language.", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.translationHelp", + "start": { + "column": 19, + "line": 40 + } + }, + { + "defaultMessage": "!!!Cache", + "end": { + "column": 3, + "line": 47 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.subheadlineCache", + "start": { + "column": 20, + "line": 44 + } + }, + { + "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", + "end": { + "column": 3, + "line": 51 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.cacheInfo", + "start": { + "column": 13, + "line": 48 + } + }, + { + "defaultMessage": "!!!Clear cache", + "end": { + "column": 3, + "line": 55 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.buttonClearAllCache", + "start": { + "column": 23, + "line": 52 + } + }, + { + "defaultMessage": "!!!Check for updates", + "end": { + "column": 3, + "line": 59 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.buttonSearchForUpdate", + "start": { + "column": 25, + "line": 56 + } + }, + { + "defaultMessage": "!!!Restart & install update", + "end": { + "column": 3, + "line": 63 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.buttonInstallUpdate", + "start": { + "column": 23, + "line": 60 + } + }, + { + "defaultMessage": "!!!Is searching for update", + "end": { + "column": 3, + "line": 67 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.updateStatusSearching", + "start": { + "column": 25, + "line": 64 + } + }, + { + "defaultMessage": "!!!Update available, downloading...", + "end": { + "column": 3, + "line": 71 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.updateStatusAvailable", + "start": { + "column": 25, + "line": 68 + } + }, + { + "defaultMessage": "!!!You are using the latest version of Franz", + "end": { + "column": 3, + "line": 75 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.updateStatusUpToDate", + "start": { + "column": 24, + "line": 72 + } + }, + { + "defaultMessage": "!!!Current version:", + "end": { + "column": 3, + "line": 79 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.currentVersion", + "start": { + "column": 18, + "line": 76 + } + }, + { + "defaultMessage": "!!!Changes require restart", + "end": { + "column": 3, + "line": 83 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.restartRequired", + "start": { + "column": 29, + "line": 80 + } + }, + { + "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", + "end": { + "column": 3, + "line": 87 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.languageDisclaimer", + "start": { + "column": 22, + "line": 84 + } + } + ], + "path": "src/components/settings/settings/EditSettingsForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Account", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Update Profile", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.headlineProfile", + "start": { + "column": 19, + "line": 19 + } + }, + { + "defaultMessage": "!!!Account Information", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.headlineAccount", + "start": { + "column": 19, + "line": 23 + } + }, + { + "defaultMessage": "!!!Change Password", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.headlinePassword", + "start": { + "column": 20, + "line": 27 + } + }, + { + "defaultMessage": "!!!Your changes have been saved", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.successInfo", + "start": { + "column": 15, + "line": 31 + } + }, + { + "defaultMessage": "!!!Update profile", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.buttonSave", + "start": { + "column": 14, + "line": 35 + } + } + ], + "path": "src/components/settings/user/EditUserForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Support the development of Franz", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.submit.label", + "start": { + "column": 21, + "line": 14 + } + }, + { + "defaultMessage": "!!!Could not initialize payment form", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.paymentSessionError", + "start": { + "column": 23, + "line": 18 + } + }, + { + "defaultMessage": "!!!free", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.type.free", + "start": { + "column": 12, + "line": 22 + } + }, + { + "defaultMessage": "!!!month", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.type.month", + "start": { + "column": 15, + "line": 26 + } + }, + { + "defaultMessage": "!!!year", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.type.year", + "start": { + "column": 14, + "line": 30 + } + }, + { + "defaultMessage": "!!!The Franz Premium Supporter Account includes", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.includedFeatures", + "start": { + "column": 20, + "line": 34 + } + }, + { + "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.onpremise.mattermost", + "start": { + "column": 13, + "line": 38 + } + }, + { + "defaultMessage": "!!!No app delays & nagging to upgrade license", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.noInterruptions", + "start": { + "column": 19, + "line": 42 + } + }, + { + "defaultMessage": "!!!Proxy support for services", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.proxy", + "start": { + "column": 9, + "line": 46 + } + }, + { + "defaultMessage": "!!!Support for Spellchecker", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.spellchecker", + "start": { + "column": 16, + "line": 50 + } + }, + { + "defaultMessage": "!!!No ads, ever!", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.ads", + "start": { + "column": 7, + "line": 54 + } + }, + { + "defaultMessage": "!!!coming soon", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.comingSoon", + "start": { + "column": 14, + "line": 58 + } + }, + { + "defaultMessage": "!!!EU residents: local sales tax may apply", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.euTaxInfo", + "start": { + "column": 13, + "line": 62 + } + } + ], + "path": "src/components/subscription/SubscriptionForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Cancel", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/subscription/SubscriptionPopup.js", + "id": "subscriptionPopup.buttonCancel", + "start": { + "column": 16, + "line": 11 + } + }, + { + "defaultMessage": "!!!Done", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/subscription/SubscriptionPopup.js", + "id": "subscriptionPopup.buttonDone", + "start": { + "column": 14, + "line": 15 + } + } + ], + "path": "src/components/subscription/SubscriptionPopup.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Upgrade account", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/ui/PremiumFeatureContainer/index.js", + "id": "premiumFeature.button.upgradeAccount", + "start": { + "column": 10, + "line": 15 + } + } + ], + "path": "src/components/ui/PremiumFeatureContainer/index.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Loading", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/ui/WebviewLoader/index.js", + "id": "service.webviewLoader.loading", + "start": { + "column": 11, + "line": 11 + } + } + ], + "path": "src/components/ui/WebviewLoader/index.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Something went wrong.", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/util/ErrorBoundary/index.js", + "id": "app.errorHandler.headline", + "start": { + "column": 12, + "line": 11 + } + }, + { + "defaultMessage": "!!!Reload", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/util/ErrorBoundary/index.js", + "id": "app.errorHandler.action", + "start": { + "column": 10, + "line": 15 + } + } + ], + "path": "src/components/util/ErrorBoundary/index.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Name", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.name", + "start": { + "column": 8, + "line": 28 + } + }, + { + "defaultMessage": "!!!Enable service", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableService", + "start": { + "column": 17, + "line": 32 + } + }, + { + "defaultMessage": "!!!Enable Notifications", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableNotification", + "start": { + "column": 22, + "line": 36 + } + }, + { + "defaultMessage": "!!!Show unread message badges", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableBadge", + "start": { + "column": 15, + "line": 40 + } + }, + { + "defaultMessage": "!!!Enable audio", + "end": { + "column": 3, + "line": 47 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableAudio", + "start": { + "column": 15, + "line": 44 + } + }, + { + "defaultMessage": "!!!Team", + "end": { + "column": 3, + "line": 51 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.team", + "start": { + "column": 8, + "line": 48 + } + }, + { + "defaultMessage": "!!!Custom server", + "end": { + "column": 3, + "line": 55 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.customUrl", + "start": { + "column": 13, + "line": 52 + } + }, + { + "defaultMessage": "!!!Show message badge for all new messages", + "end": { + "column": 3, + "line": 59 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.indirectMessages", + "start": { + "column": 20, + "line": 56 + } + }, + { + "defaultMessage": "!!!Custom icon", + "end": { + "column": 3, + "line": 63 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.icon", + "start": { + "column": 8, + "line": 60 + } + }, + { + "defaultMessage": "!!!Enable Dark Mode", + "end": { + "column": 3, + "line": 67 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableDarkMode", + "start": { + "column": 18, + "line": 64 + } + }, + { + "defaultMessage": "!!!Use Proxy", + "end": { + "column": 3, + "line": 71 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.isEnabled", + "start": { + "column": 15, + "line": 68 + } + }, + { + "defaultMessage": "!!!Proxy Host/IP", + "end": { + "column": 3, + "line": 75 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.host", + "start": { + "column": 13, + "line": 72 + } + }, + { + "defaultMessage": "!!!Port", + "end": { + "column": 3, + "line": 79 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.port", + "start": { + "column": 13, + "line": 76 + } + }, + { + "defaultMessage": "!!!User", + "end": { + "column": 3, + "line": 83 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.user", + "start": { + "column": 13, + "line": 80 + } + }, + { + "defaultMessage": "!!!Password", + "end": { + "column": 3, + "line": 87 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.password", + "start": { + "column": 17, + "line": 84 + } + } + ], + "path": "src/containers/settings/EditServiceScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Launch Franz on start", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.autoLaunchOnStart", + "start": { + "column": 21, + "line": 22 + } + }, + { + "defaultMessage": "!!!Open in background", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.autoLaunchInBackground", + "start": { + "column": 26, + "line": 26 + } + }, + { + "defaultMessage": "!!!Keep Franz in background when closing the window", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.runInBackground", + "start": { + "column": 19, + "line": 30 + } + }, + { + "defaultMessage": "!!!Show Franz in system tray", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.enableSystemTray", + "start": { + "column": 20, + "line": 34 + } + }, + { + "defaultMessage": "!!!Minimize Franz to system tray", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.minimizeToSystemTray", + "start": { + "column": 24, + "line": 38 + } + }, + { + "defaultMessage": "!!!Language", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.language", + "start": { + "column": 12, + "line": 42 + } + }, + { + "defaultMessage": "!!!Dark Mode", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.darkMode", + "start": { + "column": 12, + "line": 46 + } + }, + { + "defaultMessage": "!!!Display disabled services tabs", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.showDisabledServices", + "start": { + "column": 24, + "line": 50 + } + }, + { + "defaultMessage": "!!!Show unread message badge when notifications are disabled", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.showMessagesBadgesWhenMuted", + "start": { + "column": 29, + "line": 54 + } + }, + { + "defaultMessage": "!!!Enable spell checking", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.enableSpellchecking", + "start": { + "column": 23, + "line": 58 + } + }, + { + "defaultMessage": "!!!Enable GPU Acceleration", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.enableGPUAcceleration", + "start": { + "column": 25, + "line": 62 + } + }, + { + "defaultMessage": "!!!Include beta versions", + "end": { + "column": 3, + "line": 69 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.beta", + "start": { + "column": 8, + "line": 66 + } + } + ], + "path": "src/containers/settings/EditSettingsScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Firstname", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.firstname", + "start": { + "column": 13, + "line": 14 + } + }, + { + "defaultMessage": "!!!Lastname", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.lastname", + "start": { + "column": 12, + "line": 18 + } + }, + { + "defaultMessage": "!!!Email", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.email", + "start": { + "column": 9, + "line": 22 + } + }, + { + "defaultMessage": "!!!Account type", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.accountType.label", + "start": { + "column": 20, + "line": 26 + } + }, + { + "defaultMessage": "!!!Individual", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.accountType.individual", + "start": { + "column": 25, + "line": 30 + } + }, + { + "defaultMessage": "!!!Non-Profit", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.accountType.non-profit", + "start": { + "column": 24, + "line": 34 + } + }, + { + "defaultMessage": "!!!Company", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.accountType.company", + "start": { + "column": 22, + "line": 38 + } + }, + { + "defaultMessage": "!!!Current password", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.currentPassword", + "start": { + "column": 19, + "line": 42 + } + }, + { + "defaultMessage": "!!!New password", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.newPassword", + "start": { + "column": 15, + "line": 46 + } + } + ], + "path": "src/containers/settings/EditUserScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Changes in Franz {version}", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/announcements/components/AnnouncementScreen.js", + "id": "feature.announcements.changelog.headline", + "start": { + "column": 12, + "line": 20 + } + } + ], + "path": "src/features/announcements/components/AnnouncementScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please purchase license to skip waiting", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/features/delayApp/Component.js", + "id": "feature.delayApp.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Get a Franz Supporter License", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/features/delayApp/Component.js", + "id": "feature.delayApp.action", + "start": { + "column": 10, + "line": 19 + } + }, + { + "defaultMessage": "!!!Franz will continue in {seconds} seconds.", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/features/delayApp/Component.js", + "id": "feature.delayApp.text", + "start": { + "column": 8, + "line": 23 + } + } + ], + "path": "src/features/delayApp/Component.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Franz is better together!", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.text", + "start": { + "column": 8, + "line": 19 + } + }, + { + "defaultMessage": "!!!Share as email", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.action.email", + "start": { + "column": 16, + "line": 23 + } + }, + { + "defaultMessage": "!!!Share on Facebook", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.action.facebook", + "start": { + "column": 19, + "line": 27 + } + }, + { + "defaultMessage": "!!!Share on Twitter", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.action.twitter", + "start": { + "column": 18, + "line": 31 + } + }, + { + "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.shareText.email", + "start": { + "column": 18, + "line": 35 + } + }, + { + "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.shareText.twitter", + "start": { + "column": 20, + "line": 39 + } + } + ], + "path": "src/features/shareFranz/Component.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Create workspace", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/features/workspaces/components/CreateWorkspaceForm.js", + "id": "settings.workspace.add.form.submitButton", + "start": { + "column": 16, + "line": 13 + } + }, + { + "defaultMessage": "!!!Name", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/features/workspaces/components/CreateWorkspaceForm.js", + "id": "settings.workspace.add.form.name", + "start": { + "column": 8, + "line": 17 + } + } + ], + "path": "src/features/workspaces/components/CreateWorkspaceForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delete workspace", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.buttonDelete", + "start": { + "column": 16, + "line": 19 + } + }, + { + "defaultMessage": "!!!Save workspace", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.buttonSave", + "start": { + "column": 14, + "line": 23 + } + }, + { + "defaultMessage": "!!!Name", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.name", + "start": { + "column": 8, + "line": 27 + } + }, + { + "defaultMessage": "!!!Your workspaces", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.yourWorkspaces", + "start": { + "column": 18, + "line": 31 + } + }, + { + "defaultMessage": "!!!Services in this Workspace", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.servicesInWorkspaceHeadline", + "start": { + "column": 31, + "line": 35 + } + } + ], + "path": "src/features/workspaces/components/EditWorkspaceForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Workspaces", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.headline", + "start": { + "column": 12, + "line": 16 + } + }, + { + "defaultMessage": "!!!All services", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.allServices", + "start": { + "column": 15, + "line": 20 + } + }, + { + "defaultMessage": "!!!Workspaces settings", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.workspacesSettingsTooltip", + "start": { + "column": 29, + "line": 24 + } + }, + { + "defaultMessage": "!!!Info about workspace feature", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.workspaceFeatureInfo", + "start": { + "column": 24, + "line": 28 + } + }, + { + "defaultMessage": "!!!Create your first workspace", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.premiumCtaButtonLabel", + "start": { + "column": 25, + "line": 32 + } + }, + { + "defaultMessage": "!!!Reactivate premium account", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.reactivatePremiumAccountLabel", + "start": { + "column": 28, + "line": 36 + } + }, + { + "defaultMessage": "!!!add new workspace", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.addNewWorkspaceLabel", + "start": { + "column": 24, + "line": 40 + } + }, + { + "defaultMessage": "!!!Premium feature", + "end": { + "column": 3, + "line": 47 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.proFeatureBadge", + "start": { + "column": 23, + "line": 44 + } + } + ], + "path": "src/features/workspaces/components/WorkspaceDrawer.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!No services added yet", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", + "id": "workspaceDrawer.item.noServicesAddedYet", + "start": { + "column": 22, + "line": 12 + } + }, + { + "defaultMessage": "!!!edit", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", + "id": "workspaceDrawer.item.contextMenuEdit", + "start": { + "column": 19, + "line": 16 + } + } + ], + "path": "src/features/workspaces/components/WorkspaceDrawerItem.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your workspaces", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.headline", + "start": { + "column": 12, + "line": 17 + } + }, + { + "defaultMessage": "!!!You haven't added any workspaces yet.", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.noWorkspacesAdded", + "start": { + "column": 19, + "line": 21 + } + }, + { + "defaultMessage": "!!!Could not load your workspaces", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.workspacesRequestFailed", + "start": { + "column": 27, + "line": 25 + } + }, + { + "defaultMessage": "!!!Try again", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.tryReloadWorkspaces", + "start": { + "column": 23, + "line": 29 + } + }, + { + "defaultMessage": "!!!Your changes have been saved", + "end": { + "column": 3, + "line": 36 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.updatedInfo", + "start": { + "column": 15, + "line": 33 + } + }, + { + "defaultMessage": "!!!Workspace has been deleted", + "end": { + "column": 3, + "line": 40 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.deletedInfo", + "start": { + "column": 15, + "line": 37 + } + }, + { + "defaultMessage": "!!!Info about workspace feature", + "end": { + "column": 3, + "line": 44 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.workspaceFeatureInfo", + "start": { + "column": 24, + "line": 41 + } + }, + { + "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", + "end": { + "column": 3, + "line": 48 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.workspaceFeatureHeadline", + "start": { + "column": 28, + "line": 45 + } + } + ], + "path": "src/features/workspaces/components/WorkspacesDashboard.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Switching to", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/features/workspaces/components/WorkspaceSwitchingIndicator.js", + "id": "workspaces.switchingIndicator.switchingTo", + "start": { + "column": 15, + "line": 12 + } + } + ], + "path": "src/features/workspaces/components/WorkspaceSwitchingIndicator.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Field is required", + "end": { + "column": 3, + "line": 7 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.required", + "start": { + "column": 12, + "line": 4 + } + }, + { + "defaultMessage": "!!!Email not valid", + "end": { + "column": 3, + "line": 11 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.email", + "start": { + "column": 9, + "line": 8 + } + }, + { + "defaultMessage": "!!!Not a valid URL", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.url", + "start": { + "column": 7, + "line": 12 + } + }, + { + "defaultMessage": "!!!Too few characters", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.minLength", + "start": { + "column": 13, + "line": 16 + } + }, + { + "defaultMessage": "!!!At least one is required", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.oneRequired", + "start": { + "column": 15, + "line": 20 + } + } + ], + "path": "src/helpers/validation-helpers.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Can't connect to Franz Online Services", + "end": { + "column": 3, + "line": 7 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.api.unhealthy", + "start": { + "column": 16, + "line": 4 + } + }, + { + "defaultMessage": "!!!You are not connected to the internet.", + "end": { + "column": 3, + "line": 11 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.notConnectedToTheInternet", + "start": { + "column": 29, + "line": 8 + } + }, + { + "defaultMessage": "!!!Spell checking language", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.spellchecking.language", + "start": { + "column": 24, + "line": 12 + } + }, + { + "defaultMessage": "!!!Use System Default ({default})", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.spellchecker.useDefault", + "start": { + "column": 29, + "line": 16 + } + }, + { + "defaultMessage": "!!!Detect language automatically", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.spellchecking.autodetect", + "start": { + "column": 34, + "line": 20 + } + }, + { + "defaultMessage": "!!!Automatic", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.spellchecking.autodetect.short", + "start": { + "column": 39, + "line": 24 + } + } + ], + "path": "src/i18n/globalMessages.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Edit", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit", + "start": { + "column": 8, + "line": 14 + } + }, + { + "defaultMessage": "!!!Undo", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.undo", + "start": { + "column": 8, + "line": 18 + } + }, + { + "defaultMessage": "!!!Redo", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.redo", + "start": { + "column": 8, + "line": 22 + } + }, + { + "defaultMessage": "!!!Cut", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.cut", + "start": { + "column": 7, + "line": 26 + } + }, + { + "defaultMessage": "!!!Copy", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.copy", + "start": { + "column": 8, + "line": 30 + } + }, + { + "defaultMessage": "!!!Paste", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.paste", + "start": { + "column": 9, + "line": 34 + } + }, + { + "defaultMessage": "!!!Paste And Match Style", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.pasteAndMatchStyle", + "start": { + "column": 22, + "line": 38 + } + }, + { + "defaultMessage": "!!!Delete", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.delete", + "start": { + "column": 10, + "line": 42 + } + }, + { + "defaultMessage": "!!!Select All", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.selectAll", + "start": { + "column": 13, + "line": 46 + } + }, + { + "defaultMessage": "!!!Speech", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.speech", + "start": { + "column": 10, + "line": 50 + } + }, + { + "defaultMessage": "!!!Start Speaking", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.startSpeaking", + "start": { + "column": 17, + "line": 54 + } + }, + { + "defaultMessage": "!!!Stop Speaking", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.stopSpeaking", + "start": { + "column": 16, + "line": 58 + } + }, + { + "defaultMessage": "!!!Start Dictation", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.startDictation", + "start": { + "column": 18, + "line": 62 + } + }, + { + "defaultMessage": "!!!Emoji & Symbols", + "end": { + "column": 3, + "line": 69 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.emojiSymbols", + "start": { + "column": 16, + "line": 66 + } + }, + { + "defaultMessage": "!!!Actual Size", + "end": { + "column": 3, + "line": 73 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.resetZoom", + "start": { + "column": 13, + "line": 70 + } + }, + { + "defaultMessage": "!!!Zoom In", + "end": { + "column": 3, + "line": 77 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.zoomIn", + "start": { + "column": 10, + "line": 74 + } + }, + { + "defaultMessage": "!!!Zoom Out", + "end": { + "column": 3, + "line": 81 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.zoomOut", + "start": { + "column": 11, + "line": 78 + } + }, + { + "defaultMessage": "!!!Enter Full Screen", + "end": { + "column": 3, + "line": 85 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.enterFullScreen", + "start": { + "column": 19, + "line": 82 + } + }, + { + "defaultMessage": "!!!Exit Full Screen", + "end": { + "column": 3, + "line": 89 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.exitFullScreen", + "start": { + "column": 18, + "line": 86 + } + }, + { + "defaultMessage": "!!!Toggle Full Screen", + "end": { + "column": 3, + "line": 93 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.toggleFullScreen", + "start": { + "column": 20, + "line": 90 + } + }, + { + "defaultMessage": "!!!Toggle Developer Tools", + "end": { + "column": 3, + "line": 97 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.toggleDevTools", + "start": { + "column": 18, + "line": 94 + } + }, + { + "defaultMessage": "!!!Toggle Service Developer Tools", + "end": { + "column": 3, + "line": 101 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.toggleServiceDevTools", + "start": { + "column": 25, + "line": 98 + } + }, + { + "defaultMessage": "!!!Reload Service", + "end": { + "column": 3, + "line": 105 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.reloadService", + "start": { + "column": 17, + "line": 102 + } + }, + { + "defaultMessage": "!!!Reload Franz", + "end": { + "column": 3, + "line": 109 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.reloadFranz", + "start": { + "column": 15, + "line": 106 + } + }, + { + "defaultMessage": "!!!Minimize", + "end": { + "column": 3, + "line": 113 + }, + "file": "src/lib/Menu.js", + "id": "menu.window.minimize", + "start": { + "column": 12, + "line": 110 + } + }, + { + "defaultMessage": "!!!Close", + "end": { + "column": 3, + "line": 117 + }, + "file": "src/lib/Menu.js", + "id": "menu.window.close", + "start": { + "column": 9, + "line": 114 + } + }, + { + "defaultMessage": "!!!Learn More", + "end": { + "column": 3, + "line": 121 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.learnMore", + "start": { + "column": 13, + "line": 118 + } + }, + { + "defaultMessage": "!!!Changelog", + "end": { + "column": 3, + "line": 125 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.changelog", + "start": { + "column": 13, + "line": 122 + } + }, + { + "defaultMessage": "!!!Support", + "end": { + "column": 3, + "line": 129 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.support", + "start": { + "column": 11, + "line": 126 + } + }, + { + "defaultMessage": "!!!Terms of Service", + "end": { + "column": 3, + "line": 133 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.tos", + "start": { + "column": 7, + "line": 130 + } + }, + { + "defaultMessage": "!!!Privacy Statement", + "end": { + "column": 3, + "line": 137 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.privacy", + "start": { + "column": 11, + "line": 134 + } + }, + { + "defaultMessage": "!!!File", + "end": { + "column": 3, + "line": 141 + }, + "file": "src/lib/Menu.js", + "id": "menu.file", + "start": { + "column": 8, + "line": 138 + } + }, + { + "defaultMessage": "!!!View", + "end": { + "column": 3, + "line": 145 + }, + "file": "src/lib/Menu.js", + "id": "menu.view", + "start": { + "column": 8, + "line": 142 + } + }, + { + "defaultMessage": "!!!Services", + "end": { + "column": 3, + "line": 149 + }, + "file": "src/lib/Menu.js", + "id": "menu.services", + "start": { + "column": 12, + "line": 146 + } + }, + { + "defaultMessage": "!!!Window", + "end": { + "column": 3, + "line": 153 + }, + "file": "src/lib/Menu.js", + "id": "menu.window", + "start": { + "column": 10, + "line": 150 + } + }, + { + "defaultMessage": "!!!Help", + "end": { + "column": 3, + "line": 157 + }, + "file": "src/lib/Menu.js", + "id": "menu.help", + "start": { + "column": 8, + "line": 154 + } + }, + { + "defaultMessage": "!!!About Franz", + "end": { + "column": 3, + "line": 161 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.about", + "start": { + "column": 9, + "line": 158 + } + }, + { + "defaultMessage": "!!!What's new?", + "end": { + "column": 3, + "line": 165 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.announcement", + "start": { + "column": 16, + "line": 162 + } + }, + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 169 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.settings", + "start": { + "column": 12, + "line": 166 + } + }, + { + "defaultMessage": "!!!Hide", + "end": { + "column": 3, + "line": 173 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.hide", + "start": { + "column": 8, + "line": 170 + } + }, + { + "defaultMessage": "!!!Hide Others", + "end": { + "column": 3, + "line": 177 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.hideOthers", + "start": { + "column": 14, + "line": 174 + } + }, + { + "defaultMessage": "!!!Unhide", + "end": { + "column": 3, + "line": 181 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.unhide", + "start": { + "column": 10, + "line": 178 + } + }, + { + "defaultMessage": "!!!Quit", + "end": { + "column": 3, + "line": 185 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.quit", + "start": { + "column": 8, + "line": 182 + } + }, + { + "defaultMessage": "!!!Add New Service...", + "end": { + "column": 3, + "line": 189 + }, + "file": "src/lib/Menu.js", + "id": "menu.services.addNewService", + "start": { + "column": 17, + "line": 186 + } + }, + { + "defaultMessage": "!!!Add New Workspace...", + "end": { + "column": 3, + "line": 193 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces.addNewWorkspace", + "start": { + "column": 19, + "line": 190 + } + }, + { + "defaultMessage": "!!!Open workspace drawer", + "end": { + "column": 3, + "line": 197 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces.openWorkspaceDrawer", + "start": { + "column": 23, + "line": 194 + } + }, + { + "defaultMessage": "!!!Close workspace drawer", + "end": { + "column": 3, + "line": 201 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces.closeWorkspaceDrawer", + "start": { + "column": 24, + "line": 198 + } + }, + { + "defaultMessage": "!!!Activate next service...", + "end": { + "column": 3, + "line": 205 + }, + "file": "src/lib/Menu.js", + "id": "menu.services.setNextServiceActive", + "start": { + "column": 23, + "line": 202 + } + }, + { + "defaultMessage": "!!!Activate previous service...", + "end": { + "column": 3, + "line": 209 + }, + "file": "src/lib/Menu.js", + "id": "menu.services.activatePreviousService", + "start": { + "column": 27, + "line": 206 + } + }, + { + "defaultMessage": "!!!Disable notifications & audio", + "end": { + "column": 3, + "line": 213 + }, + "file": "src/lib/Menu.js", + "id": "sidebar.muteApp", + "start": { + "column": 11, + "line": 210 + } + }, + { + "defaultMessage": "!!!Enable notifications & audio", + "end": { + "column": 3, + "line": 217 + }, + "file": "src/lib/Menu.js", + "id": "sidebar.unmuteApp", + "start": { + "column": 13, + "line": 214 + } + }, + { + "defaultMessage": "!!!Workspaces", + "end": { + "column": 3, + "line": 221 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces", + "start": { + "column": 14, + "line": 218 + } + }, + { + "defaultMessage": "!!!Default", + "end": { + "column": 3, + "line": 225 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces.defaultWorkspace", + "start": { + "column": 20, + "line": 222 + } + } + ], + "path": "src/lib/Menu.json" + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Import.json b/src/i18n/messages/src/components/auth/Import.json new file mode 100644 index 000000000..264fc729b --- /dev/null +++ b/src/i18n/messages/src/components/auth/Import.json @@ -0,0 +1,54 @@ +[ + { + "id": "import.headline", + "defaultMessage": "!!!Import your Franz 4 services", + "file": "src/components/auth/Import.js", + "start": { + "line": 13, + "column": 12 + }, + "end": { + "line": 16, + "column": 3 + } + }, + { + "id": "import.notSupportedHeadline", + "defaultMessage": "!!!Services not yet supported in Franz 5", + "file": "src/components/auth/Import.js", + "start": { + "line": 17, + "column": 24 + }, + "end": { + "line": 20, + "column": 3 + } + }, + { + "id": "import.submit.label", + "defaultMessage": "!!!Import {count} services", + "file": "src/components/auth/Import.js", + "start": { + "line": 21, + "column": 21 + }, + "end": { + "line": 24, + "column": 3 + } + }, + { + "id": "import.skip.label", + "defaultMessage": "!!!I want to add services manually", + "file": "src/components/auth/Import.js", + "start": { + "line": 25, + "column": 19 + }, + "end": { + "line": 28, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Invite.json b/src/i18n/messages/src/components/auth/Invite.json new file mode 100644 index 000000000..57c9bddcf --- /dev/null +++ b/src/i18n/messages/src/components/auth/Invite.json @@ -0,0 +1,93 @@ +[ + { + "id": "settings.invite.headline", + "defaultMessage": "!!!Invite Friends", + "file": "src/components/auth/Invite.js", + "start": { + "line": 16, + "column": 20 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "invite.headline.friends", + "defaultMessage": "!!!Invite 3 of your friends or colleagues", + "file": "src/components/auth/Invite.js", + "start": { + "line": 20, + "column": 12 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "invite.name.label", + "defaultMessage": "!!!Name", + "file": "src/components/auth/Invite.js", + "start": { + "line": 24, + "column": 13 + }, + "end": { + "line": 27, + "column": 3 + } + }, + { + "id": "invite.email.label", + "defaultMessage": "!!!Email address", + "file": "src/components/auth/Invite.js", + "start": { + "line": 28, + "column": 14 + }, + "end": { + "line": 31, + "column": 3 + } + }, + { + "id": "invite.submit.label", + "defaultMessage": "!!!Send invites", + "file": "src/components/auth/Invite.js", + "start": { + "line": 32, + "column": 21 + }, + "end": { + "line": 35, + "column": 3 + } + }, + { + "id": "invite.skip.label", + "defaultMessage": "!!!I want to do this later", + "file": "src/components/auth/Invite.js", + "start": { + "line": 36, + "column": 19 + }, + "end": { + "line": 39, + "column": 3 + } + }, + { + "id": "invite.successInfo", + "defaultMessage": "!!!Invitations sent successfully", + "file": "src/components/auth/Invite.js", + "start": { + "line": 40, + "column": 21 + }, + "end": { + "line": 43, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Login.json b/src/i18n/messages/src/components/auth/Login.json new file mode 100644 index 000000000..177f6000b --- /dev/null +++ b/src/i18n/messages/src/components/auth/Login.json @@ -0,0 +1,119 @@ +[ + { + "id": "login.headline", + "defaultMessage": "!!!Sign in", + "file": "src/components/auth/Login.js", + "start": { + "line": 17, + "column": 12 + }, + "end": { + "line": 20, + "column": 3 + } + }, + { + "id": "login.email.label", + "defaultMessage": "!!!Email address", + "file": "src/components/auth/Login.js", + "start": { + "line": 21, + "column": 14 + }, + "end": { + "line": 24, + "column": 3 + } + }, + { + "id": "login.password.label", + "defaultMessage": "!!!Password", + "file": "src/components/auth/Login.js", + "start": { + "line": 25, + "column": 17 + }, + "end": { + "line": 28, + "column": 3 + } + }, + { + "id": "login.submit.label", + "defaultMessage": "!!!Sign in", + "file": "src/components/auth/Login.js", + "start": { + "line": 29, + "column": 21 + }, + "end": { + "line": 32, + "column": 3 + } + }, + { + "id": "login.invalidCredentials", + "defaultMessage": "!!!Email or password not valid", + "file": "src/components/auth/Login.js", + "start": { + "line": 33, + "column": 22 + }, + "end": { + "line": 36, + "column": 3 + } + }, + { + "id": "login.tokenExpired", + "defaultMessage": "!!!Your session expired, please login again.", + "file": "src/components/auth/Login.js", + "start": { + "line": 37, + "column": 16 + }, + "end": { + "line": 40, + "column": 3 + } + }, + { + "id": "login.serverLogout", + "defaultMessage": "!!!Your session expired, please login again.", + "file": "src/components/auth/Login.js", + "start": { + "line": 41, + "column": 16 + }, + "end": { + "line": 44, + "column": 3 + } + }, + { + "id": "login.link.signup", + "defaultMessage": "!!!Create a free account", + "file": "src/components/auth/Login.js", + "start": { + "line": 45, + "column": 14 + }, + "end": { + "line": 48, + "column": 3 + } + }, + { + "id": "login.link.password", + "defaultMessage": "!!!Forgot password", + "file": "src/components/auth/Login.js", + "start": { + "line": 49, + "column": 16 + }, + "end": { + "line": 52, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Password.json b/src/i18n/messages/src/components/auth/Password.json new file mode 100644 index 000000000..f335b3acb --- /dev/null +++ b/src/i18n/messages/src/components/auth/Password.json @@ -0,0 +1,93 @@ +[ + { + "id": "password.headline", + "defaultMessage": "!!!Forgot password", + "file": "src/components/auth/Password.js", + "start": { + "line": 14, + "column": 12 + }, + "end": { + "line": 17, + "column": 3 + } + }, + { + "id": "password.email.label", + "defaultMessage": "!!!Email address", + "file": "src/components/auth/Password.js", + "start": { + "line": 18, + "column": 14 + }, + "end": { + "line": 21, + "column": 3 + } + }, + { + "id": "password.submit.label", + "defaultMessage": "!!!Submit", + "file": "src/components/auth/Password.js", + "start": { + "line": 22, + "column": 21 + }, + "end": { + "line": 25, + "column": 3 + } + }, + { + "id": "password.successInfo", + "defaultMessage": "!!!Your new password was sent to your email address", + "file": "src/components/auth/Password.js", + "start": { + "line": 26, + "column": 15 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "password.noUser", + "defaultMessage": "!!!No user affiliated with that email address", + "file": "src/components/auth/Password.js", + "start": { + "line": 30, + "column": 10 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "password.link.signup", + "defaultMessage": "!!!Create a free account", + "file": "src/components/auth/Password.js", + "start": { + "line": 34, + "column": 14 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "password.link.login", + "defaultMessage": "!!!Sign in to your account", + "file": "src/components/auth/Password.js", + "start": { + "line": 38, + "column": 13 + }, + "end": { + "line": 41, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json new file mode 100644 index 000000000..f711a55b4 --- /dev/null +++ b/src/i18n/messages/src/components/auth/Pricing.json @@ -0,0 +1,54 @@ +[ + { + "id": "pricing.headline", + "defaultMessage": "!!!Support Franz", + "file": "src/components/auth/Pricing.js", + "start": { + "line": 13, + "column": 12 + }, + "end": { + "line": 16, + "column": 3 + } + }, + { + "id": "pricing.support.label", + "defaultMessage": "!!!Select your support plan", + "file": "src/components/auth/Pricing.js", + "start": { + "line": 17, + "column": 23 + }, + "end": { + "line": 20, + "column": 3 + } + }, + { + "id": "pricing.submit.label", + "defaultMessage": "!!!Support the development of Franz", + "file": "src/components/auth/Pricing.js", + "start": { + "line": 21, + "column": 21 + }, + "end": { + "line": 24, + "column": 3 + } + }, + { + "id": "pricing.link.skipPayment", + "defaultMessage": "!!!I don't want to support the development of Franz.", + "file": "src/components/auth/Pricing.js", + "start": { + "line": 25, + "column": 15 + }, + "end": { + "line": 28, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Signup.json b/src/i18n/messages/src/components/auth/Signup.json new file mode 100644 index 000000000..a09745048 --- /dev/null +++ b/src/i18n/messages/src/components/auth/Signup.json @@ -0,0 +1,158 @@ +[ + { + "id": "signup.headline", + "defaultMessage": "!!!Sign up", + "file": "src/components/auth/Signup.js", + "start": { + "line": 18, + "column": 12 + }, + "end": { + "line": 21, + "column": 3 + } + }, + { + "id": "signup.firstname.label", + "defaultMessage": "!!!Firstname", + "file": "src/components/auth/Signup.js", + "start": { + "line": 22, + "column": 18 + }, + "end": { + "line": 25, + "column": 3 + } + }, + { + "id": "signup.lastname.label", + "defaultMessage": "!!!Lastname", + "file": "src/components/auth/Signup.js", + "start": { + "line": 26, + "column": 17 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "signup.email.label", + "defaultMessage": "!!!Email address", + "file": "src/components/auth/Signup.js", + "start": { + "line": 30, + "column": 14 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "signup.company.label", + "defaultMessage": "!!!Company", + "file": "src/components/auth/Signup.js", + "start": { + "line": 34, + "column": 16 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "signup.password.label", + "defaultMessage": "!!!Password", + "file": "src/components/auth/Signup.js", + "start": { + "line": 38, + "column": 17 + }, + "end": { + "line": 41, + "column": 3 + } + }, + { + "id": "signup.legal.info", + "defaultMessage": "!!!By creating a Franz account you accept the", + "file": "src/components/auth/Signup.js", + "start": { + "line": 42, + "column": 13 + }, + "end": { + "line": 45, + "column": 3 + } + }, + { + "id": "signup.legal.terms", + "defaultMessage": "!!!Terms of service", + "file": "src/components/auth/Signup.js", + "start": { + "line": 46, + "column": 9 + }, + "end": { + "line": 49, + "column": 3 + } + }, + { + "id": "signup.legal.privacy", + "defaultMessage": "!!!Privacy Statement", + "file": "src/components/auth/Signup.js", + "start": { + "line": 50, + "column": 11 + }, + "end": { + "line": 53, + "column": 3 + } + }, + { + "id": "signup.submit.label", + "defaultMessage": "!!!Create account", + "file": "src/components/auth/Signup.js", + "start": { + "line": 54, + "column": 21 + }, + "end": { + "line": 57, + "column": 3 + } + }, + { + "id": "signup.link.login", + "defaultMessage": "!!!Already have an account, sign in?", + "file": "src/components/auth/Signup.js", + "start": { + "line": 58, + "column": 13 + }, + "end": { + "line": 61, + "column": 3 + } + }, + { + "id": "signup.emailDuplicate", + "defaultMessage": "!!!A user with that email address already exists", + "file": "src/components/auth/Signup.js", + "start": { + "line": 62, + "column": 18 + }, + "end": { + "line": 65, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/auth/Welcome.json b/src/i18n/messages/src/components/auth/Welcome.json new file mode 100644 index 000000000..b4d2ce689 --- /dev/null +++ b/src/i18n/messages/src/components/auth/Welcome.json @@ -0,0 +1,28 @@ +[ + { + "id": "welcome.signupButton", + "defaultMessage": "!!!Create a free account", + "file": "src/components/auth/Welcome.js", + "start": { + "line": 9, + "column": 16 + }, + "end": { + "line": 12, + "column": 3 + } + }, + { + "id": "welcome.loginButton", + "defaultMessage": "!!!Login to your account", + "file": "src/components/auth/Welcome.js", + "start": { + "line": 13, + "column": 15 + }, + "end": { + "line": 16, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json new file mode 100644 index 000000000..4dd354afc --- /dev/null +++ b/src/i18n/messages/src/components/layout/AppLayout.json @@ -0,0 +1,80 @@ +[ + { + "id": "infobar.servicesUpdated", + "defaultMessage": "!!!Your services have been updated.", + "file": "src/components/layout/AppLayout.js", + "start": { + "line": 26, + "column": 19 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "infobar.updateAvailable", + "defaultMessage": "!!!A new update for Franz is available.", + "file": "src/components/layout/AppLayout.js", + "start": { + "line": 30, + "column": 19 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "infobar.buttonReloadServices", + "defaultMessage": "!!!Reload services", + "file": "src/components/layout/AppLayout.js", + "start": { + "line": 34, + "column": 24 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "infobar.buttonChangelog", + "defaultMessage": "!!!Changelog", + "file": "src/components/layout/AppLayout.js", + "start": { + "line": 38, + "column": 13 + }, + "end": { + "line": 41, + "column": 3 + } + }, + { + "id": "infobar.buttonInstallUpdate", + "defaultMessage": "!!!Restart & install update", + "file": "src/components/layout/AppLayout.js", + "start": { + "line": 42, + "column": 23 + }, + "end": { + "line": 45, + "column": 3 + } + }, + { + "id": "infobar.requiredRequestsFailed", + "defaultMessage": "!!!Could not load services and user information", + "file": "src/components/layout/AppLayout.js", + "start": { + "line": 46, + "column": 26 + }, + "end": { + "line": 49, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json new file mode 100644 index 000000000..d67adc96e --- /dev/null +++ b/src/i18n/messages/src/components/layout/Sidebar.json @@ -0,0 +1,80 @@ +[ + { + "id": "sidebar.settings", + "defaultMessage": "!!!Settings", + "file": "src/components/layout/Sidebar.js", + "start": { + "line": 13, + "column": 12 + }, + "end": { + "line": 16, + "column": 3 + } + }, + { + "id": "sidebar.addNewService", + "defaultMessage": "!!!Add new service", + "file": "src/components/layout/Sidebar.js", + "start": { + "line": 17, + "column": 17 + }, + "end": { + "line": 20, + "column": 3 + } + }, + { + "id": "sidebar.muteApp", + "defaultMessage": "!!!Disable notifications & audio", + "file": "src/components/layout/Sidebar.js", + "start": { + "line": 21, + "column": 8 + }, + "end": { + "line": 24, + "column": 3 + } + }, + { + "id": "sidebar.unmuteApp", + "defaultMessage": "!!!Enable notifications & audio", + "file": "src/components/layout/Sidebar.js", + "start": { + "line": 25, + "column": 10 + }, + "end": { + "line": 28, + "column": 3 + } + }, + { + "id": "sidebar.openWorkspaceDrawer", + "defaultMessage": "!!!Open workspace drawer", + "file": "src/components/layout/Sidebar.js", + "start": { + "line": 29, + "column": 23 + }, + "end": { + "line": 32, + "column": 3 + } + }, + { + "id": "sidebar.closeWorkspaceDrawer", + "defaultMessage": "!!!Close workspace drawer", + "file": "src/components/layout/Sidebar.js", + "start": { + "line": 33, + "column": 24 + }, + "end": { + "line": 36, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json b/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json new file mode 100644 index 000000000..c8fe802df --- /dev/null +++ b/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json @@ -0,0 +1,67 @@ +[ + { + "id": "service.errorHandler.headline", + "defaultMessage": "!!!Oh no!", + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "start": { + "line": 12, + "column": 12 + }, + "end": { + "line": 15, + "column": 3 + } + }, + { + "id": "service.errorHandler.text", + "defaultMessage": "!!!{name} has failed to load.", + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "start": { + "line": 16, + "column": 8 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "service.errorHandler.action", + "defaultMessage": "!!!Reload {name}", + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "start": { + "line": 20, + "column": 10 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "service.errorHandler.editAction", + "defaultMessage": "!!!Edit {name}", + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "start": { + "line": 24, + "column": 14 + }, + "end": { + "line": 27, + "column": 3 + } + }, + { + "id": "service.errorHandler.message", + "defaultMessage": "!!!Error:", + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "start": { + "line": 28, + "column": 16 + }, + "end": { + "line": 31, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/content/ServiceDisabled.json b/src/i18n/messages/src/components/services/content/ServiceDisabled.json new file mode 100644 index 000000000..8bfad28c7 --- /dev/null +++ b/src/i18n/messages/src/components/services/content/ServiceDisabled.json @@ -0,0 +1,28 @@ +[ + { + "id": "service.disabledHandler.headline", + "defaultMessage": "!!!{name} is disabled", + "file": "src/components/services/content/ServiceDisabled.js", + "start": { + "line": 9, + "column": 12 + }, + "end": { + "line": 12, + "column": 3 + } + }, + { + "id": "service.disabledHandler.action", + "defaultMessage": "!!!Enable {name}", + "file": "src/components/services/content/ServiceDisabled.js", + "start": { + "line": 13, + "column": 10 + }, + "end": { + "line": 16, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/content/Services.json b/src/i18n/messages/src/components/services/content/Services.json new file mode 100644 index 000000000..884ab0c90 --- /dev/null +++ b/src/i18n/messages/src/components/services/content/Services.json @@ -0,0 +1,28 @@ +[ + { + "id": "services.welcome", + "defaultMessage": "!!!Welcome to Franz", + "file": "src/components/services/content/Services.js", + "start": { + "line": 11, + "column": 11 + }, + "end": { + "line": 14, + "column": 3 + } + }, + { + "id": "services.getStarted", + "defaultMessage": "!!!Get started", + "file": "src/components/services/content/Services.js", + "start": { + "line": 15, + "column": 14 + }, + "end": { + "line": 18, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json b/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json new file mode 100644 index 000000000..c3d6c41a5 --- /dev/null +++ b/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json @@ -0,0 +1,54 @@ +[ + { + "id": "service.crashHandler.headline", + "defaultMessage": "!!!Oh no!", + "file": "src/components/services/content/WebviewCrashHandler.js", + "start": { + "line": 10, + "column": 12 + }, + "end": { + "line": 13, + "column": 3 + } + }, + { + "id": "service.crashHandler.text", + "defaultMessage": "!!!{name} has caused an error.", + "file": "src/components/services/content/WebviewCrashHandler.js", + "start": { + "line": 14, + "column": 8 + }, + "end": { + "line": 17, + "column": 3 + } + }, + { + "id": "service.crashHandler.action", + "defaultMessage": "!!!Reload {name}", + "file": "src/components/services/content/WebviewCrashHandler.js", + "start": { + "line": 18, + "column": 10 + }, + "end": { + "line": 21, + "column": 3 + } + }, + { + "id": "service.crashHandler.autoReload", + "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds", + "file": "src/components/services/content/WebviewCrashHandler.js", + "start": { + "line": 22, + "column": 14 + }, + "end": { + "line": 25, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/services/tabs/TabItem.json b/src/i18n/messages/src/components/services/tabs/TabItem.json new file mode 100644 index 000000000..08a07845c --- /dev/null +++ b/src/i18n/messages/src/components/services/tabs/TabItem.json @@ -0,0 +1,119 @@ +[ + { + "id": "tabs.item.reload", + "defaultMessage": "!!!Reload", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 15, + "column": 10 + }, + "end": { + "line": 18, + "column": 3 + } + }, + { + "id": "tabs.item.edit", + "defaultMessage": "!!!Edit", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 19, + "column": 8 + }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "tabs.item.disableNotifications", + "defaultMessage": "!!!Disable notifications", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 23, + "column": 24 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "id": "tabs.item.enableNotification", + "defaultMessage": "!!!Enable notifications", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 27, + "column": 23 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "id": "tabs.item.disableAudio", + "defaultMessage": "!!!Disable audio", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 31, + "column": 16 + }, + "end": { + "line": 34, + "column": 3 + } + }, + { + "id": "tabs.item.enableAudio", + "defaultMessage": "!!!Enable audio", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 35, + "column": 15 + }, + "end": { + "line": 38, + "column": 3 + } + }, + { + "id": "tabs.item.disableService", + "defaultMessage": "!!!Disable Service", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 39, + "column": 18 + }, + "end": { + "line": 42, + "column": 3 + } + }, + { + "id": "tabs.item.enableService", + "defaultMessage": "!!!Enable Service", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 43, + "column": 17 + }, + "end": { + "line": 46, + "column": 3 + } + }, + { + "id": "tabs.item.deleteService", + "defaultMessage": "!!!Delete Service", + "file": "src/components/services/tabs/TabItem.js", + "start": { + "line": 47, + "column": 17 + }, + "end": { + "line": 50, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/account/AccountDashboard.json b/src/i18n/messages/src/components/settings/account/AccountDashboard.json new file mode 100644 index 000000000..603950395 --- /dev/null +++ b/src/i18n/messages/src/components/settings/account/AccountDashboard.json @@ -0,0 +1,197 @@ +[ + { + "id": "settings.account.headline", + "defaultMessage": "!!!Account", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 15, + "column": 12 + }, + "end": { + "line": 18, + "column": 3 + } + }, + { + "id": "settings.account.headlineSubscription", + "defaultMessage": "!!!Your Subscription", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 19, + "column": 24 + }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "settings.account.headlineUpgrade", + "defaultMessage": "!!!Upgrade your Account", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 23, + "column": 19 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "id": "settings.account.headlineInvoices", + "defaultMessage": "!!Invoices", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 27, + "column": 20 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "id": "settings.account.headlineDangerZone", + "defaultMessage": "!!Danger Zone", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 31, + "column": 22 + }, + "end": { + "line": 34, + "column": 3 + } + }, + { + "id": "settings.account.manageSubscription.label", + "defaultMessage": "!!!Manage your subscription", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 35, + "column": 33 + }, + "end": { + "line": 38, + "column": 3 + } + }, + { + "id": "settings.account.accountType.basic", + "defaultMessage": "!!!Basic Account", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 39, + "column": 20 + }, + "end": { + "line": 42, + "column": 3 + } + }, + { + "id": "settings.account.accountType.premium", + "defaultMessage": "!!!Premium Supporter Account", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 43, + "column": 22 + }, + "end": { + "line": 46, + "column": 3 + } + }, + { + "id": "settings.account.account.editButton", + "defaultMessage": "!!!Edit Account", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 47, + "column": 21 + }, + "end": { + "line": 50, + "column": 3 + } + }, + { + "id": "settings.account.invoiceDownload", + "defaultMessage": "!!!Download", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 51, + "column": 19 + }, + "end": { + "line": 54, + "column": 3 + } + }, + { + "id": "settings.account.userInfoRequestFailed", + "defaultMessage": "!!!Could not load user information", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 55, + "column": 25 + }, + "end": { + "line": 58, + "column": 3 + } + }, + { + "id": "settings.account.tryReloadUserInfoRequest", + "defaultMessage": "!!!Try again", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 59, + "column": 28 + }, + "end": { + "line": 62, + "column": 3 + } + }, + { + "id": "settings.account.deleteAccount", + "defaultMessage": "!!!Delete account", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 63, + "column": 17 + }, + "end": { + "line": 66, + "column": 3 + } + }, + { + "id": "settings.account.deleteInfo", + "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 67, + "column": 14 + }, + "end": { + "line": 70, + "column": 3 + } + }, + { + "id": "settings.account.deleteEmailSent", + "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", + "file": "src/components/settings/account/AccountDashboard.js", + "start": { + "line": 71, + "column": 19 + }, + "end": { + "line": 74, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json new file mode 100644 index 000000000..77b0ed8a4 --- /dev/null +++ b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json @@ -0,0 +1,93 @@ +[ + { + "id": "settings.navigation.availableServices", + "defaultMessage": "!!!Available services", + "file": "src/components/settings/navigation/SettingsNavigation.js", + "start": { + "line": 12, + "column": 21 + }, + "end": { + "line": 15, + "column": 3 + } + }, + { + "id": "settings.navigation.yourServices", + "defaultMessage": "!!!Your services", + "file": "src/components/settings/navigation/SettingsNavigation.js", + "start": { + "line": 16, + "column": 16 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "settings.navigation.yourWorkspaces", + "defaultMessage": "!!!Your workspaces", + "file": "src/components/settings/navigation/SettingsNavigation.js", + "start": { + "line": 20, + "column": 18 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "settings.navigation.account", + "defaultMessage": "!!!Account", + "file": "src/components/settings/navigation/SettingsNavigation.js", + "start": { + "line": 24, + "column": 11 + }, + "end": { + "line": 27, + "column": 3 + } + }, + { + "id": "settings.navigation.settings", + "defaultMessage": "!!!Settings", + "file": "src/components/settings/navigation/SettingsNavigation.js", + "start": { + "line": 28, + "column": 12 + }, + "end": { + "line": 31, + "column": 3 + } + }, + { + "id": "settings.navigation.inviteFriends", + "defaultMessage": "!!!Invite Friends", + "file": "src/components/settings/navigation/SettingsNavigation.js", + "start": { + "line": 32, + "column": 17 + }, + "end": { + "line": 35, + "column": 3 + } + }, + { + "id": "settings.navigation.logout", + "defaultMessage": "!!!Logout", + "file": "src/components/settings/navigation/SettingsNavigation.js", + "start": { + "line": 36, + "column": 10 + }, + "end": { + "line": 39, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json new file mode 100644 index 000000000..7d9ed3283 --- /dev/null +++ b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json @@ -0,0 +1,106 @@ +[ + { + "id": "settings.recipes.headline", + "defaultMessage": "!!!Available Services", + "file": "src/components/settings/recipes/RecipesDashboard.js", + "start": { + "line": 15, + "column": 12 + }, + "end": { + "line": 18, + "column": 3 + } + }, + { + "id": "settings.searchService", + "defaultMessage": "!!!Search service", + "file": "src/components/settings/recipes/RecipesDashboard.js", + "start": { + "line": 19, + "column": 17 + }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "settings.recipes.mostPopular", + "defaultMessage": "!!!Most popular", + "file": "src/components/settings/recipes/RecipesDashboard.js", + "start": { + "line": 23, + "column": 22 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "id": "settings.recipes.all", + "defaultMessage": "!!!All services", + "file": "src/components/settings/recipes/RecipesDashboard.js", + "start": { + "line": 27, + "column": 14 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "id": "settings.recipes.dev", + "defaultMessage": "!!!Development", + "file": "src/components/settings/recipes/RecipesDashboard.js", + "start": { + "line": 31, + "column": 14 + }, + "end": { + "line": 34, + "column": 3 + } + }, + { + "id": "settings.recipes.nothingFound", + "defaultMessage": "!!!Sorry, but no service matched your search term.", + "file": "src/components/settings/recipes/RecipesDashboard.js", + "start": { + "line": 35, + "column": 16 + }, + "end": { + "line": 38, + "column": 3 + } + }, + { + "id": "settings.recipes.servicesSuccessfulAddedInfo", + "defaultMessage": "!!!Service successfully added", + "file": "src/components/settings/recipes/RecipesDashboard.js", + "start": { + "line": 39, + "column": 31 + }, + "end": { + "line": 42, + "column": 3 + } + }, + { + "id": "settings.recipes.missingService", + "defaultMessage": "!!!Missing a service?", + "file": "src/components/settings/recipes/RecipesDashboard.js", + "start": { + "line": 43, + "column": 18 + }, + "end": { + "line": 46, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/services/EditServiceForm.json b/src/i18n/messages/src/components/settings/services/EditServiceForm.json new file mode 100644 index 000000000..42b741b7a --- /dev/null +++ b/src/i18n/messages/src/components/settings/services/EditServiceForm.json @@ -0,0 +1,288 @@ +[ + { + "id": "settings.service.form.saveButton", + "defaultMessage": "!!!Save service", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 22, + "column": 15 + }, + "end": { + "line": 25, + "column": 3 + } + }, + { + "id": "settings.service.form.deleteButton", + "defaultMessage": "!!!Delete Service", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 26, + "column": 17 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "settings.service.form.availableServices", + "defaultMessage": "!!!Available services", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 30, + "column": 21 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "settings.service.form.yourServices", + "defaultMessage": "!!!Your services", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 34, + "column": 16 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "settings.service.form.addServiceHeadline", + "defaultMessage": "!!!Add {name}", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 38, + "column": 22 + }, + "end": { + "line": 41, + "column": 3 + } + }, + { + "id": "settings.service.form.editServiceHeadline", + "defaultMessage": "!!!Edit {name}", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 42, + "column": 23 + }, + "end": { + "line": 45, + "column": 3 + } + }, + { + "id": "settings.service.form.tabHosted", + "defaultMessage": "!!!Hosted", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 46, + "column": 13 + }, + "end": { + "line": 49, + "column": 3 + } + }, + { + "id": "settings.service.form.tabOnPremise", + "defaultMessage": "!!!Self hosted ⭐️", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 50, + "column": 16 + }, + "end": { + "line": 53, + "column": 3 + } + }, + { + "id": "settings.service.form.useHostedService", + "defaultMessage": "!!!Use the hosted {name} service.", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 54, + "column": 20 + }, + "end": { + "line": 57, + "column": 3 + } + }, + { + "id": "settings.service.form.customUrlValidationError", + "defaultMessage": "!!!Could not validate custom {name} server.", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 58, + "column": 28 + }, + "end": { + "line": 61, + "column": 3 + } + }, + { + "id": "settings.service.form.customUrlPremiumInfo", + "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 62, + "column": 24 + }, + "end": { + "line": 65, + "column": 3 + } + }, + { + "id": "settings.service.form.customUrlUpgradeAccount", + "defaultMessage": "!!!Upgrade your account", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 66, + "column": 27 + }, + "end": { + "line": 69, + "column": 3 + } + }, + { + "id": "settings.service.form.indirectMessageInfo", + "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 70, + "column": 23 + }, + "end": { + "line": 73, + "column": 3 + } + }, + { + "id": "settings.service.form.isMutedInfo", + "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 74, + "column": 15 + }, + "end": { + "line": 77, + "column": 3 + } + }, + { + "id": "settings.service.form.headlineNotifications", + "defaultMessage": "!!!Notifications", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 78, + "column": 25 + }, + "end": { + "line": 81, + "column": 3 + } + }, + { + "id": "settings.service.form.headlineBadges", + "defaultMessage": "!!!Unread message badges", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 82, + "column": 18 + }, + "end": { + "line": 85, + "column": 3 + } + }, + { + "id": "settings.service.form.headlineGeneral", + "defaultMessage": "!!!General", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 86, + "column": 19 + }, + "end": { + "line": 89, + "column": 3 + } + }, + { + "id": "settings.service.form.iconDelete", + "defaultMessage": "!!!Delete", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 90, + "column": 14 + }, + "end": { + "line": 93, + "column": 3 + } + }, + { + "id": "settings.service.form.iconUpload", + "defaultMessage": "!!!Drop your image, or click here", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 94, + "column": 14 + }, + "end": { + "line": 97, + "column": 3 + } + }, + { + "id": "settings.service.form.proxy.headline", + "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 98, + "column": 17 + }, + "end": { + "line": 101, + "column": 3 + } + }, + { + "id": "settings.service.form.proxy.restartInfo", + "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 102, + "column": 20 + }, + "end": { + "line": 105, + "column": 3 + } + }, + { + "id": "settings.service.form.proxy.info", + "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", + "file": "src/components/settings/services/EditServiceForm.js", + "start": { + "line": 106, + "column": 13 + }, + "end": { + "line": 109, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/services/ServiceError.json b/src/i18n/messages/src/components/settings/services/ServiceError.json new file mode 100644 index 000000000..648fc5b3e --- /dev/null +++ b/src/i18n/messages/src/components/settings/services/ServiceError.json @@ -0,0 +1,54 @@ +[ + { + "id": "settings.service.error.headline", + "defaultMessage": "!!!Error", + "file": "src/components/settings/services/ServiceError.js", + "start": { + "line": 10, + "column": 12 + }, + "end": { + "line": 13, + "column": 3 + } + }, + { + "id": "settings.service.error.goBack", + "defaultMessage": "!!!Back to services", + "file": "src/components/settings/services/ServiceError.js", + "start": { + "line": 14, + "column": 10 + }, + "end": { + "line": 17, + "column": 3 + } + }, + { + "id": "settings.service.form.availableServices", + "defaultMessage": "!!!Available services", + "file": "src/components/settings/services/ServiceError.js", + "start": { + "line": 18, + "column": 21 + }, + "end": { + "line": 21, + "column": 3 + } + }, + { + "id": "settings.service.error.message", + "defaultMessage": "!!!Could not load service recipe.", + "file": "src/components/settings/services/ServiceError.js", + "start": { + "line": 22, + "column": 16 + }, + "end": { + "line": 25, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/services/ServiceItem.json b/src/i18n/messages/src/components/settings/services/ServiceItem.json new file mode 100644 index 000000000..ffea8b9e1 --- /dev/null +++ b/src/i18n/messages/src/components/settings/services/ServiceItem.json @@ -0,0 +1,41 @@ +[ + { + "id": "settings.services.tooltip.isDisabled", + "defaultMessage": "!!!Service is disabled", + "file": "src/components/settings/services/ServiceItem.js", + "start": { + "line": 11, + "column": 21 + }, + "end": { + "line": 14, + "column": 3 + } + }, + { + "id": "settings.services.tooltip.notificationsDisabled", + "defaultMessage": "!!!Notifications are disabled", + "file": "src/components/settings/services/ServiceItem.js", + "start": { + "line": 15, + "column": 32 + }, + "end": { + "line": 18, + "column": 3 + } + }, + { + "id": "settings.services.tooltip.isMuted", + "defaultMessage": "!!!All sounds are muted", + "file": "src/components/settings/services/ServiceItem.js", + "start": { + "line": 19, + "column": 18 + }, + "end": { + "line": 22, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/services/ServicesDashboard.json b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json new file mode 100644 index 000000000..3803c6512 --- /dev/null +++ b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json @@ -0,0 +1,119 @@ +[ + { + "id": "settings.services.headline", + "defaultMessage": "!!!Your services", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 14, + "column": 12 + }, + "end": { + "line": 17, + "column": 3 + } + }, + { + "id": "settings.searchService", + "defaultMessage": "!!!Search service", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 18, + "column": 17 + }, + "end": { + "line": 21, + "column": 3 + } + }, + { + "id": "settings.services.noServicesAdded", + "defaultMessage": "!!!You haven't added any services yet.", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 22, + "column": 19 + }, + "end": { + "line": 25, + "column": 3 + } + }, + { + "id": "settings.recipes.nothingFound", + "defaultMessage": "!!!Sorry, but no service matched your search term.", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 26, + "column": 18 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "settings.services.discoverServices", + "defaultMessage": "!!!Discover services", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 30, + "column": 20 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "settings.services.servicesRequestFailed", + "defaultMessage": "!!!Could not load your services", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 34, + "column": 25 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "settings.account.tryReloadServices", + "defaultMessage": "!!!Try again", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 38, + "column": 21 + }, + "end": { + "line": 41, + "column": 3 + } + }, + { + "id": "settings.services.updatedInfo", + "defaultMessage": "!!!Your changes have been saved", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 42, + "column": 15 + }, + "end": { + "line": 45, + "column": 3 + } + }, + { + "id": "settings.services.deletedInfo", + "defaultMessage": "!!!Service has been deleted", + "file": "src/components/settings/services/ServicesDashboard.js", + "start": { + "line": 46, + "column": 15 + }, + "end": { + "line": 49, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json new file mode 100644 index 000000000..fa21db10a --- /dev/null +++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json @@ -0,0 +1,236 @@ +[ + { + "id": "settings.app.headline", + "defaultMessage": "!!!Settings", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 16, + "column": 12 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "settings.app.headlineGeneral", + "defaultMessage": "!!!General", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 20, + "column": 19 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "settings.app.headlineLanguage", + "defaultMessage": "!!!Language", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 24, + "column": 20 + }, + "end": { + "line": 27, + "column": 3 + } + }, + { + "id": "settings.app.headlineUpdates", + "defaultMessage": "!!!Updates", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 28, + "column": 19 + }, + "end": { + "line": 31, + "column": 3 + } + }, + { + "id": "settings.app.headlineAppearance", + "defaultMessage": "!!!Appearance", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 32, + "column": 22 + }, + "end": { + "line": 35, + "column": 3 + } + }, + { + "id": "settings.app.headlineAdvanced", + "defaultMessage": "!!!Advanced", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 36, + "column": 20 + }, + "end": { + "line": 39, + "column": 3 + } + }, + { + "id": "settings.app.translationHelp", + "defaultMessage": "!!!Help us to translate Franz into your language.", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 40, + "column": 19 + }, + "end": { + "line": 43, + "column": 3 + } + }, + { + "id": "settings.app.subheadlineCache", + "defaultMessage": "!!!Cache", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 44, + "column": 20 + }, + "end": { + "line": 47, + "column": 3 + } + }, + { + "id": "settings.app.cacheInfo", + "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 48, + "column": 13 + }, + "end": { + "line": 51, + "column": 3 + } + }, + { + "id": "settings.app.buttonClearAllCache", + "defaultMessage": "!!!Clear cache", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 52, + "column": 23 + }, + "end": { + "line": 55, + "column": 3 + } + }, + { + "id": "settings.app.buttonSearchForUpdate", + "defaultMessage": "!!!Check for updates", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 56, + "column": 25 + }, + "end": { + "line": 59, + "column": 3 + } + }, + { + "id": "settings.app.buttonInstallUpdate", + "defaultMessage": "!!!Restart & install update", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 60, + "column": 23 + }, + "end": { + "line": 63, + "column": 3 + } + }, + { + "id": "settings.app.updateStatusSearching", + "defaultMessage": "!!!Is searching for update", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 64, + "column": 25 + }, + "end": { + "line": 67, + "column": 3 + } + }, + { + "id": "settings.app.updateStatusAvailable", + "defaultMessage": "!!!Update available, downloading...", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 68, + "column": 25 + }, + "end": { + "line": 71, + "column": 3 + } + }, + { + "id": "settings.app.updateStatusUpToDate", + "defaultMessage": "!!!You are using the latest version of Franz", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 72, + "column": 24 + }, + "end": { + "line": 75, + "column": 3 + } + }, + { + "id": "settings.app.currentVersion", + "defaultMessage": "!!!Current version:", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 76, + "column": 18 + }, + "end": { + "line": 79, + "column": 3 + } + }, + { + "id": "settings.app.restartRequired", + "defaultMessage": "!!!Changes require restart", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 80, + "column": 29 + }, + "end": { + "line": 83, + "column": 3 + } + }, + { + "id": "settings.app.languageDisclaimer", + "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 84, + "column": 22 + }, + "end": { + "line": 87, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/settings/user/EditUserForm.json b/src/i18n/messages/src/components/settings/user/EditUserForm.json new file mode 100644 index 000000000..3a59f8681 --- /dev/null +++ b/src/i18n/messages/src/components/settings/user/EditUserForm.json @@ -0,0 +1,80 @@ +[ + { + "id": "settings.account.headline", + "defaultMessage": "!!!Account", + "file": "src/components/settings/user/EditUserForm.js", + "start": { + "line": 15, + "column": 12 + }, + "end": { + "line": 18, + "column": 3 + } + }, + { + "id": "settings.account.headlineProfile", + "defaultMessage": "!!!Update Profile", + "file": "src/components/settings/user/EditUserForm.js", + "start": { + "line": 19, + "column": 19 + }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "settings.account.headlineAccount", + "defaultMessage": "!!!Account Information", + "file": "src/components/settings/user/EditUserForm.js", + "start": { + "line": 23, + "column": 19 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "id": "settings.account.headlinePassword", + "defaultMessage": "!!!Change Password", + "file": "src/components/settings/user/EditUserForm.js", + "start": { + "line": 27, + "column": 20 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "id": "settings.account.successInfo", + "defaultMessage": "!!!Your changes have been saved", + "file": "src/components/settings/user/EditUserForm.js", + "start": { + "line": 31, + "column": 15 + }, + "end": { + "line": 34, + "column": 3 + } + }, + { + "id": "settings.account.buttonSave", + "defaultMessage": "!!!Update profile", + "file": "src/components/settings/user/EditUserForm.js", + "start": { + "line": 35, + "column": 14 + }, + "end": { + "line": 38, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/subscription/SubscriptionForm.json b/src/i18n/messages/src/components/subscription/SubscriptionForm.json new file mode 100644 index 000000000..cc7470358 --- /dev/null +++ b/src/i18n/messages/src/components/subscription/SubscriptionForm.json @@ -0,0 +1,171 @@ +[ + { + "id": "subscription.submit.label", + "defaultMessage": "!!!Support the development of Franz", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 14, + "column": 21 + }, + "end": { + "line": 17, + "column": 3 + } + }, + { + "id": "subscription.paymentSessionError", + "defaultMessage": "!!!Could not initialize payment form", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 18, + "column": 23 + }, + "end": { + "line": 21, + "column": 3 + } + }, + { + "id": "subscription.type.free", + "defaultMessage": "!!!free", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 22, + "column": 12 + }, + "end": { + "line": 25, + "column": 3 + } + }, + { + "id": "subscription.type.month", + "defaultMessage": "!!!month", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 26, + "column": 15 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "subscription.type.year", + "defaultMessage": "!!!year", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 30, + "column": 14 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "subscription.includedFeatures", + "defaultMessage": "!!!The Franz Premium Supporter Account includes", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 34, + "column": 20 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "subscription.features.onpremise.mattermost", + "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 38, + "column": 13 + }, + "end": { + "line": 41, + "column": 3 + } + }, + { + "id": "subscription.features.noInterruptions", + "defaultMessage": "!!!No app delays & nagging to upgrade license", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 42, + "column": 19 + }, + "end": { + "line": 45, + "column": 3 + } + }, + { + "id": "subscription.features.proxy", + "defaultMessage": "!!!Proxy support for services", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 46, + "column": 9 + }, + "end": { + "line": 49, + "column": 3 + } + }, + { + "id": "subscription.features.spellchecker", + "defaultMessage": "!!!Support for Spellchecker", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 50, + "column": 16 + }, + "end": { + "line": 53, + "column": 3 + } + }, + { + "id": "subscription.features.ads", + "defaultMessage": "!!!No ads, ever!", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 54, + "column": 7 + }, + "end": { + "line": 57, + "column": 3 + } + }, + { + "id": "subscription.features.comingSoon", + "defaultMessage": "!!!coming soon", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 58, + "column": 14 + }, + "end": { + "line": 61, + "column": 3 + } + }, + { + "id": "subscription.euTaxInfo", + "defaultMessage": "!!!EU residents: local sales tax may apply", + "file": "src/components/subscription/SubscriptionForm.js", + "start": { + "line": 62, + "column": 13 + }, + "end": { + "line": 65, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/subscription/SubscriptionPopup.json b/src/i18n/messages/src/components/subscription/SubscriptionPopup.json new file mode 100644 index 000000000..c06da7531 --- /dev/null +++ b/src/i18n/messages/src/components/subscription/SubscriptionPopup.json @@ -0,0 +1,28 @@ +[ + { + "id": "subscriptionPopup.buttonCancel", + "defaultMessage": "!!!Cancel", + "file": "src/components/subscription/SubscriptionPopup.js", + "start": { + "line": 11, + "column": 16 + }, + "end": { + "line": 14, + "column": 3 + } + }, + { + "id": "subscriptionPopup.buttonDone", + "defaultMessage": "!!!Done", + "file": "src/components/subscription/SubscriptionPopup.js", + "start": { + "line": 15, + "column": 14 + }, + "end": { + "line": 18, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json new file mode 100644 index 000000000..320d3ca3e --- /dev/null +++ b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json @@ -0,0 +1,15 @@ +[ + { + "id": "premiumFeature.button.upgradeAccount", + "defaultMessage": "!!!Upgrade account", + "file": "src/components/ui/PremiumFeatureContainer/index.js", + "start": { + "line": 15, + "column": 10 + }, + "end": { + "line": 18, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/ui/WebviewLoader/index.json b/src/i18n/messages/src/components/ui/WebviewLoader/index.json new file mode 100644 index 000000000..ef3e4b593 --- /dev/null +++ b/src/i18n/messages/src/components/ui/WebviewLoader/index.json @@ -0,0 +1,15 @@ +[ + { + "id": "service.webviewLoader.loading", + "defaultMessage": "!!!Loading", + "file": "src/components/ui/WebviewLoader/index.js", + "start": { + "line": 11, + "column": 11 + }, + "end": { + "line": 14, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/components/util/ErrorBoundary/index.json b/src/i18n/messages/src/components/util/ErrorBoundary/index.json new file mode 100644 index 000000000..43c323031 --- /dev/null +++ b/src/i18n/messages/src/components/util/ErrorBoundary/index.json @@ -0,0 +1,28 @@ +[ + { + "id": "app.errorHandler.headline", + "defaultMessage": "!!!Something went wrong.", + "file": "src/components/util/ErrorBoundary/index.js", + "start": { + "line": 11, + "column": 12 + }, + "end": { + "line": 14, + "column": 3 + } + }, + { + "id": "app.errorHandler.action", + "defaultMessage": "!!!Reload", + "file": "src/components/util/ErrorBoundary/index.js", + "start": { + "line": 15, + "column": 10 + }, + "end": { + "line": 18, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/containers/settings/EditServiceScreen.json b/src/i18n/messages/src/containers/settings/EditServiceScreen.json new file mode 100644 index 000000000..42ca42125 --- /dev/null +++ b/src/i18n/messages/src/containers/settings/EditServiceScreen.json @@ -0,0 +1,197 @@ +[ + { + "id": "settings.service.form.name", + "defaultMessage": "!!!Name", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 28, + "column": 8 + }, + "end": { + "line": 31, + "column": 3 + } + }, + { + "id": "settings.service.form.enableService", + "defaultMessage": "!!!Enable service", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 32, + "column": 17 + }, + "end": { + "line": 35, + "column": 3 + } + }, + { + "id": "settings.service.form.enableNotification", + "defaultMessage": "!!!Enable Notifications", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 36, + "column": 22 + }, + "end": { + "line": 39, + "column": 3 + } + }, + { + "id": "settings.service.form.enableBadge", + "defaultMessage": "!!!Show unread message badges", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 40, + "column": 15 + }, + "end": { + "line": 43, + "column": 3 + } + }, + { + "id": "settings.service.form.enableAudio", + "defaultMessage": "!!!Enable audio", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 44, + "column": 15 + }, + "end": { + "line": 47, + "column": 3 + } + }, + { + "id": "settings.service.form.team", + "defaultMessage": "!!!Team", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 48, + "column": 8 + }, + "end": { + "line": 51, + "column": 3 + } + }, + { + "id": "settings.service.form.customUrl", + "defaultMessage": "!!!Custom server", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 52, + "column": 13 + }, + "end": { + "line": 55, + "column": 3 + } + }, + { + "id": "settings.service.form.indirectMessages", + "defaultMessage": "!!!Show message badge for all new messages", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 56, + "column": 20 + }, + "end": { + "line": 59, + "column": 3 + } + }, + { + "id": "settings.service.form.icon", + "defaultMessage": "!!!Custom icon", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 60, + "column": 8 + }, + "end": { + "line": 63, + "column": 3 + } + }, + { + "id": "settings.service.form.enableDarkMode", + "defaultMessage": "!!!Enable Dark Mode", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 64, + "column": 18 + }, + "end": { + "line": 67, + "column": 3 + } + }, + { + "id": "settings.service.form.proxy.isEnabled", + "defaultMessage": "!!!Use Proxy", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 68, + "column": 15 + }, + "end": { + "line": 71, + "column": 3 + } + }, + { + "id": "settings.service.form.proxy.host", + "defaultMessage": "!!!Proxy Host/IP", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 72, + "column": 13 + }, + "end": { + "line": 75, + "column": 3 + } + }, + { + "id": "settings.service.form.proxy.port", + "defaultMessage": "!!!Port", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 76, + "column": 13 + }, + "end": { + "line": 79, + "column": 3 + } + }, + { + "id": "settings.service.form.proxy.user", + "defaultMessage": "!!!User", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 80, + "column": 13 + }, + "end": { + "line": 83, + "column": 3 + } + }, + { + "id": "settings.service.form.proxy.password", + "defaultMessage": "!!!Password", + "file": "src/containers/settings/EditServiceScreen.js", + "start": { + "line": 84, + "column": 17 + }, + "end": { + "line": 87, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json new file mode 100644 index 000000000..d3b413540 --- /dev/null +++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json @@ -0,0 +1,158 @@ +[ + { + "id": "settings.app.form.autoLaunchOnStart", + "defaultMessage": "!!!Launch Franz on start", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 22, + "column": 21 + }, + "end": { + "line": 25, + "column": 3 + } + }, + { + "id": "settings.app.form.autoLaunchInBackground", + "defaultMessage": "!!!Open in background", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 26, + "column": 26 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "settings.app.form.runInBackground", + "defaultMessage": "!!!Keep Franz in background when closing the window", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 30, + "column": 19 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "settings.app.form.enableSystemTray", + "defaultMessage": "!!!Show Franz in system tray", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 34, + "column": 20 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "settings.app.form.minimizeToSystemTray", + "defaultMessage": "!!!Minimize Franz to system tray", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 38, + "column": 24 + }, + "end": { + "line": 41, + "column": 3 + } + }, + { + "id": "settings.app.form.language", + "defaultMessage": "!!!Language", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 42, + "column": 12 + }, + "end": { + "line": 45, + "column": 3 + } + }, + { + "id": "settings.app.form.darkMode", + "defaultMessage": "!!!Dark Mode", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 46, + "column": 12 + }, + "end": { + "line": 49, + "column": 3 + } + }, + { + "id": "settings.app.form.showDisabledServices", + "defaultMessage": "!!!Display disabled services tabs", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 50, + "column": 24 + }, + "end": { + "line": 53, + "column": 3 + } + }, + { + "id": "settings.app.form.showMessagesBadgesWhenMuted", + "defaultMessage": "!!!Show unread message badge when notifications are disabled", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 54, + "column": 29 + }, + "end": { + "line": 57, + "column": 3 + } + }, + { + "id": "settings.app.form.enableSpellchecking", + "defaultMessage": "!!!Enable spell checking", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 58, + "column": 23 + }, + "end": { + "line": 61, + "column": 3 + } + }, + { + "id": "settings.app.form.enableGPUAcceleration", + "defaultMessage": "!!!Enable GPU Acceleration", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 62, + "column": 25 + }, + "end": { + "line": 65, + "column": 3 + } + }, + { + "id": "settings.app.form.beta", + "defaultMessage": "!!!Include beta versions", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 66, + "column": 8 + }, + "end": { + "line": 69, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/containers/settings/EditUserScreen.json b/src/i18n/messages/src/containers/settings/EditUserScreen.json new file mode 100644 index 000000000..70ff29945 --- /dev/null +++ b/src/i18n/messages/src/containers/settings/EditUserScreen.json @@ -0,0 +1,119 @@ +[ + { + "id": "settings.user.form.firstname", + "defaultMessage": "!!!Firstname", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 14, + "column": 13 + }, + "end": { + "line": 17, + "column": 3 + } + }, + { + "id": "settings.user.form.lastname", + "defaultMessage": "!!!Lastname", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 18, + "column": 12 + }, + "end": { + "line": 21, + "column": 3 + } + }, + { + "id": "settings.user.form.email", + "defaultMessage": "!!!Email", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 22, + "column": 9 + }, + "end": { + "line": 25, + "column": 3 + } + }, + { + "id": "settings.user.form.accountType.label", + "defaultMessage": "!!!Account type", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 26, + "column": 20 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "settings.user.form.accountType.individual", + "defaultMessage": "!!!Individual", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 30, + "column": 25 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "settings.user.form.accountType.non-profit", + "defaultMessage": "!!!Non-Profit", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 34, + "column": 24 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "settings.user.form.accountType.company", + "defaultMessage": "!!!Company", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 38, + "column": 22 + }, + "end": { + "line": 41, + "column": 3 + } + }, + { + "id": "settings.user.form.currentPassword", + "defaultMessage": "!!!Current password", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 42, + "column": 19 + }, + "end": { + "line": 45, + "column": 3 + } + }, + { + "id": "settings.user.form.newPassword", + "defaultMessage": "!!!New password", + "file": "src/containers/settings/EditUserScreen.js", + "start": { + "line": 46, + "column": 15 + }, + "end": { + "line": 49, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json new file mode 100644 index 000000000..eb1b66916 --- /dev/null +++ b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json @@ -0,0 +1,15 @@ +[ + { + "id": "feature.announcements.changelog.headline", + "defaultMessage": "!!!Changes in Franz {version}", + "file": "src/features/announcements/components/AnnouncementScreen.js", + "start": { + "line": 20, + "column": 12 + }, + "end": { + "line": 23, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/delayApp/Component.json b/src/i18n/messages/src/features/delayApp/Component.json new file mode 100644 index 000000000..bacd9444a --- /dev/null +++ b/src/i18n/messages/src/features/delayApp/Component.json @@ -0,0 +1,41 @@ +[ + { + "id": "feature.delayApp.headline", + "defaultMessage": "!!!Please purchase license to skip waiting", + "file": "src/features/delayApp/Component.js", + "start": { + "line": 15, + "column": 12 + }, + "end": { + "line": 18, + "column": 3 + } + }, + { + "id": "feature.delayApp.action", + "defaultMessage": "!!!Get a Franz Supporter License", + "file": "src/features/delayApp/Component.js", + "start": { + "line": 19, + "column": 10 + }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "feature.delayApp.text", + "defaultMessage": "!!!Franz will continue in {seconds} seconds.", + "file": "src/features/delayApp/Component.js", + "start": { + "line": 23, + "column": 8 + }, + "end": { + "line": 26, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/shareFranz/Component.json b/src/i18n/messages/src/features/shareFranz/Component.json new file mode 100644 index 000000000..34a43d5a0 --- /dev/null +++ b/src/i18n/messages/src/features/shareFranz/Component.json @@ -0,0 +1,93 @@ +[ + { + "id": "feature.shareFranz.headline", + "defaultMessage": "!!!Franz is better together!", + "file": "src/features/shareFranz/Component.js", + "start": { + "line": 15, + "column": 12 + }, + "end": { + "line": 18, + "column": 3 + } + }, + { + "id": "feature.shareFranz.text", + "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", + "file": "src/features/shareFranz/Component.js", + "start": { + "line": 19, + "column": 8 + }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "feature.shareFranz.action.email", + "defaultMessage": "!!!Share as email", + "file": "src/features/shareFranz/Component.js", + "start": { + "line": 23, + "column": 16 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "id": "feature.shareFranz.action.facebook", + "defaultMessage": "!!!Share on Facebook", + "file": "src/features/shareFranz/Component.js", + "start": { + "line": 27, + "column": 19 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "id": "feature.shareFranz.action.twitter", + "defaultMessage": "!!!Share on Twitter", + "file": "src/features/shareFranz/Component.js", + "start": { + "line": 31, + "column": 18 + }, + "end": { + "line": 34, + "column": 3 + } + }, + { + "id": "feature.shareFranz.shareText.email", + "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", + "file": "src/features/shareFranz/Component.js", + "start": { + "line": 35, + "column": 18 + }, + "end": { + "line": 38, + "column": 3 + } + }, + { + "id": "feature.shareFranz.shareText.twitter", + "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", + "file": "src/features/shareFranz/Component.js", + "start": { + "line": 39, + "column": 20 + }, + "end": { + "line": 42, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json new file mode 100644 index 000000000..f62bac42c --- /dev/null +++ b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json @@ -0,0 +1,28 @@ +[ + { + "id": "settings.workspace.add.form.submitButton", + "defaultMessage": "!!!Create workspace", + "file": "src/features/workspaces/components/CreateWorkspaceForm.js", + "start": { + "line": 13, + "column": 16 + }, + "end": { + "line": 16, + "column": 3 + } + }, + { + "id": "settings.workspace.add.form.name", + "defaultMessage": "!!!Name", + "file": "src/features/workspaces/components/CreateWorkspaceForm.js", + "start": { + "line": 17, + "column": 8 + }, + "end": { + "line": 20, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json new file mode 100644 index 000000000..7b0c3e1ce --- /dev/null +++ b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json @@ -0,0 +1,67 @@ +[ + { + "id": "settings.workspace.form.buttonDelete", + "defaultMessage": "!!!Delete workspace", + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "start": { + "line": 19, + "column": 16 + }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "settings.workspace.form.buttonSave", + "defaultMessage": "!!!Save workspace", + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "start": { + "line": 23, + "column": 14 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "id": "settings.workspace.form.name", + "defaultMessage": "!!!Name", + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "start": { + "line": 27, + "column": 8 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "id": "settings.workspace.form.yourWorkspaces", + "defaultMessage": "!!!Your workspaces", + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "start": { + "line": 31, + "column": 18 + }, + "end": { + "line": 34, + "column": 3 + } + }, + { + "id": "settings.workspace.form.servicesInWorkspaceHeadline", + "defaultMessage": "!!!Services in this Workspace", + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "start": { + "line": 35, + "column": 31 + }, + "end": { + "line": 38, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json new file mode 100644 index 000000000..9f0935620 --- /dev/null +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json @@ -0,0 +1,106 @@ +[ + { + "id": "workspaceDrawer.headline", + "defaultMessage": "!!!Workspaces", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 16, + "column": 12 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "workspaceDrawer.allServices", + "defaultMessage": "!!!All services", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 20, + "column": 15 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "workspaceDrawer.workspacesSettingsTooltip", + "defaultMessage": "!!!Workspaces settings", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 24, + "column": 29 + }, + "end": { + "line": 27, + "column": 3 + } + }, + { + "id": "workspaceDrawer.workspaceFeatureInfo", + "defaultMessage": "!!!Info about workspace feature", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 28, + "column": 24 + }, + "end": { + "line": 31, + "column": 3 + } + }, + { + "id": "workspaceDrawer.premiumCtaButtonLabel", + "defaultMessage": "!!!Create your first workspace", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 32, + "column": 25 + }, + "end": { + "line": 35, + "column": 3 + } + }, + { + "id": "workspaceDrawer.reactivatePremiumAccountLabel", + "defaultMessage": "!!!Reactivate premium account", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 36, + "column": 28 + }, + "end": { + "line": 39, + "column": 3 + } + }, + { + "id": "workspaceDrawer.addNewWorkspaceLabel", + "defaultMessage": "!!!add new workspace", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 40, + "column": 24 + }, + "end": { + "line": 43, + "column": 3 + } + }, + { + "id": "workspaceDrawer.proFeatureBadge", + "defaultMessage": "!!!Premium feature", + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "start": { + "line": 44, + "column": 23 + }, + "end": { + "line": 47, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json new file mode 100644 index 000000000..4ff190606 --- /dev/null +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json @@ -0,0 +1,28 @@ +[ + { + "id": "workspaceDrawer.item.noServicesAddedYet", + "defaultMessage": "!!!No services added yet", + "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", + "start": { + "line": 12, + "column": 22 + }, + "end": { + "line": 15, + "column": 3 + } + }, + { + "id": "workspaceDrawer.item.contextMenuEdit", + "defaultMessage": "!!!edit", + "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", + "start": { + "line": 16, + "column": 19 + }, + "end": { + "line": 19, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json new file mode 100644 index 000000000..4f3e6d55c --- /dev/null +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json @@ -0,0 +1,15 @@ +[ + { + "id": "workspaces.switchingIndicator.switchingTo", + "defaultMessage": "!!!Switching to", + "file": "src/features/workspaces/components/WorkspaceSwitchingIndicator.js", + "start": { + "line": 12, + "column": 15 + }, + "end": { + "line": 15, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json new file mode 100644 index 000000000..ef8f1bebc --- /dev/null +++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json @@ -0,0 +1,106 @@ +[ + { + "id": "settings.workspaces.headline", + "defaultMessage": "!!!Your workspaces", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 17, + "column": 12 + }, + "end": { + "line": 20, + "column": 3 + } + }, + { + "id": "settings.workspaces.noWorkspacesAdded", + "defaultMessage": "!!!You haven't added any workspaces yet.", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 21, + "column": 19 + }, + "end": { + "line": 24, + "column": 3 + } + }, + { + "id": "settings.workspaces.workspacesRequestFailed", + "defaultMessage": "!!!Could not load your workspaces", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 25, + "column": 27 + }, + "end": { + "line": 28, + "column": 3 + } + }, + { + "id": "settings.workspaces.tryReloadWorkspaces", + "defaultMessage": "!!!Try again", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 29, + "column": 23 + }, + "end": { + "line": 32, + "column": 3 + } + }, + { + "id": "settings.workspaces.updatedInfo", + "defaultMessage": "!!!Your changes have been saved", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 33, + "column": 15 + }, + "end": { + "line": 36, + "column": 3 + } + }, + { + "id": "settings.workspaces.deletedInfo", + "defaultMessage": "!!!Workspace has been deleted", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 37, + "column": 15 + }, + "end": { + "line": 40, + "column": 3 + } + }, + { + "id": "settings.workspaces.workspaceFeatureInfo", + "defaultMessage": "!!!Info about workspace feature", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 41, + "column": 24 + }, + "end": { + "line": 44, + "column": 3 + } + }, + { + "id": "settings.workspaces.workspaceFeatureHeadline", + "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 45, + "column": 28 + }, + "end": { + "line": 48, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/helpers/validation-helpers.json b/src/i18n/messages/src/helpers/validation-helpers.json new file mode 100644 index 000000000..86bfe1500 --- /dev/null +++ b/src/i18n/messages/src/helpers/validation-helpers.json @@ -0,0 +1,67 @@ +[ + { + "id": "validation.required", + "defaultMessage": "!!!Field is required", + "file": "src/helpers/validation-helpers.js", + "start": { + "line": 4, + "column": 12 + }, + "end": { + "line": 7, + "column": 3 + } + }, + { + "id": "validation.email", + "defaultMessage": "!!!Email not valid", + "file": "src/helpers/validation-helpers.js", + "start": { + "line": 8, + "column": 9 + }, + "end": { + "line": 11, + "column": 3 + } + }, + { + "id": "validation.url", + "defaultMessage": "!!!Not a valid URL", + "file": "src/helpers/validation-helpers.js", + "start": { + "line": 12, + "column": 7 + }, + "end": { + "line": 15, + "column": 3 + } + }, + { + "id": "validation.minLength", + "defaultMessage": "!!!Too few characters", + "file": "src/helpers/validation-helpers.js", + "start": { + "line": 16, + "column": 13 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "validation.oneRequired", + "defaultMessage": "!!!At least one is required", + "file": "src/helpers/validation-helpers.js", + "start": { + "line": 20, + "column": 15 + }, + "end": { + "line": 23, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json new file mode 100644 index 000000000..28001614f --- /dev/null +++ b/src/i18n/messages/src/i18n/globalMessages.json @@ -0,0 +1,80 @@ +[ + { + "id": "global.api.unhealthy", + "defaultMessage": "!!!Can't connect to Franz Online Services", + "file": "src/i18n/globalMessages.js", + "start": { + "line": 4, + "column": 16 + }, + "end": { + "line": 7, + "column": 3 + } + }, + { + "id": "global.notConnectedToTheInternet", + "defaultMessage": "!!!You are not connected to the internet.", + "file": "src/i18n/globalMessages.js", + "start": { + "line": 8, + "column": 29 + }, + "end": { + "line": 11, + "column": 3 + } + }, + { + "id": "global.spellchecking.language", + "defaultMessage": "!!!Spell checking language", + "file": "src/i18n/globalMessages.js", + "start": { + "line": 12, + "column": 24 + }, + "end": { + "line": 15, + "column": 3 + } + }, + { + "id": "global.spellchecker.useDefault", + "defaultMessage": "!!!Use System Default ({default})", + "file": "src/i18n/globalMessages.js", + "start": { + "line": 16, + "column": 29 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "global.spellchecking.autodetect", + "defaultMessage": "!!!Detect language automatically", + "file": "src/i18n/globalMessages.js", + "start": { + "line": 20, + "column": 34 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "global.spellchecking.autodetect.short", + "defaultMessage": "!!!Automatic", + "file": "src/i18n/globalMessages.js", + "start": { + "line": 24, + "column": 39 + }, + "end": { + "line": 27, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json new file mode 100644 index 000000000..a2ce34cd4 --- /dev/null +++ b/src/i18n/messages/src/lib/Menu.json @@ -0,0 +1,691 @@ +[ + { + "id": "menu.edit", + "defaultMessage": "!!!Edit", + "file": "src/lib/Menu.js", + "start": { + "line": 14, + "column": 8 + }, + "end": { + "line": 17, + "column": 3 + } + }, + { + "id": "menu.edit.undo", + "defaultMessage": "!!!Undo", + "file": "src/lib/Menu.js", + "start": { + "line": 18, + "column": 8 + }, + "end": { + "line": 21, + "column": 3 + } + }, + { + "id": "menu.edit.redo", + "defaultMessage": "!!!Redo", + "file": "src/lib/Menu.js", + "start": { + "line": 22, + "column": 8 + }, + "end": { + "line": 25, + "column": 3 + } + }, + { + "id": "menu.edit.cut", + "defaultMessage": "!!!Cut", + "file": "src/lib/Menu.js", + "start": { + "line": 26, + "column": 7 + }, + "end": { + "line": 29, + "column": 3 + } + }, + { + "id": "menu.edit.copy", + "defaultMessage": "!!!Copy", + "file": "src/lib/Menu.js", + "start": { + "line": 30, + "column": 8 + }, + "end": { + "line": 33, + "column": 3 + } + }, + { + "id": "menu.edit.paste", + "defaultMessage": "!!!Paste", + "file": "src/lib/Menu.js", + "start": { + "line": 34, + "column": 9 + }, + "end": { + "line": 37, + "column": 3 + } + }, + { + "id": "menu.edit.pasteAndMatchStyle", + "defaultMessage": "!!!Paste And Match Style", + "file": "src/lib/Menu.js", + "start": { + "line": 38, + "column": 22 + }, + "end": { + "line": 41, + "column": 3 + } + }, + { + "id": "menu.edit.delete", + "defaultMessage": "!!!Delete", + "file": "src/lib/Menu.js", + "start": { + "line": 42, + "column": 10 + }, + "end": { + "line": 45, + "column": 3 + } + }, + { + "id": "menu.edit.selectAll", + "defaultMessage": "!!!Select All", + "file": "src/lib/Menu.js", + "start": { + "line": 46, + "column": 13 + }, + "end": { + "line": 49, + "column": 3 + } + }, + { + "id": "menu.edit.speech", + "defaultMessage": "!!!Speech", + "file": "src/lib/Menu.js", + "start": { + "line": 50, + "column": 10 + }, + "end": { + "line": 53, + "column": 3 + } + }, + { + "id": "menu.edit.startSpeaking", + "defaultMessage": "!!!Start Speaking", + "file": "src/lib/Menu.js", + "start": { + "line": 54, + "column": 17 + }, + "end": { + "line": 57, + "column": 3 + } + }, + { + "id": "menu.edit.stopSpeaking", + "defaultMessage": "!!!Stop Speaking", + "file": "src/lib/Menu.js", + "start": { + "line": 58, + "column": 16 + }, + "end": { + "line": 61, + "column": 3 + } + }, + { + "id": "menu.edit.startDictation", + "defaultMessage": "!!!Start Dictation", + "file": "src/lib/Menu.js", + "start": { + "line": 62, + "column": 18 + }, + "end": { + "line": 65, + "column": 3 + } + }, + { + "id": "menu.edit.emojiSymbols", + "defaultMessage": "!!!Emoji & Symbols", + "file": "src/lib/Menu.js", + "start": { + "line": 66, + "column": 16 + }, + "end": { + "line": 69, + "column": 3 + } + }, + { + "id": "menu.view.resetZoom", + "defaultMessage": "!!!Actual Size", + "file": "src/lib/Menu.js", + "start": { + "line": 70, + "column": 13 + }, + "end": { + "line": 73, + "column": 3 + } + }, + { + "id": "menu.view.zoomIn", + "defaultMessage": "!!!Zoom In", + "file": "src/lib/Menu.js", + "start": { + "line": 74, + "column": 10 + }, + "end": { + "line": 77, + "column": 3 + } + }, + { + "id": "menu.view.zoomOut", + "defaultMessage": "!!!Zoom Out", + "file": "src/lib/Menu.js", + "start": { + "line": 78, + "column": 11 + }, + "end": { + "line": 81, + "column": 3 + } + }, + { + "id": "menu.view.enterFullScreen", + "defaultMessage": "!!!Enter Full Screen", + "file": "src/lib/Menu.js", + "start": { + "line": 82, + "column": 19 + }, + "end": { + "line": 85, + "column": 3 + } + }, + { + "id": "menu.view.exitFullScreen", + "defaultMessage": "!!!Exit Full Screen", + "file": "src/lib/Menu.js", + "start": { + "line": 86, + "column": 18 + }, + "end": { + "line": 89, + "column": 3 + } + }, + { + "id": "menu.view.toggleFullScreen", + "defaultMessage": "!!!Toggle Full Screen", + "file": "src/lib/Menu.js", + "start": { + "line": 90, + "column": 20 + }, + "end": { + "line": 93, + "column": 3 + } + }, + { + "id": "menu.view.toggleDevTools", + "defaultMessage": "!!!Toggle Developer Tools", + "file": "src/lib/Menu.js", + "start": { + "line": 94, + "column": 18 + }, + "end": { + "line": 97, + "column": 3 + } + }, + { + "id": "menu.view.toggleServiceDevTools", + "defaultMessage": "!!!Toggle Service Developer Tools", + "file": "src/lib/Menu.js", + "start": { + "line": 98, + "column": 25 + }, + "end": { + "line": 101, + "column": 3 + } + }, + { + "id": "menu.view.reloadService", + "defaultMessage": "!!!Reload Service", + "file": "src/lib/Menu.js", + "start": { + "line": 102, + "column": 17 + }, + "end": { + "line": 105, + "column": 3 + } + }, + { + "id": "menu.view.reloadFranz", + "defaultMessage": "!!!Reload Franz", + "file": "src/lib/Menu.js", + "start": { + "line": 106, + "column": 15 + }, + "end": { + "line": 109, + "column": 3 + } + }, + { + "id": "menu.window.minimize", + "defaultMessage": "!!!Minimize", + "file": "src/lib/Menu.js", + "start": { + "line": 110, + "column": 12 + }, + "end": { + "line": 113, + "column": 3 + } + }, + { + "id": "menu.window.close", + "defaultMessage": "!!!Close", + "file": "src/lib/Menu.js", + "start": { + "line": 114, + "column": 9 + }, + "end": { + "line": 117, + "column": 3 + } + }, + { + "id": "menu.help.learnMore", + "defaultMessage": "!!!Learn More", + "file": "src/lib/Menu.js", + "start": { + "line": 118, + "column": 13 + }, + "end": { + "line": 121, + "column": 3 + } + }, + { + "id": "menu.help.changelog", + "defaultMessage": "!!!Changelog", + "file": "src/lib/Menu.js", + "start": { + "line": 122, + "column": 13 + }, + "end": { + "line": 125, + "column": 3 + } + }, + { + "id": "menu.help.support", + "defaultMessage": "!!!Support", + "file": "src/lib/Menu.js", + "start": { + "line": 126, + "column": 11 + }, + "end": { + "line": 129, + "column": 3 + } + }, + { + "id": "menu.help.tos", + "defaultMessage": "!!!Terms of Service", + "file": "src/lib/Menu.js", + "start": { + "line": 130, + "column": 7 + }, + "end": { + "line": 133, + "column": 3 + } + }, + { + "id": "menu.help.privacy", + "defaultMessage": "!!!Privacy Statement", + "file": "src/lib/Menu.js", + "start": { + "line": 134, + "column": 11 + }, + "end": { + "line": 137, + "column": 3 + } + }, + { + "id": "menu.file", + "defaultMessage": "!!!File", + "file": "src/lib/Menu.js", + "start": { + "line": 138, + "column": 8 + }, + "end": { + "line": 141, + "column": 3 + } + }, + { + "id": "menu.view", + "defaultMessage": "!!!View", + "file": "src/lib/Menu.js", + "start": { + "line": 142, + "column": 8 + }, + "end": { + "line": 145, + "column": 3 + } + }, + { + "id": "menu.services", + "defaultMessage": "!!!Services", + "file": "src/lib/Menu.js", + "start": { + "line": 146, + "column": 12 + }, + "end": { + "line": 149, + "column": 3 + } + }, + { + "id": "menu.window", + "defaultMessage": "!!!Window", + "file": "src/lib/Menu.js", + "start": { + "line": 150, + "column": 10 + }, + "end": { + "line": 153, + "column": 3 + } + }, + { + "id": "menu.help", + "defaultMessage": "!!!Help", + "file": "src/lib/Menu.js", + "start": { + "line": 154, + "column": 8 + }, + "end": { + "line": 157, + "column": 3 + } + }, + { + "id": "menu.app.about", + "defaultMessage": "!!!About Franz", + "file": "src/lib/Menu.js", + "start": { + "line": 158, + "column": 9 + }, + "end": { + "line": 161, + "column": 3 + } + }, + { + "id": "menu.app.announcement", + "defaultMessage": "!!!What's new?", + "file": "src/lib/Menu.js", + "start": { + "line": 162, + "column": 16 + }, + "end": { + "line": 165, + "column": 3 + } + }, + { + "id": "menu.app.settings", + "defaultMessage": "!!!Settings", + "file": "src/lib/Menu.js", + "start": { + "line": 166, + "column": 12 + }, + "end": { + "line": 169, + "column": 3 + } + }, + { + "id": "menu.app.hide", + "defaultMessage": "!!!Hide", + "file": "src/lib/Menu.js", + "start": { + "line": 170, + "column": 8 + }, + "end": { + "line": 173, + "column": 3 + } + }, + { + "id": "menu.app.hideOthers", + "defaultMessage": "!!!Hide Others", + "file": "src/lib/Menu.js", + "start": { + "line": 174, + "column": 14 + }, + "end": { + "line": 177, + "column": 3 + } + }, + { + "id": "menu.app.unhide", + "defaultMessage": "!!!Unhide", + "file": "src/lib/Menu.js", + "start": { + "line": 178, + "column": 10 + }, + "end": { + "line": 181, + "column": 3 + } + }, + { + "id": "menu.app.quit", + "defaultMessage": "!!!Quit", + "file": "src/lib/Menu.js", + "start": { + "line": 182, + "column": 8 + }, + "end": { + "line": 185, + "column": 3 + } + }, + { + "id": "menu.services.addNewService", + "defaultMessage": "!!!Add New Service...", + "file": "src/lib/Menu.js", + "start": { + "line": 186, + "column": 17 + }, + "end": { + "line": 189, + "column": 3 + } + }, + { + "id": "menu.workspaces.addNewWorkspace", + "defaultMessage": "!!!Add New Workspace...", + "file": "src/lib/Menu.js", + "start": { + "line": 190, + "column": 19 + }, + "end": { + "line": 193, + "column": 3 + } + }, + { + "id": "menu.workspaces.openWorkspaceDrawer", + "defaultMessage": "!!!Open workspace drawer", + "file": "src/lib/Menu.js", + "start": { + "line": 194, + "column": 23 + }, + "end": { + "line": 197, + "column": 3 + } + }, + { + "id": "menu.workspaces.closeWorkspaceDrawer", + "defaultMessage": "!!!Close workspace drawer", + "file": "src/lib/Menu.js", + "start": { + "line": 198, + "column": 24 + }, + "end": { + "line": 201, + "column": 3 + } + }, + { + "id": "menu.services.setNextServiceActive", + "defaultMessage": "!!!Activate next service...", + "file": "src/lib/Menu.js", + "start": { + "line": 202, + "column": 23 + }, + "end": { + "line": 205, + "column": 3 + } + }, + { + "id": "menu.services.activatePreviousService", + "defaultMessage": "!!!Activate previous service...", + "file": "src/lib/Menu.js", + "start": { + "line": 206, + "column": 27 + }, + "end": { + "line": 209, + "column": 3 + } + }, + { + "id": "sidebar.muteApp", + "defaultMessage": "!!!Disable notifications & audio", + "file": "src/lib/Menu.js", + "start": { + "line": 210, + "column": 11 + }, + "end": { + "line": 213, + "column": 3 + } + }, + { + "id": "sidebar.unmuteApp", + "defaultMessage": "!!!Enable notifications & audio", + "file": "src/lib/Menu.js", + "start": { + "line": 214, + "column": 13 + }, + "end": { + "line": 217, + "column": 3 + } + }, + { + "id": "menu.workspaces", + "defaultMessage": "!!!Workspaces", + "file": "src/lib/Menu.js", + "start": { + "line": 218, + "column": 14 + }, + "end": { + "line": 221, + "column": 3 + } + }, + { + "id": "menu.workspaces.defaultWorkspace", + "defaultMessage": "!!!Default", + "file": "src/lib/Menu.js", + "start": { + "line": 222, + "column": 20 + }, + "end": { + "line": 225, + "column": 3 + } + } +] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 9620db3443c70d6f92b55725ed07a17adda8cea4 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Fri, 12 Apr 2019 17:18:19 +0200 Subject: link to in-app changelog on new update notification --- src/components/layout/AppLayout.js | 12 +++++++++-- src/containers/layout/AppLayoutContainer.js | 1 + src/electron/ipc-api/autoUpdate.js | 7 +++++-- src/i18n/locales/defaultMessages.json | 24 +++++++++++----------- .../messages/src/components/layout/AppLayout.json | 24 +++++++++++----------- src/stores/AppStore.js | 4 +++- src/styles/info-bar.scss | 4 ++++ 7 files changed, 47 insertions(+), 29 deletions(-) (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index eb3f03f12..d5febfaf4 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js @@ -17,6 +17,7 @@ import { isWindows } from '../../environment'; import AnnouncementScreen from '../../features/announcements/components/AnnouncementScreen'; import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; import { workspaceStore } from '../../features/workspaces'; +import { announcementActions } from '../../features/announcements/actions'; function createMarkup(HTMLString) { return { __html: HTMLString }; @@ -72,6 +73,7 @@ class AppLayout extends Component { // isOnline: PropTypes.bool.isRequired, showServicesUpdatedInfoBar: PropTypes.bool.isRequired, appUpdateIsDownloaded: PropTypes.bool.isRequired, + nextAppReleaseVersion: PropTypes.string, removeNewsItem: PropTypes.func.isRequired, reloadServicesAfterUpdate: PropTypes.func.isRequired, installAppUpdate: PropTypes.func.isRequired, @@ -86,6 +88,7 @@ class AppLayout extends Component { static defaultProps = { children: [], + nextAppReleaseVersion: null, }; static contextTypes = { @@ -104,6 +107,7 @@ class AppLayout extends Component { news, showServicesUpdatedInfoBar, appUpdateIsDownloaded, + nextAppReleaseVersion, removeNewsItem, reloadServicesAfterUpdate, installAppUpdate, @@ -181,9 +185,13 @@ class AppLayout extends Component { {intl.formatMessage(messages.updateAvailable)} {' '} - + )} {isDelayAppScreenVisible && ()} diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index 8c1d2dfc1..d2891a6a4 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js @@ -136,6 +136,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e isOnline={app.isOnline} showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar} appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED} + nextAppReleaseVersion={app.nextAppReleaseVersion} sidebar={sidebar} workspacesDrawer={workspacesDrawer} services={servicesContainer} diff --git a/src/electron/ipc-api/autoUpdate.js b/src/electron/ipc-api/autoUpdate.js index 74b718734..9a04c1958 100644 --- a/src/electron/ipc-api/autoUpdate.js +++ b/src/electron/ipc-api/autoUpdate.js @@ -30,9 +30,12 @@ export default (params) => { params.mainWindow.webContents.send('autoUpdate', { available: false }); }); - autoUpdater.on('update-available', () => { + autoUpdater.on('update-available', (event) => { debug('update-available'); - params.mainWindow.webContents.send('autoUpdate', { available: true }); + params.mainWindow.webContents.send('autoUpdate', { + version: event.version, + available: true, + }); }); autoUpdater.on('download-progress', (progressObj) => { diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 3323aa310..df7f04a06 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -625,78 +625,78 @@ "defaultMessage": "!!!Your services have been updated.", "end": { "column": 3, - "line": 29 + "line": 30 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.servicesUpdated", "start": { "column": 19, - "line": 26 + "line": 27 } }, { "defaultMessage": "!!!A new update for Franz is available.", "end": { "column": 3, - "line": 33 + "line": 34 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.updateAvailable", "start": { "column": 19, - "line": 30 + "line": 31 } }, { "defaultMessage": "!!!Reload services", "end": { "column": 3, - "line": 37 + "line": 38 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonReloadServices", "start": { "column": 24, - "line": 34 + "line": 35 } }, { "defaultMessage": "!!!Changelog", "end": { "column": 3, - "line": 41 + "line": 42 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonChangelog", "start": { "column": 13, - "line": 38 + "line": 39 } }, { "defaultMessage": "!!!Restart & install update", "end": { "column": 3, - "line": 45 + "line": 46 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonInstallUpdate", "start": { "column": 23, - "line": 42 + "line": 43 } }, { "defaultMessage": "!!!Could not load services and user information", "end": { "column": 3, - "line": 49 + "line": 50 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.requiredRequestsFailed", "start": { "column": 26, - "line": 46 + "line": 47 } } ], diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json index 4dd354afc..26b8ce040 100644 --- a/src/i18n/messages/src/components/layout/AppLayout.json +++ b/src/i18n/messages/src/components/layout/AppLayout.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Your services have been updated.", "file": "src/components/layout/AppLayout.js", "start": { - "line": 26, + "line": 27, "column": 19 }, "end": { - "line": 29, + "line": 30, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!A new update for Franz is available.", "file": "src/components/layout/AppLayout.js", "start": { - "line": 30, + "line": 31, "column": 19 }, "end": { - "line": 33, + "line": 34, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Reload services", "file": "src/components/layout/AppLayout.js", "start": { - "line": 34, + "line": 35, "column": 24 }, "end": { - "line": 37, + "line": 38, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Changelog", "file": "src/components/layout/AppLayout.js", "start": { - "line": 38, + "line": 39, "column": 13 }, "end": { - "line": 41, + "line": 42, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Restart & install update", "file": "src/components/layout/AppLayout.js", "start": { - "line": 42, + "line": 43, "column": 23 }, "end": { - "line": 45, + "line": 46, "column": 3 } }, @@ -69,11 +69,11 @@ "defaultMessage": "!!!Could not load services and user information", "file": "src/components/layout/AppLayout.js", "start": { - "line": 46, + "line": 47, "column": 26 }, "end": { - "line": 49, + "line": 50, "column": 3 } } diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index ca0c9175b..e68e797ef 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -67,6 +67,8 @@ export default class AppStore extends Store { @observable isFocused = true; + @observable nextAppReleaseVersion = null; + dictionaries = []; constructor(...args) { @@ -123,7 +125,7 @@ export default class AppStore extends Store { ipcRenderer.on('autoUpdate', (event, data) => { if (data.available) { this.updateStatus = this.updateStatusTypes.AVAILABLE; - + this.nextAppReleaseVersion = data.version; if (isMac) { app.dock.bounce(); } diff --git a/src/styles/info-bar.scss b/src/styles/info-bar.scss index fb4917358..d3010942f 100644 --- a/src/styles/info-bar.scss +++ b/src/styles/info-bar.scss @@ -43,6 +43,10 @@ } } + .info-bar__inline-button { + color: white; + } + &.info-bar--bottom { order: 10; } &.info-bar--primary { -- cgit v1.2.3-70-g09d2 From 7810d783bb848f3c423d6f56cd3f14ced8eb5846 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 12 Apr 2019 19:25:24 +0200 Subject: update strings --- src/i18n/locales/defaultMessages.json | 4468 +++++++++++++++++++++++++++++++++ src/i18n/locales/en-US.json | 2 +- 2 files changed, 4469 insertions(+), 1 deletion(-) create mode 100644 src/i18n/locales/defaultMessages.json (limited to 'src/i18n/locales/defaultMessages.json') diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json new file mode 100644 index 000000000..df7f04a06 --- /dev/null +++ b/src/i18n/locales/defaultMessages.json @@ -0,0 +1,4468 @@ +[ + { + "descriptors": [ + { + "defaultMessage": "!!!Import your Franz 4 services", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/auth/Import.js", + "id": "import.headline", + "start": { + "column": 12, + "line": 13 + } + }, + { + "defaultMessage": "!!!Services not yet supported in Franz 5", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/auth/Import.js", + "id": "import.notSupportedHeadline", + "start": { + "column": 24, + "line": 17 + } + }, + { + "defaultMessage": "!!!Import {count} services", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/components/auth/Import.js", + "id": "import.submit.label", + "start": { + "column": 21, + "line": 21 + } + }, + { + "defaultMessage": "!!!I want to add services manually", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/auth/Import.js", + "id": "import.skip.label", + "start": { + "column": 19, + "line": 25 + } + } + ], + "path": "src/components/auth/Import.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Invite Friends", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/components/auth/Invite.js", + "id": "settings.invite.headline", + "start": { + "column": 20, + "line": 16 + } + }, + { + "defaultMessage": "!!!Invite 3 of your friends or colleagues", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.headline.friends", + "start": { + "column": 12, + "line": 20 + } + }, + { + "defaultMessage": "!!!Name", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.name.label", + "start": { + "column": 13, + "line": 24 + } + }, + { + "defaultMessage": "!!!Email address", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.email.label", + "start": { + "column": 14, + "line": 28 + } + }, + { + "defaultMessage": "!!!Send invites", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.submit.label", + "start": { + "column": 21, + "line": 32 + } + }, + { + "defaultMessage": "!!!I want to do this later", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.skip.label", + "start": { + "column": 19, + "line": 36 + } + }, + { + "defaultMessage": "!!!Invitations sent successfully", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/components/auth/Invite.js", + "id": "invite.successInfo", + "start": { + "column": 21, + "line": 40 + } + } + ], + "path": "src/components/auth/Invite.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Sign in", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/auth/Login.js", + "id": "login.headline", + "start": { + "column": 12, + "line": 17 + } + }, + { + "defaultMessage": "!!!Email address", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/components/auth/Login.js", + "id": "login.email.label", + "start": { + "column": 14, + "line": 21 + } + }, + { + "defaultMessage": "!!!Password", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/auth/Login.js", + "id": "login.password.label", + "start": { + "column": 17, + "line": 25 + } + }, + { + "defaultMessage": "!!!Sign in", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/components/auth/Login.js", + "id": "login.submit.label", + "start": { + "column": 21, + "line": 29 + } + }, + { + "defaultMessage": "!!!Email or password not valid", + "end": { + "column": 3, + "line": 36 + }, + "file": "src/components/auth/Login.js", + "id": "login.invalidCredentials", + "start": { + "column": 22, + "line": 33 + } + }, + { + "defaultMessage": "!!!Your session expired, please login again.", + "end": { + "column": 3, + "line": 40 + }, + "file": "src/components/auth/Login.js", + "id": "login.tokenExpired", + "start": { + "column": 16, + "line": 37 + } + }, + { + "defaultMessage": "!!!Your session expired, please login again.", + "end": { + "column": 3, + "line": 44 + }, + "file": "src/components/auth/Login.js", + "id": "login.serverLogout", + "start": { + "column": 16, + "line": 41 + } + }, + { + "defaultMessage": "!!!Create a free account", + "end": { + "column": 3, + "line": 48 + }, + "file": "src/components/auth/Login.js", + "id": "login.link.signup", + "start": { + "column": 14, + "line": 45 + } + }, + { + "defaultMessage": "!!!Forgot password", + "end": { + "column": 3, + "line": 52 + }, + "file": "src/components/auth/Login.js", + "id": "login.link.password", + "start": { + "column": 16, + "line": 49 + } + } + ], + "path": "src/components/auth/Login.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Forgot password", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/auth/Password.js", + "id": "password.headline", + "start": { + "column": 12, + "line": 14 + } + }, + { + "defaultMessage": "!!!Email address", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/auth/Password.js", + "id": "password.email.label", + "start": { + "column": 14, + "line": 18 + } + }, + { + "defaultMessage": "!!!Submit", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/auth/Password.js", + "id": "password.submit.label", + "start": { + "column": 21, + "line": 22 + } + }, + { + "defaultMessage": "!!!Your new password was sent to your email address", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/auth/Password.js", + "id": "password.successInfo", + "start": { + "column": 15, + "line": 26 + } + }, + { + "defaultMessage": "!!!No user affiliated with that email address", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/auth/Password.js", + "id": "password.noUser", + "start": { + "column": 10, + "line": 30 + } + }, + { + "defaultMessage": "!!!Create a free account", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/auth/Password.js", + "id": "password.link.signup", + "start": { + "column": 14, + "line": 34 + } + }, + { + "defaultMessage": "!!!Sign in to your account", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/auth/Password.js", + "id": "password.link.login", + "start": { + "column": 13, + "line": 38 + } + } + ], + "path": "src/components/auth/Password.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Support Franz", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.headline", + "start": { + "column": 12, + "line": 13 + } + }, + { + "defaultMessage": "!!!Select your support plan", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.support.label", + "start": { + "column": 23, + "line": 17 + } + }, + { + "defaultMessage": "!!!Support the development of Franz", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.submit.label", + "start": { + "column": 21, + "line": 21 + } + }, + { + "defaultMessage": "!!!I don't want to support the development of Franz.", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.link.skipPayment", + "start": { + "column": 15, + "line": 25 + } + } + ], + "path": "src/components/auth/Pricing.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Sign up", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.headline", + "start": { + "column": 12, + "line": 18 + } + }, + { + "defaultMessage": "!!!Firstname", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.firstname.label", + "start": { + "column": 18, + "line": 22 + } + }, + { + "defaultMessage": "!!!Lastname", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.lastname.label", + "start": { + "column": 17, + "line": 26 + } + }, + { + "defaultMessage": "!!!Email address", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.email.label", + "start": { + "column": 14, + "line": 30 + } + }, + { + "defaultMessage": "!!!Company", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.company.label", + "start": { + "column": 16, + "line": 34 + } + }, + { + "defaultMessage": "!!!Password", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.password.label", + "start": { + "column": 17, + "line": 38 + } + }, + { + "defaultMessage": "!!!By creating a Franz account you accept the", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.legal.info", + "start": { + "column": 13, + "line": 42 + } + }, + { + "defaultMessage": "!!!Terms of service", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.legal.terms", + "start": { + "column": 9, + "line": 46 + } + }, + { + "defaultMessage": "!!!Privacy Statement", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.legal.privacy", + "start": { + "column": 11, + "line": 50 + } + }, + { + "defaultMessage": "!!!Create account", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.submit.label", + "start": { + "column": 21, + "line": 54 + } + }, + { + "defaultMessage": "!!!Already have an account, sign in?", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.link.login", + "start": { + "column": 13, + "line": 58 + } + }, + { + "defaultMessage": "!!!A user with that email address already exists", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/components/auth/Signup.js", + "id": "signup.emailDuplicate", + "start": { + "column": 18, + "line": 62 + } + } + ], + "path": "src/components/auth/Signup.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Create a free account", + "end": { + "column": 3, + "line": 12 + }, + "file": "src/components/auth/Welcome.js", + "id": "welcome.signupButton", + "start": { + "column": 16, + "line": 9 + } + }, + { + "defaultMessage": "!!!Login to your account", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/auth/Welcome.js", + "id": "welcome.loginButton", + "start": { + "column": 15, + "line": 13 + } + } + ], + "path": "src/components/auth/Welcome.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your services have been updated.", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.servicesUpdated", + "start": { + "column": 19, + "line": 27 + } + }, + { + "defaultMessage": "!!!A new update for Franz is available.", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.updateAvailable", + "start": { + "column": 19, + "line": 31 + } + }, + { + "defaultMessage": "!!!Reload services", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.buttonReloadServices", + "start": { + "column": 24, + "line": 35 + } + }, + { + "defaultMessage": "!!!Changelog", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.buttonChangelog", + "start": { + "column": 13, + "line": 39 + } + }, + { + "defaultMessage": "!!!Restart & install update", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.buttonInstallUpdate", + "start": { + "column": 23, + "line": 43 + } + }, + { + "defaultMessage": "!!!Could not load services and user information", + "end": { + "column": 3, + "line": 50 + }, + "file": "src/components/layout/AppLayout.js", + "id": "infobar.requiredRequestsFailed", + "start": { + "column": 26, + "line": 47 + } + } + ], + "path": "src/components/layout/AppLayout.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.settings", + "start": { + "column": 12, + "line": 13 + } + }, + { + "defaultMessage": "!!!Add new service", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.addNewService", + "start": { + "column": 17, + "line": 17 + } + }, + { + "defaultMessage": "!!!Disable notifications & audio", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.muteApp", + "start": { + "column": 8, + "line": 21 + } + }, + { + "defaultMessage": "!!!Enable notifications & audio", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.unmuteApp", + "start": { + "column": 10, + "line": 25 + } + }, + { + "defaultMessage": "!!!Open workspace drawer", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.openWorkspaceDrawer", + "start": { + "column": 23, + "line": 29 + } + }, + { + "defaultMessage": "!!!Close workspace drawer", + "end": { + "column": 3, + "line": 36 + }, + "file": "src/components/layout/Sidebar.js", + "id": "sidebar.closeWorkspaceDrawer", + "start": { + "column": 24, + "line": 33 + } + } + ], + "path": "src/components/layout/Sidebar.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Oh no!", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.headline", + "start": { + "column": 12, + "line": 12 + } + }, + { + "defaultMessage": "!!!{name} has failed to load.", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.text", + "start": { + "column": 8, + "line": 16 + } + }, + { + "defaultMessage": "!!!Reload {name}", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.action", + "start": { + "column": 10, + "line": 20 + } + }, + { + "defaultMessage": "!!!Edit {name}", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.editAction", + "start": { + "column": 14, + "line": 24 + } + }, + { + "defaultMessage": "!!!Error:", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", + "id": "service.errorHandler.message", + "start": { + "column": 16, + "line": 28 + } + } + ], + "path": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!{name} is disabled", + "end": { + "column": 3, + "line": 12 + }, + "file": "src/components/services/content/ServiceDisabled.js", + "id": "service.disabledHandler.headline", + "start": { + "column": 12, + "line": 9 + } + }, + { + "defaultMessage": "!!!Enable {name}", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/services/content/ServiceDisabled.js", + "id": "service.disabledHandler.action", + "start": { + "column": 10, + "line": 13 + } + } + ], + "path": "src/components/services/content/ServiceDisabled.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Welcome to Franz", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/services/content/Services.js", + "id": "services.welcome", + "start": { + "column": 11, + "line": 11 + } + }, + { + "defaultMessage": "!!!Get started", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/services/content/Services.js", + "id": "services.getStarted", + "start": { + "column": 14, + "line": 15 + } + } + ], + "path": "src/components/services/content/Services.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Oh no!", + "end": { + "column": 3, + "line": 13 + }, + "file": "src/components/services/content/WebviewCrashHandler.js", + "id": "service.crashHandler.headline", + "start": { + "column": 12, + "line": 10 + } + }, + { + "defaultMessage": "!!!{name} has caused an error.", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/services/content/WebviewCrashHandler.js", + "id": "service.crashHandler.text", + "start": { + "column": 8, + "line": 14 + } + }, + { + "defaultMessage": "!!!Reload {name}", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/services/content/WebviewCrashHandler.js", + "id": "service.crashHandler.action", + "start": { + "column": 10, + "line": 18 + } + }, + { + "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/services/content/WebviewCrashHandler.js", + "id": "service.crashHandler.autoReload", + "start": { + "column": 14, + "line": 22 + } + } + ], + "path": "src/components/services/content/WebviewCrashHandler.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Reload", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.reload", + "start": { + "column": 10, + "line": 15 + } + }, + { + "defaultMessage": "!!!Edit", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.edit", + "start": { + "column": 8, + "line": 19 + } + }, + { + "defaultMessage": "!!!Disable notifications", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.disableNotifications", + "start": { + "column": 24, + "line": 23 + } + }, + { + "defaultMessage": "!!!Enable notifications", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.enableNotification", + "start": { + "column": 23, + "line": 27 + } + }, + { + "defaultMessage": "!!!Disable audio", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.disableAudio", + "start": { + "column": 16, + "line": 31 + } + }, + { + "defaultMessage": "!!!Enable audio", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.enableAudio", + "start": { + "column": 15, + "line": 35 + } + }, + { + "defaultMessage": "!!!Disable Service", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.disableService", + "start": { + "column": 18, + "line": 39 + } + }, + { + "defaultMessage": "!!!Enable Service", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.enableService", + "start": { + "column": 17, + "line": 43 + } + }, + { + "defaultMessage": "!!!Delete Service", + "end": { + "column": 3, + "line": 50 + }, + "file": "src/components/services/tabs/TabItem.js", + "id": "tabs.item.deleteService", + "start": { + "column": 17, + "line": 47 + } + } + ], + "path": "src/components/services/tabs/TabItem.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Account", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Your Subscription", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headlineSubscription", + "start": { + "column": 24, + "line": 19 + } + }, + { + "defaultMessage": "!!!Upgrade your Account", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headlineUpgrade", + "start": { + "column": 19, + "line": 23 + } + }, + { + "defaultMessage": "!!Invoices", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headlineInvoices", + "start": { + "column": 20, + "line": 27 + } + }, + { + "defaultMessage": "!!Danger Zone", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.headlineDangerZone", + "start": { + "column": 22, + "line": 31 + } + }, + { + "defaultMessage": "!!!Manage your subscription", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.manageSubscription.label", + "start": { + "column": 33, + "line": 35 + } + }, + { + "defaultMessage": "!!!Basic Account", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.accountType.basic", + "start": { + "column": 20, + "line": 39 + } + }, + { + "defaultMessage": "!!!Premium Supporter Account", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.accountType.premium", + "start": { + "column": 22, + "line": 43 + } + }, + { + "defaultMessage": "!!!Edit Account", + "end": { + "column": 3, + "line": 50 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.account.editButton", + "start": { + "column": 21, + "line": 47 + } + }, + { + "defaultMessage": "!!!Download", + "end": { + "column": 3, + "line": 54 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.invoiceDownload", + "start": { + "column": 19, + "line": 51 + } + }, + { + "defaultMessage": "!!!Could not load user information", + "end": { + "column": 3, + "line": 58 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.userInfoRequestFailed", + "start": { + "column": 25, + "line": 55 + } + }, + { + "defaultMessage": "!!!Try again", + "end": { + "column": 3, + "line": 62 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.tryReloadUserInfoRequest", + "start": { + "column": 28, + "line": 59 + } + }, + { + "defaultMessage": "!!!Delete account", + "end": { + "column": 3, + "line": 66 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.deleteAccount", + "start": { + "column": 17, + "line": 63 + } + }, + { + "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", + "end": { + "column": 3, + "line": 70 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.deleteInfo", + "start": { + "column": 14, + "line": 67 + } + }, + { + "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", + "end": { + "column": 3, + "line": 74 + }, + "file": "src/components/settings/account/AccountDashboard.js", + "id": "settings.account.deleteEmailSent", + "start": { + "column": 19, + "line": 71 + } + } + ], + "path": "src/components/settings/account/AccountDashboard.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Available services", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.availableServices", + "start": { + "column": 21, + "line": 12 + } + }, + { + "defaultMessage": "!!!Your services", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.yourServices", + "start": { + "column": 16, + "line": 16 + } + }, + { + "defaultMessage": "!!!Your workspaces", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.yourWorkspaces", + "start": { + "column": 18, + "line": 20 + } + }, + { + "defaultMessage": "!!!Account", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.account", + "start": { + "column": 11, + "line": 24 + } + }, + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.settings", + "start": { + "column": 12, + "line": 28 + } + }, + { + "defaultMessage": "!!!Invite Friends", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.inviteFriends", + "start": { + "column": 17, + "line": 32 + } + }, + { + "defaultMessage": "!!!Logout", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/components/settings/navigation/SettingsNavigation.js", + "id": "settings.navigation.logout", + "start": { + "column": 10, + "line": 36 + } + } + ], + "path": "src/components/settings/navigation/SettingsNavigation.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Available Services", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Search service", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.searchService", + "start": { + "column": 17, + "line": 19 + } + }, + { + "defaultMessage": "!!!Most popular", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.mostPopular", + "start": { + "column": 22, + "line": 23 + } + }, + { + "defaultMessage": "!!!All services", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.all", + "start": { + "column": 14, + "line": 27 + } + }, + { + "defaultMessage": "!!!Development", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.dev", + "start": { + "column": 14, + "line": 31 + } + }, + { + "defaultMessage": "!!!Sorry, but no service matched your search term.", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.nothingFound", + "start": { + "column": 16, + "line": 35 + } + }, + { + "defaultMessage": "!!!Service successfully added", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.servicesSuccessfulAddedInfo", + "start": { + "column": 31, + "line": 39 + } + }, + { + "defaultMessage": "!!!Missing a service?", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/settings/recipes/RecipesDashboard.js", + "id": "settings.recipes.missingService", + "start": { + "column": 18, + "line": 43 + } + } + ], + "path": "src/components/settings/recipes/RecipesDashboard.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Save service", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.saveButton", + "start": { + "column": 15, + "line": 22 + } + }, + { + "defaultMessage": "!!!Delete Service", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.deleteButton", + "start": { + "column": 17, + "line": 26 + } + }, + { + "defaultMessage": "!!!Available services", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.availableServices", + "start": { + "column": 21, + "line": 30 + } + }, + { + "defaultMessage": "!!!Your services", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.yourServices", + "start": { + "column": 16, + "line": 34 + } + }, + { + "defaultMessage": "!!!Add {name}", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.addServiceHeadline", + "start": { + "column": 22, + "line": 38 + } + }, + { + "defaultMessage": "!!!Edit {name}", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.editServiceHeadline", + "start": { + "column": 23, + "line": 42 + } + }, + { + "defaultMessage": "!!!Hosted", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.tabHosted", + "start": { + "column": 13, + "line": 46 + } + }, + { + "defaultMessage": "!!!Self hosted ⭐️", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.tabOnPremise", + "start": { + "column": 16, + "line": 50 + } + }, + { + "defaultMessage": "!!!Use the hosted {name} service.", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.useHostedService", + "start": { + "column": 20, + "line": 54 + } + }, + { + "defaultMessage": "!!!Could not validate custom {name} server.", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.customUrlValidationError", + "start": { + "column": 28, + "line": 58 + } + }, + { + "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.customUrlPremiumInfo", + "start": { + "column": 24, + "line": 62 + } + }, + { + "defaultMessage": "!!!Upgrade your account", + "end": { + "column": 3, + "line": 69 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.customUrlUpgradeAccount", + "start": { + "column": 27, + "line": 66 + } + }, + { + "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", + "end": { + "column": 3, + "line": 73 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.indirectMessageInfo", + "start": { + "column": 23, + "line": 70 + } + }, + { + "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", + "end": { + "column": 3, + "line": 77 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.isMutedInfo", + "start": { + "column": 15, + "line": 74 + } + }, + { + "defaultMessage": "!!!Notifications", + "end": { + "column": 3, + "line": 81 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.headlineNotifications", + "start": { + "column": 25, + "line": 78 + } + }, + { + "defaultMessage": "!!!Unread message badges", + "end": { + "column": 3, + "line": 85 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.headlineBadges", + "start": { + "column": 18, + "line": 82 + } + }, + { + "defaultMessage": "!!!General", + "end": { + "column": 3, + "line": 89 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.headlineGeneral", + "start": { + "column": 19, + "line": 86 + } + }, + { + "defaultMessage": "!!!Delete", + "end": { + "column": 3, + "line": 93 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.iconDelete", + "start": { + "column": 14, + "line": 90 + } + }, + { + "defaultMessage": "!!!Drop your image, or click here", + "end": { + "column": 3, + "line": 97 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.iconUpload", + "start": { + "column": 14, + "line": 94 + } + }, + { + "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", + "end": { + "column": 3, + "line": 101 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.proxy.headline", + "start": { + "column": 17, + "line": 98 + } + }, + { + "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", + "end": { + "column": 3, + "line": 105 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.proxy.restartInfo", + "start": { + "column": 20, + "line": 102 + } + }, + { + "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", + "end": { + "column": 3, + "line": 109 + }, + "file": "src/components/settings/services/EditServiceForm.js", + "id": "settings.service.form.proxy.info", + "start": { + "column": 13, + "line": 106 + } + } + ], + "path": "src/components/settings/services/EditServiceForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Error", + "end": { + "column": 3, + "line": 13 + }, + "file": "src/components/settings/services/ServiceError.js", + "id": "settings.service.error.headline", + "start": { + "column": 12, + "line": 10 + } + }, + { + "defaultMessage": "!!!Back to services", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/settings/services/ServiceError.js", + "id": "settings.service.error.goBack", + "start": { + "column": 10, + "line": 14 + } + }, + { + "defaultMessage": "!!!Available services", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/settings/services/ServiceError.js", + "id": "settings.service.form.availableServices", + "start": { + "column": 21, + "line": 18 + } + }, + { + "defaultMessage": "!!!Could not load service recipe.", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/settings/services/ServiceError.js", + "id": "settings.service.error.message", + "start": { + "column": 16, + "line": 22 + } + } + ], + "path": "src/components/settings/services/ServiceError.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Service is disabled", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/settings/services/ServiceItem.js", + "id": "settings.services.tooltip.isDisabled", + "start": { + "column": 21, + "line": 11 + } + }, + { + "defaultMessage": "!!!Notifications are disabled", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/settings/services/ServiceItem.js", + "id": "settings.services.tooltip.notificationsDisabled", + "start": { + "column": 32, + "line": 15 + } + }, + { + "defaultMessage": "!!!All sounds are muted", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/settings/services/ServiceItem.js", + "id": "settings.services.tooltip.isMuted", + "start": { + "column": 18, + "line": 19 + } + } + ], + "path": "src/components/settings/services/ServiceItem.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your services", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.headline", + "start": { + "column": 12, + "line": 14 + } + }, + { + "defaultMessage": "!!!Search service", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.searchService", + "start": { + "column": 17, + "line": 18 + } + }, + { + "defaultMessage": "!!!You haven't added any services yet.", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.noServicesAdded", + "start": { + "column": 19, + "line": 22 + } + }, + { + "defaultMessage": "!!!Sorry, but no service matched your search term.", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.recipes.nothingFound", + "start": { + "column": 18, + "line": 26 + } + }, + { + "defaultMessage": "!!!Discover services", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.discoverServices", + "start": { + "column": 20, + "line": 30 + } + }, + { + "defaultMessage": "!!!Could not load your services", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.servicesRequestFailed", + "start": { + "column": 25, + "line": 34 + } + }, + { + "defaultMessage": "!!!Try again", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.account.tryReloadServices", + "start": { + "column": 21, + "line": 38 + } + }, + { + "defaultMessage": "!!!Your changes have been saved", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.updatedInfo", + "start": { + "column": 15, + "line": 42 + } + }, + { + "defaultMessage": "!!!Service has been deleted", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/settings/services/ServicesDashboard.js", + "id": "settings.services.deletedInfo", + "start": { + "column": 15, + "line": 46 + } + } + ], + "path": "src/components/settings/services/ServicesDashboard.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headline", + "start": { + "column": 12, + "line": 16 + } + }, + { + "defaultMessage": "!!!General", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineGeneral", + "start": { + "column": 19, + "line": 20 + } + }, + { + "defaultMessage": "!!!Language", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineLanguage", + "start": { + "column": 20, + "line": 24 + } + }, + { + "defaultMessage": "!!!Updates", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineUpdates", + "start": { + "column": 19, + "line": 28 + } + }, + { + "defaultMessage": "!!!Appearance", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineAppearance", + "start": { + "column": 22, + "line": 32 + } + }, + { + "defaultMessage": "!!!Advanced", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.headlineAdvanced", + "start": { + "column": 20, + "line": 36 + } + }, + { + "defaultMessage": "!!!Help us to translate Franz into your language.", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.translationHelp", + "start": { + "column": 19, + "line": 40 + } + }, + { + "defaultMessage": "!!!Cache", + "end": { + "column": 3, + "line": 47 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.subheadlineCache", + "start": { + "column": 20, + "line": 44 + } + }, + { + "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", + "end": { + "column": 3, + "line": 51 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.cacheInfo", + "start": { + "column": 13, + "line": 48 + } + }, + { + "defaultMessage": "!!!Clear cache", + "end": { + "column": 3, + "line": 55 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.buttonClearAllCache", + "start": { + "column": 23, + "line": 52 + } + }, + { + "defaultMessage": "!!!Check for updates", + "end": { + "column": 3, + "line": 59 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.buttonSearchForUpdate", + "start": { + "column": 25, + "line": 56 + } + }, + { + "defaultMessage": "!!!Restart & install update", + "end": { + "column": 3, + "line": 63 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.buttonInstallUpdate", + "start": { + "column": 23, + "line": 60 + } + }, + { + "defaultMessage": "!!!Is searching for update", + "end": { + "column": 3, + "line": 67 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.updateStatusSearching", + "start": { + "column": 25, + "line": 64 + } + }, + { + "defaultMessage": "!!!Update available, downloading...", + "end": { + "column": 3, + "line": 71 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.updateStatusAvailable", + "start": { + "column": 25, + "line": 68 + } + }, + { + "defaultMessage": "!!!You are using the latest version of Franz", + "end": { + "column": 3, + "line": 75 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.updateStatusUpToDate", + "start": { + "column": 24, + "line": 72 + } + }, + { + "defaultMessage": "!!!Current version:", + "end": { + "column": 3, + "line": 79 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.currentVersion", + "start": { + "column": 18, + "line": 76 + } + }, + { + "defaultMessage": "!!!Changes require restart", + "end": { + "column": 3, + "line": 83 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.restartRequired", + "start": { + "column": 29, + "line": 80 + } + }, + { + "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", + "end": { + "column": 3, + "line": 87 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.languageDisclaimer", + "start": { + "column": 22, + "line": 84 + } + } + ], + "path": "src/components/settings/settings/EditSettingsForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Account", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Update Profile", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.headlineProfile", + "start": { + "column": 19, + "line": 19 + } + }, + { + "defaultMessage": "!!!Account Information", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.headlineAccount", + "start": { + "column": 19, + "line": 23 + } + }, + { + "defaultMessage": "!!!Change Password", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.headlinePassword", + "start": { + "column": 20, + "line": 27 + } + }, + { + "defaultMessage": "!!!Your changes have been saved", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.successInfo", + "start": { + "column": 15, + "line": 31 + } + }, + { + "defaultMessage": "!!!Update profile", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/components/settings/user/EditUserForm.js", + "id": "settings.account.buttonSave", + "start": { + "column": 14, + "line": 35 + } + } + ], + "path": "src/components/settings/user/EditUserForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Support the development of Franz", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.submit.label", + "start": { + "column": 21, + "line": 14 + } + }, + { + "defaultMessage": "!!!Could not initialize payment form", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.paymentSessionError", + "start": { + "column": 23, + "line": 18 + } + }, + { + "defaultMessage": "!!!free", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.type.free", + "start": { + "column": 12, + "line": 22 + } + }, + { + "defaultMessage": "!!!month", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.type.month", + "start": { + "column": 15, + "line": 26 + } + }, + { + "defaultMessage": "!!!year", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.type.year", + "start": { + "column": 14, + "line": 30 + } + }, + { + "defaultMessage": "!!!The Franz Premium Supporter Account includes", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.includedFeatures", + "start": { + "column": 20, + "line": 34 + } + }, + { + "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.onpremise.mattermost", + "start": { + "column": 13, + "line": 38 + } + }, + { + "defaultMessage": "!!!No app delays & nagging to upgrade license", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.noInterruptions", + "start": { + "column": 19, + "line": 42 + } + }, + { + "defaultMessage": "!!!Proxy support for services", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.proxy", + "start": { + "column": 9, + "line": 46 + } + }, + { + "defaultMessage": "!!!Support for Spellchecker", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.spellchecker", + "start": { + "column": 16, + "line": 50 + } + }, + { + "defaultMessage": "!!!No ads, ever!", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.ads", + "start": { + "column": 7, + "line": 54 + } + }, + { + "defaultMessage": "!!!coming soon", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.features.comingSoon", + "start": { + "column": 14, + "line": 58 + } + }, + { + "defaultMessage": "!!!EU residents: local sales tax may apply", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/components/subscription/SubscriptionForm.js", + "id": "subscription.euTaxInfo", + "start": { + "column": 13, + "line": 62 + } + } + ], + "path": "src/components/subscription/SubscriptionForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Cancel", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/subscription/SubscriptionPopup.js", + "id": "subscriptionPopup.buttonCancel", + "start": { + "column": 16, + "line": 11 + } + }, + { + "defaultMessage": "!!!Done", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/subscription/SubscriptionPopup.js", + "id": "subscriptionPopup.buttonDone", + "start": { + "column": 14, + "line": 15 + } + } + ], + "path": "src/components/subscription/SubscriptionPopup.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Upgrade account", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/ui/PremiumFeatureContainer/index.js", + "id": "premiumFeature.button.upgradeAccount", + "start": { + "column": 10, + "line": 15 + } + } + ], + "path": "src/components/ui/PremiumFeatureContainer/index.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Loading", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/ui/WebviewLoader/index.js", + "id": "service.webviewLoader.loading", + "start": { + "column": 11, + "line": 11 + } + } + ], + "path": "src/components/ui/WebviewLoader/index.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Something went wrong.", + "end": { + "column": 3, + "line": 14 + }, + "file": "src/components/util/ErrorBoundary/index.js", + "id": "app.errorHandler.headline", + "start": { + "column": 12, + "line": 11 + } + }, + { + "defaultMessage": "!!!Reload", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/components/util/ErrorBoundary/index.js", + "id": "app.errorHandler.action", + "start": { + "column": 10, + "line": 15 + } + } + ], + "path": "src/components/util/ErrorBoundary/index.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Name", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.name", + "start": { + "column": 8, + "line": 28 + } + }, + { + "defaultMessage": "!!!Enable service", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableService", + "start": { + "column": 17, + "line": 32 + } + }, + { + "defaultMessage": "!!!Enable Notifications", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableNotification", + "start": { + "column": 22, + "line": 36 + } + }, + { + "defaultMessage": "!!!Show unread message badges", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableBadge", + "start": { + "column": 15, + "line": 40 + } + }, + { + "defaultMessage": "!!!Enable audio", + "end": { + "column": 3, + "line": 47 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableAudio", + "start": { + "column": 15, + "line": 44 + } + }, + { + "defaultMessage": "!!!Team", + "end": { + "column": 3, + "line": 51 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.team", + "start": { + "column": 8, + "line": 48 + } + }, + { + "defaultMessage": "!!!Custom server", + "end": { + "column": 3, + "line": 55 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.customUrl", + "start": { + "column": 13, + "line": 52 + } + }, + { + "defaultMessage": "!!!Show message badge for all new messages", + "end": { + "column": 3, + "line": 59 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.indirectMessages", + "start": { + "column": 20, + "line": 56 + } + }, + { + "defaultMessage": "!!!Custom icon", + "end": { + "column": 3, + "line": 63 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.icon", + "start": { + "column": 8, + "line": 60 + } + }, + { + "defaultMessage": "!!!Enable Dark Mode", + "end": { + "column": 3, + "line": 67 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.enableDarkMode", + "start": { + "column": 18, + "line": 64 + } + }, + { + "defaultMessage": "!!!Use Proxy", + "end": { + "column": 3, + "line": 71 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.isEnabled", + "start": { + "column": 15, + "line": 68 + } + }, + { + "defaultMessage": "!!!Proxy Host/IP", + "end": { + "column": 3, + "line": 75 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.host", + "start": { + "column": 13, + "line": 72 + } + }, + { + "defaultMessage": "!!!Port", + "end": { + "column": 3, + "line": 79 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.port", + "start": { + "column": 13, + "line": 76 + } + }, + { + "defaultMessage": "!!!User", + "end": { + "column": 3, + "line": 83 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.user", + "start": { + "column": 13, + "line": 80 + } + }, + { + "defaultMessage": "!!!Password", + "end": { + "column": 3, + "line": 87 + }, + "file": "src/containers/settings/EditServiceScreen.js", + "id": "settings.service.form.proxy.password", + "start": { + "column": 17, + "line": 84 + } + } + ], + "path": "src/containers/settings/EditServiceScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Launch Franz on start", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.autoLaunchOnStart", + "start": { + "column": 21, + "line": 22 + } + }, + { + "defaultMessage": "!!!Open in background", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.autoLaunchInBackground", + "start": { + "column": 26, + "line": 26 + } + }, + { + "defaultMessage": "!!!Keep Franz in background when closing the window", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.runInBackground", + "start": { + "column": 19, + "line": 30 + } + }, + { + "defaultMessage": "!!!Show Franz in system tray", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.enableSystemTray", + "start": { + "column": 20, + "line": 34 + } + }, + { + "defaultMessage": "!!!Minimize Franz to system tray", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.minimizeToSystemTray", + "start": { + "column": 24, + "line": 38 + } + }, + { + "defaultMessage": "!!!Language", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.language", + "start": { + "column": 12, + "line": 42 + } + }, + { + "defaultMessage": "!!!Dark Mode", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.darkMode", + "start": { + "column": 12, + "line": 46 + } + }, + { + "defaultMessage": "!!!Display disabled services tabs", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.showDisabledServices", + "start": { + "column": 24, + "line": 50 + } + }, + { + "defaultMessage": "!!!Show unread message badge when notifications are disabled", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.showMessagesBadgesWhenMuted", + "start": { + "column": 29, + "line": 54 + } + }, + { + "defaultMessage": "!!!Enable spell checking", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.enableSpellchecking", + "start": { + "column": 23, + "line": 58 + } + }, + { + "defaultMessage": "!!!Enable GPU Acceleration", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.enableGPUAcceleration", + "start": { + "column": 25, + "line": 62 + } + }, + { + "defaultMessage": "!!!Include beta versions", + "end": { + "column": 3, + "line": 69 + }, + "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.beta", + "start": { + "column": 8, + "line": 66 + } + } + ], + "path": "src/containers/settings/EditSettingsScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Firstname", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.firstname", + "start": { + "column": 13, + "line": 14 + } + }, + { + "defaultMessage": "!!!Lastname", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.lastname", + "start": { + "column": 12, + "line": 18 + } + }, + { + "defaultMessage": "!!!Email", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.email", + "start": { + "column": 9, + "line": 22 + } + }, + { + "defaultMessage": "!!!Account type", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.accountType.label", + "start": { + "column": 20, + "line": 26 + } + }, + { + "defaultMessage": "!!!Individual", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.accountType.individual", + "start": { + "column": 25, + "line": 30 + } + }, + { + "defaultMessage": "!!!Non-Profit", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.accountType.non-profit", + "start": { + "column": 24, + "line": 34 + } + }, + { + "defaultMessage": "!!!Company", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.accountType.company", + "start": { + "column": 22, + "line": 38 + } + }, + { + "defaultMessage": "!!!Current password", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.currentPassword", + "start": { + "column": 19, + "line": 42 + } + }, + { + "defaultMessage": "!!!New password", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/containers/settings/EditUserScreen.js", + "id": "settings.user.form.newPassword", + "start": { + "column": 15, + "line": 46 + } + } + ], + "path": "src/containers/settings/EditUserScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Changes in Franz {version}", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/announcements/components/AnnouncementScreen.js", + "id": "feature.announcements.changelog.headline", + "start": { + "column": 12, + "line": 20 + } + } + ], + "path": "src/features/announcements/components/AnnouncementScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please purchase license to skip waiting", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/features/delayApp/Component.js", + "id": "feature.delayApp.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Get a Franz Supporter License", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/features/delayApp/Component.js", + "id": "feature.delayApp.action", + "start": { + "column": 10, + "line": 19 + } + }, + { + "defaultMessage": "!!!Franz will continue in {seconds} seconds.", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/features/delayApp/Component.js", + "id": "feature.delayApp.text", + "start": { + "column": 8, + "line": 23 + } + } + ], + "path": "src/features/delayApp/Component.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Franz is better together!", + "end": { + "column": 3, + "line": 18 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.headline", + "start": { + "column": 12, + "line": 15 + } + }, + { + "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.text", + "start": { + "column": 8, + "line": 19 + } + }, + { + "defaultMessage": "!!!Share as email", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.action.email", + "start": { + "column": 16, + "line": 23 + } + }, + { + "defaultMessage": "!!!Share on Facebook", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.action.facebook", + "start": { + "column": 19, + "line": 27 + } + }, + { + "defaultMessage": "!!!Share on Twitter", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.action.twitter", + "start": { + "column": 18, + "line": 31 + } + }, + { + "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.shareText.email", + "start": { + "column": 18, + "line": 35 + } + }, + { + "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/features/shareFranz/Component.js", + "id": "feature.shareFranz.shareText.twitter", + "start": { + "column": 20, + "line": 39 + } + } + ], + "path": "src/features/shareFranz/Component.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Create workspace", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/features/workspaces/components/CreateWorkspaceForm.js", + "id": "settings.workspace.add.form.submitButton", + "start": { + "column": 16, + "line": 13 + } + }, + { + "defaultMessage": "!!!Name", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/features/workspaces/components/CreateWorkspaceForm.js", + "id": "settings.workspace.add.form.name", + "start": { + "column": 8, + "line": 17 + } + } + ], + "path": "src/features/workspaces/components/CreateWorkspaceForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delete workspace", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.buttonDelete", + "start": { + "column": 16, + "line": 19 + } + }, + { + "defaultMessage": "!!!Save workspace", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.buttonSave", + "start": { + "column": 14, + "line": 23 + } + }, + { + "defaultMessage": "!!!Name", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.name", + "start": { + "column": 8, + "line": 27 + } + }, + { + "defaultMessage": "!!!Your workspaces", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.yourWorkspaces", + "start": { + "column": 18, + "line": 31 + } + }, + { + "defaultMessage": "!!!Services in this Workspace", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/features/workspaces/components/EditWorkspaceForm.js", + "id": "settings.workspace.form.servicesInWorkspaceHeadline", + "start": { + "column": 31, + "line": 35 + } + } + ], + "path": "src/features/workspaces/components/EditWorkspaceForm.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Workspaces", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.headline", + "start": { + "column": 12, + "line": 16 + } + }, + { + "defaultMessage": "!!!All services", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.allServices", + "start": { + "column": 15, + "line": 20 + } + }, + { + "defaultMessage": "!!!Workspaces settings", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.workspacesSettingsTooltip", + "start": { + "column": 29, + "line": 24 + } + }, + { + "defaultMessage": "!!!Info about workspace feature", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.workspaceFeatureInfo", + "start": { + "column": 24, + "line": 28 + } + }, + { + "defaultMessage": "!!!Create your first workspace", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.premiumCtaButtonLabel", + "start": { + "column": 25, + "line": 32 + } + }, + { + "defaultMessage": "!!!Reactivate premium account", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.reactivatePremiumAccountLabel", + "start": { + "column": 28, + "line": 36 + } + }, + { + "defaultMessage": "!!!add new workspace", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.addNewWorkspaceLabel", + "start": { + "column": 24, + "line": 40 + } + }, + { + "defaultMessage": "!!!Premium feature", + "end": { + "column": 3, + "line": 47 + }, + "file": "src/features/workspaces/components/WorkspaceDrawer.js", + "id": "workspaceDrawer.proFeatureBadge", + "start": { + "column": 23, + "line": 44 + } + } + ], + "path": "src/features/workspaces/components/WorkspaceDrawer.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!No services added yet", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", + "id": "workspaceDrawer.item.noServicesAddedYet", + "start": { + "column": 22, + "line": 12 + } + }, + { + "defaultMessage": "!!!edit", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", + "id": "workspaceDrawer.item.contextMenuEdit", + "start": { + "column": 19, + "line": 16 + } + } + ], + "path": "src/features/workspaces/components/WorkspaceDrawerItem.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your workspaces", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.headline", + "start": { + "column": 12, + "line": 17 + } + }, + { + "defaultMessage": "!!!You haven't added any workspaces yet.", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.noWorkspacesAdded", + "start": { + "column": 19, + "line": 21 + } + }, + { + "defaultMessage": "!!!Could not load your workspaces", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.workspacesRequestFailed", + "start": { + "column": 27, + "line": 25 + } + }, + { + "defaultMessage": "!!!Try again", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.tryReloadWorkspaces", + "start": { + "column": 23, + "line": 29 + } + }, + { + "defaultMessage": "!!!Your changes have been saved", + "end": { + "column": 3, + "line": 36 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.updatedInfo", + "start": { + "column": 15, + "line": 33 + } + }, + { + "defaultMessage": "!!!Workspace has been deleted", + "end": { + "column": 3, + "line": 40 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.deletedInfo", + "start": { + "column": 15, + "line": 37 + } + }, + { + "defaultMessage": "!!!Info about workspace feature", + "end": { + "column": 3, + "line": 44 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.workspaceFeatureInfo", + "start": { + "column": 24, + "line": 41 + } + }, + { + "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", + "end": { + "column": 3, + "line": 48 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.workspaceFeatureHeadline", + "start": { + "column": 28, + "line": 45 + } + } + ], + "path": "src/features/workspaces/components/WorkspacesDashboard.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Switching to", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/features/workspaces/components/WorkspaceSwitchingIndicator.js", + "id": "workspaces.switchingIndicator.switchingTo", + "start": { + "column": 15, + "line": 12 + } + } + ], + "path": "src/features/workspaces/components/WorkspaceSwitchingIndicator.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Field is required", + "end": { + "column": 3, + "line": 7 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.required", + "start": { + "column": 12, + "line": 4 + } + }, + { + "defaultMessage": "!!!Email not valid", + "end": { + "column": 3, + "line": 11 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.email", + "start": { + "column": 9, + "line": 8 + } + }, + { + "defaultMessage": "!!!Not a valid URL", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.url", + "start": { + "column": 7, + "line": 12 + } + }, + { + "defaultMessage": "!!!Too few characters", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.minLength", + "start": { + "column": 13, + "line": 16 + } + }, + { + "defaultMessage": "!!!At least one is required", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/helpers/validation-helpers.js", + "id": "validation.oneRequired", + "start": { + "column": 15, + "line": 20 + } + } + ], + "path": "src/helpers/validation-helpers.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Can't connect to Franz Online Services", + "end": { + "column": 3, + "line": 7 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.api.unhealthy", + "start": { + "column": 16, + "line": 4 + } + }, + { + "defaultMessage": "!!!You are not connected to the internet.", + "end": { + "column": 3, + "line": 11 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.notConnectedToTheInternet", + "start": { + "column": 29, + "line": 8 + } + }, + { + "defaultMessage": "!!!Spell checking language", + "end": { + "column": 3, + "line": 15 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.spellchecking.language", + "start": { + "column": 24, + "line": 12 + } + }, + { + "defaultMessage": "!!!Use System Default ({default})", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.spellchecker.useDefault", + "start": { + "column": 29, + "line": 16 + } + }, + { + "defaultMessage": "!!!Detect language automatically", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.spellchecking.autodetect", + "start": { + "column": 34, + "line": 20 + } + }, + { + "defaultMessage": "!!!Automatic", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/i18n/globalMessages.js", + "id": "global.spellchecking.autodetect.short", + "start": { + "column": 39, + "line": 24 + } + } + ], + "path": "src/i18n/globalMessages.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Edit", + "end": { + "column": 3, + "line": 17 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit", + "start": { + "column": 8, + "line": 14 + } + }, + { + "defaultMessage": "!!!Undo", + "end": { + "column": 3, + "line": 21 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.undo", + "start": { + "column": 8, + "line": 18 + } + }, + { + "defaultMessage": "!!!Redo", + "end": { + "column": 3, + "line": 25 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.redo", + "start": { + "column": 8, + "line": 22 + } + }, + { + "defaultMessage": "!!!Cut", + "end": { + "column": 3, + "line": 29 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.cut", + "start": { + "column": 7, + "line": 26 + } + }, + { + "defaultMessage": "!!!Copy", + "end": { + "column": 3, + "line": 33 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.copy", + "start": { + "column": 8, + "line": 30 + } + }, + { + "defaultMessage": "!!!Paste", + "end": { + "column": 3, + "line": 37 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.paste", + "start": { + "column": 9, + "line": 34 + } + }, + { + "defaultMessage": "!!!Paste And Match Style", + "end": { + "column": 3, + "line": 41 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.pasteAndMatchStyle", + "start": { + "column": 22, + "line": 38 + } + }, + { + "defaultMessage": "!!!Delete", + "end": { + "column": 3, + "line": 45 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.delete", + "start": { + "column": 10, + "line": 42 + } + }, + { + "defaultMessage": "!!!Select All", + "end": { + "column": 3, + "line": 49 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.selectAll", + "start": { + "column": 13, + "line": 46 + } + }, + { + "defaultMessage": "!!!Speech", + "end": { + "column": 3, + "line": 53 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.speech", + "start": { + "column": 10, + "line": 50 + } + }, + { + "defaultMessage": "!!!Start Speaking", + "end": { + "column": 3, + "line": 57 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.startSpeaking", + "start": { + "column": 17, + "line": 54 + } + }, + { + "defaultMessage": "!!!Stop Speaking", + "end": { + "column": 3, + "line": 61 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.stopSpeaking", + "start": { + "column": 16, + "line": 58 + } + }, + { + "defaultMessage": "!!!Start Dictation", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.startDictation", + "start": { + "column": 18, + "line": 62 + } + }, + { + "defaultMessage": "!!!Emoji & Symbols", + "end": { + "column": 3, + "line": 69 + }, + "file": "src/lib/Menu.js", + "id": "menu.edit.emojiSymbols", + "start": { + "column": 16, + "line": 66 + } + }, + { + "defaultMessage": "!!!Actual Size", + "end": { + "column": 3, + "line": 73 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.resetZoom", + "start": { + "column": 13, + "line": 70 + } + }, + { + "defaultMessage": "!!!Zoom In", + "end": { + "column": 3, + "line": 77 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.zoomIn", + "start": { + "column": 10, + "line": 74 + } + }, + { + "defaultMessage": "!!!Zoom Out", + "end": { + "column": 3, + "line": 81 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.zoomOut", + "start": { + "column": 11, + "line": 78 + } + }, + { + "defaultMessage": "!!!Enter Full Screen", + "end": { + "column": 3, + "line": 85 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.enterFullScreen", + "start": { + "column": 19, + "line": 82 + } + }, + { + "defaultMessage": "!!!Exit Full Screen", + "end": { + "column": 3, + "line": 89 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.exitFullScreen", + "start": { + "column": 18, + "line": 86 + } + }, + { + "defaultMessage": "!!!Toggle Full Screen", + "end": { + "column": 3, + "line": 93 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.toggleFullScreen", + "start": { + "column": 20, + "line": 90 + } + }, + { + "defaultMessage": "!!!Toggle Developer Tools", + "end": { + "column": 3, + "line": 97 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.toggleDevTools", + "start": { + "column": 18, + "line": 94 + } + }, + { + "defaultMessage": "!!!Toggle Service Developer Tools", + "end": { + "column": 3, + "line": 101 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.toggleServiceDevTools", + "start": { + "column": 25, + "line": 98 + } + }, + { + "defaultMessage": "!!!Reload Service", + "end": { + "column": 3, + "line": 105 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.reloadService", + "start": { + "column": 17, + "line": 102 + } + }, + { + "defaultMessage": "!!!Reload Franz", + "end": { + "column": 3, + "line": 109 + }, + "file": "src/lib/Menu.js", + "id": "menu.view.reloadFranz", + "start": { + "column": 15, + "line": 106 + } + }, + { + "defaultMessage": "!!!Minimize", + "end": { + "column": 3, + "line": 113 + }, + "file": "src/lib/Menu.js", + "id": "menu.window.minimize", + "start": { + "column": 12, + "line": 110 + } + }, + { + "defaultMessage": "!!!Close", + "end": { + "column": 3, + "line": 117 + }, + "file": "src/lib/Menu.js", + "id": "menu.window.close", + "start": { + "column": 9, + "line": 114 + } + }, + { + "defaultMessage": "!!!Learn More", + "end": { + "column": 3, + "line": 121 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.learnMore", + "start": { + "column": 13, + "line": 118 + } + }, + { + "defaultMessage": "!!!Changelog", + "end": { + "column": 3, + "line": 125 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.changelog", + "start": { + "column": 13, + "line": 122 + } + }, + { + "defaultMessage": "!!!Support", + "end": { + "column": 3, + "line": 129 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.support", + "start": { + "column": 11, + "line": 126 + } + }, + { + "defaultMessage": "!!!Terms of Service", + "end": { + "column": 3, + "line": 133 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.tos", + "start": { + "column": 7, + "line": 130 + } + }, + { + "defaultMessage": "!!!Privacy Statement", + "end": { + "column": 3, + "line": 137 + }, + "file": "src/lib/Menu.js", + "id": "menu.help.privacy", + "start": { + "column": 11, + "line": 134 + } + }, + { + "defaultMessage": "!!!File", + "end": { + "column": 3, + "line": 141 + }, + "file": "src/lib/Menu.js", + "id": "menu.file", + "start": { + "column": 8, + "line": 138 + } + }, + { + "defaultMessage": "!!!View", + "end": { + "column": 3, + "line": 145 + }, + "file": "src/lib/Menu.js", + "id": "menu.view", + "start": { + "column": 8, + "line": 142 + } + }, + { + "defaultMessage": "!!!Services", + "end": { + "column": 3, + "line": 149 + }, + "file": "src/lib/Menu.js", + "id": "menu.services", + "start": { + "column": 12, + "line": 146 + } + }, + { + "defaultMessage": "!!!Window", + "end": { + "column": 3, + "line": 153 + }, + "file": "src/lib/Menu.js", + "id": "menu.window", + "start": { + "column": 10, + "line": 150 + } + }, + { + "defaultMessage": "!!!Help", + "end": { + "column": 3, + "line": 157 + }, + "file": "src/lib/Menu.js", + "id": "menu.help", + "start": { + "column": 8, + "line": 154 + } + }, + { + "defaultMessage": "!!!About Franz", + "end": { + "column": 3, + "line": 161 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.about", + "start": { + "column": 9, + "line": 158 + } + }, + { + "defaultMessage": "!!!What's new?", + "end": { + "column": 3, + "line": 165 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.announcement", + "start": { + "column": 16, + "line": 162 + } + }, + { + "defaultMessage": "!!!Settings", + "end": { + "column": 3, + "line": 169 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.settings", + "start": { + "column": 12, + "line": 166 + } + }, + { + "defaultMessage": "!!!Hide", + "end": { + "column": 3, + "line": 173 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.hide", + "start": { + "column": 8, + "line": 170 + } + }, + { + "defaultMessage": "!!!Hide Others", + "end": { + "column": 3, + "line": 177 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.hideOthers", + "start": { + "column": 14, + "line": 174 + } + }, + { + "defaultMessage": "!!!Unhide", + "end": { + "column": 3, + "line": 181 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.unhide", + "start": { + "column": 10, + "line": 178 + } + }, + { + "defaultMessage": "!!!Quit", + "end": { + "column": 3, + "line": 185 + }, + "file": "src/lib/Menu.js", + "id": "menu.app.quit", + "start": { + "column": 8, + "line": 182 + } + }, + { + "defaultMessage": "!!!Add New Service...", + "end": { + "column": 3, + "line": 189 + }, + "file": "src/lib/Menu.js", + "id": "menu.services.addNewService", + "start": { + "column": 17, + "line": 186 + } + }, + { + "defaultMessage": "!!!Add New Workspace...", + "end": { + "column": 3, + "line": 193 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces.addNewWorkspace", + "start": { + "column": 19, + "line": 190 + } + }, + { + "defaultMessage": "!!!Open workspace drawer", + "end": { + "column": 3, + "line": 197 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces.openWorkspaceDrawer", + "start": { + "column": 23, + "line": 194 + } + }, + { + "defaultMessage": "!!!Close workspace drawer", + "end": { + "column": 3, + "line": 201 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces.closeWorkspaceDrawer", + "start": { + "column": 24, + "line": 198 + } + }, + { + "defaultMessage": "!!!Activate next service...", + "end": { + "column": 3, + "line": 205 + }, + "file": "src/lib/Menu.js", + "id": "menu.services.setNextServiceActive", + "start": { + "column": 23, + "line": 202 + } + }, + { + "defaultMessage": "!!!Activate previous service...", + "end": { + "column": 3, + "line": 209 + }, + "file": "src/lib/Menu.js", + "id": "menu.services.activatePreviousService", + "start": { + "column": 27, + "line": 206 + } + }, + { + "defaultMessage": "!!!Disable notifications & audio", + "end": { + "column": 3, + "line": 213 + }, + "file": "src/lib/Menu.js", + "id": "sidebar.muteApp", + "start": { + "column": 11, + "line": 210 + } + }, + { + "defaultMessage": "!!!Enable notifications & audio", + "end": { + "column": 3, + "line": 217 + }, + "file": "src/lib/Menu.js", + "id": "sidebar.unmuteApp", + "start": { + "column": 13, + "line": 214 + } + }, + { + "defaultMessage": "!!!Workspaces", + "end": { + "column": 3, + "line": 221 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces", + "start": { + "column": 14, + "line": 218 + } + }, + { + "defaultMessage": "!!!Default", + "end": { + "column": 3, + "line": 225 + }, + "file": "src/lib/Menu.js", + "id": "menu.workspaces.defaultWorkspace", + "start": { + "column": 20, + "line": 222 + } + } + ], + "path": "src/lib/Menu.json" + } +] \ No newline at end of file diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 70b869557..5bb10438a 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -320,4 +320,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

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.

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.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file -- cgit v1.2.3-70-g09d2