private async void ExitMeeting() { var currentWindow = Application.Current.Windows; var window = currentWindow[0]; if (!(window is IntoClassView)) { return; } var exitDialog = new Dialog($"您当前正在课堂中,是否要退出当前课堂?", "是", "否"); var result = exitDialog.ShowDialog(); if (!result.HasValue || !result.Value) { return; } //退出当前课堂 var exitMessage = await _meetingSdkAgent.LeaveMeeting(); await _windowManager.Leave(); if (exitMessage.StatusCode != 0) { MessageQueueManager.Instance.AddError(MessageManager.ExitMeetingError); return; } var mainView = new MainView(); mainView.Show(); }
public void _meetingManagerService_InvitationReceivedEvent(MeetingInvitationModel invitation) { Application.Current.Dispatcher.BeginInvoke(new Action(async() => { string creatorName; var currentWindows = Application.Current.Windows; Window window = currentWindows[0]; if (_exitDialog != null) { return; } var trueInvitor = GlobalData.Instance.Classrooms.FirstOrDefault(o => o.SchoolRoomNum == invitation.SenderId.ToString()); var inClass = false; //判断是否再课堂中,如果在课堂中,需要判断新邀请与当前课堂是否是同一个,如果是,则不需要处理,否则退出当前课堂,进入新课堂 int curMeetingId; object curMeetingIdObj = AppCache.TryGet(CacheKey.MeetingId); if (curMeetingIdObj != null && int.TryParse(curMeetingIdObj.ToString(), out curMeetingId)) { if (curMeetingId == invitation.MeetingId) { return; } //在课堂中 _exitDialog = new Dialog($"您当前正在课堂中,是否要结束当前课堂,加入到新课堂?", "加入新课堂", "留在当前课堂"); inClass = true; } else { _exitDialog = new Dialog($"{trueInvitor?.SchoolRoomName},邀请您听课", "去听课", "稍后"); } var result = _exitDialog.ShowDialog(); if (!result.HasValue || !result.Value) { return; } bool isSettingsValid = DeviceSettingsChecker.Instance.IsVideoAudioSettingsValid(window); if (!isSettingsValid) { return; } //判断课堂是否存在 var reuslt = await _meetingSdkAgent.IsMeetingExist(invitation.MeetingId); if (reuslt.StatusCode != 0) { MessageQueueManager.Instance.AddError(MessageManager.MeetingNoExistError); return; } if (inClass) { //退出当前课堂 //var clearResult = await ClearMeeting(); //if (!clearResult) //{ // MessageQueueManager.Instance.AddError(MessageManager.ExitMeetingError); // return; //} var exitMessage = await _meetingSdkAgent.LeaveMeeting(); await _windowManager.Leave(); if (exitMessage.StatusCode != 0) { MessageQueueManager.Instance.AddError(MessageManager.ExitMeetingError); return; } } var meetingList = _localDataManager.GetMeetingList() ?? new MeetingList() { MeetingInfos = new List <MeetingItem>() }; var localMeetingInfo = meetingList.MeetingInfos.FirstOrDefault(o => o.MeetingId == invitation.MeetingId); string createTime = string.Empty; if (localMeetingInfo != null && localMeetingInfo.CreatorId == GlobalData.Instance.Classroom.SchoolRoomNum) { createTime = localMeetingInfo.CreateTime.ToString(); AppCache.AddOrUpdate(CacheKey.HostId, GlobalData.Instance.Classroom.SchoolRoomNum); creatorName = GlobalData.Instance.Classroom.SchoolRoomName; } else { MeetingResult <MeetingModel> meetingInfo = await _meetingSdkAgent.GetMeetingInfo(invitation.MeetingId); if (meetingInfo.StatusCode != 0) { MessageQueueManager.Instance.AddError("获取会议信息时出错!"); return; } if (meetingInfo.Result.MeetingType == MeetingType.DatedMeeting && meetingInfo.Result.HostId == 0) { } AppCache.AddOrUpdate(CacheKey.HostId, meetingInfo.Result.HostId); createTime = meetingInfo.Result.StartTime; creatorName = GlobalData.Instance.Classrooms.FirstOrDefault(cls => cls.SchoolRoomNum == meetingInfo.Result.HostId.ToString())?.SchoolRoomName; } AppCache.AddOrUpdate(CacheKey.MeetingId, invitation.MeetingId); GlobalData.Instance.Course = new Course(); if (inClass) { //var mainView = new MainView(); //mainView.Show(); var wd = SetWindowsTop.FindWindow(null, "IntoClassView"); await Application.Current.Dispatcher.BeginInvoke(new Action(() => { //if (_viewLayoutService.IsDoubleScreenOn) //{ // _viewLayoutService.IsDoubleScreenOn = false; // _viewLayoutService.StopExtendedViewAsync(); // _viewLayoutService.ExtenedViewFrameList?.Clear(); // _viewLayoutService.ResetAsInitialStatus(); // Thread.Sleep(20); // foreach (Window item in Application.Current.Windows) // { // if (item is ExtendedScreenView) // { // item.Close(); // } // } // SetWindowsTop.SetWindowPos(wd, 0, int.MaxValue, int.MaxValue, 0, 0, 0); //} var intoClassView = new IntoClassView(IntoClassType.Join); intoClassView.Show(); //foreach (Window item in Application.Current.Windows) //{ // if (item is MainView) // { // item.Close(); // } //} Application.Current.Dispatcher.BeginInvoke(new Action(() => { SetWindowsTop.SendMessage(wd, WM_CLOSE, 0, 0); })); })); } else { var intoClassView = new IntoClassView(IntoClassType.Join); intoClassView.Show(); foreach (Window item in Application.Current.Windows) { if (!(item is IntoClassView || item is ExtendedScreenView)) { item.Close(); } } } UpdateMeeting(meetingList, creatorName, createTime); })); _exitDialog = null; }