fixed username frontend
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user