mirror of https://github.com/mue/mue.git
fix: welcome svg, privacy welcome tab, marketplace optimisations, various widget fixes etc
Co-authored-by: Alex Sparkes <turbomarshmello@gmail.com>
This commit is contained in:
parent
44fc24951f
commit
95614a383f
|
@ -11,6 +11,7 @@
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@emotion/react": "11.4.0",
|
||||||
"@fontsource/lexend-deca": "^4.4.5",
|
"@fontsource/lexend-deca": "^4.4.5",
|
||||||
"@fontsource/montserrat": "^4.4.5",
|
"@fontsource/montserrat": "^4.4.5",
|
||||||
"@material-ui/core": "5.0.0-beta.0",
|
"@material-ui/core": "5.0.0-beta.0",
|
||||||
|
@ -41,11 +42,11 @@
|
||||||
"eslint": "^7.30.0",
|
"eslint": "^7.30.0",
|
||||||
"eslint-config-react-app": "^6.0.0",
|
"eslint-config-react-app": "^6.0.0",
|
||||||
"html-webpack-plugin": "^5.3.2",
|
"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": "^1.35.1",
|
||||||
"sass-loader": "^12.1.0",
|
"sass-loader": "^12.1.0",
|
||||||
"source-map-loader": "^3.0.0",
|
"source-map-loader": "^3.0.0",
|
||||||
"webpack": "^5.42.0",
|
"webpack": "^5.42.1",
|
||||||
"webpack-cli": "^4.7.2",
|
"webpack-cli": "^4.7.2",
|
||||||
"webpack-dev-server": "^4.0.0-beta.3"
|
"webpack-dev-server": "^4.0.0-beta.3"
|
||||||
},
|
},
|
||||||
|
|
|
@ -14,7 +14,7 @@ export default class App extends React.PureComponent {
|
||||||
// 4.0 -> 5.0 (the key below is only on 5.0)
|
// 4.0 -> 5.0 (the key below is only on 5.0)
|
||||||
// now featuring 5.0 -> 5.1
|
// now featuring 5.0 -> 5.1
|
||||||
// the firstRun check was moved here because the old function was useless
|
// 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();
|
SettingsFunctions.moveSettings();
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ export default class Marketplace extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getItems() {
|
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();
|
const featured = await (await fetch(window.constants.MARKETPLACE_URL + '/featured', { signal: this.controller.signal })).json();
|
||||||
|
|
||||||
if (this.controller.signal.aborted === true) {
|
if (this.controller.signal.aborted === true) {
|
||||||
|
@ -85,8 +85,8 @@ export default class Marketplace extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
items: data[this.props.type],
|
items: data,
|
||||||
oldItems: data[this.props.type],
|
oldItems: data,
|
||||||
featured: featured.data,
|
featured: featured.data,
|
||||||
done: true
|
done: true
|
||||||
});
|
});
|
||||||
|
|
|
@ -358,6 +358,9 @@ li {
|
||||||
.resetfooter {
|
.resetfooter {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 20px;
|
bottom: 20px;
|
||||||
|
width: 300px;
|
||||||
|
justify-content: center;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
button.reset {
|
button.reset {
|
||||||
margin-right: 43px;
|
margin-right: 43px;
|
||||||
|
|
|
@ -46,3 +46,14 @@
|
||||||
display: inline;
|
display: inline;
|
||||||
margin-top: 0px;
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ select {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// safari dropdown
|
// safari dropdown
|
||||||
@supports (-webkit-hyphens: none) {
|
@supports (-webkit-hyphens: none) {
|
||||||
select {
|
select {
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
import CloseIcon from '@material-ui/icons/Close';
|
||||||
|
import DeleteIcon from '@material-ui/icons/Delete';
|
||||||
|
|
||||||
import SettingsFunctions from '../../../../modules/helpers/settings';
|
import SettingsFunctions from '../../../../modules/helpers/settings';
|
||||||
|
|
||||||
export default function ResetModal(props) {
|
export default function ResetModal(props) {
|
||||||
|
@ -11,12 +14,17 @@ export default function ResetModal(props) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h3 style={{ textAlign: 'center' }}>{language.title}</h3>
|
<h1 style={{ textAlign: 'center' }}>{language.title}</h1>
|
||||||
<h4>{language.question}</h4>
|
<span>{language.question}</span>
|
||||||
<p>{language.information}</p>
|
<br/><br/>
|
||||||
|
<span>{language.information}</span>
|
||||||
<div className='resetfooter'>
|
<div className='resetfooter'>
|
||||||
<button className='reset' style={{ marginLeft: 0 }} onClick={() => reset()}>{window.language.modals.main.settings.buttons.reset}</button>
|
<button className='round reset' style={{ marginLeft: 0 }} onClick={() => reset()}>
|
||||||
<button className='import' style={{ marginLeft: '5px' }} onClick={props.modalClose}>{language.cancel}</button>
|
<DeleteIcon/>
|
||||||
|
</button>
|
||||||
|
<button className='round import' style={{ marginLeft: '5px' }} onClick={props.modalClose}>
|
||||||
|
<CloseIcon/>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
|
@ -20,7 +20,6 @@ export default class SearchSettings extends React.PureComponent {
|
||||||
customDisplay: 'none',
|
customDisplay: 'none',
|
||||||
customValue: localStorage.getItem('customSearchEngine') || ''
|
customValue: localStorage.getItem('customSearchEngine') || ''
|
||||||
};
|
};
|
||||||
this.language = window.language.modals.main.settings;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resetSearch() {
|
resetSearch() {
|
||||||
|
|
|
@ -114,7 +114,7 @@ export default class BackgroundSettings extends React.PureComponent {
|
||||||
const APISettings = (
|
const APISettings = (
|
||||||
<>
|
<>
|
||||||
<br/>
|
<br/>
|
||||||
<Radio title={background.source.api} options={apiOptions} name='backgroundAPI' category='background'/>
|
<Radio title={background.source.api} options={apiOptions} name='backgroundAPI' category='background' element='#backgroundImage'/>
|
||||||
<br/>
|
<br/>
|
||||||
<Dropdown label={background.category} name='apiCategory'>
|
<Dropdown label={background.category} name='apiCategory'>
|
||||||
{this.state.backgroundCategories.map((category) => (
|
{this.state.backgroundCategories.map((category) => (
|
||||||
|
@ -152,7 +152,7 @@ export default class BackgroundSettings extends React.PureComponent {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2>{background.title}</h2>
|
<h2>{background.title}</h2>
|
||||||
<Switch name='background' text={this.language.enabled} category='background' />
|
<Switch name='background' text={this.language.enabled} category='background' element='#backgroundImage' />
|
||||||
<Checkbox name='ddgProxy' text={background.ddg_image_proxy} />
|
<Checkbox name='ddgProxy' text={background.ddg_image_proxy} />
|
||||||
<Checkbox name='bgtransition' text={background.transition} />
|
<Checkbox name='bgtransition' text={background.transition} />
|
||||||
<Checkbox name='photoInformation' text={background.photo_information} category='background' element='.other' />
|
<Checkbox name='photoInformation' text={background.photo_information} category='background' element='.other' />
|
||||||
|
@ -174,17 +174,17 @@ export default class BackgroundSettings extends React.PureComponent {
|
||||||
<Checkbox name='downloadbtn' text={background.buttons.download} element='.other' />
|
<Checkbox name='downloadbtn' text={background.buttons.download} element='.other' />
|
||||||
|
|
||||||
<h3>{background.effects.title}</h3>
|
<h3>{background.effects.title}</h3>
|
||||||
<Slider title={background.effects.blur} name='blur' min='0' max='100' default='0' display='%' category='background' />
|
<Slider title={background.effects.blur} name='blur' min='0' max='100' default='0' display='%' category='background' element='#backgroundImage' />
|
||||||
<Slider title={background.effects.brightness} name='brightness' min='0' max='100' default='90' display='%' category='background' />
|
<Slider title={background.effects.brightness} name='brightness' min='0' max='100' default='90' display='%' category='background' element='#backgroundImage' />
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
<Dropdown label={background.effects.filters.title} name='backgroundFilter' category='background'>
|
<Dropdown label={background.effects.filters.title} name='backgroundFilter' category='background' element='#backgroundImage'>
|
||||||
<option value='grayscale'>{background.effects.filters.grayscale}</option>
|
<option value='grayscale'>{background.effects.filters.grayscale}</option>
|
||||||
<option value='sepia'>{background.effects.filters.sepia}</option>
|
<option value='sepia'>{background.effects.filters.sepia}</option>
|
||||||
<option value='invert'>{background.effects.filters.invert}</option>
|
<option value='invert'>{background.effects.filters.invert}</option>
|
||||||
<option value='saturate'>{background.effects.filters.saturate}</option>
|
<option value='saturate'>{background.effects.filters.saturate}</option>
|
||||||
<option value='contrast'>{background.effects.filters.contrast}</option>
|
<option value='contrast'>{background.effects.filters.contrast}</option>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
<Slider title={background.effects.filters.amount} name='backgroundFilterAmount' min='0' max='100' default='0' display='%' category='background' />
|
<Slider title={background.effects.filters.amount} name='backgroundFilterAmount' min='0' max='100' default='0' display='%' category='background' element='#backgroundImage' />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,12 +64,14 @@ function Tab(props) {
|
||||||
case settings.changelog: icon = <Changelog/>; break;
|
case settings.changelog: icon = <Changelog/>; break;
|
||||||
case settings.about.title: icon = <About/>; break;
|
case settings.about.title: icon = <About/>; break;
|
||||||
|
|
||||||
// Store
|
// Addons
|
||||||
|
case addons.added: icon = <Added/>; break;
|
||||||
|
case addons.sideload: icon = <Sideload/>; break;
|
||||||
|
|
||||||
|
// Marketplace
|
||||||
case marketplace.photo_packs: icon = <Background/>; break;
|
case marketplace.photo_packs: icon = <Background/>; break;
|
||||||
case marketplace.quote_packs: icon = <Quote/>; break;
|
case marketplace.quote_packs: icon = <Quote/>; break;
|
||||||
case marketplace.preset_settings: icon = <Advanced/>; break;
|
case marketplace.preset_settings: icon = <Advanced/>; break;
|
||||||
case addons.added: icon = <Added/>; break;
|
|
||||||
case addons.sideload: icon = <Sideload/>; break;
|
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ export default class WelcomeModal extends React.PureComponent {
|
||||||
return (
|
return (
|
||||||
<div className='welcomeContent'>
|
<div className='welcomeContent'>
|
||||||
<section>
|
<section>
|
||||||
<img alt='celebration' draggable={false} src={this.state.image} />
|
<img className='showcaseimg' alt='celebration' draggable={false} src={this.state.image} />
|
||||||
<ProgressBar count={this.images} currentTab={this.state.currentTab} switchTab={(tab) => this.switchTab(tab)}/>
|
<ProgressBar count={this.images} currentTab={this.state.currentTab} switchTab={(tab) => this.switchTab(tab)}/>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import Radio from '../main/settings/Radio';
|
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 FileUpload from '../main/settings/FileUpload';
|
||||||
|
|
||||||
import UploadIcon from '@material-ui/icons/CloudUpload';
|
import UploadIcon from '@material-ui/icons/CloudUpload';
|
||||||
import AutoIcon from '@material-ui/icons/AutoAwesome';
|
import AutoIcon from '@material-ui/icons/AutoAwesome';
|
||||||
import LightModeIcon from '@material-ui/icons/LightMode';
|
import LightModeIcon from '@material-ui/icons/LightMode';
|
||||||
|
@ -79,9 +80,11 @@ export default class WelcomeSections extends React.Component {
|
||||||
|
|
||||||
changeWelcomeImg() {
|
changeWelcomeImg() {
|
||||||
let welcomeImage = this.state.welcomeImage;
|
let welcomeImage = this.state.welcomeImage;
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
welcomeImage: ++welcomeImage % this.welcomeImages.length
|
welcomeImage: ++welcomeImage % this.welcomeImages.length
|
||||||
});
|
});
|
||||||
|
|
||||||
this.timeout = setTimeout(this.changeWelcomeImg, 3 * 1000);
|
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 languageSettings = window.language.modals.main.settings.sections.language;
|
||||||
|
|
||||||
const theme = (
|
const theme = (
|
||||||
|
@ -172,6 +175,10 @@ export default class WelcomeSections extends React.Component {
|
||||||
<>
|
<>
|
||||||
<h1>{language.sections.privacy.title}</h1>
|
<h1>{language.sections.privacy.title}</h1>
|
||||||
<p>{language.sections.privacy.description}</p>
|
<p>{language.sections.privacy.description}</p>
|
||||||
|
<Checkbox name='offlineMode' text={advanced.offline_mode} element='.other' />
|
||||||
|
<p>{language.sections.privacy.offline_mode_description}</p>
|
||||||
|
<h3 className='quicktip'>{language.sections.privacy.links.title}</h3>
|
||||||
|
<a className='privacy' href='https://muetab.com/privacy' target='_blank' rel='noopener noreferrer'>{language.sections.privacy.links.privacy_policy}</a>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -24,10 +24,6 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
img {
|
|
||||||
height: 300px;
|
|
||||||
width: 400px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
section:nth-child(2) {
|
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 {
|
.themesToggleArea {
|
||||||
.active {
|
.active {
|
||||||
|
@ -146,3 +128,23 @@ a.privacy {
|
||||||
color: #5352ed;
|
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;
|
||||||
|
}
|
|
@ -100,6 +100,10 @@ export default class QuickLinks extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
|
if (localStorage.getItem('offlineMode') === 'true') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
EventBus.on('refresh', (data) => {
|
EventBus.on('refresh', (data) => {
|
||||||
if (data === 'quicklinks') {
|
if (data === 'quicklinks') {
|
||||||
const element = document.querySelector('.quicklinks-container');
|
const element = document.querySelector('.quicklinks-container');
|
||||||
|
@ -144,6 +148,10 @@ export default class QuickLinks extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
if (localStorage.getItem('offlineMode') === 'true') {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
let target, rel = null;
|
let target, rel = null;
|
||||||
if (localStorage.getItem('quicklinksnewtab') === 'true') {
|
if (localStorage.getItem('quicklinksnewtab') === 'true') {
|
||||||
target = '_blank';
|
target = '_blank';
|
||||||
|
|
|
@ -238,5 +238,9 @@
|
||||||
{
|
{
|
||||||
"name": "statsData",
|
"name": "statsData",
|
||||||
"value": "{}"
|
"value": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "offlineMode",
|
||||||
|
"value": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -2,13 +2,13 @@ export default class Stats {
|
||||||
constructor(id) {
|
constructor(id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.url = window.constants.UMAMI_DOMAIN + '/api/collect';
|
this.url = window.constants.UMAMI_DOMAIN + '/api/collect';
|
||||||
this.offline = (localStorage.getItem('offlineMode') !== 'true');
|
this.online = (localStorage.getItem('offlineMode') === 'false');
|
||||||
}
|
}
|
||||||
|
|
||||||
async postEvent(type, name) {
|
async postEvent(type, name) {
|
||||||
const value = name.toLowerCase().replaceAll(' ', '-');
|
const value = name.toLowerCase().replaceAll(' ', '-');
|
||||||
|
|
||||||
if (!this.offline) {
|
if (this.online) {
|
||||||
// umami
|
// umami
|
||||||
await fetch(this.url, {
|
await fetch(this.url, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
@ -46,7 +46,7 @@ export default class Stats {
|
||||||
}
|
}
|
||||||
|
|
||||||
async tabLoad() {
|
async tabLoad() {
|
||||||
if (!this.offline) {
|
if (this.online) {
|
||||||
// umami
|
// umami
|
||||||
await fetch(this.url, {
|
await fetch(this.url, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
|
@ -398,7 +398,12 @@
|
||||||
},
|
},
|
||||||
"privacy": {
|
"privacy": {
|
||||||
"title": "Privacy Options",
|
"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": {
|
"final": {
|
||||||
"title": "Final step",
|
"title": "Final step",
|
||||||
|
|
Loading…
Reference in New Issue