- {pluralize(subCount, "subscriber")} will lose access.
-
- This cannot be undone.
+
+
+ This will permanently delete:
+
+ - This publication and its settings
+ -
+ {pluralize(postCount, "published post")}
+ {postCount > 0 ? " (removed from your PDS)" : ""}
+
+ - {pluralize(draftCount, "draft")}
+ - All associated records on your PDS
+
+ {subCount > 0 && (
+
+ {pluralize(subCount, "subscriber")} will lose access.
+ )}
+
+ This cannot be undone.
-
- Enter the name of this publication to confirm
-
-
-
setValue(e.currentTarget.value)}
- />
-
- {deleting ? : "Delete Publication"}
-
- )}
+
+ Enter the name of this publication to confirm
+
+
+
setValue(e.currentTarget.value)}
+ />
+
+ {deleting ? : "Delete Publication"}
+
+
);
};
diff --git a/app/lish/[did]/[publication]/dashboard/settings/deletePublication.ts b/app/lish/[did]/[publication]/dashboard/settings/deletePublication.ts
index 90547613..9a1af465 100644
--- a/app/lish/[did]/[publication]/dashboard/settings/deletePublication.ts
+++ b/app/lish/[did]/[publication]/dashboard/settings/deletePublication.ts
@@ -2,10 +2,7 @@
import { AtpBaseClient } from "lexicons/api";
import { getIdentityData } from "actions/getIdentityData";
-import {
- restoreOAuthSession,
- OAuthSessionError,
-} from "src/atproto-oauth";
+import { restoreOAuthSession, OAuthSessionError } from "src/atproto-oauth";
import { AtUri } from "@atproto/syntax";
import { supabaseServerClient } from "supabase/serverClient";
import { drizzle } from "drizzle-orm/node-postgres";
@@ -43,25 +40,18 @@ export async function deletePublication(
);
// Collect these BEFORE deleting the publication row — cascading deletes would remove the join rows.
- let [legacyDocs, siteDocs, drafts] = await Promise.all([
+ let [docs, drafts] = await Promise.all([
supabaseServerClient
.from("documents_in_publications")
.select("document")
.eq("publication", publication_uri),
- supabaseServerClient
- .from("site_standard_documents_in_publications")
- .select("document")
- .eq("publication", publication_uri),
supabaseServerClient
.from("leaflets_in_publications")
.select("leaflet")
.eq("publication", publication_uri),
]);
let documentUris = Array.from(
- new Set([
- ...(legacyDocs.data ?? []).map((r) => r.document),
- ...(siteDocs.data ?? []).map((r) => r.document),
- ]),
+ new Set([...(docs.data ?? []).map((r) => r.document)]),
);
let draftTokenIds = (drafts.data ?? []).map((r) => r.leaflet);
@@ -119,27 +109,12 @@ export async function deletePublication(
// Delete document rows before publication rows — publication cascade would leave orphaned docs.
if (documentUris.length > 0) {
- await Promise.all([
- supabaseServerClient
- .from("documents")
- .delete()
- .in("uri", documentUris),
- supabaseServerClient
- .from("site_standard_documents")
- .delete()
- .in("uri", documentUris),
- ]);
+ supabaseServerClient.from("documents").delete().in("uri", documentUris);
}
- await Promise.all([
- supabaseServerClient
- .from("publications")
- .delete()
- .eq("uri", publication_uri),
- supabaseServerClient
- .from("site_standard_publications")
- .delete()
- .eq("uri", publication_uri),
- ]);
+ await supabaseServerClient
+ .from("publications")
+ .delete()
+ .eq("uri", publication_uri);
revalidatePath("/lish/[did]/[publication]", "layout");
return { success: true };
diff --git a/components/Modal.tsx b/components/Modal.tsx
index 625150f8..ff108f8a 100644
--- a/components/Modal.tsx
+++ b/components/Modal.tsx
@@ -41,7 +41,7 @@ export const Modal = ({
${className}`}
>
{title ? (
-
+
{title}
) : (