public async Task EnterRoomAsync() { using (SemaLock semaLock = INFO.NewSemaLock()) { // Update MUC info: INFO.state = MucState.ENTERING; using (MainDbContext ctx = new MainDbContext()) { // Clear MUC members: INFO.occupants.ForEach(o => o.Remove(ctx, true)); INFO.occupants.Clear(); INFO.OnOccupantsChanged(); ctx.Update(INFO); } } // Create message: JoinRoomRequestMessage msg = new JoinRoomRequestMessage(CLIENT.getXMPPAccount().getFullJid(), INFO.chat.bareJid, INFO.nickname, INFO.password); // Subscribe to events for receiving answers: CLIENT.NewMUCMemberPresenceMessage -= OnMucMemberPresenceMessage; CLIENT.NewMUCMemberPresenceMessage += OnMucMemberPresenceMessage; CLIENT.NewMUCPresenceErrorMessage -= OnMucPresenceErrorMessage; CLIENT.NewMUCPresenceErrorMessage += OnMucPresenceErrorMessage; // Send message: await CLIENT.SendAsync(msg); Logger.Info($"Entering MUC room '{INFO.chat.bareJid}' as '{INFO.nickname }'..."); }
public async Task enterRoomAsync() { // Update MUC info: INFO.state = MUCState.ENTERING; saveMUCEnterState(); // Clear MUC members: MUCDBManager.INSTANCE.deleteAllOccupantsforChat(MUC.id); // Create message: JoinRoomRequestMessage msg = new JoinRoomRequestMessage(CLIENT.getXMPPAccount().getFullJid(), MUC.chatJabberId, INFO.nickname, INFO.password); // Subscribe to events for receiving answers: CLIENT.NewMUCMemberPresenceMessage -= CLIENT_NewMUCMemberPresenceMessage; CLIENT.NewMUCMemberPresenceMessage += CLIENT_NewMUCMemberPresenceMessage; // Send message: await CLIENT.SendAsync(msg); Logger.Info("Entering MUC room '" + MUC.chatJabberId + "' as '" + INFO.nickname + '\''); }