diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2023-04-18 09:43:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-18 09:43:09 +0200 |
commit | f7cca5c1a3fa3e0fb5f23e9e1bb484e75f68a14f (patch) | |
tree | 302b14a5a8a5c3b07cabc3595caba53500eca238 /apps/files/src/views/Navigation.vue | |
parent | ff58cd52279cccfbda0cc4683f1194d6c7ee283b (diff) | |
parent | d7ab8da1ef7decb512d68b038fc7e92758fbb518 (diff) | |
download | nextcloud-server-f7cca5c1a3fa3e0fb5f23e9e1bb484e75f68a14f.tar.gz nextcloud-server-f7cca5c1a3fa3e0fb5f23e9e1bb484e75f68a14f.zip |
Merge pull request #37731 from nextcloud/feat/viewconfig-api
feat(files): add view config service to store user-config per view
Diffstat (limited to 'apps/files/src/views/Navigation.vue')
-rw-r--r-- | apps/files/src/views/Navigation.vue | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/apps/files/src/views/Navigation.vue b/apps/files/src/views/Navigation.vue index 26ac99c15d3..cc714964c9b 100644 --- a/apps/files/src/views/Navigation.vue +++ b/apps/files/src/views/Navigation.vue @@ -27,7 +27,7 @@ :allow-collapse="true" :data-cy-files-navigation-item="view.id" :icon="view.iconClass" - :open="view.expanded" + :open="isExpanded(view)" :pinned="view.sticky" :title="view.name" :to="generateToNavigation(view)" @@ -74,20 +74,18 @@ <script> import { emit, subscribe } from '@nextcloud/event-bus' -import { generateUrl } from '@nextcloud/router' import { translate } from '@nextcloud/l10n' - -import axios from '@nextcloud/axios' import Cog from 'vue-material-design-icons/Cog.vue' import NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js' import NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js' import NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js' +import { setPageHeading } from '../../../../core/src/OCP/accessibility.js' +import { useViewConfigStore } from '../store/viewConfig.ts' import logger from '../logger.js' import Navigation from '../services/Navigation.ts' import NavigationQuota from '../components/NavigationQuota.vue' import SettingsModal from './Settings.vue' -import { setPageHeading } from '../../../../core/src/OCP/accessibility.js' export default { name: 'Navigation', @@ -109,6 +107,13 @@ export default { }, }, + setup() { + const viewConfigStore = useViewConfigStore() + return { + viewConfigStore, + } + }, + data() { return { settingsOpened: false, @@ -245,8 +250,22 @@ export default { */ onToggleExpand(view) { // Invert state - view.expanded = !view.expanded - axios.post(generateUrl(`/apps/files/api/v1/toggleShowFolder/${view.id}`), { show: view.expanded }) + const isExpanded = this.isExpanded(view) + // Update the view expanded state, might not be necessary + view.expanded = !isExpanded + this.viewConfigStore.update(view.id, 'expanded', !isExpanded) + }, + + /** + * Check if a view is expanded by user config + * or fallback to the default value. + * + * @param {Navigation} view the view to check + */ + isExpanded(view) { + return typeof this.viewConfigStore.getConfig(view.id)?.expanded === 'boolean' + ? this.viewConfigStore.getConfig(view.id).expanded === true + : view.expanded === true }, /** |