refactor(files): Migrate `personal` view to `@nextcloud/files` functions

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
pull/45788/head
Ferdinand Thiessen 6 months ago
parent de2276e6d7
commit 53324821be
No known key found for this signature in database
GPG Key ID: 45FAE7268762B400
  1. 45
      apps/files/src/services/PersonalFiles.ts

@ -2,39 +2,38 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { File, type ContentsWithRoot } from '@nextcloud/files'
import { getCurrentUser } from '@nextcloud/auth';
import type { Node, ContentsWithRoot } from '@nextcloud/files'
import type { CancelablePromise } from 'cancelable-promise'
import { getCurrentUser } from '@nextcloud/auth'
import { getContents as getFiles } from './Files';
import { getContents as getFiles } from './Files'
const currUserID = getCurrentUser()?.uid
const currentUserId = getCurrentUser()?.uid
/**
* NOTE MOVE TO @nextcloud/files
* @brief filters each file/folder on its shared status
* A personal file is considered a file that has all of the following properties:
* a.) the current user owns
* b.) the file is not shared with anyone
* c.) the file is not a group folder
* @param {FileStat} node that contains
* @return {Boolean}
* Filters each file/folder on its shared status
*
* A personal file is considered a file that has all of the following properties:
* 1. the current user owns
* 2. the file is not shared with anyone
* 3. the file is not a group folder
* @todo Move to `@nextcloud/files`
* @param node The node to check
*/
export const isPersonalFile = function(node: File): Boolean {
export const isPersonalFile = function(node: Node): boolean {
// the type of mounts that determine whether the file is shared
const sharedMountTypes = ["group", "shared"]
const sharedMountTypes = ['group', 'shared']
const mountType = node.attributes['mount-type']
// the check to determine whether the current logged in user is the owner / creator of the node
const currUserCreated = currUserID ? node.owner === currUserID : true
return currUserCreated && !sharedMountTypes.includes(mountType)
return currentUserId === node.owner && !sharedMountTypes.includes(mountType)
}
export const getContents = (path: string = "/"): Promise<ContentsWithRoot> => {
export const getContents = (path: string = '/'): CancelablePromise<ContentsWithRoot> => {
// get all the files from the current path as a cancellable promise
// then filter the files that the user does not own, or has shared / is a group folder
return getFiles(path)
.then(c => {
c.contents = c.contents.filter(isPersonalFile) as File[]
return c
return getFiles(path)
.then((content) => {
content.contents = content.contents.filter(isPersonalFile)
return content
})
}
}

Loading…
Cancel
Save