async Task PerformSearch(CancellationToken token) { Searching = true; await Invoke(StateHasChanged); await Task.Delay(1); var options = GitterApi.GetNewOptions(); options.Query = SearchText; options.Limit = 100; SearchResult = new List <IChatMessage>(); var messages = await GitterApi.SearchChatMessages(ChatRoom.Id, options); while ((messages?.Any() ?? false) && !token.IsCancellationRequested) { SearchResult?.AddRange(messages.OrderBy(m => m.Sent).Reverse()); await Invoke(StateHasChanged); await Task.Delay(1000); options.Skip += messages.Count(); messages = await GitterApi.SearchChatMessages(ChatRoom.Id, options); } Searching = false; await Invoke(StateHasChanged); await Task.Delay(1); }
async Task <int> FetchOldMessages(CancellationToken token) { var options = GitterApi.GetNewOptions(); options.Lang = Localisation.LocalCultureInfo.Name; options.AfterId = ""; if (Messages?.Any() ?? false) { options.BeforeId = GetFirstMessageId(); if (!token.IsCancellationRequested) { var count = await FetchNewMessages(options, token); await InvokeAsync(StateHasChanged); //await Task.Delay(100); //_ = await JSRuntime.ScrollIntoView(options.BeforeId); return(count); } } token.ThrowIfCancellationRequested(); return(0); }
async Task MonitorNewMessages() { RoomWatcher.Stop(); if (RoomWatcher.Interval == 250) { RoomWatcher.Interval = 2000; } var options = GitterApi.GetNewOptions(); options.Lang = Localisation.LocalCultureInfo.Name; options.AfterId = ""; bool bottom = false; try { bottom = await JSRuntime.IsScrolledToBottom("blgmessagelist"); } catch (Exception ex) { Console.WriteLine(ex); } if (Messages?.Any() ?? false) { options.AfterId = GetLastMessageId(); } await FetchNewMessages(options, tokenSource.Token); if (Messages?.Any() ?? false) { if (bottom) { _ = await JSRuntime.ScrollIntoView(GetLastMessageId()); } } RoomWatcher?.Start(); }
async Task MonitorNewMessages() { RoomWatcher.Stop(); if (RoomWatcher.Interval == 250) { RoomWatcher.Interval = 2000; } var options = GitterApi.GetNewOptions(); options.Lang = Localisation.LocalCultureInfo.Name; options.AfterId = ""; //bool bottom = false; //try //{ // bottom = await JSRuntime.IsScrolledToBottom("blgmessagelist"); //} //catch //{ //} if (Messages?.Any() ?? false) { options.AfterId = GetLastMessageId(); } await FetchNewMessages(options, tokenSource.Token); //if (Messages?.Any() ?? false) //{ // if (bottom) // { // _ = await JSRuntime.ScrollIntoView(GetLastMessageId()); // } //} RoomWatcher?.Start(); }