mirror of https://github.com/usememos/memos
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
import { Resource } from "@/types/proto/api/v2/resource_service";
|
|
|
|
export const getResourceUrl = (resource: Resource, withOrigin = true) => {
|
|
if (resource.externalLink) {
|
|
return resource.externalLink;
|
|
}
|
|
|
|
return `${withOrigin ? window.location.origin : ""}/o/r/${resource.id}`;
|
|
};
|
|
|
|
export const getResourceType = (resource: Resource) => {
|
|
if (isImage(resource.type)) {
|
|
return "image/*";
|
|
} else if (resource.type.startsWith("video")) {
|
|
return "video/*";
|
|
} else if (resource.type.startsWith("audio")) {
|
|
return "audio/*";
|
|
} else if (resource.type.startsWith("text")) {
|
|
return "text/*";
|
|
} else if (resource.type.startsWith("application/epub+zip")) {
|
|
return "application/epub+zip";
|
|
} else if (resource.type.startsWith("application/pdf")) {
|
|
return "application/pdf";
|
|
} else if (resource.type.includes("word")) {
|
|
return "application/msword";
|
|
} else if (resource.type.includes("excel")) {
|
|
return "application/msexcel";
|
|
} else if (resource.type.startsWith("application/zip")) {
|
|
return "application/zip";
|
|
} else if (resource.type.startsWith("application/x-java-archive")) {
|
|
return "application/x-java-archive";
|
|
} else {
|
|
return "application/octet-stream";
|
|
}
|
|
};
|
|
|
|
// isImage returns true if the given mime type is an image.
|
|
export const isImage = (t: string) => {
|
|
// Don't show PSDs as images.
|
|
return t.startsWith("image/") && !isPSD(t);
|
|
};
|
|
|
|
const isPSD = (t: string) => {
|
|
return t === "image/vnd.adobe.photoshop" || t === "image/x-photoshop" || t === "image/photoshop";
|
|
};
|