Skip to content

Commit

Permalink
refactor(files): Migrate personal view to @nextcloud/files functions
Browse files Browse the repository at this point in the history
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
  • Loading branch information
susnux committed Jun 11, 2024
1 parent 6249a5f commit 1dfa923
Showing 1 changed file with 22 additions and 23 deletions.
45 changes: 22 additions & 23 deletions apps/files/src/services/PersonalFiles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
})
}
}

0 comments on commit 1dfa923

Please sign in to comment.