fix(settings): use switch default value as store value fallback

The switch now uses the default value as a fallback for the stored value
and updates the switch state when stored value changes.
This commit is contained in:
2026-08-05 20:46:28 +02:00
committed by Gitea
parent d1e95582a8
commit d28eb0a9d3
+11 -3
View File
@@ -16,7 +16,7 @@ limitations under the License.
<script setup> <script setup>
import { useSettingsStore } from '../stores/settingsStore'; import { useSettingsStore } from '../stores/settingsStore';
import { useId } from 'vue'; import { ref, useId, watch } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
const { t } = useI18n(); const { t } = useI18n();
@@ -35,8 +35,16 @@ const switchId = useId();
const store = useSettingsStore(); const store = useSettingsStore();
const enabled = ref(null);
watch(store, (newStore) => {
enabled.value = newStore.get(props.path);
});
// set value after registering watcher to avoid immediate value change
enabled.value = store.get(props.path) ?? props.setting.default;
const toggle = function toggle () { const toggle = function toggle () {
store.set(props.path, !store.get(props.path)); enabled.value = !enabled.value;
store.set(props.path, enabled.value);
}; };
</script> </script>
@@ -47,7 +55,7 @@ const toggle = function toggle () {
</label> </label>
<div <div
class="switch-wrapper" class="switch-wrapper"
:class="{ enabled: store.get(props.path) }" :class="{ enabled }"
:title="t('settings.switch.title')" :title="t('settings.switch.title')"
:aria-label="t('settings.switch.ariaLabel')" :aria-label="t('settings.switch.ariaLabel')"
:aria-labelledby="labelId" :aria-labelledby="labelId"