import React from "react"; import { NextPage } from "next"; import { formatRelative } from "date-fns"; import { toast } from "react-toastify"; import styled from "styled-components"; import AdminListCommon from "@views/admin/AdminListCommon"; import { Button, Link } from "@components/index"; import AddLink from "@components/AddLink"; import Post from "@models/Feed"; import PostApi from "@api/feedApi"; import useFetchBackend from "@hooks/useFetchBackend"; import { APIPath } from "@api/backend"; const URL = "/admin/feed"; const StyledButton = styled(Button) <{ $colorOverride: "red" }>` background-color: ${(p) => p.$colorOverride}; border-radius: 8px; color: white; font-size: 13px; font-weight: bold; `; const confirmDelete = async (post: Post) => { if (window.confirm(`Delete: ${post.id}: ${post.title_fi}/${post.title_en}; Are you sure?`) === true) { try { await PostApi.deletePost(post.id); toast.success("Post removed successfully 😎"); window.location.reload(); // TODO: Fetch/update post list, so user sees the signup in the list } catch (err) { toast.error("Uh oh! Something went wrong! Try again later. 😟"); } } }; const renderData = (feed: Post[]) => { if (!feed || feed.length === 0) { return
No posts.
; } return ( {feed.map((post) => ( ))}
Title Description Publish time
{post.title_fi} {post.description_fi} {formatRelative(new Date(post.publish_time), new Date())} confirmDelete(post)}> Delete
); }; const AdminFeedPage: NextPage = () => { const { data } = useFetchBackend({ apiPath: APIPath.FEED, options: { auth: true } }); return (

Feed

{renderData(data)}
); }; export default AdminFeedPage;