Skip to content

Commit

Permalink
Improved messages incremental loading
Browse files Browse the repository at this point in the history
  • Loading branch information
FrayxRulez committed Jun 19, 2020
1 parent ab137fa commit 180704d
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions Unigram/Unigram/Controls/Chats/ChatListView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class ChatListView : PaddedListView
public ItemsStackPanel ItemsStack { get; private set; }

private DisposableMutex _loadMoreLock = new DisposableMutex();
private bool _loadingMore = false;

public ChatListView()
{
Expand Down Expand Up @@ -56,6 +57,8 @@ private async void OnLoaded(object sender, RoutedEventArgs e)
SetScrollMode();
}

_loadingMore = true;

using (await _loadMoreLock.WaitAsync())
{
if (ScrollingHost.ScrollableHeight < 200 && Items.Count > 0)
Expand All @@ -68,6 +71,8 @@ private async void OnLoaded(object sender, RoutedEventArgs e)
await ViewModel.LoadNextSliceAsync(false, true);
}
}

_loadingMore = false;
}

protected override void OnApplyTemplate()
Expand All @@ -80,6 +85,8 @@ protected override void OnApplyTemplate()

private async void Panel_SizeChanged(object sender, SizeChangedEventArgs e)
{
_loadingMore = true;

using (await _loadMoreLock.WaitAsync())
{
if (ScrollingHost.ScrollableHeight < 200)
Expand All @@ -95,24 +102,29 @@ private async void Panel_SizeChanged(object sender, SizeChangedEventArgs e)
}
}
}

_loadingMore = false;
}

private async void ScrollingHost_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
if (ScrollingHost == null || ItemsStack == null || ViewModel == null)
if (ScrollingHost == null || ItemsStack == null || ViewModel == null || _loadingMore)
{
return;
}

_loadingMore = true;

//if (ScrollingHost.VerticalOffset < 200 && ScrollingHost.ScrollableHeight > 0 && !e.IsIntermediate)
//if (ItemsStack.FirstCacheIndex == 0 && !e.IsIntermediate)
using (await _loadMoreLock.WaitAsync())
{
if (ItemsStack.FirstCacheIndex == 0 && ViewModel.IsLastSliceLoaded != true && !e.IsIntermediate)
if (ItemsStack.FirstCacheIndex == 0 && ViewModel.IsLastSliceLoaded != true)
{
await ViewModel.LoadNextSliceAsync(true);
}
else if (ScrollingHost.ScrollableHeight - ScrollingHost.VerticalOffset < 200 && ScrollingHost.ScrollableHeight > 0 && !e.IsIntermediate)
//else if (ScrollingHost.ScrollableHeight - ScrollingHost.VerticalOffset < 200 && ScrollingHost.ScrollableHeight > 0)
else if (ItemsStack.LastCacheIndex == ViewModel.Items.Count - 1)
{
if (ViewModel.IsFirstSliceLoaded != true)
{
Expand All @@ -125,6 +137,8 @@ private async void ScrollingHost_ViewChanged(object sender, ScrollViewerViewChan
}
}
}

_loadingMore = false;
}

private ItemsUpdatingScrollMode? _pendingMode;
Expand Down

0 comments on commit 180704d

Please sign in to comment.