async Task CargarMensajes(int skipIndex, int takeIndex, bool isRefreshing = false) { if (!NoHayNadaMasParaCargar) { ChatsMensajesDTO chatMensaje = new ChatsMensajesDTO { CodigoChatEnvia = Chat.Consecutivo, CodigoChatRecibe = Chat.CodigoChatRecibe, SkipIndexBase = skipIndex, TakeIndexBase = takeIndex, ZonaHorariaGMTBase = _dateTimeHelper.DifferenceBetweenGMTAndLocalTimeZone }; if (isRefreshing && Mensajes != null) { chatMensaje.FechaFiltroBase = Mensajes.Max(x => x.ChatMensaje.FechaMensaje); } if (IsNotConnected) { return; } List <ChatsMensajesDTO> listaMensajes = await _chatsServices.ListarChatsMensajes(chatMensaje); if (listaMensajes != null) { if (listaMensajes.Count > 0) { using (await _lockeable.LockAsync()) { if (isRefreshing) { if (Mensajes == null) { Mensajes = new ObservableRangeCollection <ChatMensajesModel>(ChatMensajesModel.CrearListaMensajes(listaMensajes, Chat.CodigoChatRecibe)); } else { List <ChatMensajesModel> listaMensajesParaInsertar = ChatMensajesModel.CrearListaMensajes(listaMensajes, Chat.CodigoChatRecibe); foreach (ChatMensajesModel mensaje in listaMensajesParaInsertar) { Mensajes.Insert(0, mensaje); } } } else { listaMensajes.Reverse(); if (Mensajes == null) { Mensajes = new ObservableRangeCollection <ChatMensajesModel>(ChatMensajesModel.CrearListaMensajes(listaMensajes, Chat.CodigoChatRecibe)); } else { Mensajes.AddRange(ChatMensajesModel.CrearListaMensajes(listaMensajes, Chat.CodigoChatRecibe)); } } } } else { NoHayNadaMasParaCargar = listaMensajes.Count <= 0; } } } }