mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
improve the flag editor warning viewmodel (#3532)
* improve the flag editor warning viewmodel - no longer creates a new viewmodel every page reload - fixes an oversight * stop countdown on unload * move the viewmodel to a variable makes everything look cleaner * remove initialload check
This commit is contained in:
parent
bd506ae545
commit
2c70430dfa
@ -10,6 +10,7 @@
|
|||||||
d:DesignHeight="450" d:DesignWidth="800"
|
d:DesignHeight="450" d:DesignWidth="800"
|
||||||
Scrollable="True"
|
Scrollable="True"
|
||||||
Loaded="Page_Loaded"
|
Loaded="Page_Loaded"
|
||||||
|
Unloaded="Page_Unloaded"
|
||||||
Title="FastFlagEditorWarningPage">
|
Title="FastFlagEditorWarningPage">
|
||||||
|
|
||||||
<StackPanel VerticalAlignment="Center">
|
<StackPanel VerticalAlignment="Center">
|
||||||
|
@ -8,25 +8,24 @@ namespace Bloxstrap.UI.Elements.Settings.Pages
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class FastFlagEditorWarningPage
|
public partial class FastFlagEditorWarningPage
|
||||||
{
|
{
|
||||||
private bool _initialLoad = false;
|
private FastFlagEditorWarningViewModel _viewModel;
|
||||||
|
|
||||||
public FastFlagEditorWarningPage()
|
public FastFlagEditorWarningPage()
|
||||||
{
|
{
|
||||||
DataContext = new FastFlagEditorWarningViewModel(this);
|
_viewModel = new FastFlagEditorWarningViewModel(this);
|
||||||
|
DataContext = _viewModel;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Page_Loaded(object sender, RoutedEventArgs e)
|
private void Page_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
// refresh datacontext on page load to reset timer
|
_viewModel.StartCountdown();
|
||||||
|
}
|
||||||
|
|
||||||
if (!_initialLoad)
|
private void Page_Unloaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
_initialLoad = true;
|
_viewModel.StopCountdown();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DataContext = new FastFlagEditorWarningViewModel(this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,8 @@ namespace Bloxstrap.UI.ViewModels.Settings
|
|||||||
{
|
{
|
||||||
private Page _page;
|
private Page _page;
|
||||||
|
|
||||||
|
private CancellationTokenSource? _cancellationTokenSource;
|
||||||
|
|
||||||
public string ContinueButtonText { get; set; } = "";
|
public string ContinueButtonText { get; set; } = "";
|
||||||
|
|
||||||
public bool CanContinue { get; set; } = false;
|
public bool CanContinue { get; set; } = false;
|
||||||
@ -24,17 +26,40 @@ namespace Bloxstrap.UI.ViewModels.Settings
|
|||||||
public FastFlagEditorWarningViewModel(Page page)
|
public FastFlagEditorWarningViewModel(Page page)
|
||||||
{
|
{
|
||||||
_page = page;
|
_page = page;
|
||||||
DoCountdown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void DoCountdown()
|
public void StopCountdown()
|
||||||
{
|
{
|
||||||
|
_cancellationTokenSource?.Cancel();
|
||||||
|
_cancellationTokenSource = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartCountdown()
|
||||||
|
{
|
||||||
|
StopCountdown();
|
||||||
|
|
||||||
|
_cancellationTokenSource = new CancellationTokenSource();
|
||||||
|
DoCountdown(_cancellationTokenSource.Token);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void DoCountdown(CancellationToken token)
|
||||||
|
{
|
||||||
|
CanContinue = false;
|
||||||
|
OnPropertyChanged(nameof(CanContinue));
|
||||||
|
|
||||||
for (int i = 10; i > 0; i--)
|
for (int i = 10; i > 0; i--)
|
||||||
{
|
{
|
||||||
ContinueButtonText = $"({i}) {Strings.Menu_FastFlagEditor_Warning_Continue}";
|
ContinueButtonText = $"({i}) {Strings.Menu_FastFlagEditor_Warning_Continue}";
|
||||||
OnPropertyChanged(nameof(ContinueButtonText));
|
OnPropertyChanged(nameof(ContinueButtonText));
|
||||||
|
|
||||||
await Task.Delay(1000);
|
try
|
||||||
|
{
|
||||||
|
await Task.Delay(1000, token);
|
||||||
|
}
|
||||||
|
catch (TaskCanceledException)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ContinueButtonText = Strings.Menu_FastFlagEditor_Warning_Continue;
|
ContinueButtonText = Strings.Menu_FastFlagEditor_Warning_Continue;
|
||||||
@ -42,9 +67,6 @@ namespace Bloxstrap.UI.ViewModels.Settings
|
|||||||
|
|
||||||
CanContinue = true;
|
CanContinue = true;
|
||||||
OnPropertyChanged(nameof(CanContinue));
|
OnPropertyChanged(nameof(CanContinue));
|
||||||
|
|
||||||
App.State.Prop.ShowFFlagEditorWarning = false;
|
|
||||||
App.State.Save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Continue()
|
private void Continue()
|
||||||
@ -52,6 +74,9 @@ namespace Bloxstrap.UI.ViewModels.Settings
|
|||||||
if (!CanContinue)
|
if (!CanContinue)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
App.State.Prop.ShowFFlagEditorWarning = false;
|
||||||
|
App.State.Save(); // should we be force saving here?
|
||||||
|
|
||||||
if (Window.GetWindow(_page) is INavigationWindow window)
|
if (Window.GetWindow(_page) is INavigationWindow window)
|
||||||
window.Navigate(typeof(FastFlagEditorPage));
|
window.Navigate(typeof(FastFlagEditorPage));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user