aboutsummaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/layout/AppLayout.js2
-rw-r--r--src/components/layout/Sidebar.js11
-rw-r--r--src/components/services/content/ServiceView.js6
-rw-r--r--src/components/settings/services/EditServiceForm.js67
-rw-r--r--src/components/settings/settings/EditSettingsForm.js17
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';
9import { Component as BasicAuth } from '../../features/basicAuth'; 9import { Component as BasicAuth } from '../../features/basicAuth';
10import { Component as ShareFranz } from '../../features/shareFranz'; 10import { Component as ShareFranz } from '../../features/shareFranz';
11import { Component as QuickSwitch } from '../../features/quickSwitch'; 11import { Component as QuickSwitch } from '../../features/quickSwitch';
12import { Component as PublishDebugInfo } from '../../features/publishDebugInfo';
12import ErrorBoundary from '../util/ErrorBoundary'; 13import 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)}