Show files

This commit is contained in:
Liam 2022-11-14 00:09:27 +00:00
parent 75b5c56190
commit a9f0a37020

@ -1,33 +1,39 @@
import FileModel from "../../models/FileModel";
import UserModel from "../../models/UserModel";
import { Button } from "@nextui-org/react";
import Image from "next/image";
import { getFileInfo } from "src/utils/helpers/fileHelpers";
export default function File(props) {
const { isValidFile, fileData } = props;
const file = JSON.parse(fileData);
let { uploader, fileId, uploadDate, contentType, fileUrl, width, height } =
file;
contentType = contentType.toLowerCase();
console.log(file);
if (isValidFile === false) {
return "invalid file";
}
let toShow;
if (contentType.includes("image")) {
toShow = (
<Image alt={fileId} src={fileUrl} width={width} height={height}></Image>
);
} else if (contentType.includes("video")) {
toShow = <video alt={fileId} src={fileUrl} controls></video>;
} else {
<Button>Download</Button>;
}
return (
<div className="h-screen flex items-center justify-center">{toShow}</div>
);
}
export async function getServerSideProps(ctx) {
let { fileId } = ctx.query;
fileId = fileId.split(".")[0];
const file = await FileModel.aggregate([
{
$match: {
fileId: fileId,
},
},
{
$lookup: {
from: UserModel.collection.name,
localField: "uploader",
foreignField: "_id",
as: "uploader",
},
},
]).exec();
console.log(file.uploader);
const file = await getFileInfo(fileId);
return {
props: {
isValidFile: file !== null,