import { useAtomValue } from "@effect/atom-react";import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";import type { Connection } from "@executor-js/sdk/shared";import { connectionsAllAtom } from "../api/atoms";import type { SecretPickerSecret } from "./secret-picker";// ---------------------------------------------------------------------------// v2: the picker lists connections across BOTH owners (the global owner toggle// is retired). A connection IS the credential, so each row maps a connection to// a `SecretPickerSecret` keyed by its name + its own owner + resolving provider.// ---------------------------------------------------------------------------export function useSecretPickerSecrets(): readonly SecretPickerSecret[] { const connections = useAtomValue(connectionsAllAtom); return AsyncResult.match(connections, { onInitial: () => [] as SecretPickerSecret[], onFailure: () => [] as SecretPickerSecret[], onSuccess: ({ value }) => value.map( (connection: Connection): SecretPickerSecret => ({ id: String(connection.name), owner: connection.owner, name: connection.identityLabel ?? String(connection.name), provider: String(connection.provider), }), ), });}
import { useAtomValue } from "@effect/atom-react";
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
import type { Connection } from "@executor-js/sdk/shared";
import { connectionsAllAtom } from "../api/atoms";
import type { SecretPickerSecret } from "./secret-picker";
// ---------------------------------------------------------------------------
// v2: the picker lists connections across BOTH owners (the global owner toggle
// is retired). A connection IS the credential, so each row maps a connection to
// a `SecretPickerSecret` keyed by its name + its own owner + resolving provider.
// ---------------------------------------------------------------------------
export function useSecretPickerSecrets(): readonly SecretPickerSecret[] {
const connections = useAtomValue(connectionsAllAtom);
return AsyncResult.match(connections, {
onInitial: () => [] as SecretPickerSecret[],
onFailure: () => [] as SecretPickerSecret[],
onSuccess: ({ value }) =>
value.map(
(connection: Connection): SecretPickerSecret => ({
id: String(connection.name),
owner: connection.owner,
name: connection.identityLabel ?? String(connection.name),
provider: String(connection.provider),
}),
),
});
}