{"version":3,"file":"MemberDetailsScreen.mjs","sources":["../../../../../../../../web/src/adminPortal/memberManagement/MemberDetailsScreen.tsx"],"sourcesContent":["import ChevronLeft from '@mui/icons-material/ChevronLeft';\nimport React from 'react';\nimport useSWR from 'swr';\n\nimport { extractErrorMessage } from '../../utils/extractErrorMessage';\nimport { Alert } from '../components/Alert';\nimport { Button } from '../components/Button';\nimport { FlexBox } from '../components/FlexBox';\nimport { PageLoadingIndicator } from '../components/PageLoadingIndicator';\nimport { Tag } from '../components/Tag';\nimport { Typography } from '../components/Typography';\nimport { decorateCurrentMemberName } from '../utils/decorateCurrentMemberName';\nimport { memberGetKey } from '../utils/memberGetKey';\nimport { NO_VALUE } from '../utils/noValue';\nimport { useOrgInfo } from '../utils/useOrgInfo';\nimport { useSelf } from '../utils/useSelf';\nimport { useStytchClient } from '../utils/useStytchClient';\nimport { AccessSection } from './AccessSection';\nimport { AuthManagementSection } from './AuthManagementSection';\nimport { DangerZoneSection } from './DangerZoneSection';\nimport { getMemberStatusDisplayName } from './getMemberStatusDisplayName';\nimport { MemberDetailsSection } from './MemberDetailsSection';\nimport { useMemberManagementRouterController } from './MemberManagementRouter';\nimport { allMemberStatuses } from './MemberStatus';\n\nconst useMember = (memberId: string | undefined) => {\n  const client = useStytchClient();\n\n  return useSWR(memberGetKey(memberId), async () => {\n    const response = await client.organization.members.search({\n      limit: 1,\n      query: {\n        operator: 'AND',\n        operands: [\n          { filter_name: 'member_ids', filter_value: [memberId] },\n          // Deleted members do not appear in search results by default, so we\n          // need to specify all statuses explicitly\n          { filter_name: 'statuses', filter_value: allMemberStatuses },\n        ],\n      },\n    });\n\n    return response.members.at(0) ?? null;\n  });\n};\n\nexport const MemberDetailsScreen = ({ memberId }: { memberId: string }) => {\n  const { navigate } = useMemberManagementRouterController();\n\n  const { data: member, error, isLoading } = useMember(memberId);\n  const memberName = member?.name || NO_VALUE;\n\n  const { self } = useSelf();\n  const isSelf = self?.member_id === memberId;\n\n  const memberDisplayName = isSelf ? decorateCurrentMemberName(memberName) : memberName;\n\n  const { data: organization } = useOrgInfo();\n  const orgRequiresMfa = organization?.mfa_policy === 'REQUIRED_FOR_ALL';\n\n  return (\n    <FlexBox flexDirection=\"column\" gap={3}>\n      <Button\n        compact\n        variant=\"ghost\"\n        onClick={() => {\n          navigate({ screen: 'membersList' });\n        }}\n        startIcon={<ChevronLeft />}\n      >\n        Back to all Members\n      </Button>\n      {member ? (\n        <>\n          <FlexBox alignItems=\"center\" justifyContent=\"flex-start\" gap={1}>\n            <Typography variant=\"h2\">{memberDisplayName}</Typography>\n            {member.status !== 'active' && <Tag size=\"small\">{getMemberStatusDisplayName(member.status)}</Tag>}\n          </FlexBox>\n          <FlexBox flexDirection=\"column\" gap={3}>\n            <MemberDetailsSection member={member} />\n            <AccessSection member={member} orgRequiresMfa={orgRequiresMfa} />\n            {member.status === 'active' && <AuthManagementSection member={member} />}\n            <DangerZoneSection member={member} />\n          </FlexBox>\n        </>\n      ) : error || member === null ? (\n        <Alert>{extractErrorMessage(error) ?? 'There was an error loading Member details.'}</Alert>\n      ) : (\n        isLoading && <PageLoadingIndicator />\n      )}\n    </FlexBox>\n  );\n};\n"],"names":["useMember","memberId","client","useStytchClient","useSWR","memberGetKey","response","organization","members","search","limit","query","operator","operands","filter_name","filter_value","allMemberStatuses","at","MemberDetailsScreen","navigate","useMemberManagementRouterController","data","member","error","isLoading","memberName","name","NO_VALUE","self","useSelf","isSelf","member_id","memberDisplayName","decorateCurrentMemberName","useOrgInfo","orgRequiresMfa","mfa_policy","React","FlexBox","flexDirection","gap","Button","compact","variant","onClick","screen","startIcon","ChevronLeft","alignItems","justifyContent","Typography","status","Tag","size","getMemberStatusDisplayName","MemberDetailsSection","AccessSection","AuthManagementSection","DangerZoneSection","Alert","extractErrorMessage","PageLoadingIndicator"],"mappings":"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"}