diff --git a/.editorconfig b/.editorconfig index 3274ec36..1923d410 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,4 +5,4 @@ indent_style = space indent_size = 2 charset = utf-8 trim_trailing_whitespace = true -insert_final_newline = true \ No newline at end of file +insert_final_newline = true diff --git a/.eslintrc.js b/.eslintrc.js index 473457c0..59e8ed8b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,4 @@ module.exports = { - extends: 'react-app', - parser: '@babel/eslint-parser' + extends: 'react-app', + parser: '@babel/eslint-parser' }; diff --git a/package.json b/package.json index ab54f4eb..2b4dab4c 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "BSD-3-Clause", "version": "5.1.1", "dependencies": { + "@emotion/react": "11.4.0", "@fontsource/lexend-deca": "^4.4.5", "@fontsource/montserrat": "^4.4.5", "@material-ui/core": "5.0.0-beta.0", @@ -41,11 +42,11 @@ "eslint": "^7.30.0", "eslint-config-react-app": "^6.0.0", "html-webpack-plugin": "^5.3.2", - "mini-css-extract-plugin": "^2.0.0", + "mini-css-extract-plugin": "^2.1.0", "sass": "^1.35.1", "sass-loader": "^12.1.0", "source-map-loader": "^3.0.0", - "webpack": "^5.42.0", + "webpack": "^5.42.1", "webpack-cli": "^4.7.2", "webpack-dev-server": "^4.0.0-beta.3" }, diff --git a/src/App.jsx b/src/App.jsx index 72a40f0b..6eacfe23 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -14,7 +14,7 @@ export default class App extends React.PureComponent { // 4.0 -> 5.0 (the key below is only on 5.0) // now featuring 5.0 -> 5.1 // the firstRun check was moved here because the old function was useless - if (!localStorage.getItem('firstRun') || !localStorage.getItem('order') || !localStorage.getItem('backgroundFilterAmount')) { + if (!localStorage.getItem('firstRun') || !localStorage.getItem('stats')) { SettingsFunctions.moveSettings(); window.location.reload(); } diff --git a/src/components/modals/main/marketplace/sections/Marketplace.jsx b/src/components/modals/main/marketplace/sections/Marketplace.jsx index 614c1e02..c8d18801 100644 --- a/src/components/modals/main/marketplace/sections/Marketplace.jsx +++ b/src/components/modals/main/marketplace/sections/Marketplace.jsx @@ -77,7 +77,7 @@ export default class Marketplace extends React.PureComponent { } async getItems() { - const { data } = await (await fetch(window.constants.MARKETPLACE_URL + '/all', { signal: this.controller.signal })).json(); + const { data } = await (await fetch(window.constants.MARKETPLACE_URL + '/items/' + this.props.type, { signal: this.controller.signal })).json(); const featured = await (await fetch(window.constants.MARKETPLACE_URL + '/featured', { signal: this.controller.signal })).json(); if (this.controller.signal.aborted === true) { @@ -85,8 +85,8 @@ export default class Marketplace extends React.PureComponent { } this.setState({ - items: data[this.props.type], - oldItems: data[this.props.type], + items: data, + oldItems: data, featured: featured.data, done: true }); diff --git a/src/components/modals/main/scss/index.scss b/src/components/modals/main/scss/index.scss index 2c2cdd73..8853a52d 100644 --- a/src/components/modals/main/scss/index.scss +++ b/src/components/modals/main/scss/index.scss @@ -358,6 +358,9 @@ li { .resetfooter { position: absolute; bottom: 20px; + width: 300px; + justify-content: center; + display: flex; button.reset { margin-right: 43px; diff --git a/src/components/modals/main/scss/marketplace/_buttons.scss b/src/components/modals/main/scss/marketplace/_buttons.scss index c2f95ee2..01220689 100644 --- a/src/components/modals/main/scss/marketplace/_buttons.scss +++ b/src/components/modals/main/scss/marketplace/_buttons.scss @@ -46,3 +46,14 @@ display: inline; margin-top: 0px; } + +button.round { + margin-left: 5px; + width: 30px; + height: 30px; + border-radius: 50%; + text-align: center; + line-height: 3px; + vertical-align: middle; + padding: 10px; +} diff --git a/src/components/modals/main/scss/settings/_dropdown.scss b/src/components/modals/main/scss/settings/_dropdown.scss index fb0bfd67..6281e0c4 100644 --- a/src/components/modals/main/scss/settings/_dropdown.scss +++ b/src/components/modals/main/scss/settings/_dropdown.scss @@ -24,7 +24,6 @@ select { } } - // safari dropdown @supports (-webkit-hyphens: none) { select { diff --git a/src/components/modals/main/settings/ResetModal.jsx b/src/components/modals/main/settings/ResetModal.jsx index bb63079a..805035b7 100644 --- a/src/components/modals/main/settings/ResetModal.jsx +++ b/src/components/modals/main/settings/ResetModal.jsx @@ -1,3 +1,6 @@ +import CloseIcon from '@material-ui/icons/Close'; +import DeleteIcon from '@material-ui/icons/Delete'; + import SettingsFunctions from '../../../../modules/helpers/settings'; export default function ResetModal(props) { @@ -11,12 +14,17 @@ export default function ResetModal(props) { return ( <> -

{language.title}

-

{language.question}

-

{language.information}

+

{language.title}

+ {language.question} +

+ {language.information}
- - + +
); diff --git a/src/components/modals/main/settings/sections/Search.jsx b/src/components/modals/main/settings/sections/Search.jsx index 9ab1e62f..ea05d387 100644 --- a/src/components/modals/main/settings/sections/Search.jsx +++ b/src/components/modals/main/settings/sections/Search.jsx @@ -20,7 +20,6 @@ export default class SearchSettings extends React.PureComponent { customDisplay: 'none', customValue: localStorage.getItem('customSearchEngine') || '' }; - this.language = window.language.modals.main.settings; } resetSearch() { diff --git a/src/components/modals/main/settings/sections/background/Background.jsx b/src/components/modals/main/settings/sections/background/Background.jsx index 55e60744..78b43b85 100644 --- a/src/components/modals/main/settings/sections/background/Background.jsx +++ b/src/components/modals/main/settings/sections/background/Background.jsx @@ -114,7 +114,7 @@ export default class BackgroundSettings extends React.PureComponent { const APISettings = ( <>
- +
{this.state.backgroundCategories.map((category) => ( @@ -152,7 +152,7 @@ export default class BackgroundSettings extends React.PureComponent { return ( <>

{background.title}

- + @@ -174,17 +174,17 @@ export default class BackgroundSettings extends React.PureComponent {

{background.effects.title}

- - + +

- + - + ); } diff --git a/src/components/modals/main/tabs/backend/Tab.jsx b/src/components/modals/main/tabs/backend/Tab.jsx index 1ea71343..be9ce3ad 100644 --- a/src/components/modals/main/tabs/backend/Tab.jsx +++ b/src/components/modals/main/tabs/backend/Tab.jsx @@ -64,12 +64,14 @@ function Tab(props) { case settings.changelog: icon = ; break; case settings.about.title: icon = ; break; - // Store + // Addons + case addons.added: icon = ; break; + case addons.sideload: icon = ; break; + + // Marketplace case marketplace.photo_packs: icon = ; break; case marketplace.quote_packs: icon = ; break; case marketplace.preset_settings: icon = ; break; - case addons.added: icon = ; break; - case addons.sideload: icon = ; break; default: break; } diff --git a/src/components/modals/welcome/Welcome.jsx b/src/components/modals/welcome/Welcome.jsx index d3e60c14..87159fb4 100644 --- a/src/components/modals/welcome/Welcome.jsx +++ b/src/components/modals/welcome/Welcome.jsx @@ -51,7 +51,7 @@ export default class WelcomeModal extends React.PureComponent { return (
- celebration + celebration this.switchTab(tab)}/>
diff --git a/src/components/modals/welcome/WelcomeSections.jsx b/src/components/modals/welcome/WelcomeSections.jsx index 67c5d8b2..a1c27292 100644 --- a/src/components/modals/welcome/WelcomeSections.jsx +++ b/src/components/modals/welcome/WelcomeSections.jsx @@ -1,8 +1,9 @@ import React from 'react'; import Radio from '../main/settings/Radio'; -//import Checkbox from '../main/settings/Checkbox'; +import Checkbox from '../main/settings/Checkbox'; import FileUpload from '../main/settings/FileUpload'; + import UploadIcon from '@material-ui/icons/CloudUpload'; import AutoIcon from '@material-ui/icons/AutoAwesome'; import LightModeIcon from '@material-ui/icons/LightMode'; @@ -79,9 +80,11 @@ export default class WelcomeSections extends React.Component { changeWelcomeImg() { let welcomeImage = this.state.welcomeImage; + this.setState({ welcomeImage: ++welcomeImage % this.welcomeImages.length }); + this.timeout = setTimeout(this.changeWelcomeImg, 3 * 1000); } @@ -125,7 +128,7 @@ export default class WelcomeSections extends React.Component { ); - const { appearance } = window.language.modals.main.settings.sections; + const { appearance, advanced } = window.language.modals.main.settings.sections; const languageSettings = window.language.modals.main.settings.sections.language; const theme = ( @@ -139,12 +142,12 @@ export default class WelcomeSections extends React.Component {
this.changeTheme('light')}> - - {appearance.theme.light} + + {appearance.theme.light}
this.changeTheme('dark')}> - - {appearance.theme.dark} + + {appearance.theme.dark}

{language.tip}

@@ -172,6 +175,10 @@ export default class WelcomeSections extends React.Component { <>

{language.sections.privacy.title}

{language.sections.privacy.description}

+ +

{language.sections.privacy.offline_mode_description}

+

{language.sections.privacy.links.title}

+ {language.sections.privacy.links.privacy_policy} ); diff --git a/src/components/modals/welcome/welcome.scss b/src/components/modals/welcome/welcome.scss index 368bfb26..7f89631b 100644 --- a/src/components/modals/welcome/welcome.scss +++ b/src/components/modals/welcome/welcome.scss @@ -24,10 +24,6 @@ justify-content: center; align-items: center; - img { - height: 300px; - width: 400px; - } } section:nth-child(2) { @@ -82,20 +78,6 @@ } } -.examples { - display: flex; - flex-wrap: wrap; - flex-direction: column; - align-items: center; - - img { - width: 30rem; - height: auto; - display: block; - margin: 30px; - border-radius: 12px; - } -} .themesToggleArea { .active { @@ -146,3 +128,23 @@ a.privacy { color: #5352ed; } } + +.examples { + display: flex; + flex-wrap: wrap; + flex-direction: column; + align-items: center; + + img { + width: 30rem !important; + height: auto !important; + display: block; + margin: 30px; + border-radius: 12px; + } +} + +.showcaseimg { + width: 350px; + height: auto; +} \ No newline at end of file diff --git a/src/components/widgets/quicklinks/QuickLinks.jsx b/src/components/widgets/quicklinks/QuickLinks.jsx index e9fb1274..0dc71d0f 100644 --- a/src/components/widgets/quicklinks/QuickLinks.jsx +++ b/src/components/widgets/quicklinks/QuickLinks.jsx @@ -100,6 +100,10 @@ export default class QuickLinks extends React.PureComponent { } componentDidMount() { + if (localStorage.getItem('offlineMode') === 'true') { + return; + } + EventBus.on('refresh', (data) => { if (data === 'quicklinks') { const element = document.querySelector('.quicklinks-container'); @@ -144,6 +148,10 @@ export default class QuickLinks extends React.PureComponent { } render() { + if (localStorage.getItem('offlineMode') === 'true') { + return null; + } + let target, rel = null; if (localStorage.getItem('quicklinksnewtab') === 'true') { target = '_blank'; diff --git a/src/modules/default_settings.json b/src/modules/default_settings.json index f8e85d3e..abb192e9 100644 --- a/src/modules/default_settings.json +++ b/src/modules/default_settings.json @@ -238,5 +238,9 @@ { "name": "statsData", "value": "{}" + }, + { + "name": "offlineMode", + "value": false } ] diff --git a/src/modules/helpers/stats.js b/src/modules/helpers/stats.js index 4bcbf13b..cab54432 100644 --- a/src/modules/helpers/stats.js +++ b/src/modules/helpers/stats.js @@ -2,13 +2,13 @@ export default class Stats { constructor(id) { this.id = id; this.url = window.constants.UMAMI_DOMAIN + '/api/collect'; - this.offline = (localStorage.getItem('offlineMode') !== 'true'); + this.online = (localStorage.getItem('offlineMode') === 'false'); } async postEvent(type, name) { const value = name.toLowerCase().replaceAll(' ', '-'); - if (!this.offline) { + if (this.online) { // umami await fetch(this.url, { method: 'POST', @@ -46,7 +46,7 @@ export default class Stats { } async tabLoad() { - if (!this.offline) { + if (this.online) { // umami await fetch(this.url, { method: 'POST', diff --git a/src/translations/de_DE.json b/src/translations/de_DE.json index 07283a82..7d1a9d8a 100644 --- a/src/translations/de_DE.json +++ b/src/translations/de_DE.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/src/translations/en_GB.json b/src/translations/en_GB.json index de617fa6..bd44398a 100644 --- a/src/translations/en_GB.json +++ b/src/translations/en_GB.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/src/translations/en_US.json b/src/translations/en_US.json index 665020e0..f13cf31c 100644 --- a/src/translations/en_US.json +++ b/src/translations/en_US.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/src/translations/es.json b/src/translations/es.json index c90d697e..f49febdb 100644 --- a/src/translations/es.json +++ b/src/translations/es.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/src/translations/fr.json b/src/translations/fr.json index 9c040a52..cfeef7c5 100644 --- a/src/translations/fr.json +++ b/src/translations/fr.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/src/translations/nl.json b/src/translations/nl.json index 6442a0de..d03118c8 100644 --- a/src/translations/nl.json +++ b/src/translations/nl.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/src/translations/no.json b/src/translations/no.json index efce45eb..d957c493 100644 --- a/src/translations/no.json +++ b/src/translations/no.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/src/translations/ru.json b/src/translations/ru.json index 53290977..c68108d7 100644 --- a/src/translations/ru.json +++ b/src/translations/ru.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/src/translations/zh_CN.json b/src/translations/zh_CN.json index 866ec11e..7f782fc0 100644 --- a/src/translations/zh_CN.json +++ b/src/translations/zh_CN.json @@ -398,7 +398,12 @@ }, "privacy": { "title": "Privacy Options", - "description": "to be added" + "description": "Enable settings to further protect your privacy with Mue.", + "offline_mode_description": "Enabling offline mode will disable all requests to any service. This will result in online backgrounds, online quotes, marketplace, weather, quick links, change log and some about tab information to be disabled.", + "links": { + "title": "Links", + "privacy_policy": "Privacy Policy" + } }, "final": { "title": "Final step", diff --git a/vercel.json b/vercel.json index 0cae358a..7ae9a3de 100644 --- a/vercel.json +++ b/vercel.json @@ -1,5 +1,5 @@ { - "github": { - "silent": true - } + "github": { + "silent": true + } } diff --git a/webpack.config.js b/webpack.config.js index 1e6e6e74..a21a2072 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -76,4 +76,4 @@ module.exports = { chunkFilename: '[id].[chunkhash].chunk.css' }), ] -}; \ No newline at end of file +};