fix: Some page relation is not responsed.
This commit is contained in:
parent
b1582ad4d4
commit
f687dc33a2
@ -33,13 +33,13 @@
|
||||
<Assembly Path="C:\Users\Cardi\.nuget\packages\irihi.ursa\1.10.0\lib\net8.0\Ursa.dll" />
|
||||
<Assembly Path="C:\Users\Cardi\.nuget\packages\irihi.ursa.themes.semi\1.10.0\lib\netstandard2.0\Ursa.Themes.Semi.dll" />
|
||||
</AssemblyExplorer></s:String>
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=b5573ef9_002Db554_002D4a56_002D82c4_002D2531c8feef65/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" IsActive="True" IsLocked="True" Name="PathValidationTest" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
|
||||
<TestAncestor>
|
||||
<TestId>MSTest::5B1CB26D-99F5-491A-B368-7E3552FE67E9::net9.0::Flawless.Abstract.Test.WorkPathTestUnit</TestId>
|
||||
</TestAncestor>
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=b5573ef9_002Db554_002D4a56_002D82c4_002D2531c8feef65/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" IsActive="True" IsLocked="True" Name="PathValidationTest" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
|
||||
<TestAncestor>
|
||||
<TestId>MSTest::5B1CB26D-99F5-491A-B368-7E3552FE67E9::net9.0::Flawless.Abstract.Test.WorkPathTestUnit</TestId>
|
||||
</TestAncestor>
|
||||
</SessionState></s:String>
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=f3f8a684_002Dc08e_002D489f_002D949c_002D6c38a1ed63b0/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" Name="PathValidationTest #2" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
|
||||
<TestAncestor>
|
||||
<TestId>MSTest::5B1CB26D-99F5-491A-B368-7E3552FE67E9::net9.0::Flawless.Abstract.Test.WorkPathTestUnit.PathValidationTest</TestId>
|
||||
</TestAncestor>
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=f3f8a684_002Dc08e_002D489f_002D949c_002D6c38a1ed63b0/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" Name="PathValidationTest #2" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
|
||||
<TestAncestor>
|
||||
<TestId>MSTest::5B1CB26D-99F5-491A-B368-7E3552FE67E9::net9.0::Flawless.Abstract.Test.WorkPathTestUnit.PathValidationTest</TestId>
|
||||
</TestAncestor>
|
||||
</SessionState></s:String></wpf:ResourceDictionary>
|
||||
21
Flawless.Client/ViewModels/MainViewModel.cs
Normal file
21
Flawless.Client/ViewModels/MainViewModel.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Reactive;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace Flawless.Client.ViewModels;
|
||||
|
||||
public class MainViewModel : ViewModelBase, IScreen, IRoutableViewModel
|
||||
{
|
||||
public string? UrlPathSegment { get; } = Guid.NewGuid().ToString();
|
||||
|
||||
public IScreen HostScreen { get; }
|
||||
|
||||
public RoutingState Router { get; } = new RoutingState();
|
||||
|
||||
public ReactiveCommand<Unit, IRoutableViewModel> GoBackCommand => Router.NavigateBack;
|
||||
|
||||
public MainViewModel(IScreen hostScreen)
|
||||
{
|
||||
HostScreen = hostScreen;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using System.Reactive;
|
||||
using System;
|
||||
using System.Reactive;
|
||||
using System.Reactive.Linq;
|
||||
using Flawless.Client.Service;
|
||||
using ReactiveUI;
|
||||
@ -11,12 +12,23 @@ public partial class MainWindowViewModel : ViewModelBase, IScreen
|
||||
public RoutingState Router { get; } = new RoutingState();
|
||||
|
||||
public ReactiveCommand<Unit, IRoutableViewModel> GoBackCommand => Router.NavigateBack;
|
||||
|
||||
[Reactive] private bool _requireLogin = true;
|
||||
|
||||
|
||||
|
||||
public MainWindowViewModel()
|
||||
{
|
||||
Api.Current.IsLoggedIn.Select(x => !x).BindTo(this, vm => vm.RequireLogin);
|
||||
#pragma warning disable VSTHRD110
|
||||
Api.Current.IsLoggedIn.Subscribe(login =>
|
||||
{
|
||||
if (login)
|
||||
{
|
||||
Console.WriteLine("Enter main page");
|
||||
Router.Navigate.Execute(new LoginViewModel(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Require login again");
|
||||
Router.NavigateAndReset.Execute(new ServerConnectViewModel(this));
|
||||
}
|
||||
});
|
||||
#pragma warning restore VSTHRD110
|
||||
}
|
||||
}
|
||||
@ -10,9 +10,13 @@ using Ursa.ReactiveUIExtension;
|
||||
|
||||
namespace Flawless.Client.ViewModels;
|
||||
|
||||
public partial class ServerConnectViewModel : ViewModelBase, IScreen
|
||||
public partial class ServerConnectViewModel : ViewModelBase, IScreen, IRoutableViewModel
|
||||
{
|
||||
public RoutingState Router { get; } = new RoutingState();
|
||||
public string? UrlPathSegment { get; } = Guid.NewGuid().ToString();
|
||||
|
||||
public IScreen HostScreen { get; }
|
||||
|
||||
public RoutingState Router { get; } = new();
|
||||
|
||||
public ReactiveCommand<Unit, IRoutableViewModel> GoBackCommand => Router.NavigateBack;
|
||||
|
||||
@ -25,8 +29,9 @@ public partial class ServerConnectViewModel : ViewModelBase, IScreen
|
||||
if (Api.Current.RequireRefreshToken()) await Router.NavigateAndReset.Execute(new ServerSetupViewModel(this)).ToTask();
|
||||
}
|
||||
|
||||
public ServerConnectViewModel()
|
||||
public ServerConnectViewModel(IScreen hostScreen)
|
||||
{
|
||||
HostScreen = hostScreen;
|
||||
Router.CurrentViewModel
|
||||
.Select(vm => vm?.GetType().Name.Replace("ViewModel", string.Empty) ?? "Hello")
|
||||
.BindTo(this, vm => vm.Title);
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Flawless.Client.ViewModels;
|
||||
using Ursa.ReactiveUIExtension;
|
||||
|
||||
namespace Flawless.Client.Views;
|
||||
|
||||
public partial class MainView : UserControl
|
||||
public partial class MainView : ReactiveUrsaView<MainViewModel>
|
||||
{
|
||||
public MainView()
|
||||
{
|
||||
|
||||
@ -19,8 +19,7 @@
|
||||
</Design.DataContext>
|
||||
|
||||
<Panel>
|
||||
<views:ServerConnectView IsVisible="{Binding !!RequireLogin, Mode=OneWay}"/>
|
||||
<views:MainView IsVisible="{Binding !RequireLogin, Mode=OneWay}"/>
|
||||
<rxui:RoutedViewHost Router="{Binding Router}"/>
|
||||
<ursa:OverlayDialogHost/>
|
||||
</Panel>
|
||||
</ursa:UrsaWindow>
|
||||
@ -8,7 +8,7 @@
|
||||
x:Class="Flawless.Client.Views.ServerConnectView"
|
||||
x:DataType="vm:ServerConnectViewModel">
|
||||
|
||||
<Border Classes="Shadow" Theme="{StaticResource CardBorder}" MaxWidth="400" MaxHeight="400">
|
||||
<Border Classes="Shadow" Theme="{StaticResource CardBorder}" Width="400" Height="400">
|
||||
<DockPanel>
|
||||
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" VerticalAlignment="Center" Spacing="18">
|
||||
<Button Command="{Binding GoBackCommand}"
|
||||
|
||||
@ -2,14 +2,14 @@
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Flawless.Client.ViewModels;
|
||||
using Ursa.ReactiveUIExtension;
|
||||
|
||||
namespace Flawless.Client.Views;
|
||||
|
||||
public partial class ServerConnectView : UserControl
|
||||
public partial class ServerConnectView : ReactiveUrsaView<ServerConnectViewModel>
|
||||
{
|
||||
public ServerConnectView()
|
||||
{
|
||||
InitializeComponent();
|
||||
DataContext = new ServerConnectViewModel();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user