Move projects to ./src

This commit is contained in:
achiez
2025-05-03 17:41:33 +03:00
parent 2054bd12d5
commit 3f54df252c
216 changed files with 220 additions and 196 deletions
+18 -21
View File
@@ -3,15 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17 # Visual Studio Version 17
VisualStudioVersion = 17.4.33205.214 VisualStudioVersion = 17.4.33205.214
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NebulaAuth", "NebulaAuth\NebulaAuth.csproj", "{0FD01700-6D5C-451B-93BA-0860647E8F13}"
ProjectSection(ProjectDependencies) = postProject
{09F02072-F91D-4DAA-87BC-A34D3E150570} = {09F02072-F91D-4DAA-87BC-A34D3E150570}
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NebulaAuth.LegacyConverter", "NebulaAuth.LegacyConverter\NebulaAuth.LegacyConverter.csproj", "{2D78A7D9-986A-4890-8A91-7ABD57A91830}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SteamLibForked", "SteamLibForked\SteamLibForked.csproj", "{09F02072-F91D-4DAA-87BC-A34D3E150570}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "changelog", "changelog", "{161BFADE-FCF3-45D1-82EA-8A1B187529F7}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "changelog", "changelog", "{161BFADE-FCF3-45D1-82EA-8A1B187529F7}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
changelog\1.3.4.html = changelog\1.3.4.html changelog\1.3.4.html = changelog\1.3.4.html
@@ -30,24 +21,30 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "changelog", "changelog", "{
changelog\1.5.6.html = changelog\1.5.6.html changelog\1.5.6.html = changelog\1.5.6.html
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SteamLibForked", "src\SteamLibForked\SteamLibForked.csproj", "{224F9DB0-3D20-A614-BA2A-12F22B13A2C6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NebulaAuth.LegacyConverter", "src\NebulaAuth.LegacyConverter\NebulaAuth.LegacyConverter.csproj", "{C8235305-E5C4-155B-C718-C0F239CA3AB7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NebulaAuth", "src\NebulaAuth\NebulaAuth.csproj", "{C42F63B6-32F7-ED08-5B86-CD51989761AD}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0FD01700-6D5C-451B-93BA-0860647E8F13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {224F9DB0-3D20-A614-BA2A-12F22B13A2C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0FD01700-6D5C-451B-93BA-0860647E8F13}.Debug|Any CPU.Build.0 = Debug|Any CPU {224F9DB0-3D20-A614-BA2A-12F22B13A2C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0FD01700-6D5C-451B-93BA-0860647E8F13}.Release|Any CPU.ActiveCfg = Release|Any CPU {224F9DB0-3D20-A614-BA2A-12F22B13A2C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0FD01700-6D5C-451B-93BA-0860647E8F13}.Release|Any CPU.Build.0 = Release|Any CPU {224F9DB0-3D20-A614-BA2A-12F22B13A2C6}.Release|Any CPU.Build.0 = Release|Any CPU
{2D78A7D9-986A-4890-8A91-7ABD57A91830}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C8235305-E5C4-155B-C718-C0F239CA3AB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D78A7D9-986A-4890-8A91-7ABD57A91830}.Debug|Any CPU.Build.0 = Debug|Any CPU {C8235305-E5C4-155B-C718-C0F239CA3AB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D78A7D9-986A-4890-8A91-7ABD57A91830}.Release|Any CPU.ActiveCfg = Release|Any CPU {C8235305-E5C4-155B-C718-C0F239CA3AB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D78A7D9-986A-4890-8A91-7ABD57A91830}.Release|Any CPU.Build.0 = Release|Any CPU {C8235305-E5C4-155B-C718-C0F239CA3AB7}.Release|Any CPU.Build.0 = Release|Any CPU
{09F02072-F91D-4DAA-87BC-A34D3E150570}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C42F63B6-32F7-ED08-5B86-CD51989761AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09F02072-F91D-4DAA-87BC-A34D3E150570}.Debug|Any CPU.Build.0 = Debug|Any CPU {C42F63B6-32F7-ED08-5B86-CD51989761AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09F02072-F91D-4DAA-87BC-A34D3E150570}.Release|Any CPU.ActiveCfg = Release|Any CPU {C42F63B6-32F7-ED08-5B86-CD51989761AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09F02072-F91D-4DAA-87BC-A34D3E150570}.Release|Any CPU.Build.0 = Release|Any CPU {C42F63B6-32F7-ED08-5B86-CD51989761AD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
-90
View File
@@ -1,90 +0,0 @@
<UserControl x:Class="NebulaAuth.View.SettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:other="clr-namespace:NebulaAuth.ViewModel.Other"
mc:Ignorable="d"
d:DesignHeight="650"
Foreground="WhiteSmoke"
FontFamily="{materialDesign:MaterialDesignFont}"
MinHeight="600"
MinWidth="400"
MaxWidth="200"
d:DataContext="{d:DesignInstance other:SettingsVM}"
Background="{DynamicResource WindowBackground}">
<Grid>
<Grid Margin="15,10,15,15">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock FontStyle="Normal" Foreground="DarkGray" HorizontalAlignment="Left"
VerticalAlignment="Center" FontSize="18" Text="{Tr SettingsDialog.Title}" />
<Button IsCancel="True" Grid.Column="1" Width="30" Height="30"
Style="{StaticResource MaterialDesignIconForegroundButton}" HorizontalAlignment="Right"
Command="{x:Static materialDesign:DialogHost.CloseDialogCommand}">
<materialDesign:PackIcon Kind="Close" Width="24" Height="24" Foreground="IndianRed" />
</Button>
</Grid>
<Separator Grid.Row="1" Margin="0,10,0,0" />
<StackPanel Grid.Row="2" Margin="10,30,10,10" Orientation="Vertical" HorizontalAlignment="Center">
<ComboBox Style="{StaticResource MaterialDesignOutlinedComboBox}" FontSize="16"
ItemsSource="{Binding BackgroundModes}" DisplayMemberPath="Value" SelectedValuePath="Key"
SelectedValue="{Binding BackgroundMode}"
materialDesign:HintAssist.Hint="{Tr SettingsDialog.BackgroundHint}" />
<ComboBox Style="{StaticResource MaterialDesignFloatingHintComboBox}" Margin="0,20,0,0" FontSize="16"
ItemsSource="{Binding Languages}" DisplayMemberPath="Value" SelectedValuePath="Key"
SelectedValue="{Binding Language}" materialDesign:HintAssist.Hint="{Tr LanguageWord}" />
<CheckBox Margin="0,10,0,0" FontSize="16" IsChecked="{Binding HideToTray}"
Content="{Tr SettingsDialog.MinimizeToTray}" />
<CheckBox Margin="0,10,0,0" FontSize="16" IsChecked="{Binding UseIcon}"
Content="{Tr SettingsDialog.UseIndicator}" ToolTip="{Tr SettingsDialog.UseIndicatorHint}" />
<materialDesign:ColorPicker IsEnabled="{Binding UseIcon}" Color="{Binding IconColor, Delay=50}" />
<CheckBox Margin="0,10,0,5" FontSize="16" IsChecked="{Binding UseBackground}"
Content="{Tr SettingsDialog.UseCustomColor}" />
<materialDesign:ColorPicker Height="100" IsEnabled="{Binding UseBackground}"
Color="{Binding BackgroundColor, Delay=50}" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<PasswordBox MinWidth="250" materialDesign:PasswordBoxAssist.Password="{Binding Password}"
Height="Auto" VerticalAlignment="Center" FontSize="16" Margin="0,10,0,0"
Style="{StaticResource MaterialDesignFloatingHintRevealPasswordBox}"
materialDesign:HintAssist.Hint="{Tr SettingsDialog.PasswordBox.CurrentCryptPassword}"
materialDesign:HintAssist.HelperText="{Tr SettingsDialog.PasswordBox.Hint}" />
<Button Command="{Binding SetPasswordCommand}" Margin="5,0,0,0" VerticalAlignment="Bottom"
Grid.Column="1">
<materialDesign:PackIcon Kind="ContentSave" />
</Button>
</Grid>
<CheckBox Margin="0,20,0,0" FontSize="16" IsChecked="{Binding LegacyMode}"
Content="{Tr SettingsDialog.LegacyMafileMode}"
ToolTip="{Tr SettingsDialog.LegacyMafileModeHint}" />
<!--<CheckBox IsEnabled="False" Margin="0,10,0,0" FontSize="16" IsChecked="{Binding AllowAutoUpdate}" Content="{Tr SettingsDialog.AllowAutoUpdate}"/>-->
<CheckBox Margin="0,10,0,0" FontSize="16" IsChecked="{Binding UseAccountNameAsMafileName}">
<TextBlock TextWrapping="WrapWithOverflow" Text="{Tr SettingsDialog.UseAccountName}" />
</CheckBox>
<CheckBox IsChecked="{Binding IgnorePatchTuesdayErrors}" Margin="0,10,0,0" FontSize="16"
ToolTip="{Tr SettingsDialog.IgnorePatchTuesdayErrorsHint}">
<TextBlock TextWrapping="WrapWithOverflow" Text="{Tr SettingsDialog.IgnorePatchTuesdayErrors}" />
</CheckBox>
</StackPanel>
</Grid>
</Grid>
</UserControl>
@@ -1,18 +0,0 @@
namespace SteamLib.Utility;
public readonly struct SocketsClientHandlerPair
{
public SocketsHttpHandler Handler { get; }
public HttpClient Client { get; }
public SocketsClientHandlerPair(HttpClient client, SocketsHttpHandler handler)
{
Handler = handler;
Client = client;
}
public (SocketsHttpHandler, HttpClient) Deconstruct()
{
return (Handler, Client);
}
}
@@ -26,7 +26,6 @@
<materialDesign:NullableToVisibilityConverter x:Key="NullableToVisibilityConverter" /> <materialDesign:NullableToVisibilityConverter x:Key="NullableToVisibilityConverter" />
<system:Boolean x:Key="True">True</system:Boolean> <system:Boolean x:Key="True">True</system:Boolean>
<system:Boolean x:Key="False">False</system:Boolean> <system:Boolean x:Key="False">False</system:Boolean>
@@ -58,10 +57,15 @@
<SolidColorBrush x:Key="MaterialDesign.Brush.Background" Color="{StaticResource BackgroundColor}" /> <SolidColorBrush x:Key="MaterialDesign.Brush.Background" Color="{StaticResource BackgroundColor}" />
<SolidColorBrush x:Key="MaterialDesign.Brush.Foreground" Color="{StaticResource BaseContentColor}" /> <SolidColorBrush x:Key="MaterialDesign.Brush.Foreground" Color="{StaticResource BaseContentColor}" />
<SolidColorBrush x:Key="MaterialDesign.Brush.ToolBar.Item.Background" <SolidColorBrush x:Key="MaterialDesign.Brush.ToolBar.Item.Background"
Color="{StaticResource Base300Color}" /> Color="{StaticResource PrimaryColor}" />
<SolidColorBrush x:Key="MaterialDesign.Brush.ToolBar.Item.Foreground" <SolidColorBrush x:Key="MaterialDesign.Brush.ToolBar.Item.Foreground"
Color="{StaticResource BaseContentColor}" /> Color="{StaticResource BaseContentColor}" />
<!--Unchecked checkbox uses it-->
<SolidColorBrush x:Key="MaterialDesign.Brush.ForegroundLight" Color="{DynamicResource PrimaryColor}"/>
<SolidColorBrush x:Key="MaterialDesign.Brush.SnackBar.Background" Color="{StaticResource BaseContentColor}"/>
</ResourceDictionary> </ResourceDictionary>
<!--secondary colour--> <!--secondary colour-->
@@ -97,7 +101,6 @@
<ResourceDictionary Source="Theme/MaterialDesignThemes.Overrides.xaml" /> <ResourceDictionary Source="Theme/MaterialDesignThemes.Overrides.xaml" />
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
</ResourceDictionary> </ResourceDictionary>
@@ -18,7 +18,7 @@ public class BackgroundSourceConverter : IValueConverter
} }
return new BitmapImage(new Uri("pack://application:,,,/Theme/Background.jpg")); return new BitmapImage(new Uri("pack://application:,,,/Theme/Background.png"));
} }
public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
@@ -2,9 +2,7 @@
using System.ComponentModel; using System.ComponentModel;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.Linq; using System.Linq;
using System.Windows; using System.Windows;
using System.Windows.Interop; using System.Windows.Interop;
using System.Windows.Media; using System.Windows.Media;
@@ -81,7 +79,6 @@ public static class ThemeManager
var color = (System.Windows.Media.Color) Application.Current.Resources[key]; var color = (System.Windows.Media.Color) Application.Current.Resources[key];
Application.Current.Resources[brushKey] = new SolidColorBrush(color); Application.Current.Resources[brushKey] = new SolidColorBrush(color);
} }
} }
@@ -347,20 +347,20 @@
<MouseBinding Gesture="LeftClick" Command="{Binding CopyCodeCommand}" /> <MouseBinding Gesture="LeftClick" Command="{Binding CopyCodeCommand}" />
</TextBox.InputBindings> </TextBox.InputBindings>
</TextBox> </TextBox>
<controls:CodeProgressBar <controls:CodeProgressBar
Visibility="{Binding SelectedMafile, Converter={StaticResource NullableToVisibilityConverter}}" Visibility="{Binding SelectedMafile, Converter={StaticResource NullableToVisibilityConverter}}"
Grid.Row="1" Height="4" Style="{StaticResource MaterialDesignLinearProgressBar}" Grid.Row="1" Height="4" Style="{StaticResource MaterialDesignLinearProgressBar}"
MaxTime="30" TimeRemaining="{Binding CodeProgress, Mode=OneWay}" /> MaxTime="30" TimeRemaining="{Binding CodeProgress, Mode=OneWay}" />
</Grid> </Grid>
<Button IsEnabled="{Binding IsMafileSelected}" w:FontScaleWindow.Scale="0.7" <Button IsEnabled="{Binding IsMafileSelected}" w:FontScaleWindow.Scale="0.7"
w:FontScaleWindow.ResizeFont="True" Grid.Row="1" w:FontScaleWindow.ResizeFont="True" Grid.Row="1"
Style="{StaticResource MaterialDesignOutlinedButton}" Margin="82,10,82,10" Style="{StaticResource MaterialDesignOutlinedButton}" Margin="0,10,0,10"
HorizontalAlignment="Center"
Content="{Tr MainWindow.RightPart.LoadConfirmations}"
Command="{Binding GetConfirmationsCommand}" Command="{Binding GetConfirmationsCommand}"
Width="{Binding Path=ActualWidth, Converter={StaticResource CoefficientConverter}, ConverterParameter=0.6, RelativeSource={RelativeSource AncestorType=md:Card}}"> Width="{Binding Path=ActualWidth, Converter={StaticResource CoefficientConverter}, ConverterParameter=0.6, RelativeSource={RelativeSource AncestorType=md:Card}}">
<TextBlock TextWrapping="Wrap" TextTrimming="WordEllipsis"
Text="{Tr MainWindow.RightPart.LoadConfirmations}" />
</Button> </Button>
<ItemsControl md:RippleAssist.IsDisabled="True" Focusable="False" Grid.Row="2" <ItemsControl md:RippleAssist.IsDisabled="True" Focusable="False" Grid.Row="2"
w:FontScaleWindow.Scale="0.72" w:FontScaleWindow.ResizeFont="True" w:FontScaleWindow.Scale="0.72" w:FontScaleWindow.ResizeFont="True"
@@ -409,7 +409,7 @@
</TextBlock> </TextBlock>
</Grid> </Grid>
</Border> </Border>
<md:Snackbar Grid.Row="1" FontSize="20" MessageQueue="{Binding MessageQueue}" /> <md:Snackbar Grid.Row="1" MessageQueue="{Binding MessageQueue}" />
</Grid> </Grid>
</md:DialogHost> </md:DialogHost>
</Border> </Border>
@@ -3,8 +3,11 @@ using System.Diagnostics;
using System.Reflection; using System.Reflection;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Navigation; using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading; using System.Windows.Threading;
using MaterialDesignThemes.Wpf; using MaterialDesignThemes.Wpf;
using NebulaAuth.Core; using NebulaAuth.Core;
@@ -109,4 +112,5 @@ public partial class MainWindow
} }
#endregion #endregion
} }
@@ -15,6 +15,8 @@ public static class MultiAccountAutoConfirmer
{ {
private const string LOC_PATH = "MAAC"; private const string LOC_PATH = "MAAC";
private static readonly ReaderWriterLockSlim Lock = new(); private static readonly ReaderWriterLockSlim Lock = new();
private static readonly SemaphoreSlim ExecutionLock = new(1, 1);
public static ObservableCollection<Mafile> Clients { get; } public static ObservableCollection<Mafile> Clients { get; }
private static Timer Timer { get; } private static Timer Timer { get; }
@@ -26,12 +28,10 @@ public static class MultiAccountAutoConfirmer
UpdateTimer(); UpdateTimer();
} }
private static readonly SemaphoreSlim ExecutionLock = new(1, 1);
// ReSharper disable once AsyncVoidMethod //Already safe // ReSharper disable once AsyncVoidMethod //Already safe
private static async void TimerConfirm(object? state) private static async void TimerConfirm(object? state)
{ {
bool isHeld = false; var isHeld = false;
try try
{ {
isHeld = await ExecutionLock.WaitAsync(0); isHeld = await ExecutionLock.WaitAsync(0);
@@ -40,8 +40,8 @@ public static class MultiAccountAutoConfirmer
SnackbarController.SendSnackbar(GetLocalization("TimerPreventedOverlap")); SnackbarController.SendSnackbar(GetLocalization("TimerPreventedOverlap"));
return; return;
} }
await TimerConfirmInternal();
await TimerConfirmInternal();
} }
catch (Exception e) catch (Exception e)
{ {
@@ -17,7 +17,6 @@ using SteamLib.Authentication;
using SteamLib.Core.Interfaces; using SteamLib.Core.Interfaces;
using SteamLib.Exceptions; using SteamLib.Exceptions;
using SteamLib.SteamMobile.Confirmations; using SteamLib.SteamMobile.Confirmations;
using SteamLib.Utility;
using SteamLib.Web; using SteamLib.Web;
namespace NebulaAuth.Model.MAAC; namespace NebulaAuth.Model.MAAC;
@@ -27,7 +26,7 @@ public partial class PortableMaClient : ObservableObject, IDisposable
private const string LOC_PATH = "MAAC"; private const string LOC_PATH = "MAAC";
public Mafile Mafile { get; } public Mafile Mafile { get; }
private HttpClient Client { get; } private HttpClient Client { get; }
private SocketsHttpHandler ClientHandler { get; } private HttpClientHandler ClientHandler { get; }
private DynamicProxy Proxy { get; } private DynamicProxy Proxy { get; }
private readonly CancellationTokenSource _cts = new(); private readonly CancellationTokenSource _cts = new();
@@ -12,14 +12,13 @@ using SteamLib.Core.Interfaces;
using SteamLib.Exceptions; using SteamLib.Exceptions;
using SteamLib.ProtoCore.Services; using SteamLib.ProtoCore.Services;
using SteamLib.SteamMobile.Confirmations; using SteamLib.SteamMobile.Confirmations;
using SteamLib.Utility;
using SteamLib.Web; using SteamLib.Web;
namespace NebulaAuth.Model; namespace NebulaAuth.Model;
public static class MaClient public static class MaClient
{ {
private static SocketsHttpHandler ClientHandler { get; } private static HttpClientHandler ClientHandler { get; }
private static HttpClient Client { get; } private static HttpClient Client { get; }
@@ -8,8 +8,6 @@ using NebulaAuth.Core;
using NebulaAuth.Model.Entities; using NebulaAuth.Model.Entities;
using NebulaAuth.View.Dialogs; using NebulaAuth.View.Dialogs;
using SteamLib.Exceptions; using SteamLib.Exceptions;
using SteamLib.Utility;
namespace NebulaAuth.Model; namespace NebulaAuth.Model;
@@ -18,7 +16,7 @@ public static partial class SessionHandler
private static readonly SemaphoreSlim Semaphore = new(1, 1); private static readonly SemaphoreSlim Semaphore = new(1, 1);
public static async Task<T> Handle<T>(Func<Task<T>> func, Mafile mafile, public static async Task<T> Handle<T>(Func<Task<T>> func, Mafile mafile,
SocketsClientHandlerPair? chp = null, string? snackbarPrefix = null) HttpClientHandlerPair? chp = null, string? snackbarPrefix = null)
{ {
chp ??= MaClient.GetHttpClientHandlerPair(mafile); chp ??= MaClient.GetHttpClientHandlerPair(mafile);
await Semaphore.WaitAsync(); await Semaphore.WaitAsync();
@@ -32,7 +30,7 @@ public static partial class SessionHandler
} }
} }
private static async Task<T> HandleInternal<T>(Func<Task<T>> func, SocketsClientHandlerPair chp, Mafile mafile, private static async Task<T> HandleInternal<T>(Func<Task<T>> func, HttpClientHandlerPair chp, Mafile mafile,
string? snackbarPrefix = null) string? snackbarPrefix = null)
{ {
using var scope = Shell.Logger.PushScopeProperty("Scope", "SessionHandler"); using var scope = Shell.Logger.PushScopeProperty("Scope", "SessionHandler");
@@ -137,7 +135,7 @@ public static partial class SessionHandler
} }
private static async Task<bool> RefreshInternal(SocketsClientHandlerPair chp, Mafile mafile) private static async Task<bool> RefreshInternal(HttpClientHandlerPair chp, Mafile mafile)
{ {
try try
{ {
@@ -152,7 +150,7 @@ public static partial class SessionHandler
} }
} }
private static async Task<bool> LoginAgainInternal(SocketsClientHandlerPair chp, Mafile mafile, string password, private static async Task<bool> LoginAgainInternal(HttpClientHandlerPair chp, Mafile mafile, string password,
bool savePassword) bool savePassword)
{ {
var t = Task.Run(OnLoginStarted); var t = Task.Run(OnLoginStarted);
@@ -1,5 +1,4 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using AchiesUtilities.Web.Models; using AchiesUtilities.Web.Models;
using NebulaAuth.Model.Entities; using NebulaAuth.Model.Entities;
using SteamLib.Account; using SteamLib.Account;
@@ -8,14 +7,12 @@ using SteamLib.Authentication;
using SteamLib.Authentication.LoginV2; using SteamLib.Authentication.LoginV2;
using SteamLib.Exceptions; using SteamLib.Exceptions;
using SteamLib.SteamMobile; using SteamLib.SteamMobile;
using SteamLib.Utility;
namespace NebulaAuth.Model; namespace NebulaAuth.Model;
public partial class SessionHandler //API public partial class SessionHandler //API
{ {
public static async Task RefreshMobileToken(SocketsClientHandlerPair chp, Mafile mafile) public static async Task RefreshMobileToken(HttpClientHandlerPair chp, Mafile mafile)
{ {
if (mafile.SessionData is not {RefreshToken.IsExpired: false}) if (mafile.SessionData is not {RefreshToken.IsExpired: false})
throw new SessionPermanentlyExpiredException(SessionInvalidException.SESSION_NULL_MSG); throw new SessionPermanentlyExpiredException(SessionInvalidException.SESSION_NULL_MSG);
@@ -35,7 +32,7 @@ public partial class SessionHandler //API
chp.Handler.CookieContainer.SetSteamMobileCookiesWithMobileToken(mafile.SessionData); chp.Handler.CookieContainer.SetSteamMobileCookiesWithMobileToken(mafile.SessionData);
} }
public static async Task LoginAgain(SocketsClientHandlerPair chp, Mafile mafile, string password, bool savePassword) public static async Task LoginAgain(HttpClientHandlerPair chp, Mafile mafile, string password, bool savePassword)
{ {
var sgGenerator = new SteamGuardCodeGenerator(mafile.SharedSecret); var sgGenerator = new SteamGuardCodeGenerator(mafile.SharedSecret);
var options = new LoginV2ExecutorOptions(LoginV2Executor.NullConsumer, chp.Client) var options = new LoginV2ExecutorOptions(LoginV2Executor.NullConsumer, chp.Client)
@@ -17,7 +17,7 @@
<ItemGroup> <ItemGroup>
<None Remove="Theme\1140x641.jpg" /> <None Remove="Theme\1140x641.jpg" />
<None Remove="Theme\Background.jpg" /> <None Remove="Theme\Background.png" />
<None Remove="Theme\lock.ico" /> <None Remove="Theme\lock.ico" />
<None Remove="Theme\SplashScreen.png" /> <None Remove="Theme\SplashScreen.png" />
</ItemGroup> </ItemGroup>
@@ -35,7 +35,10 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Resource Include="Theme\Background.jpg"> <Resource Include="Theme\Background.png">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Resource>
<Resource Include="Theme\Background_Old.jpg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Resource> </Resource>
<Resource Include="Theme\lock.ico" /> <Resource Include="Theme\lock.ico" />
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Before

Width:  |  Height:  |  Size: 713 KiB

After

Width:  |  Height:  |  Size: 713 KiB

@@ -39,15 +39,20 @@ public class CodeProgressBar : ProgressBar
private void StartProgressAnimation(double timeRemaining) private void StartProgressAnimation(double timeRemaining)
{ {
if (timeRemaining <= 0 || MaxTime <= 0) return; if (timeRemaining <= 0 || MaxTime <= 0) return;
var progress = (1 - timeRemaining / MaxTime) * 100;
var progress = (1 - timeRemaining / MaxTime) * 100;
Value = 0;
Value = 100;
var animation = new DoubleAnimation var animation = new DoubleAnimation
{ {
From = progress, From = progress,
To = 100, To = 100,
Duration = TimeSpan.FromSeconds(timeRemaining) Duration = TimeSpan.FromSeconds(timeRemaining),
AccelerationRatio = 0,
DecelerationRatio = 0,
}; };
BeginAnimation(ValueProperty, animation); BeginAnimation(ValueProperty, animation);
} }
} }

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

+28
View File
@@ -0,0 +1,28 @@
using System.Windows.Media.Animation;
using System.Windows;
using System;
using System.Windows.Controls;
namespace NebulaAuth.Theme;
public class ProgressBarSmoother
{
public static double GetSmoothValue(DependencyObject obj)
{
return (double)obj.GetValue(SmoothValueProperty);
}
public static void SetSmoothValue(DependencyObject obj, double value)
{
obj.SetValue(SmoothValueProperty, value);
}
public static readonly DependencyProperty SmoothValueProperty =
DependencyProperty.RegisterAttached("SmoothValue", typeof(double), typeof(ProgressBarSmoother), new PropertyMetadata(0.0, changing));
private static void changing(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var anim = new DoubleAnimation((double)e.OldValue, (double)e.NewValue, new TimeSpan(0, 0, 0, 0, 250));
(d as ProgressBar).BeginAnimation(ProgressBar.ValueProperty, anim, HandoffBehavior.Compose);
}
}

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before

Width:  |  Height:  |  Size: 490 KiB

After

Width:  |  Height:  |  Size: 490 KiB

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Before

Width:  |  Height:  |  Size: 906 KiB

After

Width:  |  Height:  |  Size: 906 KiB

@@ -136,7 +136,7 @@
<TextBox Grid.Row="1" Padding="7" Text="{Binding PassFieldText}" <TextBox Grid.Row="1" Padding="7" Text="{Binding PassFieldText}"
Visibility="{Binding IsPasswordFieldVisible, Converter={StaticResource BooleanToVisibilityConverter}}" Visibility="{Binding IsPasswordFieldVisible, Converter={StaticResource BooleanToVisibilityConverter}}"
Style="{StaticResource MaterialDesignOutlinedTextBox}" FontSize="16" /> Style="{StaticResource MaterialDesignOutlinedTextBox}" FontSize="16" />
<GroupBox Grid.Row="2" MaxWidth="400" BorderBrush="{StaticResource PrimaryHueMidBrush}" <GroupBox Grid.Row="2" MaxWidth="400" BorderBrush="{StaticResource PrimaryBrush}"
VerticalAlignment="Bottom" BorderThickness="1" Margin="0,10,0,0" Padding="5"> VerticalAlignment="Bottom" BorderThickness="1" Margin="0,10,0,0" Padding="5">
<GroupBox.HeaderTemplate> <GroupBox.HeaderTemplate>
<DataTemplate> <DataTemplate>
+100
View File
@@ -0,0 +1,100 @@
<UserControl x:Class="NebulaAuth.View.SettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:other="clr-namespace:NebulaAuth.ViewModel.Other"
mc:Ignorable="d"
d:DesignHeight="650"
FontFamily="{materialDesign:MaterialDesignFont}"
MinHeight="600"
MinWidth="400"
MaxWidth="200"
d:DataContext="{d:DesignInstance other:SettingsVM}"
Background="{DynamicResource WindowBackground}">
<Grid>
<Grid Margin="15,10,15,15">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock FontStyle="Normal" Foreground="DarkGray" HorizontalAlignment="Left"
VerticalAlignment="Center" FontSize="18" Text="{Tr SettingsDialog.Title}" />
<Button IsCancel="True" Grid.Column="1" Width="30" Height="30"
Style="{StaticResource MaterialDesignIconForegroundButton}" HorizontalAlignment="Right"
Command="{x:Static materialDesign:DialogHost.CloseDialogCommand}">
<materialDesign:PackIcon Kind="Close" Width="24" Height="24" Foreground="IndianRed" />
</Button>
</Grid>
<Separator Grid.Row="1" Margin="0,10,0,0" />
<TabControl Grid.Row="2">
<TabItem Header="ОсновныеNTR">
<StackPanel Margin="10,30,10,10" Orientation="Vertical" HorizontalAlignment="Center">
<ComboBox Style="{StaticResource MaterialDesignOutlinedComboBox}" FontSize="16"
ItemsSource="{Binding BackgroundModes}" DisplayMemberPath="Value" SelectedValuePath="Key"
SelectedValue="{Binding BackgroundMode}"
materialDesign:HintAssist.Hint="{Tr SettingsDialog.BackgroundHint}" />
<ComboBox Style="{StaticResource MaterialDesignFloatingHintComboBox}" Margin="0,20,0,0" FontSize="16"
ItemsSource="{Binding Languages}" DisplayMemberPath="Value" SelectedValuePath="Key"
SelectedValue="{Binding Language}" materialDesign:HintAssist.Hint="{Tr LanguageWord}" />
<CheckBox Margin="0,10,0,0" FontSize="16" IsChecked="{Binding HideToTray}"
Content="{Tr SettingsDialog.MinimizeToTray}" />
<CheckBox Margin="0,10,0,0" FontSize="16" IsChecked="{Binding UseIcon}"
Content="{Tr SettingsDialog.UseIndicator}" ToolTip="{Tr SettingsDialog.UseIndicatorHint}" />
<materialDesign:ColorPicker IsEnabled="{Binding UseIcon}" Color="{Binding IconColor, Delay=50}" />
<CheckBox Margin="0,10,0,5" FontSize="16" IsChecked="{Binding UseBackground}"
Content="{Tr SettingsDialog.UseCustomColor}" />
<materialDesign:ColorPicker Height="100" IsEnabled="{Binding UseBackground}"
Color="{Binding BackgroundColor, Delay=50}" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<PasswordBox MinWidth="250" materialDesign:PasswordBoxAssist.Password="{Binding Password}"
Height="Auto" VerticalAlignment="Center" FontSize="16" Margin="0,10,0,0"
Style="{StaticResource MaterialDesignFloatingHintRevealPasswordBox}"
materialDesign:HintAssist.Hint="{Tr SettingsDialog.PasswordBox.CurrentCryptPassword}"
materialDesign:HintAssist.HelperText="{Tr SettingsDialog.PasswordBox.Hint}" />
<Button Command="{Binding SetPasswordCommand}" Margin="5,0,0,0" VerticalAlignment="Bottom"
Grid.Column="1">
<materialDesign:PackIcon Kind="ContentSave" />
</Button>
</Grid>
<CheckBox Margin="0,20,0,0" FontSize="16" IsChecked="{Binding LegacyMode}"
Content="{Tr SettingsDialog.LegacyMafileMode}"
ToolTip="{Tr SettingsDialog.LegacyMafileModeHint}" />
<!--<CheckBox IsEnabled="False" Margin="0,10,0,0" FontSize="16" IsChecked="{Binding AllowAutoUpdate}" Content="{Tr SettingsDialog.AllowAutoUpdate}"/>-->
<CheckBox Margin="0,10,0,0" FontSize="16" IsChecked="{Binding UseAccountNameAsMafileName}">
<TextBlock TextWrapping="WrapWithOverflow" Text="{Tr SettingsDialog.UseAccountName}" />
</CheckBox>
<CheckBox Style="{StaticResource MaterialDesignCheckBox}" BorderBrush="AliceBlue" BorderThickness="2" IsChecked="{Binding IgnorePatchTuesdayErrors}" Margin="0,10,0,0" FontSize="16"
ToolTip="{Tr SettingsDialog.IgnorePatchTuesdayErrorsHint}">
<TextBlock TextWrapping="WrapWithOverflow" Text="{Tr SettingsDialog.IgnorePatchTuesdayErrors}" />
</CheckBox>
</StackPanel>
</TabItem>
<TabItem IsEnabled="True" Header="ТулбарNTR">
<TextBlock>Coming soon</TextBlock>
</TabItem>
</TabControl>
</Grid>
</Grid>
</UserControl>
@@ -26,7 +26,6 @@ public partial class MainVM
_codeTimer = new Timer(UpdateCode, null, 0, 1000); _codeTimer = new Timer(UpdateCode, null, 0, 1000);
} }
private void UpdateCode(object? state = null) private void UpdateCode(object? state = null)
{ {
var currentTime = TimeAligner.GetSteamTime(); var currentTime = TimeAligner.GetSteamTime();
@@ -41,7 +40,7 @@ public partial class MainVM
if (Application.Current.MainWindow?.WindowState == WindowState.Minimized) return; if (Application.Current.MainWindow?.WindowState == WindowState.Minimized) return;
if (SelectedMafile == null) return; if (SelectedMafile == null) return;
Code = SteamGuardCodeGenerator.GenerateCode(SelectedMafile.SharedSecret); Code = SteamGuardCodeGenerator.GenerateCode(SelectedMafile.SharedSecret);
}, DispatcherPriority.DataBind); }, DispatcherPriority.Normal);
} }

Some files were not shown because too many files have changed in this diff Show More