{"version":3,"file":"useUpdateCachedMember.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useUpdateCachedMember.ts"],"sourcesContent":["import { Member } from '@stytch/core/public';\nimport { useCallback } from 'react';\nimport { unstable_serialize, useSWRConfig } from 'swr';\n\nimport { isFetchMembersResponse } from './fetchMembers';\nimport { memberGetKey } from './memberGetKey';\n\nexport const useUpdateCachedMember = () => {\n  const { mutate, cache } = useSWRConfig();\n\n  const updateCachedMember = useCallback(\n    (memberId: string, setMember: (member: Member) => Member) => {\n      for (const key of cache.keys()) {\n        const data = cache.get(key);\n        if (isFetchMembersResponse(data?.data)) {\n          cache.set(key, {\n            ...data,\n            data: {\n              ...data.data,\n              members: data.data.members.map((cachedMember) =>\n                cachedMember.member_id === memberId ? setMember(cachedMember) : cachedMember,\n              ),\n            },\n          });\n        }\n\n        if (key === unstable_serialize(() => memberGetKey(memberId))) {\n          const cachedMember = cache.get(key)?.data as Member | undefined;\n          if (cachedMember) {\n            mutate(key, setMember(cachedMember));\n          }\n        }\n      }\n    },\n    [cache, mutate],\n  );\n\n  const setMember = useCallback(\n    (member: Member) => {\n      updateCachedMember(member.member_id, () => member);\n    },\n    [updateCachedMember],\n  );\n\n  const markMemberDeleted = useCallback(\n    (memberId: string) => {\n      updateCachedMember(memberId, (member) => ({ ...member, status: 'deleted' }));\n    },\n    [updateCachedMember],\n  );\n\n  return { setMember, markMemberDeleted };\n};\n"],"names":["useUpdateCachedMember","mutate","cache","useSWRConfig","updateCachedMember","useCallback","memberId","setMember","key","keys","data","get","isFetchMembersResponse","set","members","map","cachedMember","member_id","unstable_serialize","memberGetKey","member","markMemberDeleted","status"],"mappings":";;;;;;;MAOaA,qBAAAA,GAAwB,IAAA;AACnC,IAAA,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAGC,YAAAA,EAAAA;IAE1B,MAAMC,kBAAAA,GAAqBC,CAAAA,CACzB,CAACC,QAAAA,EAAkBC,SAAAA,GAAAA;AACjB,QAAA,KAAK,MAAMC,GAAAA,IAAON,KAAAA,CAAMO,IAAI,EAAA,CAAI;YAC9B,MAAMC,IAAAA,GAAOR,KAAAA,CAAMS,GAAG,CAACH,GAAAA,CAAAA;YACvB,IAAII,sBAAAA,CAAuBF,MAAMA,IAAAA,CAAAA,EAAO;gBACtCR,KAAAA,CAAMW,GAAG,CAACL,GAAAA,EAAK;AACb,oBAAA,GAAGE,IAAI;oBACPA,IAAAA,EAAM;AACJ,wBAAA,GAAGA,KAAKA,IAAI;AACZI,wBAAAA,OAAAA,EAASJ,IAAAA,CAAKA,IAAI,CAACI,OAAO,CAACC,GAAG,CAAC,CAACC,YAAAA,GAC9BA,YAAAA,CAAaC,SAAS,KAAKX,QAAAA,GAAWC,UAAUS,YAAAA,CAAAA,GAAgBA,YAAAA;AAEpE;AACF,iBAAA,CAAA;AACF,YAAA;AAEA,YAAA,IAAIR,GAAAA,KAAQU,kBAAAA,CAAmB,IAAMC,YAAAA,CAAab,QAAAA,CAAAA,CAAAA,EAAY;AAC5D,gBAAA,MAAMU,YAAAA,GAAed,KAAAA,CAAMS,GAAG,CAACH,GAAAA,CAAAA,EAAME,IAAAA;AACrC,gBAAA,IAAIM,YAAAA,EAAc;AAChBf,oBAAAA,MAAAA,CAAOO,KAAKD,SAAAA,CAAUS,YAAAA,CAAAA,CAAAA;AACxB,gBAAA;AACF,YAAA;AACF,QAAA;IACF,CAAA,EACA;AAACd,QAAAA,KAAAA;AAAOD,QAAAA;AAAO,KAAA,CAAA;IAGjB,MAAMM,SAAAA,GAAYF,EAChB,CAACe,MAAAA,GAAAA;QACChB,kBAAAA,CAAmBgB,MAAAA,CAAOH,SAAS,EAAE,IAAMG,MAAAA,CAAAA;IAC7C,CAAA,EACA;AAAChB,QAAAA;AAAmB,KAAA,CAAA;IAGtB,MAAMiB,iBAAAA,GAAoBhB,EACxB,CAACC,QAAAA,GAAAA;QACCF,kBAAAA,CAAmBE,QAAAA,EAAU,CAACc,MAAAA,IAAY;AAAE,gBAAA,GAAGA,MAAM;gBAAEE,MAAAA,EAAQ;aAAU,CAAA,CAAA;IAC3E,CAAA,EACA;AAAClB,QAAAA;AAAmB,KAAA,CAAA;IAGtB,OAAO;AAAEG,QAAAA,SAAAA;AAAWc,QAAAA;AAAkB,KAAA;AACxC;;;;"}