feat: add work in progress 7.0 code

Co-authored-by: Alex Sparkes <turbomarshmello@gmail.com>
This commit is contained in:
David Ralph
2022-04-08 14:48:36 +01:00
parent e0820c6b2a
commit 361fae7f25
136 changed files with 8631 additions and 3500 deletions

View File

@@ -1,62 +1,67 @@
import { PureComponent, Fragment, Suspense, lazy } from 'react';
import { PureComponent, Fragment, Suspense, lazy } from "react";
import Clock from './time/Clock';
import Greeting from './greeting/Greeting';
import Quote from './quote/Quote';
import Search from './search/Search';
import QuickLinks from './quicklinks/QuickLinks';
import Date from './time/Date';
import Message from './message/Message';
import Clock from "./time/Clock";
import Greeting from "./greeting/Greeting";
import Quote from "./quote/Quote";
import Search from "./search/Search";
import QuickLinks from "./quicklinks/QuickLinks";
import Date from "./time/Date";
import Message from "./message/Message";
import Reminder from "./reminder/Reminder";
import EventBus from 'modules/helpers/eventbus';
import EventBus from "modules/helpers/eventbus";
const Weather = lazy(() => import('./weather/Weather'));
const Weather = lazy(() => import("./weather/Weather"));
const renderLoader = () => <></>;
export default class Widgets extends PureComponent {
online = (localStorage.getItem('offlineMode') === 'false');
online = localStorage.getItem("offlineMode") === "false";
constructor() {
super();
this.state = {
order: JSON.parse(localStorage.getItem('order')),
welcome: localStorage.getItem('showWelcome')
order: JSON.parse(localStorage.getItem("order")),
welcome: localStorage.getItem("showWelcome"),
};
// widgets we can re-order
this.widgets = {
time: this.enabled('time') ? <Clock/> : null,
greeting: this.enabled('greeting') ? <Greeting/> : null,
quote: this.enabled('quote') ? <Quote/> : null,
date: this.enabled('date') ? <Date/> : null,
quicklinks: this.enabled('quicklinksenabled') && this.online ? <QuickLinks/> : null,
message: this.enabled('message') ? <Message/> : null
time: this.enabled("time") ? <Clock /> : null,
greeting: this.enabled("greeting") ? <Greeting /> : null,
quote: this.enabled("quote") ? <Quote /> : null,
date: this.enabled("date") ? <Date /> : null,
quicklinks:
this.enabled("quicklinksenabled") && this.online ? (
<QuickLinks />
) : null,
message: this.enabled("message") ? <Message /> : null,
reminder: this.enabled("reminder") ? <Reminder /> : null,
};
}
enabled(key) {
return (localStorage.getItem(key) === 'true');
return localStorage.getItem(key) === "true";
}
componentDidMount() {
EventBus.on('refresh', (data) => {
if (data === 'widgets') {
EventBus.on("refresh", (data) => {
if (data === "widgets") {
this.setState({
order: JSON.parse(localStorage.getItem('order'))
order: JSON.parse(localStorage.getItem("order")),
});
}
if (data === 'widgetsWelcome') {
if (data === "widgetsWelcome") {
this.setState({
welcome: localStorage.getItem('showWelcome')
welcome: localStorage.getItem("showWelcome"),
});
localStorage.setItem('showWelcome', true);
localStorage.setItem("showWelcome", true);
window.onbeforeunload = () => {
localStorage.clear();
}
};
}
if (data === 'widgetsWelcomeDone') {
if (data === "widgetsWelcomeDone") {
this.setState({
welcome: localStorage.getItem('showWelcome')
welcome: localStorage.getItem("showWelcome"),
});
window.onbeforeunload = null;
}
@@ -65,8 +70,8 @@ export default class Widgets extends PureComponent {
render() {
// don't show when welcome is there
if (this.state.welcome !== 'false') {
return <div id='widgets'></div>;
if (this.state.welcome !== "false") {
return <div id="widgets"></div>;
}
// allow for re-ordering widgets
@@ -74,19 +79,29 @@ export default class Widgets extends PureComponent {
if (this.state.order) {
this.state.order.forEach((element) => {
elements.push(<Fragment key={element}>{this.widgets[element]}</Fragment>);
elements.push(
<Fragment key={element}>{this.widgets[element]}</Fragment>
);
});
} else {
// prevent error
elements = [<Greeting/>, <Clock/>, <QuickLinks/>, <Quote/>, <Date/>, <Message/>];
elements = [
<Greeting />,
<Clock />,
<QuickLinks />,
<Quote />,
<Date />,
<Message />,
<Reminder />,
];
}
return (
<div id='widgets'>
<div id="widgets">
<Suspense fallback={renderLoader()}>
{this.enabled('searchBar') ? <Search/> : null}
{this.enabled("searchBar") ? <Search /> : null}
{elements}
{this.enabled('weatherEnabled') && this.online ? <Weather/> : null}
{this.enabled("weatherEnabled") && this.online ? <Weather /> : null}
</Suspense>
</div>
);