- 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.
44 lines
1.3 KiB
TypeScript
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()
|
|
}
|