|
@@ -77,6 +77,7 @@ export interface Message {
|
|
|
type: 'text' | 'image' | 'system';
|
|
type: 'text' | 'image' | 'system';
|
|
|
content: string;
|
|
content: string;
|
|
|
sender?: string;
|
|
sender?: string;
|
|
|
|
|
+ senderId?: string;
|
|
|
timestamp: number;
|
|
timestamp: number;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -114,21 +115,23 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
const remoteCameraContainer = useRef<HTMLDivElement>(null); // 摄像头小窗容器
|
|
const remoteCameraContainer = useRef<HTMLDivElement>(null); // 摄像头小窗容器
|
|
|
|
|
|
|
|
// 辅助函数
|
|
// 辅助函数
|
|
|
- const showMessage = (text: string, sender?: string): void => {
|
|
|
|
|
|
|
+ const showMessage = (text: string, sender?: string, senderId?: string): void => {
|
|
|
const message: Message = {
|
|
const message: Message = {
|
|
|
type: 'text',
|
|
type: 'text',
|
|
|
content: text,
|
|
content: text,
|
|
|
sender,
|
|
sender,
|
|
|
|
|
+ senderId,
|
|
|
timestamp: Date.now()
|
|
timestamp: Date.now()
|
|
|
};
|
|
};
|
|
|
setMessageList((prevMessageList) => [...prevMessageList, message])
|
|
setMessageList((prevMessageList) => [...prevMessageList, message])
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- const showImageMessage = (imageUrl: string, senderName: string): void => {
|
|
|
|
|
|
|
+ const showImageMessage = (imageUrl: string, senderName: string, senderId?: string): void => {
|
|
|
const message: Message = {
|
|
const message: Message = {
|
|
|
type: 'image',
|
|
type: 'image',
|
|
|
content: imageUrl,
|
|
content: imageUrl,
|
|
|
sender: senderName,
|
|
sender: senderName,
|
|
|
|
|
+ senderId,
|
|
|
timestamp: Date.now()
|
|
timestamp: Date.now()
|
|
|
};
|
|
};
|
|
|
setMessageList((prevMessageList) => [...prevMessageList, message])
|
|
setMessageList((prevMessageList) => [...prevMessageList, message])
|
|
@@ -363,7 +366,7 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
// 使用正确的 ImUser 类型处理发送者信息
|
|
// 使用正确的 ImUser 类型处理发送者信息
|
|
|
const userExtension = sender?.userExtension ? JSON.parse(sender.userExtension) : {};
|
|
const userExtension = sender?.userExtension ? JSON.parse(sender.userExtension) : {};
|
|
|
const senderName = userExtension.nickname || userExtension.username || sender?.userId || '未知用户';
|
|
const senderName = userExtension.nickname || userExtension.username || sender?.userId || '未知用户';
|
|
|
- showMessage(msg.data, senderName);
|
|
|
|
|
|
|
+ showMessage(msg.data, senderName, sender?.userId);
|
|
|
} else if (msg.type === 88895) { // 图片消息
|
|
} else if (msg.type === 88895) { // 图片消息
|
|
|
try {
|
|
try {
|
|
|
const data = JSON.parse(msg.data);
|
|
const data = JSON.parse(msg.data);
|
|
@@ -377,7 +380,7 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
const response = await fileClient[':id']['$get']({ param: { id: data.fileId.toString() } });
|
|
const response = await fileClient[':id']['$get']({ param: { id: data.fileId.toString() } });
|
|
|
if (response.status === 200) {
|
|
if (response.status === 200) {
|
|
|
const fileInfo = await response.json();
|
|
const fileInfo = await response.json();
|
|
|
- showImageMessage(fileInfo.fullUrl, senderName);
|
|
|
|
|
|
|
+ showImageMessage(fileInfo.fullUrl, senderName, sender?.userId);
|
|
|
} else {
|
|
} else {
|
|
|
showSystemMessage(`${senderName}: 图片获取失败`);
|
|
showSystemMessage(`${senderName}: 图片获取失败`);
|
|
|
}
|
|
}
|