Fix overlay accepting state changes while hidden

This commit is contained in:
Andrei Zavatski 2020-04-16 14:10:39 +03:00
parent 87f52b8233
commit c5a343d3a0
1 changed files with 13 additions and 15 deletions

View File

@ -81,7 +81,7 @@ protected override void PopIn()
{
base.PopIn();
// We don't want to create new display on every call, only when exiting from fully closed state.
// We don't want to create a new display on every call, only when exiting from fully closed state.
if (displayUpdateRequired)
{
header.Current.TriggerChange();
@ -102,7 +102,9 @@ private void loadDisplay(Drawable display)
LoadComponentAsync(display, loaded =>
{
loading.Hide();
if (API.IsLoggedIn)
loading.Hide();
content.Child = loaded;
}, (cancellationToken = new CancellationTokenSource()).Token);
}
@ -110,9 +112,14 @@ private void loadDisplay(Drawable display)
private void onTabChanged(ValueChangedEvent<DashboardOverlayTabs> tab)
{
cancellationToken?.Cancel();
loading.Show();
if (!API.IsLoggedIn)
{
loadDisplay(Empty());
return;
}
switch (tab.NewValue)
{
case DashboardOverlayTabs.Friends:
@ -126,19 +133,10 @@ private void onTabChanged(ValueChangedEvent<DashboardOverlayTabs> tab)
public override void APIStateChanged(IAPIProvider api, APIState state)
{
switch (state)
{
case APIState.Online:
// Will force to create a display based on visibility state
displayUpdateRequired = true;
State.TriggerChange();
return;
if (State.Value == Visibility.Hidden)
return;
default:
content.Clear();
loading.Show();
return;
}
header.Current.TriggerChange();
}
protected override void Dispose(bool isDisposing)