diff --git a/package.json b/package.json index 360ace46..1909c2ce 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "license": "BSD-3-Clause", "version": "4.2.1", "dependencies": { + "@eartharoid/dtf": "^1.0.8", "@material-ui/core": "4.11.0", "@material-ui/icons": "4.9.1", "@muetab/quotes": "^1.0.0", diff --git a/src/components/modals/marketplace/Items.jsx b/src/components/modals/marketplace/Items.jsx index fddcb1ea..af9bc691 100644 --- a/src/components/modals/marketplace/Items.jsx +++ b/src/components/modals/marketplace/Items.jsx @@ -16,7 +16,7 @@ export default class Items extends React.PureComponent {
this.props.toggleFunction(item.name)} key={item.name}> icon
-

{item.display_name}

+

{item.display_name ? item.display_name : item.name}

{item.author}

)} diff --git a/src/components/modals/settings/sections/DateSettings.jsx b/src/components/modals/settings/sections/DateSettings.jsx deleted file mode 100644 index 23c0aadd..00000000 --- a/src/components/modals/settings/sections/DateSettings.jsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import SettingsFunctions from '../../../../modules/helpers/settings'; -import Section from '../Section'; -import Dropdown from '../Dropdown'; - -export default class DateSettings extends React.PureComponent { - componentDidMount() { - } - - render() { - return ( - -
- settings -
-
- ); - } -} \ No newline at end of file diff --git a/src/components/modals/tabs/Addons.jsx b/src/components/modals/tabs/Addons.jsx index 9b1fd6a0..3c396ac2 100644 --- a/src/components/modals/tabs/Addons.jsx +++ b/src/components/modals/tabs/Addons.jsx @@ -2,6 +2,7 @@ import React from 'react'; import LocalMallIcon from '@material-ui/icons/LocalMall'; import { toast } from 'react-toastify'; import Item from '../marketplace/Item'; +import Items from '../marketplace/Items'; import MarketplaceFunctions from '../../../modules/helpers/marketplace'; export default class Addons extends React.PureComponent { @@ -28,17 +29,17 @@ export default class Addons extends React.PureComponent { toggle(type, type2, data) { if (type === 'item') { - let installed = JSON.parse(localStorage.getItem('installed')); - let info = installed.find(i => i.name === data).content; + const installed = JSON.parse(localStorage.getItem('installed')); + const info = installed.find(i => i.name === data); this.setState({ current_data: { type: type2, name: data, content: info }, item_data: { - name: info.data.name, - author: info.data.author, - description: MarketplaceFunctions.urlParser(info.data.description.replace(/\n/g, '
')), - updated: info.updated, - version: info.data.version, - icon: info.data.screenshot_url + name: info.name, + author: info.author, + description: MarketplaceFunctions.urlParser(info.description.replace(/\n/g, '
')), + updated: 'Not Implemented', + version: info.version, + icon: info.screenshot_url } }); @@ -54,8 +55,7 @@ export default class Addons extends React.PureComponent { } uninstall() { - let type, data = this.state.current_data.type; - if (data === undefined) data = this.state.current_data.content.data.type; + let type, data = this.state.current_data.content.type; switch (data) { case 'photos': type = 'photo_packs'; @@ -76,50 +76,14 @@ export default class Addons extends React.PureComponent { } install(input) { - let installed = JSON.parse(localStorage.getItem('installed')); let button; - - const installStuff = () => { - installed.push({ - content: { - updated: 'Unpublished', - data: input - } - }); - localStorage.setItem('installed', JSON.stringify(installed)); - toast(this.props.toastLanguage.installed); - button = ; - this.setState({ - button: button, - installed: JSON.parse(localStorage.getItem('installed')) - }); - } - - switch (input.type) { - case 'settings': - localStorage.removeItem('backup_settings'); - let oldSettings = []; - for (const key of Object.keys(localStorage)) oldSettings.push({name: key, value: localStorage.getItem(key)}); - localStorage.setItem('backup_settings', JSON.stringify(oldSettings)); - input.settings.forEach(element => localStorage.setItem(element.name, element.value)); - installStuff(); - break; - case 'photos': - localStorage.setItem('photo_packs', JSON.stringify(input.photos)); - installStuff(); - break; - case 'theme': - localStorage.setItem('theme', input.theme); - installStuff(); - break; - case 'quote_packs': - if (input.quote_api) localStorage.setItem('quote_api', JSON.stringify(input.quote_api)); - localStorage.setItem('quote_packs', JSON.stringify(input.quotes)); - installStuff(); - break; - default: - break; - } + MarketplaceFunctions.install(input.type, input, true); + toast(this.props.toastLanguage.installed); + button = ; + this.setState({ + button: button, + installed: JSON.parse(localStorage.getItem('installed')) + }); } componentDidMount() { @@ -140,18 +104,9 @@ export default class Addons extends React.PureComponent { } render() { - let content =
- {this.state.installed.map((item) => -
this.toggle('item', item.type, item.name)}> - icon -
-

{item.content.data.name}

-

{item.content.data.author}

-
-
)} -
; + let content = this.toggle('item', 'addon', input)} /> - if (this.state.installed.length === 0) { + if (this.state.installed.length === 0) { content =
@@ -160,7 +115,7 @@ export default class Addons extends React.PureComponent {
; - } + } return (
diff --git a/src/components/modals/tabs/Marketplace.jsx b/src/components/modals/tabs/Marketplace.jsx index c0997f64..738de35f 100644 --- a/src/components/modals/tabs/Marketplace.jsx +++ b/src/components/modals/tabs/Marketplace.jsx @@ -104,42 +104,11 @@ export default class Marketplace extends React.PureComponent { } install() { - let installed = JSON.parse(localStorage.getItem('installed')); let button; - - const installStuff = () => { - installed.push(this.state.current_data); - localStorage.setItem('installed', JSON.stringify(installed)); - toast(this.props.toastLanguage.installed); - button = ; - this.setState({ button: button }); - } - - switch (this.state.current_data.type) { - case 'settings': - localStorage.removeItem('backup_settings'); - let oldSettings = []; - for (const key of Object.keys(localStorage)) oldSettings.push({name: key, value: localStorage.getItem(key)}); - localStorage.setItem('backup_settings', JSON.stringify(oldSettings)); - this.state.current_data.content.data.settings.forEach(element => localStorage.setItem(element.name, element.value)); - installStuff(); - break; - case 'photo_packs': - localStorage.setItem('photo_packs', JSON.stringify(this.state.current_data.content.data.photos)); - installStuff(); - break; - case 'theme': - localStorage.setItem('theme', this.state.current_data.content.data.theme); - installStuff(); - break; - case 'quote_packs': - if (this.state.current_data.content.data.quote_api) localStorage.setItem('quote_api', JSON.stringify(this.state.current_data.content.data.quote_api)); - localStorage.setItem('quote_packs', JSON.stringify(this.state.current_data.content.data.quotes)); - installStuff(); - break; - default: - break; - } + MarketplaceFunctions.install(this.state.current_data.type, this.state.current_data.content.data); + toast(this.props.toastLanguage.installed); + button = ; + this.setState({ button: button }); } uninstall() { @@ -160,15 +129,15 @@ export default class Marketplace extends React.PureComponent { if (this.state.done === false) { return (
-
+

{this.props.updateLanguage.loading}

+
-
- ) + ); } return ( -
+

{this.state.featured.title}

@@ -193,12 +162,6 @@ export default class Marketplace extends React.PureComponent { items={this.state.quote_packs.slice(0, 3)} toggleFunction={(input) => this.toggle('item', 'quote_packs', input)} seeMoreFunction={() => this.toggle('seemore', 'quote_packs')} /> - {/* this.toggle('item', 'theme', input)} - seeMoreFunction={() => this.toggle('seemore', 'themes')} /> */ }
-
+ ) } } \ No newline at end of file diff --git a/src/components/modals/tabs/Settings.jsx b/src/components/modals/tabs/Settings.jsx index c2674c54..0bd1de47 100644 --- a/src/components/modals/tabs/Settings.jsx +++ b/src/components/modals/tabs/Settings.jsx @@ -7,7 +7,6 @@ import { toast } from 'react-toastify'; import BackgroundSettings from '../settings/sections/BackgroundSettings'; import SearchSettings from '../settings/sections/SearchSettings'; import LanguageSettings from '../settings/sections/LanguageSettings'; -import DateSettings from '../settings/sections/DateSettings'; export default class Settings extends React.PureComponent { resetGreeting() { diff --git a/src/components/widgets/Date.jsx b/src/components/widgets/Date.jsx index d8bc130c..879a3e1f 100644 --- a/src/components/widgets/Date.jsx +++ b/src/components/widgets/Date.jsx @@ -28,7 +28,7 @@ export default class DateWidget extends React.PureComponent { day = dateYear; year = dateDay; break; - default: + default: // DMY break; } @@ -49,7 +49,7 @@ export default class DateWidget extends React.PureComponent { const lang = localStorage.getItem('language'); const day = date.toLocaleDateString(lang, { weekday: 'long' }); - const nth = dtf.nth(date.getDate()); + const nth = (localStorage.getItem('datenth') === 'true') ? dtf.nth(date.getDate()) : date.getDate(); const month = date.toLocaleDateString(lang, { month: 'long' }); const year = date.getFullYear(); diff --git a/src/modules/helpers/marketplace.js b/src/modules/helpers/marketplace.js index 5e7ca23b..aa4a6e64 100644 --- a/src/modules/helpers/marketplace.js +++ b/src/modules/helpers/marketplace.js @@ -41,4 +41,39 @@ export default class MarketplaceFunctions { } } } + + static install(type, input, sideload) { + switch (type) { + case 'settings': + localStorage.removeItem('backup_settings'); + let oldSettings = []; + for (const key of Object.keys(localStorage)) oldSettings.push({ name: key, value: localStorage.getItem(key) }); + localStorage.setItem('backup_settings', JSON.stringify(oldSettings)); + input.settings.forEach(element => localStorage.setItem(element.name, element.value)); + break; + case 'photo_packs': + localStorage.setItem('photo_packs', JSON.stringify(input.photos)); + break; + case 'theme': + localStorage.setItem('theme', input.theme); + break; + case 'quote_packs': + if (input.quote_api) localStorage.setItem('quote_api', JSON.stringify(input.quote_api)); + localStorage.setItem('quote_packs', JSON.stringify(input.quotes)); + break; + default: + break; + } + + let installed = JSON.parse(localStorage.getItem('installed')); + if (sideload) { + installed.push({ + content: { + updated: 'Unpublished', + data: input + } + }); + } else installed.push(input); + localStorage.setItem('installed', JSON.stringify(installed)); + } } \ No newline at end of file