Two-state flow with go-live dialog, unmissable live indicators, taskbar overlay
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
using System.Windows.Input;
|
||||
using ytLive.Helpers;
|
||||
|
||||
namespace ytLive.ViewModels;
|
||||
|
||||
public class GoLiveViewModel : ViewModelBase
|
||||
{
|
||||
private bool _isSignedIn;
|
||||
private string _accountName = string.Empty;
|
||||
private string _streamTitle = string.Empty;
|
||||
private string _streamDescription = string.Empty;
|
||||
private string _visibility = "Public";
|
||||
|
||||
public bool IsSignedIn
|
||||
{
|
||||
get => _isSignedIn;
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _isSignedIn, value))
|
||||
{
|
||||
OnPropertyChanged(nameof(ShowSignIn));
|
||||
OnPropertyChanged(nameof(ShowAccount));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowSignIn => !IsSignedIn;
|
||||
public bool ShowAccount => IsSignedIn;
|
||||
|
||||
public string AccountName
|
||||
{
|
||||
get => _accountName;
|
||||
set => SetProperty(ref _accountName, value);
|
||||
}
|
||||
|
||||
public string StreamTitle
|
||||
{
|
||||
get => _streamTitle;
|
||||
set => SetProperty(ref _streamTitle, value);
|
||||
}
|
||||
|
||||
public string StreamDescription
|
||||
{
|
||||
get => _streamDescription;
|
||||
set => SetProperty(ref _streamDescription, value);
|
||||
}
|
||||
|
||||
public string Visibility
|
||||
{
|
||||
get => _visibility;
|
||||
set => SetProperty(ref _visibility, value);
|
||||
}
|
||||
|
||||
public string[] Visibilities { get; } = { "Public", "Unlisted", "Private" };
|
||||
|
||||
public ICommand SignInCommand { get; }
|
||||
public ICommand ChangeAccountCommand { get; }
|
||||
public ICommand StartCommand { get; }
|
||||
public ICommand CancelCommand { get; }
|
||||
|
||||
public GoLiveViewModel()
|
||||
{
|
||||
SignInCommand = new RelayCommand(_ => SignIn());
|
||||
ChangeAccountCommand = new RelayCommand(_ => ChangeAccount());
|
||||
StartCommand = new RelayCommand(_ => StartRequested?.Invoke(), _ => IsSignedIn);
|
||||
CancelCommand = new RelayCommand(_ => CancelRequested?.Invoke());
|
||||
}
|
||||
|
||||
public event Action? StartRequested;
|
||||
public event Action? CancelRequested;
|
||||
|
||||
private void SignIn()
|
||||
{
|
||||
// TODO: OAuth2 flow; for now simulate a successful sign-in
|
||||
AccountName = "Connected Channel";
|
||||
IsSignedIn = true;
|
||||
}
|
||||
|
||||
private void ChangeAccount()
|
||||
{
|
||||
// TODO: re-run OAuth2; for now simulate signing out
|
||||
IsSignedIn = false;
|
||||
AccountName = string.Empty;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user