mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-18 11:40:39 +09:00
Add company logo portability support
This commit is contained in:
parent
6d564e0539
commit
7a652b8998
6 changed files with 315 additions and 13 deletions
41
ui/src/lib/portable-files.ts
Normal file
41
ui/src/lib/portable-files.ts
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import type { CompanyPortabilityFileEntry } from "@paperclipai/shared";
|
||||
|
||||
const contentTypeByExtension: Record<string, string> = {
|
||||
".gif": "image/gif",
|
||||
".jpeg": "image/jpeg",
|
||||
".jpg": "image/jpeg",
|
||||
".png": "image/png",
|
||||
".svg": "image/svg+xml",
|
||||
".webp": "image/webp",
|
||||
};
|
||||
|
||||
export function getPortableFileText(entry: CompanyPortabilityFileEntry | null | undefined) {
|
||||
return typeof entry === "string" ? entry : null;
|
||||
}
|
||||
|
||||
export function getPortableFileContentType(
|
||||
filePath: string,
|
||||
entry: CompanyPortabilityFileEntry | null | undefined,
|
||||
) {
|
||||
if (entry && typeof entry === "object" && entry.contentType) return entry.contentType;
|
||||
const extensionIndex = filePath.toLowerCase().lastIndexOf(".");
|
||||
if (extensionIndex === -1) return null;
|
||||
return contentTypeByExtension[filePath.toLowerCase().slice(extensionIndex)] ?? null;
|
||||
}
|
||||
|
||||
export function getPortableFileDataUrl(
|
||||
filePath: string,
|
||||
entry: CompanyPortabilityFileEntry | null | undefined,
|
||||
) {
|
||||
if (!entry || typeof entry === "string") return null;
|
||||
const contentType = getPortableFileContentType(filePath, entry) ?? "application/octet-stream";
|
||||
return `data:${contentType};base64,${entry.data}`;
|
||||
}
|
||||
|
||||
export function isPortableImageFile(
|
||||
filePath: string,
|
||||
entry: CompanyPortabilityFileEntry | null | undefined,
|
||||
) {
|
||||
const contentType = getPortableFileContentType(filePath, entry);
|
||||
return typeof contentType === "string" && contentType.startsWith("image/");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue