verification pass through avatar url

This commit is contained in:
Nate Kelley 2025-07-07 15:48:39 -06:00
parent 6d02d8900f
commit 0331be1cda
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
12 changed files with 22 additions and 16 deletions

View File

@ -2,6 +2,7 @@ export interface BusterTerm {
created_by: {
id: string;
name: string;
avatar_url: string | null;
};
created_at: string;
datasets: {

View File

@ -179,7 +179,10 @@ export const useShareCollection = () => {
queryClient.setQueryData(queryKey, (previousData) => {
if (!previousData) return previousData;
return create(previousData, (draft: BusterCollection) => {
draft.individual_permissions = [...params, ...(draft.individual_permissions || [])];
draft.individual_permissions = [
...params.map((p) => ({ ...p, avatar_url: null })),
...(draft.individual_permissions || [])
];
});
});
},
@ -227,7 +230,7 @@ export const useUpdateCollectionShare = () => {
draft.individual_permissions =
draft.individual_permissions?.map((t) => {
const found = params.users?.find((v) => v.email === t.email);
if (found) return found;
if (found) return { ...t, ...found };
return t;
}) || [];

View File

@ -352,7 +352,7 @@ export const useShareDashboard = () => {
if (!previousData) return previousData;
return create(previousData, (draft) => {
draft.individual_permissions = [
...variables.params,
...variables.params.map((p) => ({ ...p, avatar_url: null })),
...(draft.individual_permissions || [])
];
});
@ -405,7 +405,7 @@ export const useUpdateDashboardShare = () => {
draft.individual_permissions =
draft.individual_permissions?.map((t) => {
const found = params.users?.find((v) => v.email === t.email);
if (found) return found;
if (found) return { ...t, ...found };
return t;
}) || [];

View File

@ -229,7 +229,7 @@ export const useShareMetric = () => {
if (!previousData) return previousData;
return create(previousData, (draft: BusterMetric) => {
draft.individual_permissions = [
...variables.params,
...variables.params.map((p) => ({ ...p, avatar_url: null })),
...(draft.individual_permissions || [])
];
});
@ -299,7 +299,7 @@ export const useUpdateMetricShare = () => {
draft.individual_permissions =
draft.individual_permissions?.map((t) => {
const found = variables.params.users?.find((v) => v.email === t.email);
if (found) return found;
if (found) return { ...t, ...found };
return t;
}) || [];

View File

@ -9,11 +9,11 @@ export const IndividualSharePerson: React.FC<{
name?: string;
email: string;
role: ShareRole;
avatarURL: string | null;
avatar_url: string | null;
onUpdateShareRole: (email: string, role: ShareRole | null) => void;
assetType: ShareAssetType;
disabled: boolean;
}> = React.memo(({ name, onUpdateShareRole, email, avatarURL, role, assetType, disabled }) => {
}> = React.memo(({ name, onUpdateShareRole, email, avatar_url, role, assetType, disabled }) => {
const isSameEmailName = name === email;
const onChangeShareLevel = useMemoizedFn((v: ShareRole | null) => {
@ -26,7 +26,7 @@ export const IndividualSharePerson: React.FC<{
data-testid={`share-person-${email}`}>
<div className="flex h-full items-center space-x-1.5 overflow-hidden">
<div className="flex h-full flex-col items-center justify-center">
<Avatar className="h-[24px] w-[24px]" name={name || email} image={avatarURL} />
<Avatar className="h-[24px] w-[24px]" name={name || email} image={avatar_url} />
</div>
<div className="flex flex-col space-y-0 overflow-hidden">
<Text truncate className="leading-1.3">

View File

@ -19,12 +19,14 @@ const mockShareConfig: ShareConfig = {
{
email: 'test_with_a_long_name_like_super_long_name@test.com',
role: 'canView',
name: 'Test User'
name: 'Test User',
avatar_url: null
},
{
email: 'test2@test.com',
role: 'fullAccess',
name: 'Test User 2 with a long name like super long name'
name: 'Test User 2 with a long name like super long name',
avatar_url: null
}
],
public_expiry_date: null,

View File

@ -6,7 +6,7 @@ import { Tooltip } from '../tooltip/Tooltip';
import { Avatar as AvatarBase, AvatarFallback, AvatarImage } from './AvatarBase';
export interface AvatarProps {
image: string | null | undefined;
image?: string | null | undefined;
name?: string | null;
className?: string;
fallbackClassName?: string;

View File

@ -45,7 +45,7 @@ export const TermIndividualContentSider: React.FC<{ termId: string }> = ({ termI
</Text>
<div className="flex items-center space-x-1.5">
<Avatar size={24} name={term?.created_by.name} />
<Avatar size={24} name={term?.created_by.name} image={term?.created_by.avatar_url} />
<Text>{term?.created_by.name}</Text>
<Text variant="secondary">
(

View File

@ -1,2 +1,2 @@
export * from './shareInterfaces';
export * from './verificationInterfaces';
export * from './share-interfaces.types';
export * from './verification.types';

View File

@ -4,7 +4,7 @@ import {
ShareConfigSchema,
ShareIndividualSchema,
ShareRoleSchema,
} from './shareInterfaces';
} from './share-interfaces.types';
describe('ShareRoleSchema', () => {
it('should accept valid role values', () => {