From 8e1831496a1aede5a53b54dc2bb2e9bf1cc7502b Mon Sep 17 00:00:00 2001 From: dawn Date: Tue, 15 Sep 2026 05:57:18 +0300 Subject: [PATCH] web: tell indexnow when a repo goes away Signed-off-by: dawn --- web/src/lib/api/repoSettings.test.ts | 9 +++++++++ web/src/lib/api/repoSettings.ts | 3 +++ 2 files changed, 12 insertions(+) diff --git a/web/src/lib/api/repoSettings.test.ts b/web/src/lib/api/repoSettings.test.ts index 4cdd2b293..e6d2d5e21 100644 --- a/web/src/lib/api/repoSettings.test.ts +++ b/web/src/lib/api/repoSettings.test.ts @@ -15,9 +15,11 @@ const createRecord = vi.fn(async () => ({ })); const awaitIndexedRecord = vi.fn(async () => undefined); const awaitDeletedRecord = vi.fn(async () => true); +const pingIndexNow = vi.fn(); vi.mock("./write", () => ({ createRecord, putRecord, deleteRecord })); vi.mock("./awaitRecord", () => ({ awaitIndexedRecord, awaitDeletedRecord })); +vi.mock("$lib/api/indexnow", () => ({ pingIndexNow })); const call = vi.fn(async (_schema: unknown, _options: unknown) => ({ ok: true, data: undefined })); const post = vi.fn( @@ -105,6 +107,7 @@ describe("deleteRepo", () => { uri: view.uri, knot: "knot.test", name: "core", + ownerHandle: "dawn", ownerDid: "did:plc:owner", repoDid: "did:plc:repo", cid: view.cid @@ -181,6 +184,12 @@ describe("deleteRepo", () => { expect(awaitDeletedRecord).not.toHaveBeenCalled(); }); + it("tells indexnow the repo url went away", async () => { + await api.deleteRepo(agent, bobbin, location); + + expect(pingIndexNow).toHaveBeenCalledWith("https://tangled.org/dawn/core"); + }); + it("reports a deletion the appview has not observed", async () => { awaitDeletedRecord.mockResolvedValueOnce(false); diff --git a/web/src/lib/api/repoSettings.ts b/web/src/lib/api/repoSettings.ts index f278db258..d52c97593 100644 --- a/web/src/lib/api/repoSettings.ts +++ b/web/src/lib/api/repoSettings.ts @@ -4,6 +4,7 @@ import type { OAuthUserAgent } from "@atcute/oauth-browser-client"; import { awaitDeletedRecord, awaitIndexedRecord } from "$lib/api/awaitRecord"; import { serviceClient } from "$lib/api/_request"; import { createBobbinClient } from "$lib/api/client"; +import { pingIndexNow } from "$lib/api/indexnow"; import { mainSchema as addCollaboratorSchema } from "$lib/api/lexicons/types/sh/tangled/repo/addCollaborator"; import { mainSchema as deleteRepoSchema, @@ -101,6 +102,7 @@ export interface RepoLocation { uri: string; knot: string; name: string; + ownerHandle: string; ownerDid: string; repoDid?: string; cid?: Cid; @@ -143,4 +145,5 @@ export const deleteRepo = async ( if (!confirmed) { throw new Error("Deleted, but the appview has not caught up yet."); } + pingIndexNow(`https://tangled.org/${repo.ownerHandle}/${repo.name}`); }; -- 2.51.2