diff --git a/app/lish/[handle]/[publication]/CallToActionButton.tsx b/app/lish/[handle]/[publication]/CallToActionButton.tsx deleted file mode 100644 index 3c73e65f..00000000 --- a/app/lish/[handle]/[publication]/CallToActionButton.tsx +++ /dev/null @@ -1,41 +0,0 @@ -"use client"; - -import { SubscribeButton } from "app/lish/Subscribe"; -import { usePublicationRelationship } from "./usePublicationRelationship"; -import { usePublicationContext } from "components/Providers/PublicationContext"; -import { NewDraftButton } from "./NewDraftButton"; -import { Menu, MenuItem } from "components/Layout"; -import { useIdentityData } from "components/IdentityProvider"; -import { unsubscribeFromPublication } from "actions/unsubscribeFromPublication"; -import { MoreOptionsTiny } from "components/Icons/MoreOptionsTiny"; - -export function CallToActionButton() { - let rel = usePublicationRelationship(); - let { publication } = usePublicationContext(); - if (!publication) return null; - if (rel?.isAuthor) return ; - if (rel?.isSubscribed) - return ( -
-
You're Subscribed!
- -
- ); - return ; -} - -const ManageSubscriptionMenu = (props: { publication_uri: string }) => { - let { mutate } = useIdentityData(); - return ( - }> - { - await unsubscribeFromPublication(props.publication_uri); - mutate(); - }} - > - Unsub! - - - ); -}; diff --git a/app/lish/[handle]/[publication]/DraftList.tsx b/app/lish/[handle]/[publication]/DraftList.tsx index 4145fa45..ccdbc745 100644 --- a/app/lish/[handle]/[publication]/DraftList.tsx +++ b/app/lish/[handle]/[publication]/DraftList.tsx @@ -4,8 +4,10 @@ import { Fact, ReplicacheProvider } from "src/replicache"; import { usePublicationRelationship } from "./usePublicationRelationship"; import { usePublicationContext } from "components/Providers/PublicationContext"; import Link from "next/link"; +import { NewDraftSecondaryButton } from "./NewDraftButton"; export function DraftList(props: { + publication: string; drafts: { id: string; initialFacts: Fact[]; root_entity: string }[]; }) { let rel = usePublicationRelationship(); @@ -13,8 +15,8 @@ export function DraftList(props: { if (!publication) return null; if (!rel?.isAuthor) return null; return ( -
-

drafts

+
+ {props.drafts.map((d) => { return ( { + let newLeaflet = await createPublicationDraft(props.publication); + router.push(`/${newLeaflet}`); + }} + icon= + label="New Draft" + /> + ); +} + +export function NewDraftSecondaryButton(props: { publication: string }) { + let router = useRouter(); + return ( -
- { - let newLeaflet = await createPublicationDraft(props.publication); - router.push(`/${newLeaflet}`); - }} - > - New Draft - -
+ { + let newLeaflet = await createPublicationDraft(props.publication); + router.push(`/${newLeaflet}`); + }} + > + + New Post + ); } diff --git a/app/lish/[handle]/[publication]/PublicationDashboard.tsx b/app/lish/[handle]/[publication]/PublicationDashboard.tsx index 72420f14..0e069f7b 100644 --- a/app/lish/[handle]/[publication]/PublicationDashboard.tsx +++ b/app/lish/[handle]/[publication]/PublicationDashboard.tsx @@ -11,22 +11,30 @@ export function PublicationDashboard(props: { let content = props.tabs[tab]; return (
-
+
{props.name}
{Object.keys(props.tabs).map((t) => ( - setTab(t)} /> + setTab(t)} + /> ))}
-
{content}
+
{content}
); } function Tab(props: { name: string; selected: boolean; onSelect: () => void }) { return ( -
props.onSelect()}> +
props.onSelect()} + > {props.name}
); diff --git a/app/lish/[handle]/[publication]/page.tsx b/app/lish/[handle]/[publication]/page.tsx index 651b0572..d8612d89 100644 --- a/app/lish/[handle]/[publication]/page.tsx +++ b/app/lish/[handle]/[publication]/page.tsx @@ -9,8 +9,11 @@ import { Sidebar } from "components/ActionBar/Sidebar"; import { Media } from "components/Media"; import { Footer } from "components/ActionBar/Footer"; import { PublicationDashboard } from "./PublicationDashboard"; -import { AddTiny } from "components/Icons/AddTiny"; import { DraftList } from "./DraftList"; +import { NewDraftActionButton } from "./NewDraftButton"; +import { use } from "react"; +import { IdentityContext } from "components/IdentityProvider"; +import { getIdentityData } from "actions/getIdentityData"; const idResolver = new IdResolver(); @@ -32,20 +35,31 @@ export async function generateMetadata(props: { return { title: decodeURIComponent((await props.params).publication) }; } +//This is the admin dashboard of the publication export default async function Publication(props: { params: Promise<{ publication: string; handle: string }>; }) { + let identity = await getIdentityData(); + if (!identity || !identity.atp_did) return ; let did = await idResolver.handle.resolve((await props.params).handle); if (!did) return ; let { data: publication } = await supabaseServerClient .from("publications") .select( - "*, documents_in_publications(documents(*)), leaflets_in_publications(*, permission_tokens(*, permission_token_rights(*), custom_domain_routes!custom_domain_routes_edit_permission_token_fkey(*) ))", + `*, + documents_in_publications(documents(*)), + leaflets_in_publications(*, + permission_tokens(*, + permission_token_rights(*), + custom_domain_routes!custom_domain_routes_edit_permission_token_fkey(*) + ) + )`, ) .eq("identity_did", did) .eq("name", decodeURIComponent((await props.params).publication)) .single(); - if (!publication) return ; + if (!publication || identity.atp_did !== publication.identity_did) + return ; let all_facts = await supabaseServerClient.rpc("get_facts_for_roots", { max_depth: 2, @@ -69,12 +83,7 @@ export default async function Publication(props: { return (
- - label="Create Draft" - /> +
({ ...d.permission_tokens!, initialFacts: facts[d.permission_tokens?.root_entity!], @@ -95,12 +105,7 @@ export default async function Publication(props: {
- - label="New Doc" - /> +
@@ -115,15 +120,10 @@ const PubNotFound = () => { return
ain't no pub here
; }; -const Actions = () => { +const Actions = (props: { publication: string }) => { return ( <> - - label="Create Draft" - /> + ); };