summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2023-12-17 16:44:29 +0100
committerFerdinand Thiessen <opensource@fthiessen.de>2023-12-21 18:17:41 +0100
commitc19445f42dbd17907e48fff9d75bc554db607dbe (patch)
tree4b9488c7553e075fdc2bac02b6c0f163ec5e7798 /apps
parentfc51c966763c9949fbd035d140de6fa9e7af9888 (diff)
downloadnextcloud-server-c19445f42dbd17907e48fff9d75bc554db607dbe.tar.gz
nextcloud-server-c19445f42dbd17907e48fff9d75bc554db607dbe.zip
fix(files): Use DAV functions from library to fix invalid source links
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps')
-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)),
}
}