diff --git a/package.json b/package.json index f0fd5c1f..d322761f 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "version": "6.0.4", "dependencies": { "@eartharoid/i18n": "^1.0.2", - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", + "@emotion/react": "^11.8.1", + "@emotion/styled": "^11.8.1", "@fontsource/lexend-deca": "4.4.5", "@fontsource/montserrat": "4.4.5", "@mui/icons-material": "5.4.2", diff --git a/src/components/helpers/autocomplete/Autocomplete.jsx b/src/components/helpers/autocomplete/Autocomplete.jsx index 0d4829a6..c94afee7 100644 --- a/src/components/helpers/autocomplete/Autocomplete.jsx +++ b/src/components/helpers/autocomplete/Autocomplete.jsx @@ -53,7 +53,7 @@ export default class Autocomplete extends PureComponent { }); } - componentWillUnount() { + componentWillUnmount() { EventBus.off('refresh'); } diff --git a/src/components/modals/main/settings/sections/Advanced.jsx b/src/components/modals/main/settings/sections/Advanced.jsx index 010e7933..6c2e2b28 100644 --- a/src/components/modals/main/settings/sections/Advanced.jsx +++ b/src/components/modals/main/settings/sections/Advanced.jsx @@ -61,9 +61,6 @@ export default class AdvancedSettings extends PureComponent {

{getMessage('modals.main.settings.sections.advanced.customisation')}

- {window.location.href.startsWith('http://') || window.location.href.startsWith('https://') ? - - : null}

{getMessage('modals.main.settings.sections.experimental.title')}

diff --git a/src/components/modals/main/settings/sections/Order.jsx b/src/components/modals/main/settings/sections/Order.jsx index 045a5ef2..e52dd8fc 100644 --- a/src/components/modals/main/settings/sections/Order.jsx +++ b/src/components/modals/main/settings/sections/Order.jsx @@ -56,7 +56,7 @@ export default class OrderSettings extends PureComponent { items: JSON.parse(localStorage.getItem('order')) }); - toast(getMessage('toats.reset')); + toast(getMessage('toasts.reset')); } enabled = (setting) => { diff --git a/src/components/modals/main/settings/sections/Quote.jsx b/src/components/modals/main/settings/sections/Quote.jsx index 3a5b7ac5..0a2ce5a9 100644 --- a/src/components/modals/main/settings/sections/Quote.jsx +++ b/src/components/modals/main/settings/sections/Quote.jsx @@ -7,6 +7,9 @@ import Header from '../Header'; import Checkbox from '../Checkbox'; import Dropdown from '../Dropdown'; +import { toast } from 'react-toastify'; +import EventBus from 'modules/helpers/eventbus'; + export default class QuoteSettings extends PureComponent { getMessage = (text) => variables.language.getMessage(variables.languagecode, text); diff --git a/src/components/widgets/quicklinks/QuickLinks.jsx b/src/components/widgets/quicklinks/QuickLinks.jsx index 587cd518..8274fa2d 100644 --- a/src/components/widgets/quicklinks/QuickLinks.jsx +++ b/src/components/widgets/quicklinks/QuickLinks.jsx @@ -19,7 +19,6 @@ export default class QuickLinks extends PureComponent { name: '', url: '', showAddLink: 'hidden', - nameError: '', urlError: '' }; this.quicklinksContainer = createRef(); @@ -43,10 +42,7 @@ export default class QuickLinks extends PureComponent { const data = JSON.parse(localStorage.getItem('quicklinks')); let url = this.state.url; - let nameError, urlError; - if (this.state.name.length <= 0) { - nameError = this.getMessage('widgets.quicklinks.name_error'); - } + let urlError; // regex: https://ihateregex.io/expr/url/ // eslint-disable-next-line no-useless-escape @@ -54,9 +50,8 @@ export default class QuickLinks extends PureComponent { urlError = this.getMessage('widgets.quicklinks.url_error'); } - if (nameError || urlError) { + if (urlError) { return this.setState({ - nameError, urlError }); } @@ -66,7 +61,7 @@ export default class QuickLinks extends PureComponent { } data.push({ - name: this.state.name, + name: this.state.name || url, url: url, icon: this.state.icon || '', key: Math.random().toString(36).substring(7) + 1 @@ -191,7 +186,7 @@ export default class QuickLinks extends PureComponent {

{this.getMessage('widgets.quicklinks.new')}

this.setState({ name: e.target.value })} /> -

{this.state.nameError}

+

this.setState({ url: e.target.value })} />

{this.state.urlError}

this.setState({ icon: e.target.value })} /> diff --git a/src/components/widgets/time/Clock.jsx b/src/components/widgets/time/Clock.jsx index 65d92146..09abd866 100644 --- a/src/components/widgets/time/Clock.jsx +++ b/src/components/widgets/time/Clock.jsx @@ -30,7 +30,8 @@ export default class Clock extends PureComponent { switch (localStorage.getItem('timeType')) { case 'percentageComplete': this.setState({ - time: (now.getHours() / 24).toFixed(2).replace('0.', '') + '%' + time: (now.getHours() / 24).toFixed(2).replace('0.', '') + '%', + ampm: '' }); break; case 'analogue': diff --git a/src/modules/helpers/settings/index.js b/src/modules/helpers/settings/index.js index e5b15582..97ed53c0 100644 --- a/src/modules/helpers/settings/index.js +++ b/src/modules/helpers/settings/index.js @@ -110,23 +110,11 @@ export function loadSettings(hotreload) { `); } - // everything below this either doesn't support hot reload (custom js) or shouldn't run on a hot reload event + // everything below this shouldn't run on a hot reload event if (hotreload === true) { return; } - if (window.location.href.startsWith('http://') || window.location.href.startsWith('https://')){ - const js = localStorage.getItem('customjs'); - if (js) { - try { - // eslint-disable-next-line no-eval - eval(js); - } catch (e) { - console.error('Failed to run custom JS: ', e); - } - } - } - if (localStorage.getItem('experimental') === 'true') { experimentalInit(); } diff --git a/src/modules/helpers/settings/modals.js b/src/modules/helpers/settings/modals.js index 12dba47a..7cfe89cb 100644 --- a/src/modules/helpers/settings/modals.js +++ b/src/modules/helpers/settings/modals.js @@ -1,19 +1,21 @@ import variables from 'modules/variables'; import { toast } from 'react-toastify'; -export function saveFile(data, filename = 'file') { +const getMessage = (text) => variables.language.getMessage(variables.languagecode, text); + +export function saveFile(data, filename = 'file', type = 'text/json') { if (typeof data === 'object') { data = JSON.stringify(data, undefined, 4); } - const blob = new Blob([data], { type: 'text/json' }); + const blob = new Blob([data], { type }); const event = document.createEvent('MouseEvents'); const a = document.createElement('a'); a.href = window.URL.createObjectURL(blob); a.download = filename; - a.dataset.downloadurl = ['text/json', a.download, a.href].join(':'); + a.dataset.downloadurl = [type, a.download, a.href].join(':'); event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); a.dispatchEvent(event); @@ -29,7 +31,6 @@ export function exportSettings() { } export function importSettings(e) { - const getMessage = (text) => variables.language.getMessage(variables.languagecode, text); const content = JSON.parse(e.target.result); Object.keys(content).forEach((key) => {