refactor: improve user avatar rendering by always displaying initials and handling image load errors.
This commit is contained in:
@@ -221,19 +221,19 @@ export default function DashboardPage() {
|
|||||||
<td className="px-6 py-4 whitespace-nowrap">
|
<td className="px-6 py-4 whitespace-nowrap">
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<div className="flex-shrink-0 h-10 w-10">
|
<div className="flex-shrink-0 h-10 w-10">
|
||||||
{avatarUrls[user.id] ? (
|
<div className="h-10 w-10 rounded-full bg-[#e8f0ee] flex items-center justify-center relative overflow-hidden">
|
||||||
<img
|
<span className="text-[#00293d] font-medium text-sm font-fractul">
|
||||||
className="h-10 w-10 rounded-full object-cover"
|
{user.profile?.firstName?.[0] || user.email[0].toUpperCase()}
|
||||||
src={avatarUrls[user.id]}
|
</span>
|
||||||
alt=""
|
{avatarUrls[user.id] && (
|
||||||
/>
|
<img
|
||||||
) : (
|
className="absolute inset-0 h-10 w-10 rounded-full object-cover"
|
||||||
<div className="h-10 w-10 rounded-full bg-[#e8f0ee] flex items-center justify-center">
|
src={avatarUrls[user.id]}
|
||||||
<span className="text-[#00293d] font-medium text-sm font-fractul">
|
alt=""
|
||||||
{user.profile?.firstName?.[0] || user.email[0].toUpperCase()}
|
onError={(e) => { (e.target as HTMLImageElement).style.display = 'none'; }}
|
||||||
</span>
|
/>
|
||||||
</div>
|
)}
|
||||||
)}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="ml-4">
|
<div className="ml-4">
|
||||||
<div className="text-sm font-medium text-[#00293d] font-serif">
|
<div className="text-sm font-medium text-[#00293d] font-serif">
|
||||||
|
|||||||
@@ -313,15 +313,14 @@ export default function UserDetailPage() {
|
|||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
{/* Avatar */}
|
{/* Avatar */}
|
||||||
<div className="flex-shrink-0 h-20 w-20">
|
<div className="flex-shrink-0 h-20 w-20">
|
||||||
{avatarUrl ? (
|
<div className="h-20 w-20 rounded-full bg-[#e8f0ee] flex items-center justify-center relative overflow-hidden">
|
||||||
<img className="h-20 w-20 rounded-full object-cover" src={avatarUrl} alt="" />
|
<span className="text-[#666666] font-medium text-2xl">
|
||||||
) : (
|
{user.profile?.firstName?.[0] || user.email[0].toUpperCase()}
|
||||||
<div className="h-20 w-20 rounded-full bg-[#e8f0ee] flex items-center justify-center">
|
</span>
|
||||||
<span className="text-[#666666] font-medium text-2xl">
|
{avatarUrl && (
|
||||||
{user.profile?.firstName?.[0] || user.email[0].toUpperCase()}
|
<img className="absolute inset-0 h-20 w-20 rounded-full object-cover" src={avatarUrl} alt="" onError={(e) => { (e.target as HTMLImageElement).style.display = 'none'; }} />
|
||||||
</span>
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Name & Email */}
|
{/* Name & Email */}
|
||||||
|
|||||||
@@ -207,19 +207,19 @@ export default function UsersPage() {
|
|||||||
<td className="px-6 py-4 whitespace-nowrap">
|
<td className="px-6 py-4 whitespace-nowrap">
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<div className="flex-shrink-0 h-10 w-10">
|
<div className="flex-shrink-0 h-10 w-10">
|
||||||
{avatarUrls[user.id] ? (
|
<div className="h-10 w-10 rounded-full bg-[#e8f0ee] flex items-center justify-center relative overflow-hidden">
|
||||||
<img
|
<span className="text-[#666666] font-medium text-sm">
|
||||||
className="h-10 w-10 rounded-full object-cover"
|
{user.profile?.firstName?.[0] || user.email[0].toUpperCase()}
|
||||||
src={avatarUrls[user.id]}
|
</span>
|
||||||
alt=""
|
{avatarUrls[user.id] && (
|
||||||
/>
|
<img
|
||||||
) : (
|
className="absolute inset-0 h-10 w-10 rounded-full object-cover"
|
||||||
<div className="h-10 w-10 rounded-full bg-[#e8f0ee] flex items-center justify-center">
|
src={avatarUrls[user.id]}
|
||||||
<span className="text-[#666666] font-medium text-sm">
|
alt=""
|
||||||
{user.profile?.firstName?.[0] || user.email[0].toUpperCase()}
|
onError={(e) => { (e.target as HTMLImageElement).style.display = 'none'; }}
|
||||||
</span>
|
/>
|
||||||
</div>
|
)}
|
||||||
)}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="ml-4">
|
<div className="ml-4">
|
||||||
<div className="text-sm font-medium text-[#00293d]">
|
<div className="text-sm font-medium text-[#00293d]">
|
||||||
|
|||||||
Reference in New Issue
Block a user