|
|
@@ -474,26 +474,43 @@ export const ClassroomPage = () => {
|
|
|
listenMessageEvents();
|
|
|
listenRtcEvents();
|
|
|
|
|
|
+ // 加入RTC频道
|
|
|
+ await joinRtcChannel();
|
|
|
+
|
|
|
setIsJoinedClass(true);
|
|
|
setErrorMessage('');
|
|
|
showToast('success', '加入课堂成功');
|
|
|
} catch (err: any) {
|
|
|
setErrorMessage(`加入课堂失败: ${err.message}`);
|
|
|
showToast('error', '加入课堂失败');
|
|
|
+
|
|
|
+ // 如果IM加入成功但RTC加入失败,需要离开IM群组
|
|
|
+ if (imGroupManager.current) {
|
|
|
+ try {
|
|
|
+ await imGroupManager.current.leaveGroup(classId);
|
|
|
+ } catch (leaveErr) {
|
|
|
+ console.error('离开IM群组失败:', leaveErr);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
|
|
|
// 离开课堂
|
|
|
const leaveClass = async (): Promise<void> => {
|
|
|
- if (imGroupManager.current && classId) {
|
|
|
- await imGroupManager.current.leaveGroup(classId);
|
|
|
- }
|
|
|
- if (aliRtcEngine.current) {
|
|
|
- await aliRtcEngine.current.leaveChannel();
|
|
|
+ try {
|
|
|
+ if (imGroupManager.current && classId) {
|
|
|
+ await imGroupManager.current.leaveGroup(classId);
|
|
|
+ }
|
|
|
+ if (aliRtcEngine.current) {
|
|
|
+ await leaveRtcChannel();
|
|
|
+ }
|
|
|
+
|
|
|
+ setIsJoinedClass(false);
|
|
|
+ showToast('info', '已离开课堂');
|
|
|
+ } catch (err) {
|
|
|
+ console.error('离开课堂失败:', err);
|
|
|
+ showToast('error', '离开课堂时发生错误');
|
|
|
}
|
|
|
-
|
|
|
- setIsJoinedClass(false);
|
|
|
- showToast('info', '已离开课堂');
|
|
|
};
|
|
|
|
|
|
// 发送消息
|