import type { Project } from "@prisma/client"; import React, { useState } from "react"; import { Card, FullscreenLoader, Modal, SettingTabs } from "../../components"; import { Dashboard } from "../../layouts"; import { useActiveProject, useProjects } from "../../lib/hooks/projects"; import { network } from "../../lib/network"; import { RefreshCw } from "lucide-react"; import { toast } from "sonner"; /** * */ export default function Index() { const [showRegenerateModal, setShowRegenerateModal] = useState(false); const [project, setProject] = useState(); const activeProject = useActiveProject(); const { data: projects, mutate: projectMutate } = useProjects(); if (activeProject && !project) { setProject(activeProject); } if (!project || !projects) { return ; } if (!activeProject) { return ; } const regenerate = () => { setShowRegenerateModal(!showRegenerateModal); toast.promise( network .fetch<{ success: true; project: Project; }>("POST", `/projects/id/${project.id}/regenerate`) .then(async (res) => { await projectMutate( [ ...projects.filter((project) => { return project.id !== res.project.id; }), res.project, ], false, ); }), { loading: "Regenerating API keys...", success: "Successfully regenerated API keys!", error: "Failed to create new API keys", }, ); }; return ( <> setShowRegenerateModal(!showRegenerateModal)} onAction={regenerate} type={"danger"} title={"Are you sure?"} description={ "Any applications that use your previously generated keys will stop working!" } /> } >
{ void navigator.clipboard.writeText(activeProject.public); toast.success("Copied your public API key"); }} >

{activeProject.public}

Use this key for any front-end services. This key can only be used to publish events.

{ void navigator.clipboard.writeText(activeProject.secret); toast.success("Copied your secret API key"); }} >

{activeProject.secret}

Use this key for any secure back-end services. This key gives complete access to your Plunk setup.

); }