public async Task LeaveRoom(string name) { try { await Client.LeaveRoom(name); } catch (Exception ex) { Mvx.Error(ex.ToString()); } RoomsIn.RemoveAll(r => r.Name.Equals(name, StringComparison.OrdinalIgnoreCase)); }
public async Task JoinRoom(Room room) { try { await Client.JoinRoom(room.Name); } catch (Exception ex) { Mvx.Error(ex.ToString()); } if (!RoomsIn.Exists(r => r.Name.Equals(room.Name, StringComparison.OrdinalIgnoreCase))) { RoomsIn.Add(room); } }
async void Connect() { _client = new JabbRClient(this.Account.Url); _client.AddMessageContent += HandleAddMessageContent; //client.Disconnected += HandleDisconnected; _client.FlagChanged += HandleFlagChanged; _client.JoinedRoom += HandleJoinedRoom; _client.Kicked += HandleKicked; _client.LoggedOut += HandleLoggedOut; _client.MeMessageReceived += HandleMeMessageReceived; _client.MessageReceived += HandleMessageReceived; _client.NoteChanged += HandleNoteChanged; _client.OwnerAdded += HandleOwnerAdded; _client.OwnerRemoved += HandleOwnerRemoved; _client.PrivateMessage += HandlePrivateMessage; //_client.RoomCountChanged += HandleRoomCountChanged; //client.StateChanged += HandleStateChanged; _client.TopicChanged += HandleTopicChanged; _client.UserActivityChanged += HandleUserActivityChanged; _client.UserJoined += HandleUserJoined; _client.UserLeft += HandleUserLeft; _client.UsernameChanged += HandleUsernameChanged; _client.UsersInactive += HandleUsersInactive; _client.UserTyping += HandleUserTyping; LogOnInfo logonInfo = null; try { logonInfo = await _client.Connect(Account.Username, Account.Password); } catch (Exception ex) { Log("Connect Exception: " + ex); } if (logonInfo != null) { this.UserId = logonInfo.UserId; //Add us into the result's Rooms foreach (var r in logonInfo.Rooms) { Mvx.Trace("Rooms In: " + r.Name); RoomsIn.Add(r); } Log("Connected> " + this.UserId ?? "" + " -> Rooms: " + RoomsIn.Count); _messenger.Publish(new JabbrConnectedMessage(this, this, this.UserId, RoomsIn)); } }