الملفات
boutmoun123 8863f61d00
فشلت بعض الفحوصات
Deploy To Ghaymah / deploy (push) Has been cancelled
Add Oudelaa dashboard API integration
2026-05-25 20:36:52 +03:00

74 أسطر
1.8 KiB
TypeScript

import { resolveMediaUrl } from "@/lib/media-url";
import type { ApiComment, ApiPost, ApiUser } from "@/types/api";
function asUser(value: ApiUser | string | undefined | null) {
if (!value || typeof value === "string") {
return null;
}
return value;
}
export function getPostAuthor(post: ApiPost) {
return asUser(post.author ?? post.authorId);
}
export function getCommentAuthor(comment: ApiComment) {
return asUser(comment.author ?? comment.authorId);
}
export function getUserLabel(user: ApiUser | null) {
if (!user) {
return "-";
}
return user.name ?? user.stageName ?? user.username ?? user.email ?? "-";
}
export function getPostPreviewMedia(post: ApiPost) {
const imageCount = post.imageUrls?.length ?? 0;
const imageUrl = resolveMediaUrl(post.imageUrls?.[0]);
const thumbnailUrl = resolveMediaUrl(post.thumbnailUrl);
const videoUrl = resolveMediaUrl(post.videoUrl);
const audioUrl = resolveMediaUrl(post.audioUrl);
if (imageCount > 0 && imageUrl) {
return {
kind: "image" as const,
url: imageUrl,
sourceUrl: "",
count: imageCount,
};
}
if (thumbnailUrl) {
return {
kind: post.postType === "audio" ? ("audio" as const) : ("video" as const),
url: thumbnailUrl,
sourceUrl: post.postType === "video" ? videoUrl : audioUrl,
count: 1,
};
}
if (post.postType === "video" && videoUrl) {
return {
kind: "video" as const,
url: "",
sourceUrl: videoUrl,
count: 1,
};
}
return {
kind:
post.postType === "audio"
? ("audio" as const)
: post.postType === "video"
? ("video" as const)
: ("text" as const),
url: "",
sourceUrl: post.postType === "video" ? videoUrl : post.postType === "audio" ? audioUrl : "",
count: 0,
};
}