Fix avatar display to show standard user icon when no Gravatar exists

parent e07758bb
......@@ -16,7 +16,9 @@
.user-menu { display: flex; align-items: center; gap: 1rem; position: relative; }
.user-icon { cursor: pointer; padding: 0.5rem; border-radius: 8px; background: #f8fafc; transition: background 0.2s; display: flex; align-items: center; gap: 0.5rem; }
.user-icon:hover { background: #e2e8f0; }
.user-avatar-container { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; }
.user-avatar { width: 32px; height: 32px; border-radius: 50%; }
.user-icon-fallback { font-size: 1.2rem; color: #64748b; }
.user-name { font-weight: 500; color: #64748b; }
.user-dropdown { display: none; position: absolute; top: 100%; right: 0; background: white; min-width: 200px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); border-radius: 8px; z-index: 1000; }
.user-dropdown a { display: block; padding: 0.75rem 1rem; text-decoration: none; color: #374151; border-bottom: 1px solid #f1f5f9; }
......@@ -112,7 +114,10 @@
</nav>
<div class="user-menu">
<div class="user-icon" onclick="toggleUserMenu()">
<img src="{{ user.avatar_url }}" alt="Avatar" class="user-avatar">
<div class="user-avatar-container">
<img src="{{ user.avatar_url }}" alt="Avatar" class="user-avatar" onerror="this.style.display='none'; this.parentNode.querySelector('.user-icon-fallback').style.display='block';">
<i class="fas fa-user user-icon-fallback" style="display: none;"></i>
</div>
<span class="user-name">{{ user.username }}</span>
</div>
<div id="userDropdown" class="user-dropdown">
......
......@@ -30,7 +30,7 @@ def get_current_user_session():
if user and user.get('email'):
import hashlib
email_hash = hashlib.md5(user['email'].lower().encode()).hexdigest()
user['gravatar_url'] = f"https://www.gravatar.com/avatar/{email_hash}?s=32&d=mp"
user['gravatar_url'] = f"https://www.gravatar.com/avatar/{email_hash}?s=32&d=404"
# If custom avatar, use that instead
if user.get('avatar'):
user['avatar_url'] = f"/static/avatars/{user['avatar']}"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment