mirror of https://github.com/MaxLeiter/Drift
client/server: search cleanup, admin work
parent
7505bb43fe
commit
6afc4c915e
@ -0,0 +1,51 @@
|
||||
import { Link, Modal, useModal } from "@geist-ui/core";
|
||||
import { Post } from "@lib/types";
|
||||
import Cookies from "js-cookie";
|
||||
import useSWR from "swr";
|
||||
import { adminFetcher } from ".";
|
||||
import styles from './admin.module.css'
|
||||
|
||||
const PostModal = ({ id }: {
|
||||
id: string,
|
||||
}) => {
|
||||
const { visible, setVisible, bindings } = useModal()
|
||||
const { data: post, error } = useSWR<Post>(`/server-api/admin/post/${id}`, adminFetcher)
|
||||
if (error) return <Modal>failed to load</Modal>
|
||||
if (!post) return <Modal>loading...</Modal>
|
||||
|
||||
const deletePost = async () => {
|
||||
await fetch(`/server-api/admin/post/${id}`, {
|
||||
method: "DELETE",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Bearer ${Cookies.get("drift-token")}`,
|
||||
}
|
||||
})
|
||||
setVisible(false)
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Link href="#" color onClick={() => setVisible(true)}>{post.title}</Link>
|
||||
<Modal width={'var(--main-content)'} {...bindings}>
|
||||
<Modal.Title>{post.title}</Modal.Title>
|
||||
<Modal.Subtitle>Click an item to expand</Modal.Subtitle>
|
||||
{post.files.map((file) => (
|
||||
<div key={file.id} className={styles.postModal}>
|
||||
<Modal.Content>
|
||||
<details>
|
||||
<summary>{file.title}</summary>
|
||||
<div dangerouslySetInnerHTML={{ __html: file.html }}>
|
||||
</div>
|
||||
</details>
|
||||
</Modal.Content>
|
||||
</div>
|
||||
)
|
||||
)}
|
||||
<Modal.Action type="warning" onClick={deletePost}>Delete</Modal.Action>
|
||||
<Modal.Action passive onClick={() => setVisible(false)}>Close</Modal.Action>
|
||||
</Modal>
|
||||
</>)
|
||||
}
|
||||
|
||||
export default PostModal
|
||||
Binary file not shown.
Loading…
Reference in New Issue