Fix #4838 when showing avatars of deleted users

This commit is contained in:
Jamie Curnow
2025-11-05 12:33:13 +10:00
parent f35671db21
commit 0ceb7d0892
8 changed files with 14 additions and 9 deletions

View File

@@ -1,5 +1,7 @@
const defaultImg = "/images/default-avatar.jpg";
interface Props { interface Props {
url: string; url?: string;
name?: string; name?: string;
} }
export function GravatarFormatter({ url, name }: Props) { export function GravatarFormatter({ url, name }: Props) {
@@ -9,7 +11,7 @@ export function GravatarFormatter({ url, name }: Props) {
title={name} title={name}
className="avatar avatar-2 me-2" className="avatar avatar-2 me-2"
style={{ style={{
backgroundImage: `url(${url})`, backgroundImage: `url(${url || defaultImg})`,
}} }}
/> />
</div> </div>

View File

@@ -21,7 +21,10 @@ export default function Table({ data, isFetching, isFiltered, onEdit, onDelete,
() => [ () => [
columnHelper.accessor((row: any) => row.owner, { columnHelper.accessor((row: any) => row.owner, {
id: "owner", id: "owner",
cell: (info: any) => <GravatarFormatter url={info.getValue().avatar} name={info.getValue().name} />, cell: (info: any) => {
const value = info.getValue();
return <GravatarFormatter url={value ? value.avatar : ""} name={value ? value.name : ""} />;
},
meta: { meta: {
className: "w-1", className: "w-1",
}, },

View File

@@ -18,7 +18,7 @@ export default function Table({ data, isFetching, onSelectItem }: Props) {
id: "user.avatar", id: "user.avatar",
cell: (info: any) => { cell: (info: any) => {
const value = info.getValue(); const value = info.getValue();
return <GravatarFormatter url={value.avatar} name={value.name} />; return <GravatarFormatter url={value ? value.avatar : ""} name={value ? value.name : ""} />;
}, },
meta: { meta: {
className: "w-1", className: "w-1",

View File

@@ -31,7 +31,7 @@ export default function Table({ data, isFetching, onDelete, onRenew, onDownload,
id: "owner", id: "owner",
cell: (info: any) => { cell: (info: any) => {
const value = info.getValue(); const value = info.getValue();
return <GravatarFormatter url={value.avatar} name={value.name} />; return <GravatarFormatter url={value ? value.avatar : ""} name={value ? value.name : ""} />;
}, },
meta: { meta: {
className: "w-1", className: "w-1",

View File

@@ -31,7 +31,7 @@ export default function Table({ data, isFetching, onEdit, onDelete, onDisableTog
id: "owner", id: "owner",
cell: (info: any) => { cell: (info: any) => {
const value = info.getValue(); const value = info.getValue();
return <GravatarFormatter url={value.avatar} name={value.name} />; return <GravatarFormatter url={value ? value.avatar : ""} name={value ? value.name : ""} />;
}, },
meta: { meta: {
className: "w-1", className: "w-1",

View File

@@ -32,7 +32,7 @@ export default function Table({ data, isFetching, onEdit, onDelete, onDisableTog
id: "owner", id: "owner",
cell: (info: any) => { cell: (info: any) => {
const value = info.getValue(); const value = info.getValue();
return <GravatarFormatter url={value.avatar} name={value.name} />; return <GravatarFormatter url={value ? value.avatar : ""} name={value ? value.name : ""} />;
}, },
meta: { meta: {
className: "w-1", className: "w-1",

View File

@@ -31,7 +31,7 @@ export default function Table({ data, isFetching, onEdit, onDelete, onDisableTog
id: "owner", id: "owner",
cell: (info: any) => { cell: (info: any) => {
const value = info.getValue(); const value = info.getValue();
return <GravatarFormatter url={value.avatar} name={value.name} />; return <GravatarFormatter url={value ? value.avatar : ""} name={value ? value.name : ""} />;
}, },
meta: { meta: {
className: "w-1", className: "w-1",

View File

@@ -31,7 +31,7 @@ export default function Table({ data, isFetching, isFiltered, onEdit, onDelete,
id: "owner", id: "owner",
cell: (info: any) => { cell: (info: any) => {
const value = info.getValue(); const value = info.getValue();
return <GravatarFormatter url={value.avatar} name={value.name} />; return <GravatarFormatter url={value ? value.avatar : ""} name={value ? value.name : ""} />;
}, },
meta: { meta: {
className: "w-1", className: "w-1",