fix: close #245, port various fixes from 7.0

This commit is contained in:
David Ralph
2022-03-06 17:28:25 +00:00
parent 66e22b05ef
commit 66da158840
9 changed files with 19 additions and 34 deletions

View File

@@ -53,7 +53,7 @@ export default class Autocomplete extends PureComponent {
});
}
componentWillUnount() {
componentWillUnmount() {
EventBus.off('refresh');
}

View File

@@ -61,9 +61,6 @@ export default class AdvancedSettings extends PureComponent {
<h3>{getMessage('modals.main.settings.sections.advanced.customisation')}</h3>
<Text title={getMessage('modals.main.settings.sections.advanced.tab_name')} name='tabName' default={getMessage('tabname')} category='other'/>
{window.location.href.startsWith('http://') || window.location.href.startsWith('https://') ?
<Text title={getMessage('modals.main.settings.sections.advanced.custom_js')} name='customjs' textarea={true} category='other' element='other'/>
: null}
<Text title={getMessage('modals.main.settings.sections.advanced.custom_css')} name='customcss' textarea={true} category='other'/>
<h3>{getMessage('modals.main.settings.sections.experimental.title')}</h3>

View File

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

View File

@@ -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);

View File

@@ -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 {
<div className='topbarquicklinks' onKeyDown={this.topbarEnter}>
<h4>{this.getMessage('widgets.quicklinks.new')}</h4>
<TextareaAutosize rowsmax={1} placeholder={this.getMessage('widgets.quicklinks.name')} value={this.state.name} onChange={(e) => this.setState({ name: e.target.value })} />
<p>{this.state.nameError}</p>
<p/>
<TextareaAutosize rowsmax={10} placeholder={this.getMessage('widgets.quicklinks.url')} value={this.state.url} onChange={(e) => this.setState({ url: e.target.value })} />
<p>{this.state.urlError}</p>
<TextareaAutosize rowsmax={10} placeholder={this.getMessage('widgets.quicklinks.icon')} value={this.state.icon} onChange={(e) => this.setState({ icon: e.target.value })} />

View File

@@ -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':

View File

@@ -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();
}

View File

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