/** * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ import type { FileStat, ResponseDataDetailed } from 'webdav' import type { ContentsWithRoot } from '@nextcloud/files' import { File, Folder, davResultToNode, getDavNameSpaces, getDavProperties } from '@nextcloud/files' import { client, rootPath } from './client' import { generateUrl } from '@nextcloud/router' const data = ` ${getDavProperties()} ` const resultToNode = (stat: FileStat): File | Folder => { const node = davResultToNode(stat, rootPath) node.attributes.previewUrl = generateUrl('/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32', { fileid: node.fileid }) return node } export const getContents = async (path = '/'): Promise => { const contentsResponse = await client.getDirectoryContents(`${rootPath}${path}`, { details: true, data, includeSelf: true, }) as ResponseDataDetailed const contents = contentsResponse.data.map(resultToNode) const [folder] = contents.splice(contents.findIndex((node) => node.dirname === path), 1) return { folder: folder as Folder, contents, } }