From 686c5554b571f1bc3f7bdffdd0d4cbcb86f083d9 Mon Sep 17 00:00:00 2001 From: Emilia <emilia@jumpsca.re> Date: Thu, 19 Sep 2024 20:36:57 +0300 Subject: [PATCH] dead.png --- Blacklight.sln.DotSettings.user | 4 +++ Blacklight/App.axaml.cs | 1 + Blacklight/Assets/dead.png | Bin 0 -> 3815 bytes Blacklight/ViewModels/LoginViewModel.cs | 32 +++++++++++++++++++++++- Blacklight/Views/Login/Loading.axaml | 14 +++++++++-- Blacklight/Views/MainWindow.axaml | 10 ++++---- Lightquark.NET/Client.cs | 9 ++++--- Lightquark.NET/ClientMethods/Login.cs | 9 ++++++- 8 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 Blacklight/Assets/dead.png diff --git a/Blacklight.sln.DotSettings.user b/Blacklight.sln.DotSettings.user index 25b17d7..6afa4c6 100644 --- a/Blacklight.sln.DotSettings.user +++ b/Blacklight.sln.DotSettings.user @@ -1,8 +1,12 @@ <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> + <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003A020002A9pdb321_002Eil_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003FILViewer_003Fda232ecc044f4c3d8e856366253516531d2800_003F71_003F8a186d8b_003F020002A9pdb321_002Eil/@EntryIndexedValue">ForceIncluded</s:String> + <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003A020002ACpdb869_002Eil_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003FILViewer_003Fda232ecc044f4c3d8e856366253516531d2800_003F00_003F5a1370d8_003F020002ACpdb869_002Eil/@EntryIndexedValue">ForceIncluded</s:String> + <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAssetLoader_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F6dcc875f2facef5a505e1840bcae49509f5b796e47105cc3205aa92843f4753e_003FAssetLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AContentControl_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa0b45743773945a3bb67ca6440ae9eadf9c00_003F50_003F9d315227_003FContentControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADockFluentTheme_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc13735b26c914624b4ee4a88a575ae253ae00_003Feb_003F23efc6b0_003FDockFluentTheme_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFactory_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fe8b9e6b427dceb6f436414441b760d4dc52661df17f386ce4caa48aab354989_003FFactory_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHtmlControl_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F58931fa041a846b53462c4c4c5f52620bf9de09eff582aa4b1ed83c83e4e10ea_003FHtmlControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> + <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIAssetLoader_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fda232ecc044f4c3d8e856366253516531d2800_003F_005F27262_003FIAssetLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIFactory_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F52dbc4b2fb874f79fb4fec0b07cf7f6ca6ac95616e1d164ef210a0645a1aa9_003FIFactory_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANetworkInformation_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5b1b048ea0e94b28ad7cbac8ef6bc4c26e00_003Fb4_003Fff405095_003FNetworkInformation_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AProportionalDock_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F91c655b1795150937d9264ac1431c463ed5e5e8ad0286ad17e16f16175d94_003FProportionalDock_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> diff --git a/Blacklight/App.axaml.cs b/Blacklight/App.axaml.cs index aa5af35..0f9ba21 100644 --- a/Blacklight/App.axaml.cs +++ b/Blacklight/App.axaml.cs @@ -47,6 +47,7 @@ public partial class App : Application var path = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "blacklight", "login.json"); try { + Console.WriteLine("Deleting login.json"); File.Delete(path); } catch (Exception ex) diff --git a/Blacklight/Assets/dead.png b/Blacklight/Assets/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..19e04b037576294cc953a9cf6cde12343ff22a1f GIT binary patch literal 3815 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 Fng9SnTHpWx literal 0 HcmV?d00001 diff --git a/Blacklight/ViewModels/LoginViewModel.cs b/Blacklight/ViewModels/LoginViewModel.cs index 5c3c558..203c6f3 100644 --- a/Blacklight/ViewModels/LoginViewModel.cs +++ b/Blacklight/ViewModels/LoginViewModel.cs @@ -2,6 +2,8 @@ using System.IO; using System.Threading; using System.Windows.Input; +using Avalonia.Media.Imaging; +using Avalonia.Platform; using Avalonia.Threading; using Blacklight.Util; using Blacklight.Views.Login; @@ -31,6 +33,7 @@ public class LoginViewModel : ViewModelBase private string _password = string.Empty; private string? _loginError; private string _loadingText = "Loading..."; + private bool _loadingError; public string Email { @@ -56,6 +59,12 @@ public class LoginViewModel : ViewModelBase set => SetProperty(ref _networkError, value); } + public bool LoadingError + { + get => _loadingError; + set => SetProperty(ref _loadingError, value); + } + public string? LoginError { get => _loginError; @@ -96,6 +105,7 @@ public class LoginViewModel : ViewModelBase var network = await Client.GetNetworkAsync(new Uri(persistentData.NetworkBase)); if (network.success) { + Client.UseToken(null, "temp"); Client.NetworkInformation = network.networkInformation; Client.UseToken(persistentData.AccessToken, persistentData.RefreshToken); Console.WriteLine("Found token, showing ClientView"); @@ -104,7 +114,8 @@ public class LoginViewModel : ViewModelBase } else { - LoadingText = $"Failed to connect to network :< ({network.error})"; + LoadingText = $"{network.error}"; + LoadingError = true; } } @@ -132,7 +143,26 @@ public class LoginViewModel : ViewModelBase set => SetProperty(ref _loadingText, value); } + public ICommand ErrorResetCommand => new RelayCommand(ErrorReset); + + private void ErrorReset() + { + Client.LogOut(); + Client.RunLogOut(); + var path = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "blacklight", "login.json"); + try + { + Console.WriteLine("Deleting login.json"); + File.Delete(path); + } + catch (Exception ex) + { + Console.Error.WriteLine(ex); + } + UseSolstice(); + } + private async void Login() { LoginError = string.Empty; diff --git a/Blacklight/Views/Login/Loading.axaml b/Blacklight/Views/Login/Loading.axaml index 3f36c7a..b537e69 100644 --- a/Blacklight/Views/Login/Loading.axaml +++ b/Blacklight/Views/Login/Loading.axaml @@ -8,7 +8,7 @@ x:Class="Blacklight.Views.Login.Loading" x:DataType="viewModels:LoginViewModel"> <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> - <gif:GifImage HorizontalAlignment="Center" VerticalAlignment="Center" Source="avares://Blacklight/Assets/loading.gif" > + <gif:GifImage IsVisible="{Binding !LoadingError}" HorizontalAlignment="Center" VerticalAlignment="Center" Source="avares://Blacklight/Assets/loading.gif"> <gif:GifImage.Effect> <DropShadowEffect Color="#FFFFFF" BlurRadius="50" @@ -16,6 +16,16 @@ Opacity="0.5"/> </gif:GifImage.Effect> </gif:GifImage> - <TextBlock HorizontalAlignment="Center" Text="{Binding LoadingText, FallbackValue='Loading...'}" /> + <Image IsVisible="{Binding LoadingError}" MaxHeight="219" HorizontalAlignment="Center" VerticalAlignment="Center" Source="avares://Blacklight/Assets/dead.png"> + <Image.Effect> + <DropShadowEffect Color="#FFFFFF" + BlurRadius="50" + OffsetX="0" OffsetY="0" + Opacity="0.5"/> + </Image.Effect> + </Image> + + <TextBlock TextWrapping="Wrap" HorizontalAlignment="Center" Text="{Binding LoadingText, FallbackValue='Loading...'}" /> + <Button HorizontalAlignment="Center" IsVisible="{Binding LoadingError}" Command="{Binding ErrorResetCommand}">Log out</Button> </StackPanel> </UserControl> diff --git a/Blacklight/Views/MainWindow.axaml b/Blacklight/Views/MainWindow.axaml index 93cddb0..41e4f73 100644 --- a/Blacklight/Views/MainWindow.axaml +++ b/Blacklight/Views/MainWindow.axaml @@ -26,14 +26,14 @@ <ResourceDictionary> <ResourceDictionary.ThemeDictionaries> <ResourceDictionary x:Key="Light"> - <SolidColorBrush x:Key="RightBeltColor">#F2e9e9e9</SolidColorBrush> - <SolidColorBrush x:Key="NavBarColor">#F2D4DCE2</SolidColorBrush> + <SolidColorBrush x:Key="RightBeltColor">#E2e9e9e9</SolidColorBrush> + <SolidColorBrush x:Key="NavBarColor">#E2D4DCE2</SolidColorBrush> <SolidColorBrush x:Key="NavBarBorderColor">#e1e0dd</SolidColorBrush> - <SolidColorBrush x:Key="ResourceExplorerColor">#F2e9e9e9</SolidColorBrush> + <SolidColorBrush x:Key="ResourceExplorerColor">#E2e9e9e9</SolidColorBrush> <SolidColorBrush x:Key="ResourceExplorerBorderColor">#e1e0dd</SolidColorBrush> <SolidColorBrush x:Key="BottomBarColor">#e9e9e9</SolidColorBrush> - <SolidColorBrush x:Key="DocumentColor">#E6e9e9e9</SolidColorBrush> - <SolidColorBrush x:Key="TabStripColor">#F2e9e9e9</SolidColorBrush> + <SolidColorBrush x:Key="DocumentColor">#D6e9e9e9</SolidColorBrush> + <SolidColorBrush x:Key="TabStripColor">#E2e9e9e9</SolidColorBrush> <SolidColorBrush x:Key="TabPointerOverColor">#1E00FF00</SolidColorBrush> <SolidColorBrush x:Key="DockApplicationAccentBrushLow">Transparent</SolidColorBrush> <SolidColorBrush x:Key="DockApplicationAccentBrushMed">Transparent</SolidColorBrush> diff --git a/Lightquark.NET/Client.cs b/Lightquark.NET/Client.cs index 28731d3..19ddf4f 100644 --- a/Lightquark.NET/Client.cs +++ b/Lightquark.NET/Client.cs @@ -78,11 +78,12 @@ public partial class Client : ObservableObject } } } - - if (e.PropertyName == "RefreshToken" && RefreshToken == null && OnLogOut != null) + Console.WriteLine($"Detected {e.PropertyName} change"); + + if (e.PropertyName == "RefreshToken" && RefreshToken == null) { - OnLogOut.Invoke(); - _refreshTimer?.Dispose(); + Console.WriteLine("Detected LogOut"); + RunLogOut(); } base.OnPropertyChanged(e); } diff --git a/Lightquark.NET/ClientMethods/Login.cs b/Lightquark.NET/ClientMethods/Login.cs index 9b77f8e..d0be610 100644 --- a/Lightquark.NET/ClientMethods/Login.cs +++ b/Lightquark.NET/ClientMethods/Login.cs @@ -46,7 +46,7 @@ public partial class Client } } - public async void UseToken(string accessToken, string refreshToken) + public void UseToken(string? accessToken, string refreshToken) { RefreshToken = refreshToken; AccessToken = accessToken; @@ -96,4 +96,11 @@ public partial class Client AccessToken = null; RefreshToken = null; } + + public void RunLogOut() + { + Console.WriteLine("Logging out!"); + OnLogOut?.Invoke(); + _refreshTimer?.Dispose(); + } } \ No newline at end of file -- GitLab