aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2023-12-17 16:44:29 +0100
committerJohn Molakvoæ <skjnldsv@protonmail.com>2023-12-19 09:21:00 +0100
commit6a67afff37a12fd9de12df64f8ac317a8a786dff (patch)
treeab514ab7dcf27ad42ac5be830a6ee322905dc640
parent6fa377e90e269b1610aab2b40bba3e3ab78f0b4b (diff)
downloadnextcloud-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.ts80
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)),
}
}