import { ok } from "@atcute/client";
import type { OAuthUserAgent } from "@atcute/oauth-browser-client";
import { spindleXrpc, type SpindleTarget } from "#lib/api/spindlewrite.ts";
import { mainSchema as addSecretSchema } from "#lib/api/lexicons/types/org/tangled/secret/addSecret.ts";
import {
mainSchema as listSecretsSchema,
type Secret
} from "#lib/api/lexicons/types/org/tangled/secret/listSecrets.ts";
import { mainSchema as removeSecretSchema } from "#lib/api/lexicons/types/org/tangled/secret/removeSecret.ts";
export type { Secret };
export const listSecrets = async (
agent: OAuthUserAgent,
spindle: URL,
target: SpindleTarget
): Promise<Secret[]> => {
const { secrets } = await ok(
(await spindleXrpc(agent, spindle, target)).call(listSecretsSchema, {
params: { repo: target.repoDid }
})
);
return secrets;
};
export const addSecret = async (
agent: OAuthUserAgent,
spindle: URL,
target: SpindleTarget,
key: string,
value: string
): Promise<void> => {
await ok(
(await spindleXrpc(agent, spindle, target)).call(addSecretSchema, {
input: { repo: target.repoDid, key, value }
})
);
};
export const removeSecret = async (
agent: OAuthUserAgent,
spindle: URL,
target: SpindleTarget,
key: string
): Promise<void> => {
await ok(
(await spindleXrpc(agent, spindle, target)).call(removeSecretSchema, {
input: { repo: target.repoDid, key }
})
);
};