feat: improve profile error handling with specific messages and UI for private or missing profiles

This commit is contained in:
pradeepkumar
2026-03-30 15:35:36 +05:30
parent daa0e3ff67
commit ed277d2955

View File

@@ -156,9 +156,16 @@ export default function AgentProfileView() {
} else if (profile.avatar) {
setAvatarUrl(profile.avatar);
}
} catch (err) {
} catch (err: any) {
console.error('Failed to fetch profile:', err);
setError('Failed to load profile data');
const status = err?.response?.status;
if (status === 403) {
setError('This profile is private. You don\u2019t have permission to view it.');
} else if (status === 404) {
setError('Profile not found.');
} else {
setError('Failed to load profile data');
}
} finally {
setLoading(false);
}
@@ -252,23 +259,33 @@ export default function AgentProfileView() {
);
}
const isPermissionError = error?.includes('permission') || error?.includes('private');
if (error || !agentProfile) {
return (
<div className="max-w-7xl mx-auto px-4 lg:px-8 py-6">
<div className="flex items-center justify-center h-[calc(100vh-180px)]">
<div className="bg-white rounded-[20px] p-8 shadow-[0px_10px_20px_rgba(217,217,217,0.5)] max-w-md text-center">
<div className="w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mx-auto mb-4">
<svg className="w-8 h-8 text-red-500" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
<div className={`w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4 ${isPermissionError ? 'bg-[#e58625]/10' : 'bg-red-100'}`}>
{isPermissionError ? (
<svg className="w-8 h-8 text-[#e58625]" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" />
</svg>
) : (
<svg className="w-8 h-8 text-red-500" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
)}
</div>
<h2 className="text-[18px] font-bold font-serif text-[#00293D] mb-2">Unable to Load Profile</h2>
<h2 className="text-[18px] font-bold font-serif text-[#00293D] mb-2">
{isPermissionError ? 'Profile Not Available' : 'Unable to Load Profile'}
</h2>
<p className="text-[14px] font-serif text-[#00293D]/70 mb-4">{error || 'Profile not found'}</p>
<button
onClick={() => window.location.reload()}
onClick={() => window.history.back()}
className="px-6 py-2 bg-[#E58625] rounded-full text-[14px] font-semibold font-serif text-white hover:bg-[#E58625]/90 transition-colors"
>
Try Again
Go Back
</button>
</div>
</div>