"use client";
import { drive_v3 } from "googleapis";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { MdFolder, MdPlayCircle } from "react-icons/md";
import formatDuration from "utils/fileHelper/formatDuration";
import getFileIcon from "utils/fileHelper/iconMap";
import getFileGroup from "utils/fileHelper/typeMap";
import { FilesResponse } from "types/api/files";
import siteConfig from "config/site.config";
type Props = {
data: FilesResponse;
};
function GridLayout({ data }: Props) {
const pathname = usePathname();
return (
{data.folders.length === 0 &&
data.files.length === 0 && (
No files or folders found
)}
{data.folders.length > 0 && (
{data.folders.map((folder) => (
))}
)}
{data.files.length > 0 && (
{data.files.map((file) => (
))}
)}
);
}
function GridFolder({
folder,
path = "",
}: {
folder: drive_v3.Schema$File;
path?: string;
}) {
const folderURL = `${path}/${encodeURIComponent(
folder.name ?? "",
)}`;
return (
);
}
function GridFile({
file,
path = "",
}: {
file: drive_v3.Schema$File;
path?: string;
}) {
const Icon = getFileIcon(
file.fileExtension ?? "",
file.mimeType ?? "",
);
const fileGroup = getFileGroup(
file.fileExtension ?? "",
file.mimeType ?? "",
);
const isThumbnailAllowed =
siteConfig.files.allowThumbnailFileType.includes(
fileGroup,
);
const fileURL = `${path}/${encodeURIComponent(
file.name ?? "",
)}`;
return (
{file.thumbnailLink && isThumbnailAllowed ? (
<>

{file.videoMediaMetadata && (
{file.videoMediaMetadata.durationMillis && (
{formatDuration(
file.videoMediaMetadata
.durationMillis,
)}
)}
)}
>
) : (
)}
{file.name}
);
}
export default GridLayout;