2024-02-21 02:17:33 +01:00
|
|
|
using InkForge.Desktop.Managers;
|
2024-02-16 02:23:58 +01:00
|
|
|
using InkForge.Desktop.Models;
|
|
|
|
|
|
|
|
|
|
using ReactiveUI;
|
|
|
|
|
|
|
|
|
|
namespace InkForge.Desktop.ViewModels;
|
|
|
|
|
|
|
|
|
|
public class AppViewModel : ReactiveObject
|
|
|
|
|
{
|
|
|
|
|
private readonly LandingViewModel _landingViewModel;
|
2024-02-21 02:17:33 +01:00
|
|
|
private readonly WorkspaceManager _workspace;
|
2024-02-16 02:23:58 +01:00
|
|
|
private object _view;
|
|
|
|
|
|
|
|
|
|
public object View
|
|
|
|
|
{
|
|
|
|
|
get => _view;
|
|
|
|
|
set => this.RaiseAndSetIfChanged(ref _view, value);
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-21 02:17:33 +01:00
|
|
|
public AppViewModel(WorkspaceManager workspace, LandingViewModel landingViewModel)
|
2024-02-16 02:23:58 +01:00
|
|
|
{
|
|
|
|
|
_workspace = workspace;
|
|
|
|
|
_landingViewModel = landingViewModel;
|
|
|
|
|
|
|
|
|
|
this.WhenAnyValue(v => v._workspace.Workspace).Subscribe(OnWorkspaceChanged);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnWorkspaceChanged(Workspace workspace)
|
|
|
|
|
{
|
|
|
|
|
View = workspace switch
|
|
|
|
|
{
|
|
|
|
|
null => _landingViewModel,
|
|
|
|
|
{ } => new WorkspaceViewModel(workspace) // scoped?
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|