aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/style_switcher/style_switcher.js51
-rw-r--r--src/i18n/en.json2
2 files changed, 40 insertions, 13 deletions
diff --git a/src/components/style_switcher/style_switcher.js b/src/components/style_switcher/style_switcher.js
index 0cceee4c..ccdb4c4f 100644
--- a/src/components/style_switcher/style_switcher.js
+++ b/src/components/style_switcher/style_switcher.js
@@ -332,16 +332,34 @@ export default {
},
methods: {
exportCurrentTheme () {
+ const saveEverything = !this.keepFonts && !this.keepShadows && !this.keepColors && !this.keepOpacity && !this.keepRoundness
+ const theme = {
+ shadows: this.shadowsLocal,
+ fonts: this.fontsLocal,
+ opacity: this.currentOpacity,
+ colors: this.currentColors,
+ radii: this.currentRadii
+ }
+
+ if (!this.keepFonts && !saveEverything) {
+ delete theme.fonts
+ }
+ if (!this.keepShadows && !saveEverything) {
+ delete theme.shadows
+ }
+ if (!this.keepOpacity && !saveEverything) {
+ delete theme.opacity
+ }
+ if (!this.keepColors && !saveEverything) {
+ delete theme.colors
+ }
+ if (!this.keepRoundness && !saveEverything) {
+ delete theme.radii
+ }
+
const stringified = JSON.stringify({
// To separate from other random JSON files and possible future theme formats
- _pleroma_theme_version: 2,
- theme: {
- shadows: this.shadowsLocal,
- fonts: this.fontsLocal,
- opacity: this.currentOpacity,
- colors: this.currentColors,
- radii: this.currentRadii
- }
+ _pleroma_theme_version: 2, theme
}, null, 2) // Pretty-print and indent with 2 spaces
// Create an invisible link with a data url and simulate a click
@@ -404,7 +422,9 @@ export default {
},
clearAll () {
- this.normalizeLocalState(this.$store.state.config.customTheme)
+ const state = this.$store.state.config.customTheme
+ const version = state.colors ? 2 : 'l1'
+ this.normalizeLocalState(this.$store.state.config.customTheme, version)
},
// Clears all the extra stuff when loading V1 theme
@@ -442,9 +462,13 @@ export default {
},
/**
- * This applies stored theme data onto form.
+ * This applies stored theme data onto form. Supports three versions of data:
+ * v2 (version = 2) - newer version of themes.
+ * v1 (version = 1) - older version of themes (import from file)
+ * v1l (version = l1) - older version of theme (load from local storage)
+ * v1 and v1l differ because of way themes were stored/exported.
* @param {Object} input - input data
- * @param {Number} version - version of data. 0 means try to guess based on data.
+ * @param {Number} version - version of data. 0 means try to guess based on data. "l1" means v1, locastorage type
*/
normalizeLocalState (input, version = 0) {
const colors = input.colors || input
@@ -465,6 +489,8 @@ export default {
}
}
+ console.log(version)
+
// Stuff that differs between V1 and V2
if (version === 1) {
this.fgColorLocal = rgb2hex(colors.btn)
@@ -472,7 +498,7 @@ export default {
}
const keys = new Set(version !== 1 ? Object.keys(colors) : [])
- if (version === 1) {
+ if (version === 1 || version === 'l1') {
// V1 ignores the rest
this.clearV1()
keys
@@ -483,6 +509,7 @@ export default {
.add('cGreen')
.add('cOrange')
}
+
keys.forEach(key => {
this[key + 'ColorLocal'] = rgb2hex(colors[key])
})
diff --git a/src/i18n/en.json b/src/i18n/en.json
index ab7b954a..74e7a556 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -183,7 +183,7 @@
"keep_opacity": "Keep opacity",
"keep_roundness": "Keep roundness",
"keep_fonts": "Keep fonts",
- "save_load_hint": "\"Keep\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme.",
+ "save_load_hint": "\"Keep\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.",
"reset": "Reset",
"clear_all": "Clear all",
"clear_opacity": "Clear opacity"