From 63880cec610fc7ef00b3787baf5c17a658a8b6a0 Mon Sep 17 00:00:00 2001 From: dena Date: Tue, 24 Sep 2024 19:49:05 +0200 Subject: [PATCH] refactor skin Card --- .../Pages/ManageWiki/Cards/Skin.vue | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/src/components/Pages/ManageWiki/Cards/Skin.vue b/src/components/Pages/ManageWiki/Cards/Skin.vue index e6264ff0..2dc76a58 100644 --- a/src/components/Pages/ManageWiki/Cards/Skin.vue +++ b/src/components/Pages/ManageWiki/Cards/Skin.vue @@ -6,12 +6,10 @@ :items="items" label="Skin" placeholder="Pick a Skin" - hint="The default skin is Vector." + hint="The default skin is Vector legacy (2010)." persistent-hint prepend-icon="mdi-web" v-model="skin" - :disabled="inFlight" - :error-messages="error" > @@ -22,6 +20,18 @@ It may take up to 10 seconds for changes to be reflected on your wiki + + {{ message.text }} + + @@ -33,35 +43,45 @@ export default { ], data () { return { - items: [ - 'Vector', - 'Modern', - 'Timeless' - ], + skins: { + 'Vector legacy (2010)':'vector', + 'Vector (2022)':'vector-2022', + 'MinervaNeue':'minerva', + 'Modern':'modern', + 'Timeless':'timeless' + }, skin: '', - inFlight: false, - error: '' + message: false + } + }, + computed: { + items() { + return Object.entries(this.skins).map(([key, value]) => key); } }, created () { const skin = this.$store.state.wikis.currentWikiSettings.wgDefaultSkin - this.skin = skin.charAt(0).toUpperCase() + skin.slice(1) + this.skin = Object.entries(this.skins).find( + ([key, value]) => value === skin + )?.[0]; // use first result from 'find' if it exists }, methods: { doSetSkin () { const wiki = this.wikiId - // API needs the skin ID which is lower case.. - const value = this.skin.toLowerCase() + const value = this.skins[this.skin] this.$store .dispatch('updateSkin', { wiki, value }) .then(() => { - alert('Update success!') + this.showMessage('success', 'Your default skin has been updated.') }) .catch(err => { console.log(err.response) - alert('Something went wrong.') + this.showMessage('error', `Something went wrong while saving your default skin. Please try again.`) }) + }, + showMessage (status, message) { + this.message = { status: status, text: message, show: true } } } }