diff --git a/web/src/lib/api/_request.ts b/web/src/lib/api/_request.ts index 2c6d16f0b..666ba670a 100644 --- a/web/src/lib/api/_request.ts +++ b/web/src/lib/api/_request.ts @@ -1,5 +1,17 @@ import { ClientResponseError, isXRPCErrorPayload, type XRPCErrorPayload } from "@atcute/client"; -import type { BobbinContext, QueryValue, XrpcRequestInit } from "$lib/api/client"; +import type { OAuthUserAgent } from "@atcute/oauth-browser-client"; +import { + createBobbinClient, + type BobbinContext, + type QueryValue, + type XrpcRequestInit +} from "$lib/api/client"; + +export const serviceUrlFor = (host: string): string => + /^[a-z][a-z0-9+.-]*:\/\//i.test(host) ? host.replace(/\/+$/, "") : `https://${host}`; + +export const serviceClient = (agent: OAuthUserAgent, host: string): BobbinContext => + createBobbinClient({ serviceUrl: serviceUrlFor(host), agent }); export const buildUrl = ( origin: string, diff --git a/web/src/lib/api/repoCreate.ts b/web/src/lib/api/repoCreate.ts index 9500aea90..2c89fa712 100644 --- a/web/src/lib/api/repoCreate.ts +++ b/web/src/lib/api/repoCreate.ts @@ -2,6 +2,7 @@ import { ok } from "@atcute/client"; import type { Cid, Did, Nsid, ResourceUri } from "@atcute/lexicons/syntax"; import type { OAuthUserAgent } from "@atcute/oauth-browser-client"; import { awaitIndexedRecord } from "$lib/api/awaitRecord"; +import { serviceUrlFor } from "$lib/api/_request"; import { createBobbinClient, type BobbinContext } from "$lib/api/client"; import { mainSchema as createRepoSchema } from "$lib/api/lexicons/types/sh/tangled/repo/create"; import { mainSchema as deleteRepoSchema } from "$lib/api/lexicons/types/sh/tangled/repo/delete"; @@ -59,9 +60,6 @@ export const validateRepoName = (rawName: string): string => { return rawName.endsWith(".git") ? rawName.slice(0, -4) : rawName; }; -export const knotServiceUrl = (knot: string): string => - /^[a-z][a-z0-9+.-]*:\/\//i.test(knot) ? knot.replace(/\/+$/, "") : `https://${knot}`; - const messageOf = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause); @@ -91,7 +89,7 @@ const deleteKnotRepo = async ( repoDid: Did ): Promise => { const ctx = createBobbinClient({ - serviceUrl: knotServiceUrl(input.knot), + serviceUrl: serviceUrlFor(input.knot), agent }); let lastError = "unknown error"; @@ -128,7 +126,7 @@ const completeCreation = async ( let currentCid = initial.cid; try { const knot = createBobbinClient({ - serviceUrl: knotServiceUrl(input.knot), + serviceUrl: serviceUrlFor(input.knot), agent }); const created = await ok( diff --git a/web/src/lib/components/repo/RepoForkForm.svelte b/web/src/lib/components/repo/RepoForkForm.svelte index 76e036866..07a64579d 100644 --- a/web/src/lib/components/repo/RepoForkForm.svelte +++ b/web/src/lib/components/repo/RepoForkForm.svelte @@ -1,6 +1,7 @@