Files
Nebula-Auth/NebulaAuth/ViewModel/MainVM_Code.cs
T
Давид Чернопятов 89ca08f6cf Pre-release performance update.
- Potentially fixed memory leak in code progress bar
- Added using statement in SteamGuardCodeGenerator on disposable HMACSHA1
- Most of packages updated to the last version
2024-09-01 02:51:35 +03:00

47 lines
1.3 KiB
C#

using System;
using CommunityToolkit.Mvvm.ComponentModel;
using SteamLib.SteamMobile;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Windows;
using System.Windows.Threading;
namespace NebulaAuth.ViewModel;
public partial class MainVM
{
private Timer _codeTimer;
[ObservableProperty] private double _codeProgress;
[ObservableProperty] private string _code;
[MemberNotNull(nameof(_codeTimer))]
private void CreateCodeTimer()
{
_codeTimer = new Timer(UpdateCode, null, 0, 1000);
}
private void UpdateCode(object? state = null)
{
var currentTime = TimeAligner.GetSteamTime();
var untilChange = currentTime - currentTime / 30L * 30L;
var codeProgress = untilChange / 30D * 100;
string? code = null;
if (untilChange == 0 && SelectedMafile != null)
{
code = SteamGuardCodeGenerator.GenerateCode(SelectedMafile!.SharedSecret);
}
if (Application.Current == null) return;
Application.Current.Dispatcher.Invoke((string? c) =>
{
if (Application.Current.MainWindow?.WindowState == WindowState.Minimized) return;
CodeProgress = codeProgress;
if (c != null) Code = c;
}, DispatcherPriority.Background, code);
}
}