diff options
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/layout/AppLayout.js | 2 | ||||
-rw-r--r-- | src/components/layout/Sidebar.js | 11 | ||||
-rw-r--r-- | src/components/services/content/ServiceView.js | 6 | ||||
-rw-r--r-- | src/components/settings/services/EditServiceForm.js | 67 | ||||
-rw-r--r-- | src/components/settings/settings/EditSettingsForm.js | 17 |
5 files changed, 62 insertions, 41 deletions
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index 80e6daf19..fe43c42d2 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js | |||
@@ -9,6 +9,7 @@ import InfoBar from '../ui/InfoBar'; | |||
9 | import { Component as BasicAuth } from '../../features/basicAuth'; | 9 | import { Component as BasicAuth } from '../../features/basicAuth'; |
10 | import { Component as ShareFranz } from '../../features/shareFranz'; | 10 | import { Component as ShareFranz } from '../../features/shareFranz'; |
11 | import { Component as QuickSwitch } from '../../features/quickSwitch'; | 11 | import { Component as QuickSwitch } from '../../features/quickSwitch'; |
12 | import { Component as PublishDebugInfo } from '../../features/publishDebugInfo'; | ||
12 | import ErrorBoundary from '../util/ErrorBoundary'; | 13 | import ErrorBoundary from '../util/ErrorBoundary'; |
13 | 14 | ||
14 | // import globalMessages from '../../i18n/globalMessages'; | 15 | // import globalMessages from '../../i18n/globalMessages'; |
@@ -189,6 +190,7 @@ class AppLayout extends Component { | |||
189 | <BasicAuth /> | 190 | <BasicAuth /> |
190 | <ShareFranz /> | 191 | <ShareFranz /> |
191 | <QuickSwitch /> | 192 | <QuickSwitch /> |
193 | <PublishDebugInfo /> | ||
192 | {services} | 194 | {services} |
193 | {children} | 195 | {children} |
194 | <TrialStatusBar /> | 196 | <TrialStatusBar /> |
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index 48a83c5a1..bd10ccb4a 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js | |||
@@ -118,21 +118,12 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp | |||
118 | type="button" | 118 | type="button" |
119 | className="sidebar__button" | 119 | className="sidebar__button" |
120 | onClick={() => { | 120 | onClick={() => { |
121 | // Disable lock first - otherwise the application might not update correctly | ||
122 | actions.settings.update({ | 121 | actions.settings.update({ |
123 | type: 'app', | 122 | type: 'app', |
124 | data: { | 123 | data: { |
125 | locked: false, | 124 | locked: true, |
126 | }, | 125 | }, |
127 | }); | 126 | }); |
128 | setTimeout(() => { | ||
129 | actions.settings.update({ | ||
130 | type: 'app', | ||
131 | data: { | ||
132 | locked: true, | ||
133 | }, | ||
134 | }); | ||
135 | }, 0); | ||
136 | }} | 127 | }} |
137 | data-tip={`${intl.formatMessage(messages.lockFerdi)} (${ctrlKey}+Shift+L)`} | 128 | data-tip={`${intl.formatMessage(messages.lockFerdi)} (${ctrlKey}+Shift+L)`} |
138 | > | 129 | > |
diff --git a/src/components/services/content/ServiceView.js b/src/components/services/content/ServiceView.js index 860863d26..f6832038a 100644 --- a/src/components/services/content/ServiceView.js +++ b/src/components/services/content/ServiceView.js | |||
@@ -135,9 +135,11 @@ export default @inject('stores', 'actions') @observer class ServiceView extends | |||
135 | } = this.props; | 135 | } = this.props; |
136 | 136 | ||
137 | const { | 137 | const { |
138 | showServiceNavigationBar, | 138 | navigationBarBehaviour, |
139 | } = stores.settings.app; | 139 | } = stores.settings.app; |
140 | 140 | ||
141 | const showNavBar = navigationBarBehaviour === 'always' || (navigationBarBehaviour === 'custom' && service.recipe.id === CUSTOM_WEBSITE_ID); | ||
142 | |||
141 | const webviewClasses = classnames({ | 143 | const webviewClasses = classnames({ |
142 | services__webview: true, | 144 | services__webview: true, |
143 | 'services__webview-wrapper': true, | 145 | 'services__webview-wrapper': true, |
@@ -193,7 +195,7 @@ export default @inject('stores', 'actions') @observer class ServiceView extends | |||
193 | <> | 195 | <> |
194 | {!service.isHibernating ? ( | 196 | {!service.isHibernating ? ( |
195 | <> | 197 | <> |
196 | {(service.recipe.id === CUSTOM_WEBSITE_ID || showServiceNavigationBar) && ( | 198 | {showNavBar && ( |
197 | <WebControlsScreen service={service} /> | 199 | <WebControlsScreen service={service} /> |
198 | )} | 200 | )} |
199 | <ServiceWebview | 201 | <ServiceWebview |
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index fa34ac60b..98051d78f 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js | |||
@@ -33,6 +33,18 @@ const messages = defineMessages({ | |||
33 | id: 'settings.service.form.openDarkmodeCss', | 33 | id: 'settings.service.form.openDarkmodeCss', |
34 | defaultMessage: '!!!Open darkmode.css', | 34 | defaultMessage: '!!!Open darkmode.css', |
35 | }, | 35 | }, |
36 | openUserCss: { | ||
37 | id: 'settings.service.form.openUserCss', | ||
38 | defaultMessage: '!!!Open user.css', | ||
39 | }, | ||
40 | openUserJs: { | ||
41 | id: 'settings.service.form.openUserJs', | ||
42 | defaultMessage: '!!!Open user.js', | ||
43 | }, | ||
44 | recipeFileInfo: { | ||
45 | id: 'settings.service.form.recipeFileInfo', | ||
46 | defaultMessage: '!!!Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.', | ||
47 | }, | ||
36 | availableServices: { | 48 | availableServices: { |
37 | id: 'settings.service.form.availableServices', | 49 | id: 'settings.service.form.availableServices', |
38 | defaultMessage: '!!!Available services', | 50 | defaultMessage: '!!!Available services', |
@@ -131,8 +143,7 @@ export default @observer class EditServiceForm extends Component { | |||
131 | form: PropTypes.instanceOf(Form).isRequired, | 143 | form: PropTypes.instanceOf(Form).isRequired, |
132 | onSubmit: PropTypes.func.isRequired, | 144 | onSubmit: PropTypes.func.isRequired, |
133 | onDelete: PropTypes.func.isRequired, | 145 | onDelete: PropTypes.func.isRequired, |
134 | openDarkmodeCss: PropTypes.func.isRequired, | 146 | openRecipeFile: PropTypes.func.isRequired, |
135 | isOpeningDarkModeCss: PropTypes.bool.isRequired, | ||
136 | isSaving: PropTypes.bool.isRequired, | 147 | isSaving: PropTypes.bool.isRequired, |
137 | isDeleting: PropTypes.bool.isRequired, | 148 | isDeleting: PropTypes.bool.isRequired, |
138 | isProxyFeatureEnabled: PropTypes.bool.isRequired, | 149 | isProxyFeatureEnabled: PropTypes.bool.isRequired, |
@@ -169,7 +180,7 @@ export default @observer class EditServiceForm extends Component { | |||
169 | if (recipe.validateUrl && values.customUrl) { | 180 | if (recipe.validateUrl && values.customUrl) { |
170 | this.setState({ isValidatingCustomUrl: true }); | 181 | this.setState({ isValidatingCustomUrl: true }); |
171 | try { | 182 | try { |
172 | values.customUrl = normalizeUrl(values.customUrl, { stripWWW: false }); | 183 | values.customUrl = normalizeUrl(values.customUrl, { stripWWW: false, removeTrailingSlash: false }); |
173 | isValid = await recipe.validateUrl(values.customUrl); | 184 | isValid = await recipe.validateUrl(values.customUrl); |
174 | } catch (err) { | 185 | } catch (err) { |
175 | console.warn('ValidateURL', err); | 186 | console.warn('ValidateURL', err); |
@@ -199,8 +210,7 @@ export default @observer class EditServiceForm extends Component { | |||
199 | isSaving, | 210 | isSaving, |
200 | isDeleting, | 211 | isDeleting, |
201 | onDelete, | 212 | onDelete, |
202 | openDarkmodeCss, | 213 | openRecipeFile, |
203 | isOpeningDarkModeCss, | ||
204 | isProxyFeatureEnabled, | 214 | isProxyFeatureEnabled, |
205 | isServiceProxyIncludedInCurrentPlan, | 215 | isServiceProxyIncludedInCurrentPlan, |
206 | isSpellcheckerIncludedInCurrentPlan, | 216 | isSpellcheckerIncludedInCurrentPlan, |
@@ -226,23 +236,6 @@ export default @observer class EditServiceForm extends Component { | |||
226 | /> | 236 | /> |
227 | ); | 237 | ); |
228 | 238 | ||
229 | const openDarkmodeCssButton = isOpeningDarkModeCss ? ( | ||
230 | <Button | ||
231 | label={intl.formatMessage(messages.openDarkmodeCss)} | ||
232 | loaded={false} | ||
233 | buttonType="secondary" | ||
234 | className="settings__open-dark-mode-button" | ||
235 | disabled | ||
236 | /> | ||
237 | ) : ( | ||
238 | <Button | ||
239 | buttonType="secondary" | ||
240 | label={intl.formatMessage(messages.openDarkmodeCss)} | ||
241 | className="settings__open-dark-mode-button" | ||
242 | onClick={openDarkmodeCss} | ||
243 | /> | ||
244 | ); | ||
245 | |||
246 | let activeTabIndex = 0; | 239 | let activeTabIndex = 0; |
247 | if (recipe.hasHostedOption && service.team) { | 240 | if (recipe.hasHostedOption && service.team) { |
248 | activeTabIndex = 1; | 241 | activeTabIndex = 1; |
@@ -430,11 +423,39 @@ export default @observer class EditServiceForm extends Component { | |||
430 | </PremiumFeatureContainer> | 423 | </PremiumFeatureContainer> |
431 | )} | 424 | )} |
432 | </form> | 425 | </form> |
426 | |||
427 | {action === 'edit' && ( | ||
428 | <> | ||
429 | <div className="settings__open-recipe-file-container"> | ||
430 | <Button | ||
431 | buttonType="secondary" | ||
432 | label={intl.formatMessage(messages.openDarkmodeCss)} | ||
433 | className="settings__open-recipe-file-button" | ||
434 | onClick={() => openRecipeFile('darkmode.css')} | ||
435 | /> | ||
436 | <Button | ||
437 | buttonType="secondary" | ||
438 | label={intl.formatMessage(messages.openUserCss)} | ||
439 | className="settings__open-recipe-file-button" | ||
440 | onClick={() => openRecipeFile('user.css')} | ||
441 | /> | ||
442 | <Button | ||
443 | buttonType="secondary" | ||
444 | label={intl.formatMessage(messages.openUserJs)} | ||
445 | className="settings__open-recipe-file-button" | ||
446 | onClick={() => openRecipeFile('user.js')} | ||
447 | /> | ||
448 | </div> | ||
449 | <p style={{ marginTop: 10 }}> | ||
450 | <span className="mdi mdi-information" /> | ||
451 | {intl.formatMessage(messages.recipeFileInfo)} | ||
452 | </p> | ||
453 | </> | ||
454 | )} | ||
433 | </div> | 455 | </div> |
434 | <div className="settings__controls"> | 456 | <div className="settings__controls"> |
435 | {/* Delete Button */} | 457 | {/* Delete Button */} |
436 | {action === 'edit' && deleteButton} | 458 | {action === 'edit' && deleteButton} |
437 | {action === 'edit' && openDarkmodeCssButton} | ||
438 | 459 | ||
439 | {/* Save Button */} | 460 | {/* Save Button */} |
440 | {isSaving || isValidatingCustomUrl ? ( | 461 | {isSaving || isValidatingCustomUrl ? ( |
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index f7868db50..f41c7db8e 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js | |||
@@ -252,8 +252,11 @@ export default @observer class EditSettingsForm extends Component { | |||
252 | <Toggle field={form.$('runInBackground')} /> | 252 | <Toggle field={form.$('runInBackground')} /> |
253 | <Toggle field={form.$('enableSystemTray')} /> | 253 | <Toggle field={form.$('enableSystemTray')} /> |
254 | {isTrayEnabled && <Toggle field={form.$('startMinimized')} />} | 254 | {isTrayEnabled && <Toggle field={form.$('startMinimized')} />} |
255 | {process.platform === 'win32' && ( | ||
256 | <Toggle field={form.$('minimizeToSystemTray')} /> | ||
257 | )} | ||
255 | <Toggle field={form.$('privateNotifications')} /> | 258 | <Toggle field={form.$('privateNotifications')} /> |
256 | <Toggle field={form.$('showServiceNavigationBar')} /> | 259 | <Select field={form.$('navigationBarBehaviour')} /> |
257 | 260 | ||
258 | <Hr /> | 261 | <Hr /> |
259 | 262 | ||
@@ -279,10 +282,6 @@ export default @observer class EditSettingsForm extends Component { | |||
279 | 282 | ||
280 | <Hr /> | 283 | <Hr /> |
281 | 284 | ||
282 | {process.platform === 'win32' && ( | ||
283 | <Toggle field={form.$('minimizeToSystemTray')} /> | ||
284 | )} | ||
285 | |||
286 | <Input | 285 | <Input |
287 | placeholder="Server" | 286 | placeholder="Server" |
288 | onChange={e => this.submit(e)} | 287 | onChange={e => this.submit(e)} |
@@ -450,7 +449,7 @@ export default @observer class EditSettingsForm extends Component { | |||
450 | <Hr /> | 449 | <Hr /> |
451 | 450 | ||
452 | {isMac && <Toggle field={form.$('adaptableDarkMode')} />} | 451 | {isMac && <Toggle field={form.$('adaptableDarkMode')} />} |
453 | {!(isMac && isAdaptableDarkModeEnabled) && <Toggle field={form.$('darkMode')} disabled={isAdaptableDarkModeEnabled} />} | 452 | {!(isMac && isAdaptableDarkModeEnabled) && <Toggle field={form.$('darkMode')} />} |
454 | {(isDarkmodeEnabled || isAdaptableDarkModeEnabled) && ( | 453 | {(isDarkmodeEnabled || isAdaptableDarkModeEnabled) && ( |
455 | <> | 454 | <> |
456 | <Toggle field={form.$('universalDarkMode')} /> | 455 | <Toggle field={form.$('universalDarkMode')} /> |
@@ -469,6 +468,12 @@ export default @observer class EditSettingsForm extends Component { | |||
469 | 468 | ||
470 | <Hr /> | 469 | <Hr /> |
471 | 470 | ||
471 | <Select field={form.$('serviceRibbonWidth')} /> | ||
472 | |||
473 | <Select field={form.$('iconSize')} /> | ||
474 | |||
475 | <Hr /> | ||
476 | |||
472 | <Input | 477 | <Input |
473 | placeholder="Accent Color" | 478 | placeholder="Accent Color" |
474 | onChange={e => this.submit(e)} | 479 | onChange={e => this.submit(e)} |