|
|
@@ -121,23 +121,25 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
const remoteCameraContainer = useRef<HTMLDivElement>(null); // 摄像头小窗容器
|
|
|
|
|
|
// 辅助函数
|
|
|
- const showMessage = (text: string, sender?: string, senderId?: string): void => {
|
|
|
+ const showMessage = (text: string, sender?: string, senderId?: string, senderType?: UserType): void => {
|
|
|
const message: Message = {
|
|
|
type: 'text',
|
|
|
content: text,
|
|
|
sender,
|
|
|
senderId,
|
|
|
+ senderType,
|
|
|
timestamp: Date.now()
|
|
|
};
|
|
|
setMessageList((prevMessageList) => [...prevMessageList, message]);
|
|
|
};
|
|
|
|
|
|
- const showImageMessage = (imageUrl: string, senderName: string, senderId?: string): void => {
|
|
|
+ const showImageMessage = (imageUrl: string, senderName: string, senderId?: string, senderType?: UserType): void => {
|
|
|
const message: Message = {
|
|
|
type: 'image',
|
|
|
content: imageUrl,
|
|
|
sender: senderName,
|
|
|
senderId,
|
|
|
+ senderType,
|
|
|
timestamp: Date.now()
|
|
|
};
|
|
|
setMessageList((prevMessageList) => [...prevMessageList, message]);
|
|
|
@@ -164,6 +166,7 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
content: message.content,
|
|
|
senderId: message.senderId || null,
|
|
|
senderName: message.sender || null,
|
|
|
+ senderType: message.senderType || null, // 添加senderType字段
|
|
|
timestamp: message.timestamp,
|
|
|
fileId: message.fileId || null // 添加fileId字段
|
|
|
}
|
|
|
@@ -430,27 +433,27 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
console.error('解析踢人消息失败', err);
|
|
|
}
|
|
|
} else if (msg.type === 88888) { // 普通文本消息
|
|
|
- const sender = msg.sender;
|
|
|
- // 检查消息来源,避免重复处理自己发送的消息
|
|
|
+ const sender = msg.sender; console.log('sender', sender)
|
|
|
// 使用正确的 ImUser 类型处理发送者信息
|
|
|
- const userExtension = sender?.userExtension ? JSON.parse(sender.userExtension) : {};
|
|
|
+ const userExtension = (sender?.userExtension ? JSON.parse(sender.userExtension) : {}) as User;
|
|
|
const senderName = userExtension.nickname || userExtension.username || sender?.userId || '未知用户';
|
|
|
- showMessage(msg.data, senderName, sender?.userId);
|
|
|
+ const senderType = userExtension.userType // 从用户扩展信息中获取类型
|
|
|
+ showMessage(msg.data, senderName, sender?.userId, senderType);
|
|
|
} else if (msg.type === 88895) { // 图片消息
|
|
|
try {
|
|
|
const data = JSON.parse(msg.data);
|
|
|
if (data.type === 'image' && data.fileId) {
|
|
|
const sender = msg.sender;
|
|
|
- // 检查消息来源,避免重复处理自己发送的消息
|
|
|
// 使用正确的 ImUser 类型处理发送者信息
|
|
|
- const userExtension = sender?.userExtension ? JSON.parse(sender.userExtension) : {};
|
|
|
+ const userExtension = (sender?.userExtension ? JSON.parse(sender.userExtension) : {}) as User;
|
|
|
const senderName = userExtension.nickname || userExtension.username || sender?.userId || '未知用户';
|
|
|
+ const senderType = userExtension.userType // 从用户扩展信息中获取类型
|
|
|
|
|
|
// 收到文件ID后获取文件详情
|
|
|
const response = await fileClient[':id']['$get']({ param: { id: data.fileId.toString() } });
|
|
|
if (response.status === 200) {
|
|
|
const fileInfo = await response.json();
|
|
|
- showImageMessage(fileInfo.fullUrl, senderName, sender?.userId);
|
|
|
+ showImageMessage(fileInfo.fullUrl, senderName, sender?.userId, senderType);
|
|
|
} else {
|
|
|
showSystemMessage(`${senderName}: 图片获取失败`);
|
|
|
}
|
|
|
@@ -649,7 +652,10 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
await imEngine.current.login({
|
|
|
user: {
|
|
|
userId,
|
|
|
- userExtension: JSON.stringify({ nickname: user?.nickname || user?.username || '' })
|
|
|
+ userExtension: JSON.stringify({
|
|
|
+ nickname: user?.nickname || user?.username || '',
|
|
|
+ userType: user.userType
|
|
|
+ })
|
|
|
},
|
|
|
userAuth: {
|
|
|
nonce,
|
|
|
@@ -751,6 +757,7 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
content: msg.type === 'image' && msg.file ? msg.file.fullUrl : msg.content,
|
|
|
sender: msg.senderName || '',
|
|
|
senderId: msg.senderId?.toString() || '',
|
|
|
+ senderType: msg.senderType as UserType, // 添加senderType字段
|
|
|
timestamp: msg.timestamp
|
|
|
}));
|
|
|
|
|
|
@@ -860,6 +867,7 @@ export const useClassroom = ({ user }:{ user : User }) => {
|
|
|
content: msgText,
|
|
|
sender: user?.nickname || user?.username || '',
|
|
|
senderId: userId,
|
|
|
+ senderType: user?.userType, // 添加用户类型
|
|
|
timestamp: Date.now()
|
|
|
};
|
|
|
await saveMessageToDatabase(message);
|