{"version":3,"file":"useMutateSsoConnection.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useMutateSsoConnection.ts"],"sourcesContent":["import {\n  B2BSSOOIDCUpdateConnectionOptions,\n  B2BSSOSAMLDeleteVerificationCertificateOptions,\n  B2BSSOSAMLUpdateConnectionByURLOptions,\n  B2BSSOSAMLUpdateConnectionOptions,\n  B2BSSOUpdateExternalConnectionOptions,\n  StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport { useCallback } from 'react';\nimport { useSWRConfig } from 'swr';\n\nimport { StytchB2BClient } from '../../b2b/StytchB2BClient';\nimport { ConnectionType } from './ConnectionType';\nimport { useMutateWithToast } from './useMutateWithToast';\nimport { useRevalidateConnectionList } from './useRevalidateConnectionList';\nimport { useStytchClient } from './useStytchClient';\n\nconst mutateSamlConnection =\n  (client: StytchB2BClient<StytchProjectConfigurationInput>) => (options: B2BSSOSAMLUpdateConnectionOptions) =>\n    client.sso.saml.updateConnection(options);\n\nconst mutateOidcConnection =\n  (client: StytchB2BClient<StytchProjectConfigurationInput>) => (options: B2BSSOOIDCUpdateConnectionOptions) =>\n    client.sso.oidc.updateConnection(options);\n\nconst mutateExternalConnection =\n  (client: StytchB2BClient<StytchProjectConfigurationInput>) => (options: B2BSSOOIDCUpdateConnectionOptions) =>\n    client.sso.external.updateConnection(options);\n\nconst updateConnectionByURL =\n  (client: StytchB2BClient<StytchProjectConfigurationInput>) => (options: B2BSSOSAMLUpdateConnectionByURLOptions) =>\n    client.sso.saml.updateConnectionByURL(options);\n\nconst deleteConnection =\n  (client: StytchB2BClient<StytchProjectConfigurationInput>) =>\n  ({ connection_id }: { connection_id: string }) =>\n    client.sso.deleteConnection(connection_id);\n\nconst deleteVerificationCertificate =\n  (client: StytchB2BClient<StytchProjectConfigurationInput>) =>\n  (options: B2BSSOSAMLDeleteVerificationCertificateOptions) =>\n    client.sso.saml.deleteVerificationCertificate(options);\n\nconst useMutateFnSsoConnection = <TOptions extends { connection_id: string }, TResponse>(\n  mutateFn: (client: StytchB2BClient<StytchProjectConfigurationInput>) => (options: TOptions) => Promise<TResponse>,\n) => {\n  const { mutate: mutateSWR } = useSWRConfig();\n  const client = useStytchClient();\n  const revalidateConnectionList = useRevalidateConnectionList();\n\n  return useMutateWithToast<TOptions>(\n    useCallback(\n      async (options) => {\n        await mutateSWR(['sso.connection', options.connection_id], () => mutateFn(client)(options));\n\n        return revalidateConnectionList();\n      },\n      [client, mutateFn, mutateSWR, revalidateConnectionList],\n    ),\n  );\n};\n\nexport const useMutateSsoConnectionByUrl = () => {\n  return useMutateFnSsoConnection(updateConnectionByURL);\n};\n\nexport const useDeleteSsoConnection = () => {\n  return useMutateFnSsoConnection(deleteConnection);\n};\n\nexport const useDeleteSsoConnectionCert = () => {\n  return useMutateFnSsoConnection(deleteVerificationCertificate);\n};\n\nexport const useMutateSsoConnection = <TConnectionType extends ConnectionType>(connectionType: TConnectionType) => {\n  return useMutateFnSsoConnection<\n    TConnectionType extends 'saml'\n      ? B2BSSOSAMLUpdateConnectionOptions\n      : TConnectionType extends 'oidc'\n        ? B2BSSOOIDCUpdateConnectionOptions\n        : B2BSSOUpdateExternalConnectionOptions,\n    unknown\n  >(\n    connectionType === 'saml'\n      ? mutateSamlConnection\n      : connectionType === 'oidc'\n        ? mutateOidcConnection\n        : mutateExternalConnection,\n  );\n};\n"],"names":["mutateSamlConnection","client","options","sso","saml","updateConnection","mutateOidcConnection","oidc","mutateExternalConnection","external","updateConnectionByURL","deleteConnection","connection_id","deleteVerificationCertificate","useMutateFnSsoConnection","mutateFn","mutate","mutateSWR","useSWRConfig","useStytchClient","revalidateConnectionList","useRevalidateConnectionList","useMutateWithToast","useCallback","useMutateSsoConnectionByUrl","useDeleteSsoConnection","useDeleteSsoConnectionCert","useMutateSsoConnection","connectionType"],"mappings":";;;;;;;;AAiBA,MAAMA,oBAAAA,GACJ,CAACC,MAAAA,GAA6D,CAACC,OAAAA,GAC7DD,MAAAA,CAAOE,GAAG,CAACC,IAAI,CAACC,gBAAgB,CAACH,OAAAA,CAAAA;AAErC,MAAMI,oBAAAA,GACJ,CAACL,MAAAA,GAA6D,CAACC,OAAAA,GAC7DD,MAAAA,CAAOE,GAAG,CAACI,IAAI,CAACF,gBAAgB,CAACH,OAAAA,CAAAA;AAErC,MAAMM,wBAAAA,GACJ,CAACP,MAAAA,GAA6D,CAACC,OAAAA,GAC7DD,MAAAA,CAAOE,GAAG,CAACM,QAAQ,CAACJ,gBAAgB,CAACH,OAAAA,CAAAA;AAEzC,MAAMQ,qBAAAA,GACJ,CAACT,MAAAA,GAA6D,CAACC,OAAAA,GAC7DD,MAAAA,CAAOE,GAAG,CAACC,IAAI,CAACM,qBAAqB,CAACR,OAAAA,CAAAA;AAE1C,MAAMS,gBAAAA,GACJ,CAACV,MAAAA,GACD,CAAC,EAAEW,aAAa,EAA6B,GAC3CX,MAAAA,CAAOE,GAAG,CAACQ,gBAAgB,CAACC,aAAAA,CAAAA;AAEhC,MAAMC,6BAAAA,GACJ,CAACZ,MAAAA,GACD,CAACC,OAAAA,GACCD,MAAAA,CAAOE,GAAG,CAACC,IAAI,CAACS,6BAA6B,CAACX,OAAAA,CAAAA;AAElD,MAAMY,2BAA2B,CAC/BC,QAAAA,GAAAA;AAEA,IAAA,MAAM,EAAEC,MAAAA,EAAQC,SAAS,EAAE,GAAGC,YAAAA,EAAAA;AAC9B,IAAA,MAAMjB,MAAAA,GAASkB,eAAAA,EAAAA;AACf,IAAA,MAAMC,wBAAAA,GAA2BC,2BAAAA,EAAAA;IAEjC,OAAOC,kBAAAA,CACLC,EACE,OAAOrB,OAAAA,GAAAA;AACL,QAAA,MAAMe,SAAAA,CAAU;AAAC,YAAA,gBAAA;AAAkBf,YAAAA,OAAAA,CAAQU;SAAc,EAAE,IAAMG,SAASd,MAAAA,CAAAA,CAAQC,OAAAA,CAAAA,CAAAA;QAElF,OAAOkB,wBAAAA,EAAAA;IACT,CAAA,EACA;AAACnB,QAAAA,MAAAA;AAAQc,QAAAA,QAAAA;AAAUE,QAAAA,SAAAA;AAAWG,QAAAA;AAAyB,KAAA,CAAA,CAAA;AAG7D,CAAA;MAEaI,2BAAAA,GAA8B,IAAA;AACzC,IAAA,OAAOV,wBAAAA,CAAyBJ,qBAAAA,CAAAA;AAClC;MAEae,sBAAAA,GAAyB,IAAA;AACpC,IAAA,OAAOX,wBAAAA,CAAyBH,gBAAAA,CAAAA;AAClC;MAEae,0BAAAA,GAA6B,IAAA;AACxC,IAAA,OAAOZ,wBAAAA,CAAyBD,6BAAAA,CAAAA;AAClC;AAEO,MAAMc,yBAAyB,CAAyCC,cAAAA,GAAAA;AAC7E,IAAA,OAAOd,yBAQLc,cAAAA,KAAmB,MAAA,GACf5B,oBAAAA,GACA4B,cAAAA,KAAmB,SACjBtB,oBAAAA,GACAE,wBAAAA,CAAAA;AAEV;;;;"}