ultisuite-client/lib/drive/display-file-name.ts
R3D347HR4Y 6ec95262af Add OnlyOffice integration and update project configurations
- Updated .env.example to include configuration for OnlyOffice Document Server.
- Modified the workspace configuration to remove the drive-suite path.
- Adjusted TypeScript environment imports for consistency.
- Enhanced Next.js configuration to disable canvas in Webpack.
- Updated package.json to include new dependencies for OnlyOffice and PDF.js.
- Added global styles for OnlyOffice theme integration in the CSS.
- Created new layout and page components for the Drive feature, including public sharing and editing functionalities.
- Updated metadata handling across various layouts to reflect the new app structure.
2026-06-07 15:49:21 +02:00

44 lines
1.3 KiB
TypeScript

/** Decode file/folder labels when API still returns URL-encoded segments. */
export function displayFileName(name: string): string {
if (!name.includes("%")) {
return name
}
try {
return decodeURIComponent(name.replace(/\+/g, " "))
} catch {
return name
}
}
function decodedBaseName(name: string): string {
const decoded = displayFileName(name)
return decoded.split("/").pop() ?? decoded
}
/** File name without the last extension segment (folders unchanged). */
export function displayFileBaseName(name: string, isDirectory = false): string {
if (isDirectory) return displayFileName(name)
const base = decodedBaseName(name)
const dot = base.lastIndexOf(".")
if (dot <= 0) return displayFileName(name)
return base.slice(0, dot)
}
export function fileNameExtension(name: string): string | null {
const base = decodedBaseName(name)
const dot = base.lastIndexOf(".")
if (dot <= 0) return null
return base.slice(dot + 1).toLowerCase()
}
/** Extension label for list column (uppercase); folders show « Dossier ». */
export function displayFileFormatLabel(
name: string,
isDirectory = false
): string {
if (isDirectory) return "Dossier"
const ext = fileNameExtension(name)
if (!ext) return "—"
return ext.toUpperCase()
}