diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2023-12-17 16:44:29 +0100 |
---|---|---|
committer | John Molakvoæ <skjnldsv@protonmail.com> | 2023-12-19 09:21:00 +0100 |
commit | 6a67afff37a12fd9de12df64f8ac317a8a786dff (patch) | |
tree | ab514ab7dcf27ad42ac5be830a6ee322905dc640 | |
parent | 6fa377e90e269b1610aab2b40bba3e3ab78f0b4b (diff) | |
download | nextcloud-server-6a67afff37a12fd9de12df64f8ac317a8a786dff.tar.gz nextcloud-server-6a67afff37a12fd9de12df64f8ac317a8a786dff.zip |
fix(files): Use DAV functions from library to fix invalid source links
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
-rw-r--r-- | apps/files/src/services/Recent.ts | 80 |
1 files changed, 8 insertions, 72 deletions
diff --git a/apps/files/src/services/Recent.ts b/apps/files/src/services/Recent.ts index ecd43b90ecc..26c4babb5a2 100644 --- a/apps/files/src/services/Recent.ts +++ b/apps/files/src/services/Recent.ts @@ -2,6 +2,7 @@ * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> * * @author John Molakvoæ <skjnldsv@protonmail.com> + * @author Ferdinand Thiessen <opensource@fthiessen.de> * * @license AGPL-3.0-or-later * @@ -20,84 +21,19 @@ * */ import type { ContentsWithRoot } from '@nextcloud/files' -import type { FileStat, ResponseDataDetailed, DAVResultResponseProps } from 'webdav' +import type { FileStat, ResponseDataDetailed } from 'webdav' -import { Folder, Permission, getDavNameSpaces, getDavProperties } from '@nextcloud/files' -import { generateRemoteUrl } from '@nextcloud/router' import { getCurrentUser } from '@nextcloud/auth' +import { Folder, Permission, davGetRecentSearch, davGetClient, davResultToNode, davRootPath, davRemoteURL } from '@nextcloud/files' -import { getClient, rootPath } from './WebdavClient' -import { resultToNode } from './Files' - -const client = getClient(generateRemoteUrl('dav')) +const client = davGetClient() const lastTwoWeeksTimestamp = Math.round((Date.now() / 1000) - (60 * 60 * 24 * 14)) -const searchPayload = `<?xml version="1.0" encoding="UTF-8"?> -<d:searchrequest ${getDavNameSpaces()} - xmlns:ns="https://github.com/icewind1991/SearchDAV/ns"> - <d:basicsearch> - <d:select> - <d:prop> - ${getDavProperties()} - </d:prop> - </d:select> - <d:from> - <d:scope> - <d:href>/files/${getCurrentUser()?.uid}/</d:href> - <d:depth>infinity</d:depth> - </d:scope> - </d:from> - <d:where> - <d:and> - <d:or> - <d:not> - <d:eq> - <d:prop> - <d:getcontenttype/> - </d:prop> - <d:literal>httpd/unix-directory</d:literal> - </d:eq> - </d:not> - <d:eq> - <d:prop> - <oc:size/> - </d:prop> - <d:literal>0</d:literal> - </d:eq> - </d:or> - <d:gt> - <d:prop> - <d:getlastmodified/> - </d:prop> - <d:literal>${lastTwoWeeksTimestamp}</d:literal> - </d:gt> - </d:and> - </d:where> - <d:orderby> - <d:order> - <d:prop> - <d:getlastmodified/> - </d:prop> - <d:descending/> - </d:order> - </d:orderby> - <d:limit> - <d:nresults>100</d:nresults> - <ns:firstresult>0</ns:firstresult> - </d:limit> - </d:basicsearch> -</d:searchrequest>` - -interface ResponseProps extends DAVResultResponseProps { - permissions: string, - fileid: number, - size: number, -} export const getContents = async (path = '/'): Promise<ContentsWithRoot> => { const contentsResponse = await client.getDirectoryContents(path, { details: true, - data: searchPayload, + data: davGetRecentSearch(lastTwoWeeksTimestamp), headers: { // Patched in WebdavClient.ts method: 'SEARCH', @@ -112,11 +48,11 @@ export const getContents = async (path = '/'): Promise<ContentsWithRoot> => { return { folder: new Folder({ id: 0, - source: generateRemoteUrl('dav' + rootPath), - root: rootPath, + source: `${davRemoteURL}${davRootPath}`, + root: davRootPath, owner: getCurrentUser()?.uid || null, permissions: Permission.READ, }), - contents: contents.map(resultToNode), + contents: contents.map((r) => davResultToNode(r)), } } |