logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://anongit.hacktivis.me/git/pleroma-fe.git/
commit: 81d9537f9d00ab18cab4305344d7563fb6418ddd
parent 13838a75a9b5b0f2b59fa5b10675952e1b7cae11
Author: Henry Jameson <me@hjkos.com>
Date:   Thu,  3 Oct 2024 23:03:33 +0300

show warning about palettes being unsupported when using v2 theme

Diffstat:

Msrc/components/settings_modal/tabs/appearance_tab.js18+++++++++++++-----
Msrc/components/settings_modal/tabs/appearance_tab.scss4++++
Msrc/components/settings_modal/tabs/appearance_tab.vue45++++++++++++++++++++++++++-------------------
Msrc/i18n/en.json3++-
Msrc/modules/interface.js5++++-
5 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/src/components/settings_modal/tabs/appearance_tab.js b/src/components/settings_modal/tabs/appearance_tab.js @@ -34,7 +34,7 @@ const AppearanceTab = { return { availableStyles: [], availablePalettes: [], - themeImporter: newImporter({ + fileImporter: newImporter({ accept: '.json, .piss', validator: this.importValidator, onImport: this.onImport, @@ -179,6 +179,10 @@ const AppearanceTab = { this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val }) } }, + customThemeVersion () { + const { themeVersion } = this.$store.state.interface + return themeVersion + }, isCustomThemeUsed () { const { theme } = this.mergedConfig return theme === 'custom' @@ -202,8 +206,8 @@ const AppearanceTab = { } }) }, - importTheme () { - this.themeImporter.importData() + importFile () { + this.fileImporter.importData() }, onImport (parsed, filename) { if (filename.endsWith('.json')) { @@ -234,14 +238,18 @@ const AppearanceTab = { const { palette } = this.mergedConfig return key === palette }, - importStyle () { - + setStyle (name) { + this.$store.dispatch('resetThemeV2') + this.$store.dispatch('setTheme', name) + this.$store.dispatch('applyTheme') }, setTheme (name) { + this.$store.dispatch('resetThemeV3') this.$store.dispatch('setTheme', name) this.$store.dispatch('applyTheme') }, setPalette (name) { + this.$store.dispatch('resetThemeV2') this.$store.dispatch('setPalette', name) this.$store.dispatch('applyTheme') }, diff --git a/src/components/settings_modal/tabs/appearance_tab.scss b/src/components/settings_modal/tabs/appearance_tab.scss @@ -24,6 +24,10 @@ display: grid; grid-template-columns: 1fr 1fr; grid-gap: 0.5em; + + .unsupported-theme-v2 { + grid-column: 1 / span 2; + } } .palette-entry { diff --git a/src/components/settings_modal/tabs/appearance_tab.vue b/src/components/settings_modal/tabs/appearance_tab.vue @@ -7,7 +7,7 @@ <h2>{{ $t('settings.theme') }}</h2> <button class="btn button-default" - @click="importTheme" + @click="importFile" > <FAIcon icon="folder-open" /> {{ $t('settings.style.themes3.editor.load_style') }} @@ -30,7 +30,7 @@ v-html="previewTheme('stock')" /> <!-- eslint-enable vue/no-v-text-v-html-on-component --> - <preview /> + <preview id="theme-preview-stock" /> <h4 class="theme-name"> {{ $t('settings.style.stock_theme_used') }} <span class="alert neutral version">v3</span> @@ -71,23 +71,30 @@ </ul> <h3>{{ $t('settings.style.themes3.palette.label') }}</h3> <div class="palettes"> - <button - v-for="p in availablePalettes" - :key="p.name" - class="btn button-default palette-entry" - :class="{ toggled: isPaletteActive(p.key) }" - @click="() => setPalette(p.key)" - > - <label> - {{ p.name }} - </label> - <span - v-for="c in palettesKeys" - :key="c" - class="palette-square" - :style="{ backgroundColor: p[c], border: '1px solid ' + (p[c] ?? 'var(--text)') }" - /> - </button> + <template v-if="customThemeVersion === 'v3'"> + <button + v-for="p in availablePalettes" + :key="p.name" + class="btn button-default palette-entry" + :class="{ toggled: isPaletteActive(p.key) }" + @click="() => setPalette(p.key)" + > + <label> + {{ p.name }} + </label> + <span + v-for="c in palettesKeys" + :key="c" + class="palette-square" + :style="{ backgroundColor: p[c], border: '1px solid ' + (p[c] ?? 'var(--text)') }" + /> + </button> + </template> + <template v-else-if="customThemeVersion === 'v2'"> + <div class="alert neutral theme-notice unsupported-theme-v2"> + {{$t('settings.style.themes3.palette.v2_unsupported')}} + </div> + </template> </div> </div> <div class="alert neutral theme-notice"> diff --git a/src/i18n/en.json b/src/i18n/en.json @@ -771,7 +771,8 @@ "cOrange": "Orange color", "extra1": "Extra 1", "extra2": "Extra 2", - "extra3": "Extra 3" + "extra3": "Extra 3", + "v2_unsupported": "Older v2 themes don't support palettes. Switch to v3 theme to make use of palettes", }, "editor": { "title": "Style", diff --git a/src/modules/interface.js b/src/modules/interface.js @@ -5,6 +5,7 @@ import { convertTheme2To3 } from 'src/services/theme_data/theme2_to_theme3.js' const defaultState = { localFonts: null, themeApplied: false, + themeVersion: 'v3', temporaryChangesTimeoutId: null, // used for temporary options that revert after a timeout temporaryChangesConfirm: () => {}, // used for applying temporary options temporaryChangesRevert: () => {}, // used for reverting temporary options @@ -307,7 +308,7 @@ const interfaceMod = { commit('setOption', { name: 'customThemeSource', value: null }) }, async applyTheme ( - { dispatch, commit, rootState }, + { dispatch, commit, rootState, state }, { recompile = true } = {} ) { // If we're not not forced to recompile try using @@ -398,6 +399,8 @@ const interfaceMod = { majorVersionUsed = 'v3' } + state.themeVersion = majorVersionUsed + let styleDataUsed = null let styleNameUsed = null let paletteDataUsed = null