@nextcloud/files

Nextcloud Files helpers for Nextcloud apps and libraries.
This library provides three kinds of utils:
- WebDAV helper functions to work with the Nextcloud WebDAV interface.
Those functions are available in
@nextcloud/files/dav
- Geneal purpose function related to files or folders, like filename validation.
- Functions and classes to interact with the Nextcloud files app, like registering a new view or a file action.
Usage examples
Files app
The "New"-menu allows to create new entries or upload files, it is also possible for other apps to register their own actions here.
import type { Entry } from '@nextcloud/files'
import { addNewFileMenuEntry } from '@nextcloud/files'
import { t } from '@nextcloud/l10n'
const myEntry: Entry = {
id: 'my-app',
displayName: t('my-app', 'New something'),
iconSvgInline: importedSVGFile,
handler(context: Folder, content: Node[]): void {
}
}
addNewFileMenuEntry(myEntry)
WebDAV
The getClient
exported function returns a webDAV client that's a wrapper around webdav's webDAV client.
All its methods are available here.
Using WebDAV to query favorite nodes
import { getClient, defaultRootPath, getFavoriteNodes } from '@nextcloud/files/dav'
const client = getClient()
const favorites = await getFavoriteNodes(client)
const favorites = await getFavoriteNodes(client, '/', defaultRootPath)
Using WebDAV to list all nodes in directory
import {
getClient,
getDefaultPropfind,
resultToNode,
defaultRootPath,
defaultRemoteURL
} from '@nextcloud/files/dav'
const client = getClient()
const client = getClient(defaultRemoteURL)
const client = getClient('https://example.com/dav')
const path = '/my-folder/'
const results = client.getDirectoryContents(`${defaultRootPath}${path}`, {
details: true,
data: getDefaultPropfind()
})
const nodes = results.data.map((result) => resultToNode(r))
const nodes = results.data.map((result) => resultToNode(r, myRoot))
const nodes = results.data.map((result) => resultToNode(r, myRoot, myRemoteURL))
Using WebDAV to get a Node from a file's name
import { getClient, davGetDefaultPropfind, resultToNode, davRootPath } from '@nextcloud/files'
import { emit } from '@nextcloud/event-bus'
const client = getClient()
client.stat(`${davRootPath}${filename}`, {
details: true,
data: davGetDefaultPropfind(),
}).then((result) => {
const node = resultToNode(result.data)
emit('files:node:updated', node)
})