31 lines · 1.3 KB · TypeScript
RawDownload
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),        }),      ),  });}