code-share/src/components/containers/file-preview.tsx

49 lines
976 B
TypeScript
Raw Normal View History

2024-02-20 06:52:39 +00:00
"use client";
import { getFileExt } from "@/lib/utils";
import React from "react";
import CodeEditor from "../ui/code-editor";
import trpc from "@/lib/trpc";
type Props = {
id: number;
onFileChange?: () => void;
};
const FilePreview = ({ id, onFileChange }: Props) => {
const type = "text";
const { data, isLoading, refetch } = trpc.file.getById.useQuery(id);
const updateFileContent = trpc.file.update.useMutation({
onSuccess: () => {
if (onFileChange) onFileChange();
refetch();
},
});
if (isLoading) {
return <p>Loading...</p>;
}
if (!data) {
return <p>File not found.</p>;
}
const { filename } = data;
if (type === "text") {
const ext = getFileExt(filename);
return (
<CodeEditor
lang={ext}
value={data?.content || ""}
formatOnSave
onChange={(val) => updateFileContent.mutate({ id, content: val })}
/>
);
}
return null;
};
export default FilePreview;