fix: guest join doesn't add avatar when logged in
All checks were successful
Build & Push Docker Image / build (push) Successful in 4m27s

This commit is contained in:
2026-03-31 09:36:13 +02:00
parent 8cbe28f915
commit 30f106a7ea
2 changed files with 20 additions and 4 deletions

View File

@@ -602,7 +602,7 @@ router.get('/:uid/public', async (req, res) => {
// POST /api/rooms/:uid/guest-join - Join meeting as guest (no auth needed) // POST /api/rooms/:uid/guest-join - Join meeting as guest (no auth needed)
router.post('/:uid/guest-join', guestJoinLimiter, async (req, res) => { router.post('/:uid/guest-join', guestJoinLimiter, async (req, res) => {
try { try {
const { name, access_code, moderator_code } = req.body; const { name, access_code, moderator_code, avatar_image, avatar_color } = req.body;
if (!name || name.trim().length === 0) { if (!name || name.trim().length === 0) {
return res.status(400).json({ error: 'Name is required' }); return res.status(400).json({ error: 'Name is required' });
@@ -648,7 +648,17 @@ router.post('/:uid/guest-join', guestJoinLimiter, async (req, res) => {
} }
const baseUrl = getBaseUrl(req); const baseUrl = getBaseUrl(req);
const guestAvatarURL = `${baseUrl}/api/auth/avatar/initials/${encodeURIComponent(name.trim())}`; let guestAvatarURL;
if (avatar_image) {
// Use avatar image of the logged-in user
guestAvatarURL = `${baseUrl}/api/auth/avatar/${avatar_image}`;
} else if (avatar_color) {
// Initials with user color
guestAvatarURL = `${baseUrl}/api/auth/avatar/initials/${encodeURIComponent(name.trim())}?color=${encodeURIComponent(avatar_color)}`;
} else {
// Default: initials without color
guestAvatarURL = `${baseUrl}/api/auth/avatar/initials/${encodeURIComponent(name.trim())}`;
}
const joinUrl = await joinMeeting(room.uid, name.trim(), isModerator, guestAvatarURL); const joinUrl = await joinMeeting(room.uid, name.trim(), isModerator, guestAvatarURL);
res.json({ joinUrl }); res.json({ joinUrl });
} catch (err) { } catch (err) {

View File

@@ -30,11 +30,17 @@ export default function GuestJoin() {
const joinMeeting = async () => { const joinMeeting = async () => {
setJoining(true); setJoining(true);
try { try {
const res = await api.post(`/rooms/${uid}/guest-join`, { const payload = {
name: name.trim(), name: name.trim(),
access_code: accessCode || undefined, access_code: accessCode || undefined,
moderator_code: moderatorCode || undefined, moderator_code: moderatorCode || undefined,
}); };
// If logged in, send avatar data
if (isLoggedIn && user) {
if (user.avatar_image) payload.avatar_image = user.avatar_image;
if (user.avatar_color) payload.avatar_color = user.avatar_color;
}
const res = await api.post(`/rooms/${uid}/guest-join`, payload);
if (res.data.joinUrl) { if (res.data.joinUrl) {
window.location.href = res.data.joinUrl; window.location.href = res.data.joinUrl;
} }