learnhouse/front/app/organizations/page.tsx
2023-03-23 22:30:11 +01:00

47 lines
1.5 KiB
TypeScript

"use client"; //todo: use server components
import Link from "next/link";
import React from "react";
import Layout from "../../components/UI/Layout";
import { Title } from "../../components/UI/Elements/Styles/Title";
import { deleteOrganizationFromBackend } from "@services/organizations/orgs";
import useSWR, { mutate } from "swr";
import { swrFetcher } from "@services/utils/requests";
import { getAPIUrl, getUriWithOrg } from "@services/config/config";
const Organizations = () => {
const { data : organizations , error } = useSWR(`${getAPIUrl()}orgs/user/page/1/limit/10`, swrFetcher)
async function deleteOrganization(org_id: any) {
const response = await deleteOrganizationFromBackend(org_id);
response && mutate(`${getAPIUrl()}orgs/user/page/1/limit/10`, organizations.filter((org: any) => org.org_id !== org_id));
}
return (
<>
<Title>
Your Organizations{" "}
<Link href={"/organizations/new"}>
<button>+</button>
</Link>
</Title>
<hr />
{error && <p>Failed to load</p>}
{!organizations ? (
<p>Loading...</p>
) : (
<div>
{organizations.map((org: any) => (
<div key={org.org_id}>
<Link href={getUriWithOrg(org.slug,"/")}>
<h3>{org.name}</h3>
</Link>
<button onClick={() => deleteOrganization(org.org_id)}>Delete</button>
</div>
))}
</div>
)}
</>
);
};
export default Organizations;