/** * @copyright Copyright (c) 2023 John Molakvoæ * * @author John Molakvoæ * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ import Vue from 'vue' import { mapState } from 'pinia' import { useViewConfigStore } from '../store/viewConfig' import { Navigation, View } from '@nextcloud/files' export default Vue.extend({ computed: { ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']), currentView(): View { return (this.$navigation as Navigation).active as View }, /** * Get the sorting mode for the current view */ sortingMode(): string { return this.getConfig(this.currentView.id)?.sorting_mode as string || this.currentView?.defaultSortKey || 'basename' }, /** * Get the sorting direction for the current view */ isAscSorting(): boolean { const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction return sortingDirection !== 'desc' }, }, methods: { toggleSortBy(key: string) { // If we're already sorting by this key, flip the direction if (this.sortingMode === key) { this.toggleSortingDirection(this.currentView.id) return } // else sort ASC by this new key this.setSortingBy(key, this.currentView.id) }, }, })