HomeBar.tsx 1.1 KB

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