fix loading settings from fresh install

This commit is contained in:
joshuaboud 2022-05-17 12:56:14 -03:00
parent e54b028e34
commit 11182d0cf2
No known key found for this signature in database
GPG Key ID: 17EFB59E2A8BF50E

View File

@ -11,132 +11,134 @@
@apply="showMenu = false"
>
<div class="flex flex-col gap-content items-start">
<div class="inline-flex flex-col gap-content">
<LabelledSwitch v-model="darkMode">Dark mode</LabelledSwitch>
<LabelledSwitch v-model="settings.directoryView.showHidden">Show hidden files</LabelledSwitch>
<LabelledSwitch
v-model="booleanAnalogs.directoryView.view.bool"
>List view</LabelledSwitch>
<LabelledSwitch v-model="settings.directoryView.separateDirs">Separate directories while sorting</LabelledSwitch>
</div>
<div v-if="booleanAnalogs.directoryView.view.bool" class="self-stretch">
<div>List view columns</div>
<div
class="flex justify-start text-sm rounded-lg divide-x divide-default border border-default shadow"
>
<div class="flex flex-col grow items-stretch">
<div class="font-semibold px-2">Visible</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.mode"
@click="settings.directoryView.cols.mode = !settings.directoryView.cols.mode"
>
Mode
<ChevronRightIcon class="size-icon-sm icon-default" />
<template v-if="settings.directoryView">
<div class="inline-flex flex-col gap-content">
<LabelledSwitch v-model="darkMode">Dark mode</LabelledSwitch>
<LabelledSwitch v-model="settings.directoryView.showHidden">Show hidden files</LabelledSwitch>
<LabelledSwitch v-model="booleanAnalogs.directoryView.view.bool">List view</LabelledSwitch>
<LabelledSwitch
v-model="settings.directoryView.separateDirs"
>Separate directories while sorting</LabelledSwitch>
</div>
<div v-if="booleanAnalogs.directoryView.view.bool" class="self-stretch">
<div>List view columns</div>
<div
class="flex justify-start text-sm rounded-lg divide-x divide-default border border-default shadow"
>
<div class="flex flex-col grow items-stretch">
<div class="font-semibold px-2">Visible</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.mode"
@click="settings.directoryView.cols.mode = !settings.directoryView.cols.mode"
>
Mode
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.owner"
@click="settings.directoryView.cols.owner = !settings.directoryView.cols.owner"
>
Owner
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.group"
@click="settings.directoryView.cols.group = !settings.directoryView.cols.group"
>
Group
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.size"
@click="settings.directoryView.cols.size = !settings.directoryView.cols.size"
>
Size
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.ctime"
@click="settings.directoryView.cols.ctime = !settings.directoryView.cols.ctime"
>
Created
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.mtime"
@click="settings.directoryView.cols.mtime = !settings.directoryView.cols.mtime"
>
Modified
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.atime"
@click="settings.directoryView.cols.atime = !settings.directoryView.cols.atime"
>
Accessed
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.owner"
@click="settings.directoryView.cols.owner = !settings.directoryView.cols.owner"
>
Owner
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.group"
@click="settings.directoryView.cols.group = !settings.directoryView.cols.group"
>
Group
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.size"
@click="settings.directoryView.cols.size = !settings.directoryView.cols.size"
>
Size
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.ctime"
@click="settings.directoryView.cols.ctime = !settings.directoryView.cols.ctime"
>
Created
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.mtime"
@click="settings.directoryView.cols.mtime = !settings.directoryView.cols.mtime"
>
Modified
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2"
v-if="settings.directoryView.cols.atime"
@click="settings.directoryView.cols.atime = !settings.directoryView.cols.atime"
>
Accessed
<ChevronRightIcon class="size-icon-sm icon-default" />
</div>
</div>
<div class="flex flex-col grow text-right items-stretch">
<div class="font-semibold px-2">Hidden</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.mode"
@click="settings.directoryView.cols.mode = !settings.directoryView.cols.mode"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Mode
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.owner"
@click="settings.directoryView.cols.owner = !settings.directoryView.cols.owner"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Owner
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.group"
@click="settings.directoryView.cols.group = !settings.directoryView.cols.group"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Group
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.size"
@click="settings.directoryView.cols.size = !settings.directoryView.cols.size"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Size
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.ctime"
@click="settings.directoryView.cols.ctime = !settings.directoryView.cols.ctime"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Created
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.mtime"
@click="settings.directoryView.cols.mtime = !settings.directoryView.cols.mtime"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Modified
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.atime"
@click="settings.directoryView.cols.atime = !settings.directoryView.cols.atime"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Accessed
<div class="flex flex-col grow text-right items-stretch">
<div class="font-semibold px-2">Hidden</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.mode"
@click="settings.directoryView.cols.mode = !settings.directoryView.cols.mode"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Mode
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.owner"
@click="settings.directoryView.cols.owner = !settings.directoryView.cols.owner"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Owner
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.group"
@click="settings.directoryView.cols.group = !settings.directoryView.cols.group"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Group
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.size"
@click="settings.directoryView.cols.size = !settings.directoryView.cols.size"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Size
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.ctime"
@click="settings.directoryView.cols.ctime = !settings.directoryView.cols.ctime"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Created
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.mtime"
@click="settings.directoryView.cols.mtime = !settings.directoryView.cols.mtime"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Modified
</div>
<div
class="rounded-lg hover:bg-accent cursor-pointer flex flex-row gap-1 items-center px-2 justify-end"
v-if="!settings.directoryView.cols.atime"
@click="settings.directoryView.cols.atime = !settings.directoryView.cols.atime"
>
<ChevronLeftIcon class="size-icon-sm icon-default" />Accessed
</div>
</div>
</div>
</div>
</div>
</template>
</div>
</ModalPopup>
</template>
@ -191,17 +193,17 @@ export default {
...storedSettings,
directoryView: {
...defaultSettings.directoryView,
...storedSettings.directoryView,
...(storedSettings.directoryView ?? {}),
cols: {
...defaultSettings.directoryView.cols,
...storedSettings.directoryView.cols,
...(storedSettings.directoryView?.cols ?? {}),
}
},
});
watch(settings, () => {
localStorage.setItem(settingsStorageKey, JSON.stringify(settings));
booleanAnalogs.directoryView.view.bool = settings.directoryView.view === booleanAnalogs.directoryView.view.trueValue;
booleanAnalogs.directoryView.view.bool = settings.directoryView?.view === booleanAnalogs.directoryView.view.trueValue;
}, { immediate: true });
watch(booleanAnalogs, () => {