From ad6db3cd256883147510870ee9e35845d446c470 Mon Sep 17 00:00:00 2001 From: celine Date: Tue, 25 Nov 2025 16:38:03 -0500 Subject: [PATCH] filter draft and post lists in pub dashboard to contributor --- .../[did]/[publication]/dashboard/Actions.tsx | 6 +++-- .../[publication]/dashboard/DraftList.tsx | 16 ++++++++++- .../dashboard/PublicationDashboard.tsx | 27 ++++++++++++------- .../dashboard/PublishedPostsLists.tsx | 23 ++++++++-------- .../[publication]/invite-contributor/page.tsx | 3 --- 5 files changed, 48 insertions(+), 27 deletions(-) diff --git a/app/lish/[did]/[publication]/dashboard/Actions.tsx b/app/lish/[did]/[publication]/dashboard/Actions.tsx index 94f934d6..350efc33 100644 --- a/app/lish/[did]/[publication]/dashboard/Actions.tsx +++ b/app/lish/[did]/[publication]/dashboard/Actions.tsx @@ -12,12 +12,14 @@ import { useSmoker } from "components/Toast"; import { useIsMobile } from "src/hooks/isMobile"; import { SpeedyLink } from "components/SpeedyLink"; -export const Actions = (props: { publication: string }) => { +export const Actions = (props: { publication: string; isOwner: boolean }) => { return ( <> - + {props.isOwner && ( + + )} ); }; diff --git a/app/lish/[did]/[publication]/dashboard/DraftList.tsx b/app/lish/[did]/[publication]/dashboard/DraftList.tsx index fadce76f..d8a261cd 100644 --- a/app/lish/[did]/[publication]/dashboard/DraftList.tsx +++ b/app/lish/[did]/[publication]/dashboard/DraftList.tsx @@ -4,14 +4,22 @@ import { NewDraftSecondaryButton } from "./NewDraftButton"; import React from "react"; import { usePublicationData } from "./PublicationSWRProvider"; import { LeafletList } from "app/(home-pages)/home/HomeLayout"; +import { useIdentityData } from "components/IdentityProvider"; export function DraftList(props: { searchValue: string; showPageBackground: boolean; + isOwner: boolean; }) { + let identity = useIdentityData(); + let userLeaflets = identity.identity?.permission_token_on_homepage + .flatMap((leaflet) => leaflet.permission_tokens.leaflets_in_publications) + .map((leaflet) => leaflet.doc); + let { data: pub_data } = usePublicationData(); if (!pub_data?.publication) return null; let { leaflets_in_publications, ...publication } = pub_data.publication; + return (
!l.documents) + .filter((l) => { + if (l.documents) return false; + if (!props.isOwner) { + return !!userLeaflets?.includes(l.doc); + } + return true; + }) .map((l) => { return { token: { diff --git a/app/lish/[did]/[publication]/dashboard/PublicationDashboard.tsx b/app/lish/[did]/[publication]/dashboard/PublicationDashboard.tsx index a5524c70..69a370cb 100644 --- a/app/lish/[did]/[publication]/dashboard/PublicationDashboard.tsx +++ b/app/lish/[did]/[publication]/dashboard/PublicationDashboard.tsx @@ -14,6 +14,7 @@ import { PublicationDashboardControls, } from "components/PageLayouts/DashboardLayout"; import { useDebouncedEffect } from "src/hooks/useDebouncedEffect"; +import { getIdentityData } from "actions/getIdentityData"; export default function PublicationDashboard({ publication, @@ -36,6 +37,8 @@ export default function PublicationDashboard({ [searchValue], ); + let isOwner = false; + return ( ), controls: ( @@ -63,20 +67,25 @@ export default function PublicationDashboard({ ), controls: null, }, - Subscribers: { - content: ( - - ), - controls: null, - }, + ...(isOwner + ? { + Subscribers: { + content: ( + + ), + controls: null, + }, + } + : {}), }} - actions={} + actions={} currentPage="pub" publication={publication.uri} /> diff --git a/app/lish/[did]/[publication]/dashboard/PublishedPostsLists.tsx b/app/lish/[did]/[publication]/dashboard/PublishedPostsLists.tsx index 3d998853..89a2e45f 100644 --- a/app/lish/[did]/[publication]/dashboard/PublishedPostsLists.tsx +++ b/app/lish/[did]/[publication]/dashboard/PublishedPostsLists.tsx @@ -18,13 +18,15 @@ import { SpeedyLink } from "components/SpeedyLink"; import { QuoteTiny } from "components/Icons/QuoteTiny"; import { CommentTiny } from "components/Icons/CommentTiny"; import { useLocalizedDate } from "src/hooks/useLocalizedDate"; +import { useIdentityData } from "components/IdentityProvider"; export function PublishedPostsList(props: { searchValue: string; showPageBackground: boolean; + isOwner: boolean; }) { let { data } = usePublicationData(); - let params = useParams(); + let identity = useIdentityData(); let { publication } = data!; if (!publication) return null; if (publication.documents_in_publications.length === 0) @@ -56,7 +58,7 @@ export function PublishedPostsList(props: { let record = doc.documents.data as PubLeafletDocument.Record; let quotes = doc.documents.document_mentions_in_bsky[0]?.count || 0; let comments = doc.documents.comments_on_documents[0]?.count || 0; - + let isAuthor = record.author === identity.identity?.atp_did; return (
@@ -78,17 +80,18 @@ export function PublishedPostsList(props: { {record.title} -
- {leaflet && ( + {leaflet && (isAuthor || props.isOwner) && ( +
- )} - -
+ + +
+ )}
{record.description ? ( @@ -237,9 +240,5 @@ function PublishedDate(props: { dateString: string }) { day: "2-digit", }); - return ( -

- Published {formattedDate} -

- ); + return

Published {formattedDate}

; } diff --git a/app/lish/[did]/[publication]/invite-contributor/page.tsx b/app/lish/[did]/[publication]/invite-contributor/page.tsx index 5328c92d..04557915 100644 --- a/app/lish/[did]/[publication]/invite-contributor/page.tsx +++ b/app/lish/[did]/[publication]/invite-contributor/page.tsx @@ -1,4 +1,3 @@ -import { BskyAgent } from "@atproto/api"; import { AtUri } from "@atproto/syntax"; import { PublicationThemeProvider, @@ -7,10 +6,8 @@ import { import { PubLeafletPublication } from "lexicons/api"; import { supabaseServerClient } from "supabase/serverClient"; import { ButtonPrimary } from "components/Buttons"; -import { PubContributorEmptyIllo } from "../dashboard/publicationSettings/PublicationContributors"; import { PubNotFound } from "../PubNotFound"; import { PubIcon } from "components/ActionBar/Publications"; -import { PubListing } from "app/(home-pages)/discover/PubListing"; import { SpeedyLink } from "components/SpeedyLink"; import { BlueskyLogin } from "app/login/LoginForm"; import { getIdentityData } from "actions/getIdentityData"; -- 2.51.2