feat: enhance display name handling for WebDAV entries and directory collections
This commit is contained in:
parent
4a2f6032d2
commit
ed302d7156
|
|
@ -126,8 +126,12 @@ function pathFromUri(uri: string, baseUrl: string): string {
|
||||||
function toEntryInfo(e: WebDAVEntry, baseUrl: string): EntryInfo {
|
function toEntryInfo(e: WebDAVEntry, baseUrl: string): EntryInfo {
|
||||||
const rawPath = e.path && e.path.length > 0 ? e.path : e.uri;
|
const rawPath = e.path && e.path.length > 0 ? e.path : e.uri;
|
||||||
const fullPath = pathFromUri(rawPath, baseUrl);
|
const fullPath = pathFromUri(rawPath, baseUrl);
|
||||||
|
// Some servers (notably webdav3.py) report the full path as the
|
||||||
|
// <displayname> for collections. Always use the leaf of the resolved
|
||||||
|
// path so the UI shows a name, not a path.
|
||||||
|
const name = basename(fullPath) || e.name;
|
||||||
return {
|
return {
|
||||||
name: e.name,
|
name,
|
||||||
path: fullPath,
|
path: fullPath,
|
||||||
type: e.isDir ? 'folder' : 'file',
|
type: e.isDir ? 'folder' : 'file',
|
||||||
size: typeof e.size === 'number' ? e.size : 0,
|
size: typeof e.size === 'number' ? e.size : 0,
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,13 @@ class DirCollection(FileMember, Collection):
|
||||||
p = FileMember.getProperties(self) # inherit file properties
|
p = FileMember.getProperties(self) # inherit file properties
|
||||||
p['iscollection'] = 1
|
p['iscollection'] = 1
|
||||||
p['getcontenttype'] = DirCollection.COLLECTION_MIME_TYPE
|
p['getcontenttype'] = DirCollection.COLLECTION_MIME_TYPE
|
||||||
|
# Inherited displayname is `self.name`, which for a DirCollection is the
|
||||||
|
# full virtual path (e.g. "/sd/40 tracks/") because __init__ sets
|
||||||
|
# self.name = virdir. WebDAV clients expect a basename, so override it
|
||||||
|
# with just the leaf name.
|
||||||
|
leaf = os.path.basename(self.fsname.rstrip('/\\'))
|
||||||
|
if leaf:
|
||||||
|
p['displayname'] = leaf
|
||||||
return p
|
return p
|
||||||
|
|
||||||
def getMembers(self):
|
def getMembers(self):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user