fixed username frontend

This commit is contained in:
2026-03-10 23:32:00 +01:00
parent be10d1896b
commit 02fcfba5f1

View File

@@ -1,10 +1,11 @@
import { ref, computed } from 'vue' import { ref, computed, type Ref } from 'vue'
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import type { Arrow, Line, Rectangle, Shape, ShapeTool, ShapeType, TextShape, Whiteboard } from '@/types/whiteboard.ts' import type { Arrow, Line, Rectangle, Shape, ShapeTool, ShapeType, TextShape, Whiteboard } from '@/types/whiteboard.ts'
import { whiteboardHubService } from '@/services/whiteboardHubService.ts' import { whiteboardHubService } from '@/services/whiteboardHubService.ts'
import {useWhiteboardsStore} from "@/stores/whiteboards.ts"; import {useWhiteboardsStore} from "@/stores/whiteboards.ts";
import router from "@/router"; import router from "@/router";
import type {User} from "@/types"; import type {User} from "@/types";
import { fetchUser } from '@/services/userService'
export const useWhiteboardStore = defineStore('whiteboard', () => { export const useWhiteboardStore = defineStore('whiteboard', () => {
const whiteboard = ref<Whiteboard | null>(null) const whiteboard = ref<Whiteboard | null>(null)
@@ -22,6 +23,20 @@ export const useWhiteboardStore = defineStore('whiteboard', () => {
const toolThickness = ref(2) const toolThickness = ref(2)
const toolTextSize = ref(24) const toolTextSize = ref(24)
async function resolveUsername(list: Ref<User[]>, user: User): Promise<void> {
if (user.username && user.username !== 'Unknown') return
try {
const resolved = await fetchUser(user.userId)
const idx = list.value.findIndex(u => u.userId === user.userId)
if (idx !== -1 && resolved.username) {
list.value[idx] = { ...list.value[idx], username: resolved.username, email: resolved.email || list.value[idx].email }
}
} catch (err) {
console.warn(`Failed to resolve username for ${user.userId}`, err)
}
}
const selectedShape = computed(() => { const selectedShape = computed(() => {
if (!selectedShapeId.value || !selectedShapeType.value || !whiteboard.value) return null if (!selectedShapeId.value || !selectedShapeType.value || !whiteboard.value) return null
switch (selectedShapeType.value) { switch (selectedShapeType.value) {
@@ -49,6 +64,9 @@ export const useWhiteboardStore = defineStore('whiteboard', () => {
} }
connectedUsers.value = Array.from(uniqueUsers.values()) connectedUsers.value = Array.from(uniqueUsers.values())
for (const user of connectedUsers.value) {
resolveUsername(connectedUsers, user)
}
isLoading.value = false isLoading.value = false
}) })
@@ -75,6 +93,7 @@ export const useWhiteboardStore = defineStore('whiteboard', () => {
whiteboardHubService.onJoined((user) => { whiteboardHubService.onJoined((user) => {
if (!connectedUsers.value.some(u => u.userId === user.userId)) { if (!connectedUsers.value.some(u => u.userId === user.userId)) {
connectedUsers.value.push(user) connectedUsers.value.push(user)
resolveUsername(connectedUsers, user)
} }
}) })
@@ -90,6 +109,7 @@ export const useWhiteboardStore = defineStore('whiteboard', () => {
whiteboardHubService.onUserWaitingForApproval((user) => { whiteboardHubService.onUserWaitingForApproval((user) => {
if (!pendingUsers.value.some(u => u.userId === user.userId)) { if (!pendingUsers.value.some(u => u.userId === user.userId)) {
pendingUsers.value.push(user) pendingUsers.value.push(user)
resolveUsername(pendingUsers, user)
} }
}) })