private void ExecuteOnDialogSearch() { try { Task.Run(() => { try { if (IsDialogSearchVisible) { if (SelectedContact != null) { _view.MessageList.Clear(); var res = new List <BaseMessage>(); if (SelectedContact is UserUiInfo) { var userUiInfo = SelectedContact as UserUiInfo; res.AddRange(UserServiceClient.GetUserMessages(GlobalBase.CurrentUser.Id, userUiInfo.UserId, messageLimit)); } else if (SelectedContact is ChatGroupUiInfo) { var chatGroupUiInfo = SelectedContact as ChatGroupUiInfo; res.AddRange(UserServiceClient.GetGroupMessages(chatGroupUiInfo.ChatGroupId, messageLimit)); } if (res.Count != 0) { foreach (var mes in res) { if (GlobalBase.Base64Decode(mes.Text).Contains(DialogSearchStr)) { GlobalBase.AddMessageOnUi.Invoke(mes); } } } GlobalBase.UpdateMessagesOnUI(); } } else { SelectedContactChanged(); } } catch (Exception) { } }); } catch (Exception) { } }
private void SelectedContactChanged(object sender = null, PropertyChangedEventArgs e = null) { try { ResetDialogSearchOnUi(); if (SelectedContact != null) { IsMenuEnabled = true; } else { IsMenuEnabled = false; } if (_view.MessageList != null) { Task.Run(() => { try { lock (_view.MessageList) { _view.MessageList.Clear(); } GlobalBase.loadPictures(UserServiceClient, ContactsList); var res = new List <BaseMessage>(); if (SelectedContact is UserUiInfo) { res.AddRange(UserServiceClient.GetUserMessages(GlobalBase.CurrentUser.Id, (SelectedContact as UserUiInfo).UserId, messageLimit)); } else if (SelectedContact is ChatGroupUiInfo) { res.AddRange( UserServiceClient.GetGroupMessages((SelectedContact as ChatGroupUiInfo).ChatGroupId, messageLimit)); } if (res.Count != 0) { Application.Current.Dispatcher.Invoke(new Action(() => { lock (_view.MessageList) { _view.MessageList.AddRange(res); } })); } } catch (Exception) { } }).ContinueWith((task => { GlobalBase.UpdateMessagesOnUI(); })); } } catch (Exception) { } }