5f22908588
Makes `twenty-ui`'s `Avatar` render the `avatarUrl` it receives instead of building it from `window._env_`/`window.location` at module load, so the library no longer depends on the app environment. URL resolution moves to `twenty-front` via a `getAbsoluteImageUrl` helper applied at the call sites. Part of making twenty-ui a standalone library.
62 lines
2.3 KiB
TypeScript
62 lines
2.3 KiB
TypeScript
import { currentWorkspaceMembersState } from '@/auth/states/currentWorkspaceMembersState';
|
|
import { SettingsCard } from '@/settings/components/SettingsCard';
|
|
import { type SettingsRoleAssignmentConfirmationModalSelectedRoleTarget } from '@/settings/roles/role-assignment/types/SettingsRoleAssignmentConfirmationModalSelectedRoleTarget';
|
|
|
|
import { styled } from '@linaria/react';
|
|
import { t } from '@lingui/core/macro';
|
|
import { Avatar } from 'twenty-ui/data-display';
|
|
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
|
import { themeCssVariables } from 'twenty-ui/theme-constants';
|
|
import { getAbsoluteImageUrl } from '~/utils/image/getAbsoluteImageUrl';
|
|
|
|
const StyledSettingsCardContainer = styled.div`
|
|
margin-top: ${themeCssVariables.spacing[6]};
|
|
`;
|
|
|
|
type SettingsRoleAssignmentConfirmationModalSubtitleProps = {
|
|
selectedRoleTarget: SettingsRoleAssignmentConfirmationModalSelectedRoleTarget;
|
|
onRoleClick: (roleId: string) => void;
|
|
};
|
|
|
|
export const SettingsRoleAssignmentConfirmationModalSubtitle = ({
|
|
selectedRoleTarget,
|
|
onRoleClick,
|
|
}: SettingsRoleAssignmentConfirmationModalSubtitleProps) => {
|
|
const currentWorkspaceMembers = useAtomStateValue(
|
|
currentWorkspaceMembersState,
|
|
);
|
|
|
|
const enrichedSelectedWorkspaceMember = currentWorkspaceMembers.find(
|
|
(member) => member.id === selectedRoleTarget.id,
|
|
);
|
|
|
|
const workspaceMemberName = enrichedSelectedWorkspaceMember
|
|
? `${enrichedSelectedWorkspaceMember?.name.firstName} ${enrichedSelectedWorkspaceMember?.name.lastName}`
|
|
: selectedRoleTarget.name;
|
|
|
|
return (
|
|
<>
|
|
{t`${workspaceMemberName} will be unassigned from the following role:`}
|
|
<StyledSettingsCardContainer>
|
|
<SettingsCard
|
|
title={selectedRoleTarget.role?.label || ''}
|
|
Icon={
|
|
<Avatar
|
|
avatarUrl={getAbsoluteImageUrl(
|
|
enrichedSelectedWorkspaceMember?.avatarUrl,
|
|
)}
|
|
placeholderColorSeed={enrichedSelectedWorkspaceMember?.id}
|
|
placeholder={workspaceMemberName}
|
|
size="md"
|
|
type="rounded"
|
|
/>
|
|
}
|
|
onClick={() =>
|
|
selectedRoleTarget.role && onRoleClick(selectedRoleTarget.role.id)
|
|
}
|
|
/>
|
|
</StyledSettingsCardContainer>
|
|
</>
|
|
);
|
|
};
|