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) => {