mirror of
https://github.com/nextcloud/server.git
synced 2026-04-21 22:27:31 -04:00
feat(files): hide "Personal files" and "Shared with others" views if user has no quota
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
This commit is contained in:
parent
efa5632bba
commit
baeff57232
3 changed files with 48 additions and 13 deletions
|
|
@ -7,8 +7,15 @@ import { View, getNavigation } from '@nextcloud/files'
|
|||
|
||||
import { getContents } from '../services/PersonalFiles'
|
||||
import AccountIcon from '@mdi/svg/svg/account.svg?raw'
|
||||
import { loadState } from '@nextcloud/initial-state'
|
||||
|
||||
export default () => {
|
||||
// Don't show this view if the user has no storage quota
|
||||
const storageStats = loadState('files', 'storageStats', { quota: -1 })
|
||||
if (storageStats.quota === 0) {
|
||||
return
|
||||
}
|
||||
|
||||
const Navigation = getNavigation()
|
||||
Navigation.register(new View({
|
||||
id: 'personal',
|
||||
|
|
|
|||
|
|
@ -5,8 +5,10 @@
|
|||
/* eslint-disable n/no-extraneous-import */
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import type { OCSResponse } from '@nextcloud/typings/ocs'
|
||||
import { Folder, Navigation, View, getNavigation } from '@nextcloud/files'
|
||||
|
||||
import { beforeEach, describe, expect, test, vi } from 'vitest'
|
||||
import { Folder, Navigation, View, getNavigation } from '@nextcloud/files'
|
||||
import * as ncInitialState from '@nextcloud/initial-state'
|
||||
import axios from '@nextcloud/axios'
|
||||
|
||||
import '../main'
|
||||
|
|
@ -72,6 +74,27 @@ describe('Sharing views definition', () => {
|
|||
expect(view?.getContents).toBeDefined()
|
||||
})
|
||||
})
|
||||
|
||||
test('Shared with others view is not registered if user has no storage quota', () => {
|
||||
vi.spyOn(Navigation, 'register')
|
||||
const spy = vi.spyOn(ncInitialState, 'loadState').mockImplementationOnce(() => ({ quota: 0 }))
|
||||
|
||||
expect(Navigation.views.length).toBe(0)
|
||||
registerSharingViews()
|
||||
expect(Navigation.register).toHaveBeenCalledTimes(6)
|
||||
expect(Navigation.views.length).toBe(6)
|
||||
|
||||
const shareOverviewView = Navigation.views.find(view => view.id === 'shareoverview') as View
|
||||
const sharesChildViews = Navigation.views.filter(view => view.parent === 'shareoverview') as View[]
|
||||
expect(shareOverviewView).toBeDefined()
|
||||
expect(sharesChildViews.length).toBe(5)
|
||||
|
||||
expect(spy).toHaveBeenCalled()
|
||||
expect(spy).toHaveBeenCalledWith('files', 'storageStats', { quota: -1 })
|
||||
|
||||
const sharedWithOthersView = Navigation.views.find(view => view.id === 'sharingout')
|
||||
expect(sharedWithOthersView).toBeUndefined()
|
||||
})
|
||||
})
|
||||
|
||||
describe('Sharing views contents', () => {
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import FileUploadSvg from '@mdi/svg/svg/file-upload.svg?raw'
|
|||
import LinkSvg from '@mdi/svg/svg/link.svg?raw'
|
||||
|
||||
import { getContents, isFileRequest } from '../services/SharingService'
|
||||
import { loadState } from '@nextcloud/initial-state'
|
||||
|
||||
export const sharesViewId = 'shareoverview'
|
||||
export const sharedWithYouViewId = 'sharingin'
|
||||
|
|
@ -58,22 +59,26 @@ export default () => {
|
|||
getContents: () => getContents(true, false, false, false),
|
||||
}))
|
||||
|
||||
Navigation.register(new View({
|
||||
id: sharedWithOthersViewId,
|
||||
name: t('files_sharing', 'Shared with others'),
|
||||
caption: t('files_sharing', 'List of files that you shared with others.'),
|
||||
// Don't show this view if the user has no storage quota
|
||||
const storageStats = loadState('files', 'storageStats', { quota: -1 })
|
||||
if (storageStats.quota !== 0) {
|
||||
Navigation.register(new View({
|
||||
id: sharedWithOthersViewId,
|
||||
name: t('files_sharing', 'Shared with others'),
|
||||
caption: t('files_sharing', 'List of files that you shared with others.'),
|
||||
|
||||
emptyTitle: t('files_sharing', 'Nothing shared yet'),
|
||||
emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'),
|
||||
emptyTitle: t('files_sharing', 'Nothing shared yet'),
|
||||
emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'),
|
||||
|
||||
icon: AccountGroupSvg,
|
||||
order: 2,
|
||||
parent: sharesViewId,
|
||||
icon: AccountGroupSvg,
|
||||
order: 2,
|
||||
parent: sharesViewId,
|
||||
|
||||
columns: [],
|
||||
columns: [],
|
||||
|
||||
getContents: () => getContents(false, true, false, false),
|
||||
}))
|
||||
getContents: () => getContents(false, true, false, false),
|
||||
}))
|
||||
}
|
||||
|
||||
Navigation.register(new View({
|
||||
id: sharingByLinksViewId,
|
||||
|
|
|
|||
Loading…
Reference in a new issue