feat: store settings on cookie
All checks were successful
repod / xml (push) Successful in 16s
repod / php (push) Successful in 1m2s
repod / nodejs (push) Successful in 2m3s
repod / release (push) Has been skipped

This commit is contained in:
Michel Roux 2024-01-17 18:10:34 +01:00
parent 87294d1881
commit c137774b39
2 changed files with 50 additions and 5 deletions

View File

@ -8,9 +8,9 @@
{{ t('repod', 'Playback speed') }}
</label>
<div>
<Minus class="pointer" :size="20" @click="changeRate(-.5)" />
<Minus class="pointer" :size="20" @click="changeRate(player.rate - .5)" />
<NcCounterBubble>x{{ player.rate }}</NcCounterBubble>
<Plus class="pointer" :size="20" @click="changeRate(.5)" />
<Plus class="pointer" :size="20" @click="changeRate(player.rate + .5)" />
</div>
</div>
</NcAppNavigationSettings>
@ -18,6 +18,7 @@
<script>
import { NcAppNavigationSettings, NcCounterBubble } from '@nextcloud/vue'
import { getSetting, setSetting } from '../../utils/cookie.js'
import Minus from 'vue-material-design-icons/Minus.vue'
import Plus from 'vue-material-design-icons/Plus.vue'
import Speedometer from 'vue-material-design-icons/Speedometer.vue'
@ -40,10 +41,17 @@ export default {
return this.$store.state.player
},
},
mounted() {
const rate = getSetting('rate')
if (rate) {
this.changeRate(rate)
}
},
methods: {
changeRate(diff) {
if (this.player.rate + diff > 0) {
this.$store.dispatch('player/rate', this.player.rate + diff)
changeRate(rate) {
if (rate > 0) {
this.$store.dispatch('player/rate', rate)
setSetting('rate', rate)
}
},
},

37
src/utils/cookie.js Normal file
View File

@ -0,0 +1,37 @@
// https://grafikart.fr/tutoriels/javascript-cookies-2079
const getCookie = (name) => {
const cookies = document.cookie.split('; ')
const value = cookies
.find(c => c.startsWith(name + '='))
?.split('=')[1]
if (value === undefined) {
return null
}
return decodeURIComponent(value)
}
const setCookie = (name, value, days) => {
const date = new Date()
date.setDate(date.getDate() + days)
document.cookie = `${name}=${encodeURIComponent(value)}; Expires=${date.toUTCString()} SameSite=Strict;`
}
export const getSetting = (name) => {
const cookie = getCookie('repod')
try {
const settings = JSON.parse(cookie) ?? {}
return settings[name]
} catch (e) {
return null
}
}
export const setSetting = (name, value) => {
const cookie = getCookie('repod')
let settings = {}
try {
settings = JSON.parse(cookie) ?? {}
} catch (e) {}
settings[name] = value
setCookie('repod', JSON.stringify(settings), 100)
}