mirror of
https://github.com/mue/mue.git
synced 2026-07-14 12:34:03 +02:00
refactor: feature based defaults
Co-authored-by: David Ralph <me@davidcralph.co.uk> Co-authored-by: Isaac <contact@eartharoid.me>
This commit is contained in:
12
src/features/greeting/options/default.js
Normal file
12
src/features/greeting/options/default.js
Normal file
@@ -0,0 +1,12 @@
|
||||
const DefaultOptions = {
|
||||
greeting: true,
|
||||
birthday: new Date(),
|
||||
customEvents: [],
|
||||
birthdayenabled: false,
|
||||
defaultGreetingMessage: true,
|
||||
greetingName: '',
|
||||
birthdayage: false,
|
||||
zoomGreeting: 100
|
||||
};
|
||||
|
||||
export default DefaultOptions;
|
||||
@@ -3,18 +3,22 @@ import EventBus from 'utils/eventbus';
|
||||
import './message.scss';
|
||||
|
||||
const Message = () => {
|
||||
const calculateFontSize = () => {
|
||||
const zoomMessage = localStorage.getItem('zoomMessage') || 100;
|
||||
return `${1 * Number((zoomMessage || 100) / 100)}em`;
|
||||
};
|
||||
|
||||
const [messageText, setMessageText] = useState('');
|
||||
const [display, setDisplay] = useState('none');
|
||||
const [fontSize, setFontSize] = useState('1em');
|
||||
const [fontSize, setFontSize] = useState(calculateFontSize());
|
||||
const message = useRef();
|
||||
|
||||
useEffect(() => {
|
||||
const handleRefresh = (data) => {
|
||||
if (data === 'message') {
|
||||
const messageSetting = localStorage.getItem('message');
|
||||
const zoomMessage = localStorage.getItem('zoomMessage');
|
||||
setDisplay(messageSetting === 'false' ? 'none' : 'block');
|
||||
setFontSize(`${1 * Number((zoomMessage || 100) / 100)}em`);
|
||||
setFontSize(calculateFontSize());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -25,6 +29,7 @@ const Message = () => {
|
||||
}
|
||||
|
||||
EventBus.on('refresh', handleRefresh);
|
||||
|
||||
return () => {
|
||||
EventBus.off('refresh');
|
||||
};
|
||||
|
||||
7
src/features/message/options/default.js
Normal file
7
src/features/message/options/default.js
Normal file
@@ -0,0 +1,7 @@
|
||||
const DefaultOptions = {
|
||||
message: false,
|
||||
messages: [],
|
||||
zoomMessage: 100
|
||||
};
|
||||
|
||||
export default DefaultOptions;
|
||||
@@ -11,17 +11,18 @@ function Refresh() {
|
||||
useEffect(() => {
|
||||
EventBus.on('refresh', (data) => {
|
||||
if (data === 'navbar' || data === 'background') {
|
||||
setRefreshOption(localStorage.getItem('refreshOption'));
|
||||
updateRefreshText();
|
||||
const newRefreshOption = localStorage.getItem('refreshOption');
|
||||
setRefreshOption(newRefreshOption);
|
||||
updateRefreshText(newRefreshOption);
|
||||
}
|
||||
});
|
||||
|
||||
updateRefreshText();
|
||||
}, []);
|
||||
});
|
||||
|
||||
function updateRefreshText() {
|
||||
let text;
|
||||
switch (localStorage.getItem('refreshOption')) {
|
||||
switch (refreshOption) {
|
||||
case 'background':
|
||||
text = variables.getMessage('modals.main.settings.sections.background.title');
|
||||
break;
|
||||
|
||||
10
src/features/quicklinks/options/default.js
Normal file
10
src/features/quicklinks/options/default.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const DefaultOptions = {
|
||||
quicklinks: [], // list of quicklinks
|
||||
quicklinksenabled: false,
|
||||
quicklinksnewtab: false,
|
||||
quicklinkstooltip: false,
|
||||
quicklinksStyle: 'icon',
|
||||
zoomQuicklinks: 1,
|
||||
};
|
||||
|
||||
export default DefaultOptions;
|
||||
13
src/features/quote/options/default.js
Normal file
13
src/features/quote/options/default.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const DefaultOptions = {
|
||||
quote: false,
|
||||
quoteType: 'api',
|
||||
customQuote: [],
|
||||
copyButton: false,
|
||||
quoteShareButton: false,
|
||||
favouriteQuoteEnabled: false,
|
||||
authorLink: false,
|
||||
authorImg: true,
|
||||
zoomQuote: 100
|
||||
};
|
||||
|
||||
export default DefaultOptions;
|
||||
@@ -139,7 +139,6 @@ function Search() {
|
||||
}
|
||||
|
||||
const getSuggestionsDebounced = useDebouncedCallback(getSuggestions, 100);
|
||||
// const getSuggestionsDebounced = getSuggestions;
|
||||
|
||||
/**
|
||||
* If the user selects a search engine from the dropdown menu, the function will set the state of the
|
||||
|
||||
@@ -1,95 +1,78 @@
|
||||
import { PureComponent } from 'react';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
import EventBus from 'utils/eventbus';
|
||||
|
||||
import './autocomplete.scss';
|
||||
|
||||
class Autocomplete extends PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
filtered: [],
|
||||
input: '',
|
||||
autocompleteDisabled: localStorage.getItem('autocomplete') !== 'true',
|
||||
};
|
||||
}
|
||||
function Autocomplete(props) {
|
||||
const [filtered, setFiltered] = useState([]);
|
||||
const [input, setInput] = useState('');
|
||||
const [autocompleteDisabled, setAutocompleteDisabled] = useState(localStorage.getItem('autocomplete') !== 'true');
|
||||
|
||||
onChange = (e) => {
|
||||
if (this.state.autocompleteDisabled) {
|
||||
return this.setState({
|
||||
input: e.target.value,
|
||||
});
|
||||
const onChange = (e) => {
|
||||
if (autocompleteDisabled) {
|
||||
return setInput(e.target.value);
|
||||
}
|
||||
|
||||
this.setState({
|
||||
filtered: this.props.suggestions.filter(
|
||||
(suggestion) => suggestion.toLowerCase().indexOf(e.target.value.toLowerCase()) > -1,
|
||||
),
|
||||
input: e.target.value,
|
||||
});
|
||||
setFiltered(props.suggestions.filter(
|
||||
(suggestion) => suggestion.toLowerCase().indexOf(e.target.value.toLowerCase()) > -1,
|
||||
));
|
||||
setInput(e.target.value);
|
||||
props.onChange(e.target.value);
|
||||
}
|
||||
|
||||
this.props.onChange(e.target.value);
|
||||
};
|
||||
|
||||
onClick = (e) => {
|
||||
this.setState({
|
||||
filtered: [],
|
||||
input: e.target.innerText,
|
||||
});
|
||||
|
||||
this.props.onClick({
|
||||
const onClick = (e) => {
|
||||
setFiltered([]);
|
||||
setInput(e.target.innerText);
|
||||
props.onClick({
|
||||
preventDefault: () => e.preventDefault(),
|
||||
target: {
|
||||
value: e.target.innerText,
|
||||
},
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
useEffect(() => {
|
||||
EventBus.on('refresh', (data) => {
|
||||
if (data === 'search') {
|
||||
this.setState({
|
||||
autocompleteDisabled: localStorage.getItem('autocomplete') !== 'true',
|
||||
});
|
||||
setAutocompleteDisabled(localStorage.getItem('autocomplete') !== 'true');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
EventBus.off('refresh');
|
||||
}
|
||||
|
||||
render() {
|
||||
let autocomplete = null;
|
||||
|
||||
// length will only be > 0 if enabled
|
||||
if (this.state.filtered.length > 0 && this.state.input.length > 0) {
|
||||
autocomplete = (
|
||||
<div className="suggestions">
|
||||
{this.state.filtered.map((suggestion) => (
|
||||
<div key={suggestion} onClick={this.onClick}>
|
||||
{suggestion}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
return () => {
|
||||
EventBus.off('refresh');
|
||||
}
|
||||
});
|
||||
|
||||
return (
|
||||
<div style={{ display: 'flex', flexFlow: 'column' }}>
|
||||
<input
|
||||
type="text"
|
||||
onChange={this.onChange}
|
||||
value={this.state.input}
|
||||
placeholder={this.props.placeholder || ''}
|
||||
autoComplete="off"
|
||||
spellCheck={false}
|
||||
id={this.props.id || ''}
|
||||
/>
|
||||
{autocomplete}
|
||||
let autocomplete = null;
|
||||
|
||||
// length will only be > 0 if enabled
|
||||
if (filtered.length > 0 && input.length > 0) {
|
||||
autocomplete = (
|
||||
<div className="suggestions">
|
||||
{filtered.map((suggestion) => (
|
||||
<div key={suggestion} onClick={onClick}>
|
||||
{suggestion}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div style={{ display: 'flex', flexFlow: 'column' }}>
|
||||
<input
|
||||
type="text"
|
||||
onChange={onChange}
|
||||
value={input}
|
||||
placeholder={props.placeholder || ''}
|
||||
autoComplete="off"
|
||||
spellCheck={false}
|
||||
id={props.id || ''}
|
||||
/>
|
||||
{autocomplete}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export { Autocomplete as default, Autocomplete };
|
||||
|
||||
9
src/features/search/options/default.js
Normal file
9
src/features/search/options/default.js
Normal file
@@ -0,0 +1,9 @@
|
||||
const DefaultOptions = {
|
||||
search: false,
|
||||
searchEngine: 'duckduckgo',
|
||||
customSearchEngine: '',
|
||||
voiceSearch: false,
|
||||
searchDropdown: false
|
||||
};
|
||||
|
||||
export default DefaultOptions;
|
||||
6
src/features/stats/options/default.js
Normal file
6
src/features/stats/options/default.js
Normal file
@@ -0,0 +1,6 @@
|
||||
const DefaultOptions = {
|
||||
stats: true,
|
||||
statsData: {},
|
||||
};
|
||||
|
||||
export default DefaultOptions;
|
||||
37
src/features/time/options/default.js
Normal file
37
src/features/time/options/default.js
Normal file
@@ -0,0 +1,37 @@
|
||||
const DefaultDateOptions = {
|
||||
date: false,
|
||||
dateType: 'long',
|
||||
longFormat: 'DMY',
|
||||
dayofweek: false,
|
||||
datenth: false,
|
||||
dateFormat: 'DMY',
|
||||
shortFormat: 'dots',
|
||||
zoomDate: 100,
|
||||
weeknumber: false,
|
||||
datezero: false,
|
||||
};
|
||||
|
||||
const DefaultTimeOptions = {
|
||||
time: true,
|
||||
timeType: 'digital',
|
||||
hourColour: '#ffffff',
|
||||
minuteColour: '#ffffff',
|
||||
secondColour: '#ffffff',
|
||||
timeformat: 'twentyfourhour',
|
||||
seconds: false,
|
||||
zero: true,
|
||||
secondHand: false,
|
||||
minuteHand: true,
|
||||
hourHand: true,
|
||||
hourMarks: false,
|
||||
minuteMarks: false,
|
||||
roundClock: true,
|
||||
zoomClock: 100,
|
||||
};
|
||||
|
||||
const DefaultOptions = {
|
||||
date: DefaultDateOptions,
|
||||
time: DefaultTimeOptions,
|
||||
};
|
||||
|
||||
export default DefaultOptions;
|
||||
15
src/features/weather/options/default.js
Normal file
15
src/features/weather/options/default.js
Normal file
@@ -0,0 +1,15 @@
|
||||
const DefaultOptions = {
|
||||
weather: false,
|
||||
windspeed: true,
|
||||
weatherType: 'basic',
|
||||
tempformat: 'celsius',
|
||||
weatherdescription: false,
|
||||
cloudiness: false,
|
||||
humidity: false,
|
||||
visibility: false,
|
||||
windDirection: false,
|
||||
atmosphericpressure: false,
|
||||
zoomWeather: 100,
|
||||
};
|
||||
|
||||
export default DefaultOptions;
|
||||
Reference in New Issue
Block a user