ability to pin items in navigation menu, initial draft version
This commit is contained in:
parent
732733f115
commit
6df9913354
@ -756,6 +756,9 @@ option {
|
|||||||
padding: 0 0.3em;
|
padding: 0 0.3em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.veryfaint {
|
||||||
|
opacity: 0.25;
|
||||||
|
}
|
||||||
|
|
||||||
.login-hint {
|
.login-hint {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -31,6 +31,66 @@ library.add(
|
|||||||
faList
|
faList
|
||||||
)
|
)
|
||||||
|
|
||||||
|
export const TIMELINES = {
|
||||||
|
home: {
|
||||||
|
route: 'friends',
|
||||||
|
anonRoute: 'public-timeline',
|
||||||
|
icon: 'home',
|
||||||
|
label: 'nav.home_timeline',
|
||||||
|
criteria: ['!private']
|
||||||
|
},
|
||||||
|
public: {
|
||||||
|
route: 'public-timeline',
|
||||||
|
anon: true,
|
||||||
|
icon: 'users',
|
||||||
|
label: 'nav.public_tl',
|
||||||
|
criteria: ['!private']
|
||||||
|
},
|
||||||
|
twkn: {
|
||||||
|
route: 'public-external-timeline',
|
||||||
|
anon: true,
|
||||||
|
icon: 'globe',
|
||||||
|
label: 'nav.twkn',
|
||||||
|
criteria: ['!private', 'federating']
|
||||||
|
},
|
||||||
|
bookmarks: {
|
||||||
|
route: 'bookmarks',
|
||||||
|
icon: 'bookmark',
|
||||||
|
label: 'nav.bookmarks'
|
||||||
|
},
|
||||||
|
dms: {
|
||||||
|
route: 'dms',
|
||||||
|
icon: 'envelope',
|
||||||
|
label: 'nav.dms'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export const ROOT_ITEMS = {
|
||||||
|
interactions: {
|
||||||
|
route: 'interactions',
|
||||||
|
icon: 'bell',
|
||||||
|
label: 'nav.interactions'
|
||||||
|
},
|
||||||
|
chats: {
|
||||||
|
route: 'chats',
|
||||||
|
icon: 'comments',
|
||||||
|
label: 'nav.chats',
|
||||||
|
badgeGetter: 'unreadChatCount'
|
||||||
|
},
|
||||||
|
friendRequests: {
|
||||||
|
route: 'friend-requests',
|
||||||
|
icon: 'user-plus',
|
||||||
|
label: 'nav.friend_requests',
|
||||||
|
criteria: ['lockedUser'],
|
||||||
|
badgeGetter: 'followRequestCount'
|
||||||
|
},
|
||||||
|
about: {
|
||||||
|
route: 'about',
|
||||||
|
anon: true,
|
||||||
|
icon: 'info-circle',
|
||||||
|
label: 'nav.about'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const NavPanel = {
|
const NavPanel = {
|
||||||
created () {
|
created () {
|
||||||
if (this.currentUser && this.currentUser.locked) {
|
if (this.currentUser && this.currentUser.locked) {
|
||||||
@ -43,8 +103,11 @@ const NavPanel = {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
collapsed: false,
|
||||||
showTimelines: false,
|
showTimelines: false,
|
||||||
showLists: false
|
showLists: false,
|
||||||
|
timelinesList: Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),
|
||||||
|
rootList: Object.entries(ROOT_ITEMS).map(([k, v]) => ({ ...v, name: k }))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -53,19 +116,57 @@ const NavPanel = {
|
|||||||
},
|
},
|
||||||
toggleLists () {
|
toggleLists () {
|
||||||
this.showLists = !this.showLists
|
this.showLists = !this.showLists
|
||||||
|
},
|
||||||
|
toggleCollapse () {
|
||||||
|
this.collapsed = !this.collapsed
|
||||||
|
},
|
||||||
|
isPinned (item) {
|
||||||
|
return this.pinnedItems.has(item)
|
||||||
|
},
|
||||||
|
togglePin (item) {
|
||||||
|
if (this.isPinned(item)) {
|
||||||
|
this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value: item })
|
||||||
|
} else {
|
||||||
|
this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value: item })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
listsNavigation () {
|
|
||||||
return this.$store.getters.mergedConfig.listsNavigation
|
|
||||||
},
|
|
||||||
...mapState({
|
...mapState({
|
||||||
currentUser: state => state.users.currentUser,
|
currentUser: state => state.users.currentUser,
|
||||||
followRequestCount: state => state.api.followRequests.length,
|
followRequestCount: state => state.api.followRequests.length,
|
||||||
privateMode: state => state.instance.private,
|
privateMode: state => state.instance.private,
|
||||||
federating: state => state.instance.federating,
|
federating: state => state.instance.federating,
|
||||||
pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable
|
pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,
|
||||||
|
pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)
|
||||||
}),
|
}),
|
||||||
|
rootItems () {
|
||||||
|
return Object
|
||||||
|
.entries({ ...ROOT_ITEMS })
|
||||||
|
.map(([k, v]) => ({ ...v, name: k }))
|
||||||
|
.filter(({ criteria, anon, anonRoute }) => {
|
||||||
|
const set = new Set(criteria || [])
|
||||||
|
if (!this.federating && set.has('federating')) return false
|
||||||
|
if (this.private && set.has('!private')) return false
|
||||||
|
if (!this.currentUser && !(anon || anonRoute)) return false
|
||||||
|
if ((!this.currentUser || !this.currentUser.locked) && set.has('lockedUser')) return false
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
},
|
||||||
|
pinnedList () {
|
||||||
|
return Object
|
||||||
|
.entries({ ...TIMELINES, ...ROOT_ITEMS })
|
||||||
|
.filter(([k]) => this.pinnedItems.has(k))
|
||||||
|
.map(([k, v]) => ({ ...v, name: k }))
|
||||||
|
.filter(({ criteria, anon, anonRoute }) => {
|
||||||
|
const set = new Set(criteria || [])
|
||||||
|
if (!this.federating && set.has('federating')) return false
|
||||||
|
if (this.private && set.has('!private')) return false
|
||||||
|
if (!this.currentUser && !(anon || anonRoute)) return false
|
||||||
|
if (this.currentUser && !this.currentUser.locked && set.has('locked')) return false
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
},
|
||||||
...mapGetters(['unreadChatCount'])
|
...mapGetters(['unreadChatCount'])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,33 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="NavPanel">
|
<div class="NavPanel">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<ul>
|
<div class="panel-heading">
|
||||||
|
<span>
|
||||||
|
<span v-for="item in pinnedList" :key="item.name" class="pinned-item">
|
||||||
|
<router-link
|
||||||
|
:to="{ name: (currentUser || item.anon) ? item.route : item.anonRoute, params: { username: currentUser.screen_name } }"
|
||||||
|
>
|
||||||
|
<FAIcon
|
||||||
|
fixed-width
|
||||||
|
class="fa-scale-110 fa-old-padding "
|
||||||
|
:icon="item.icon"
|
||||||
|
/>
|
||||||
|
</router-link>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<div class="spacer"/>
|
||||||
|
<button
|
||||||
|
class="button-unstyled"
|
||||||
|
@click="toggleCollapse"
|
||||||
|
>
|
||||||
|
<FAIcon
|
||||||
|
class="timelines-chevron"
|
||||||
|
fixed-width
|
||||||
|
:icon="collapsed ? 'chevron-down' : 'chevron-up'"
|
||||||
|
/>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<ul class="panel-body" v-if="!collapsed">
|
||||||
<li v-if="currentUser || !privateMode">
|
<li v-if="currentUser || !privateMode">
|
||||||
<button
|
<button
|
||||||
class="button-unstyled menu-item"
|
class="button-unstyled menu-item"
|
||||||
@ -22,29 +48,34 @@
|
|||||||
v-show="showTimelines"
|
v-show="showTimelines"
|
||||||
class="timelines-background"
|
class="timelines-background"
|
||||||
>
|
>
|
||||||
<TimelineMenuContent class="timelines" />
|
<TimelineMenuContent class="timelines" :content="timelinesList" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="currentUser && listsNavigation">
|
<li v-if="currentUser">
|
||||||
<button
|
<button
|
||||||
class="button-unstyled menu-item"
|
class="button-unstyled menu-item"
|
||||||
@click="toggleLists"
|
@click="toggleLists"
|
||||||
>
|
>
|
||||||
<router-link
|
|
||||||
:to="{ name: 'lists' }"
|
|
||||||
@click.stop
|
|
||||||
>
|
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
class="fa-scale-110"
|
class="fa-scale-110"
|
||||||
icon="list"
|
icon="list"
|
||||||
/>{{ $t("nav.lists") }}
|
/>{{ $t("nav.lists") }}
|
||||||
</router-link>
|
|
||||||
<FAIcon
|
<FAIcon
|
||||||
class="timelines-chevron"
|
class="timelines-chevron"
|
||||||
fixed-width
|
fixed-width
|
||||||
:icon="showLists ? 'chevron-up' : 'chevron-down'"
|
:icon="showLists ? 'chevron-up' : 'chevron-down'"
|
||||||
/>
|
/>
|
||||||
|
<router-link
|
||||||
|
:to="{ name: 'lists' }"
|
||||||
|
@click.stop
|
||||||
|
>
|
||||||
|
<FAIcon
|
||||||
|
class="timelines-chevron"
|
||||||
|
fixed-width
|
||||||
|
icon="wrench"
|
||||||
|
/>
|
||||||
|
</router-link>
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div
|
||||||
v-show="showLists"
|
v-show="showLists"
|
||||||
@ -53,83 +84,31 @@
|
|||||||
<ListsMenuContent class="timelines" />
|
<ListsMenuContent class="timelines" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="currentUser && !listsNavigation">
|
<li v-for="item in rootItems" :key="item.name">
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'lists' }"
|
class="menu-item"
|
||||||
@click.stop
|
:to="{ name: (currentUser || item.anon) ? item.route : item.anonRoute, params: { username: currentUser.screen_name } }"
|
||||||
>
|
>
|
||||||
|
<FAIcon
|
||||||
|
fixed-width
|
||||||
|
class="fa-scale-110 fa-old-padding "
|
||||||
|
:icon="item.icon"
|
||||||
|
/>{{ $t(item.label) }}
|
||||||
<button
|
<button
|
||||||
class="button-unstyled menu-item"
|
type="button"
|
||||||
@click="toggleLists"
|
class="button-unstyled"
|
||||||
>
|
@click.stop.prevent="togglePin(item.name)"
|
||||||
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
class="fa-scale-110"
|
class="fa-scale-110 fa-old-padding "
|
||||||
icon="list"
|
:class="{ 'veryfaint': !isPinned(item.name) }"
|
||||||
/>{{ $t("nav.lists") }}
|
:transform="!isPinned(item.name) ? 'rotate-45' : ''"
|
||||||
|
icon="thumbtack"
|
||||||
|
/>
|
||||||
</button>
|
</button>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li v-if="currentUser">
|
|
||||||
<router-link
|
|
||||||
class="menu-item"
|
|
||||||
:to="{ name: 'interactions', params: { username: currentUser.screen_name } }"
|
|
||||||
>
|
|
||||||
<FAIcon
|
|
||||||
fixed-width
|
|
||||||
class="fa-scale-110"
|
|
||||||
icon="bell"
|
|
||||||
/>{{ $t("nav.interactions") }}
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
<li v-if="currentUser && pleromaChatMessagesAvailable">
|
|
||||||
<router-link
|
|
||||||
class="menu-item"
|
|
||||||
:to="{ name: 'chats', params: { username: currentUser.screen_name } }"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
v-if="unreadChatCount"
|
|
||||||
class="badge badge-notification"
|
|
||||||
>
|
|
||||||
{{ unreadChatCount }}
|
|
||||||
</div>
|
|
||||||
<FAIcon
|
|
||||||
fixed-width
|
|
||||||
class="fa-scale-110"
|
|
||||||
icon="comments"
|
|
||||||
/>{{ $t("nav.chats") }}
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
<li v-if="currentUser && currentUser.locked">
|
|
||||||
<router-link
|
|
||||||
class="menu-item"
|
|
||||||
:to="{ name: 'friend-requests' }"
|
|
||||||
>
|
|
||||||
<FAIcon
|
|
||||||
fixed-width
|
|
||||||
class="fa-scale-110"
|
|
||||||
icon="user-plus"
|
|
||||||
/>{{ $t("nav.friend_requests") }}
|
|
||||||
<span
|
|
||||||
v-if="followRequestCount > 0"
|
|
||||||
class="badge badge-notification"
|
|
||||||
>
|
|
||||||
{{ followRequestCount }}
|
|
||||||
</span>
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<router-link
|
|
||||||
class="menu-item"
|
|
||||||
:to="{ name: 'about' }"
|
|
||||||
>
|
|
||||||
<FAIcon
|
|
||||||
fixed-width
|
|
||||||
class="fa-scale-110"
|
|
||||||
icon="info-circle"
|
|
||||||
/>{{ $t("nav.about") }}
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -246,5 +225,12 @@
|
|||||||
right: 0.6rem;
|
right: 0.6rem;
|
||||||
top: 1.25em;
|
top: 1.25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pinned-item {
|
||||||
|
.router-link-exact-active .svg-inline--fa {
|
||||||
|
color: $fallback--text;
|
||||||
|
color: var(--selectedMenuText, $fallback--text);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -124,11 +124,6 @@
|
|||||||
{{ $t('settings.hide_shoutbox') }}
|
{{ $t('settings.hide_shoutbox') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<BooleanSetting path="listsNavigation">
|
|
||||||
{{ $t('settings.lists_navigation') }}
|
|
||||||
</BooleanSetting>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<h3>{{ $t('settings.columns') }}</h3>
|
<h3>{{ $t('settings.columns') }}</h3>
|
||||||
</li>
|
</li>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
@close="() => isOpen = false"
|
@close="() => isOpen = false"
|
||||||
>
|
>
|
||||||
<template #content>
|
<template #content>
|
||||||
<TimelineMenuContent />
|
<TimelineMenuContent :content="timelinesList" />
|
||||||
</template>
|
</template>
|
||||||
<template #trigger>
|
<template #trigger>
|
||||||
<span class="button-unstyled title timeline-menu-title">
|
<span class="button-unstyled title timeline-menu-title">
|
||||||
|
@ -17,12 +17,35 @@ library.add(
|
|||||||
)
|
)
|
||||||
|
|
||||||
const TimelineMenuContent = {
|
const TimelineMenuContent = {
|
||||||
|
props: ['content'],
|
||||||
|
methods: {
|
||||||
|
isPinned (item) {
|
||||||
|
return this.pinnedItems.has(item)
|
||||||
|
},
|
||||||
|
togglePin (item) {
|
||||||
|
if (this.isPinned(item)) {
|
||||||
|
this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value: item })
|
||||||
|
} else {
|
||||||
|
this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value: item })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
currentUser: state => state.users.currentUser,
|
currentUser: state => state.users.currentUser,
|
||||||
privateMode: state => state.instance.private,
|
privateMode: state => state.instance.private,
|
||||||
federating: state => state.instance.federating
|
federating: state => state.instance.federating,
|
||||||
})
|
pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)
|
||||||
|
}),
|
||||||
|
list () {
|
||||||
|
return (this.content || []).filter(({ criteria, anon, anonRoute }) => {
|
||||||
|
const set = new Set(criteria || [])
|
||||||
|
if (!this.federating && set.has('federating')) return false
|
||||||
|
if (this.private && set.has('!private')) return false
|
||||||
|
if (!this.currentUser && !(anon || anonRoute)) return false
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,63 +1,28 @@
|
|||||||
<template>
|
<template>
|
||||||
<ul>
|
<ul>
|
||||||
<li v-if="currentUser">
|
<li v-for="item in list" :key="item.name">
|
||||||
<router-link
|
<router-link
|
||||||
class="menu-item"
|
class="menu-item"
|
||||||
:to="{ name: 'friends' }"
|
:to="{ name: (currentUser || item.anon) ? item.route : item.anonRoute, params: { username: currentUser.screen_name } }"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
class="fa-scale-110 fa-old-padding "
|
class="fa-scale-110 fa-old-padding "
|
||||||
icon="home"
|
:icon="item.icon"
|
||||||
/>{{ $t("nav.home_timeline") }}
|
/>{{ $t(item.label) }}
|
||||||
</router-link>
|
<button
|
||||||
</li>
|
type="button"
|
||||||
<li v-if="currentUser || !privateMode">
|
class="button-unstyled"
|
||||||
<router-link
|
@click.stop.prevent="togglePin(item.name)"
|
||||||
class="menu-item"
|
>
|
||||||
:to="{ name: 'public-timeline' }"
|
<FAIcon
|
||||||
>
|
fixed-width
|
||||||
<FAIcon
|
class="fa-scale-110 fa-old-padding "
|
||||||
fixed-width
|
:class="{ 'veryfaint': !isPinned(item.name) }"
|
||||||
class="fa-scale-110 fa-old-padding "
|
:transform="!isPinned(item.name) ? 'rotate-45' : ''"
|
||||||
icon="users"
|
icon="thumbtack"
|
||||||
/>{{ $t("nav.public_tl") }}
|
/>
|
||||||
</router-link>
|
</button>
|
||||||
</li>
|
|
||||||
<li v-if="federating && (currentUser || !privateMode)">
|
|
||||||
<router-link
|
|
||||||
class="menu-item"
|
|
||||||
:to="{ name: 'public-external-timeline' }"
|
|
||||||
>
|
|
||||||
<FAIcon
|
|
||||||
fixed-width
|
|
||||||
class="fa-scale-110 fa-old-padding "
|
|
||||||
icon="globe"
|
|
||||||
/>{{ $t("nav.twkn") }}
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
<li v-if="currentUser">
|
|
||||||
<router-link
|
|
||||||
class="menu-item"
|
|
||||||
:to="{ name: 'bookmarks'}"
|
|
||||||
>
|
|
||||||
<FAIcon
|
|
||||||
fixed-width
|
|
||||||
class="fa-scale-110 fa-old-padding "
|
|
||||||
icon="bookmark"
|
|
||||||
/>{{ $t("nav.bookmarks") }}
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
<li v-if="currentUser">
|
|
||||||
<router-link
|
|
||||||
class="menu-item"
|
|
||||||
:to="{ name: 'dms', params: { username: currentUser.screen_name } }"
|
|
||||||
>
|
|
||||||
<FAIcon
|
|
||||||
fixed-width
|
|
||||||
class="fa-scale-110 fa-old-padding "
|
|
||||||
icon="envelope"
|
|
||||||
/>{{ $t("nav.dms") }}
|
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -87,7 +87,6 @@ export const defaultState = {
|
|||||||
sidebarColumnWidth: '25rem',
|
sidebarColumnWidth: '25rem',
|
||||||
contentColumnWidth: '45rem',
|
contentColumnWidth: '45rem',
|
||||||
notifsColumnWidth: '25rem',
|
notifsColumnWidth: '25rem',
|
||||||
listsNavigation: false,
|
|
||||||
greentext: undefined, // instance default
|
greentext: undefined, // instance default
|
||||||
useAtIcon: undefined, // instance default
|
useAtIcon: undefined, // instance default
|
||||||
mentionLinkDisplay: undefined, // instance default
|
mentionLinkDisplay: undefined, // instance default
|
||||||
|
@ -23,6 +23,9 @@ export const defaultState = {
|
|||||||
_journal: [],
|
_journal: [],
|
||||||
simple: {
|
simple: {
|
||||||
dontShowUpdateNotifs: false
|
dontShowUpdateNotifs: false
|
||||||
|
},
|
||||||
|
collections: {
|
||||||
|
pinnedNavItems: ['home', 'dms', 'chats', 'about']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// raw data
|
// raw data
|
||||||
@ -274,8 +277,8 @@ export const mutations = {
|
|||||||
|
|
||||||
totalFlags = _resetFlags(totalFlags)
|
totalFlags = _resetFlags(totalFlags)
|
||||||
|
|
||||||
recent.flagStorage = totalFlags
|
recent.flagStorage = { ...flagsTemplate, ...totalFlags }
|
||||||
recent.prefsStorage = totalPrefs
|
recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs }
|
||||||
|
|
||||||
state.dirty = dirty || needsUpload
|
state.dirty = dirty || needsUpload
|
||||||
state.cache = recent
|
state.cache = recent
|
||||||
@ -320,7 +323,7 @@ export const mutations = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
const collection = new Set(get(state.prefsStorage, path))
|
const collection = new Set(get(state.prefsStorage, path))
|
||||||
collection.remove(value)
|
collection.delete(value)
|
||||||
set(state.prefsStorage, path, collection)
|
set(state.prefsStorage, path, collection)
|
||||||
state.prefsStorage._journal = [
|
state.prefsStorage._journal = [
|
||||||
...state.prefsStorage._journal,
|
...state.prefsStorage._journal,
|
||||||
|
Loading…
Reference in New Issue
Block a user