{"version":3,"file":"useMutateMember.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useMutateMember.ts"],"sourcesContent":["import { B2BOrganizationsMembersUpdateOptions, Member } from '@stytch/core/public';\nimport { useCallback } from 'react';\nimport { useSWRConfig } from 'swr';\n\nimport { memberGetKey } from './memberGetKey';\nimport { useMutateWithToast } from './useMutateWithToast';\nimport { useStytchClient } from './useStytchClient';\nimport { useUpdateCachedMember } from './useUpdateCachedMember';\n\nexport const useMutateMember = () => {\n  const { mutate: mutateSWR } = useSWRConfig();\n  const client = useStytchClient();\n  const { setMember } = useUpdateCachedMember();\n\n  return useMutateWithToast<B2BOrganizationsMembersUpdateOptions>(\n    useCallback(\n      async (properties) => {\n        const result = await mutateSWR(\n          memberGetKey(properties.member_id),\n          async () => {\n            const resp = await client.organization.members.update(properties);\n            return resp.member;\n          },\n          {\n            // note that optimisticData is typed as `any`\n            optimisticData: (member: Member) => {\n              // Exclude roles from the optimistically updated version, because\n              // its shape is different in the response and requires special\n              // handling\n\n              const { roles, ...rest } = properties;\n              return { ...member, ...rest };\n            },\n            rollbackOnError: true,\n            populateCache: true,\n            revalidate: false,\n          },\n        );\n\n        if (result) {\n          // Update the member in the cache, which includes matching entries in\n          // any cached member lists\n          setMember(result);\n        }\n      },\n      [client.organization.members, mutateSWR, setMember],\n    ),\n  );\n};\n"],"names":["useMutateMember","mutate","mutateSWR","useSWRConfig","client","useStytchClient","setMember","useUpdateCachedMember","useMutateWithToast","useCallback","properties","result","memberGetKey","member_id","resp","organization","members","update","member","optimisticData","roles","rest","rollbackOnError","populateCache","revalidate"],"mappings":";;;;;;;;;MASaA,eAAAA,GAAkB,IAAA;AAC7B,IAAA,MAAM,EAAEC,MAAAA,EAAQC,SAAS,EAAE,GAAGC,YAAAA,EAAAA;AAC9B,IAAA,MAAMC,MAAAA,GAASC,eAAAA,EAAAA;IACf,MAAM,EAAEC,SAAS,EAAE,GAAGC,qBAAAA,EAAAA;IAEtB,OAAOC,kBAAAA,CACLC,EACE,OAAOC,UAAAA,GAAAA;AACL,QAAA,MAAMC,SAAS,MAAMT,SAAAA,CACnBU,YAAAA,CAAaF,UAAAA,CAAWG,SAAS,CAAA,EACjC,UAAA;YACE,MAAMC,IAAAA,GAAO,MAAMV,MAAAA,CAAOW,YAAY,CAACC,OAAO,CAACC,MAAM,CAACP,UAAAA,CAAAA;AACtD,YAAA,OAAOI,KAAKI,MAAM;QACpB,CAAA,EACA;;AAEEC,YAAAA,cAAAA,EAAgB,CAACD,MAAAA,GAAAA;;;;AAKf,gBAAA,MAAM,EAAEE,KAAK,EAAE,GAAGC,MAAM,GAAGX,UAAAA;gBAC3B,OAAO;AAAE,oBAAA,GAAGQ,MAAM;AAAE,oBAAA,GAAGG;AAAK,iBAAA;AAC9B,YAAA,CAAA;YACAC,eAAAA,EAAiB,IAAA;YACjBC,aAAAA,EAAe,IAAA;YACfC,UAAAA,EAAY;AACd,SAAA,CAAA;AAGF,QAAA,IAAIb,MAAAA,EAAQ;;;YAGVL,SAAAA,CAAUK,MAAAA,CAAAA;AACZ,QAAA;IACF,CAAA,EACA;QAACP,MAAAA,CAAOW,YAAY,CAACC,OAAO;AAAEd,QAAAA,SAAAA;AAAWI,QAAAA;AAAU,KAAA,CAAA,CAAA;AAGzD;;;;"}