platform/lms-adm-fe release promotion snapshot

This commit is contained in:
2026-07-09 06:26:35 +00:00
parent 102d37c1af
commit 3b4bed7089
+17 -2
View File
@@ -23,12 +23,27 @@ export type InstructorChatThread = {
};
const CHAT_API_BASE_URL = (import.meta.env.VITE_API_BASE_URL ?? 'https://workspace.autonomystudio.net/lms-api/api').replace(/\/+$/, '');
const AUTH_BASE_URL = (import.meta.env.VITE_ATNMY_AUTH_URL ?? import.meta.env.VITE_ADS_IDE_AUTH_URL ?? 'https://auth.autonomystudio.net').replace(/\/+$/, '');
export const CHAT_SOCKET_BASE_URL = CHAT_API_BASE_URL.replace(/\/api$/, '');
const CHAT_SOCKET_URL = new URL(CHAT_SOCKET_BASE_URL || '/', window.location.origin);
const CHAT_SOCKET_PREFIX = CHAT_SOCKET_URL.pathname.replace(/\/+$/, '');
export const CHAT_SOCKET_ORIGIN = CHAT_SOCKET_URL.origin;
export const CHAT_SOCKET_PATH = `${CHAT_SOCKET_PREFIX}/socket.io`;
function normalizeAvatarUrl(value: unknown): string | null {
if (typeof value !== 'string' || !value.trim()) return null;
try {
const url = new URL(value);
if (url.hostname === 'studio-auth-be.studio-system.svc.cluster.local') {
return `${AUTH_BASE_URL}${url.pathname}${url.search}`;
}
return value;
} catch {
return value;
}
}
type ChatThreadsPayload = {
threads?: unknown[];
data?: unknown[];
@@ -108,7 +123,7 @@ function normalizeThread(raw: unknown): InstructorChatThread | null {
id: String(item.id ?? item.threadId ?? title),
title: String(title),
studentName: String(studentName),
studentAvatarUrl: typeof item.studentAvatarUrl === 'string' ? item.studentAvatarUrl : null,
studentAvatarUrl: normalizeAvatarUrl(item.studentAvatarUrl),
groupName: item.group?.name ?? item.groupName ?? item.metadata?.groupName,
week: weekValue ?? item.weekId ?? item.metadata?.week,
status: String(item.status ?? 'WAITING_INSTRUCTOR'),
@@ -126,7 +141,7 @@ function normalizeMessage(raw: unknown): InstructorChatMessage | null {
id: String(item.id ?? `${item.senderType ?? 'MESSAGE'}-${item.createdAt ?? item.content ?? 'unknown'}`),
senderType: String(item.senderType ?? 'STUDENT'),
senderName: item.senderName ?? item.sender?.name,
senderAvatarUrl: typeof item.senderAvatarUrl === 'string' ? item.senderAvatarUrl : null,
senderAvatarUrl: normalizeAvatarUrl(item.senderAvatarUrl),
content: String(item.content ?? ''),
createdAt: item.createdAt,
};