HomeBar.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { showLoading } from "utils/ui.ts";
  2. interface HomeBarProps {
  3. name: string;
  4. }
  5. export default function HomeBar(props: HomeBarProps) {
  6. const doNewPost = async () => {
  7. showLoading();
  8. const resp = await fetch("/api/post", {
  9. method: "POST",
  10. headers: { "Content-Type": "application/json" },
  11. body: JSON.stringify({
  12. title: "",
  13. content: "",
  14. }),
  15. });
  16. const respJson = await resp.json();
  17. if (respJson.success) {
  18. location.href = `/${respJson.data}`;
  19. return true;
  20. }
  21. return false;
  22. };
  23. const doLogout = async () => {
  24. const resp = await fetch("/api/user/logout");
  25. const respJson = await resp.json();
  26. if (respJson.success) {
  27. location.href = "/login";
  28. return true;
  29. }
  30. return false;
  31. };
  32. return (
  33. <div className="pd-home-bar">
  34. <button onClick={doNewPost}>New Post</button>
  35. <div className="pd-home-user-info">
  36. <span>{props.name}</span>
  37. <button onClick={doLogout}>Logout</button>
  38. </div>
  39. </div>
  40. );
  41. }