77 lines
2.7 KiB
C#
77 lines
2.7 KiB
C#
using Bit.App.Models;
|
|
using Bit.App.Utilities;
|
|
using Bit.Core.Enums;
|
|
using Bit.Core.Services;
|
|
|
|
namespace Bit.App.Pages
|
|
{
|
|
public partial class LoginPasswordlessRequestPage : BaseContentPage
|
|
{
|
|
private LoginPasswordlessRequestViewModel _vm;
|
|
private readonly AppOptions _appOptions;
|
|
|
|
public LoginPasswordlessRequestPage(string email, AuthRequestType authRequestType, AppOptions appOptions = null, bool authingWithSso = false)
|
|
{
|
|
InitializeComponent();
|
|
_appOptions = appOptions;
|
|
_vm = BindingContext as LoginPasswordlessRequestViewModel;
|
|
_vm.Page = this;
|
|
_vm.Email = email;
|
|
_vm.AuthRequestType = authRequestType;
|
|
_vm.AuthingWithSso = authingWithSso;
|
|
_vm.StartTwoFactorAction = () => MainThread.BeginInvokeOnMainThread(async () => await StartTwoFactorAsync());
|
|
_vm.LogInSuccessAction = () => MainThread.BeginInvokeOnMainThread(async () => await LogInSuccessAsync());
|
|
_vm.UpdateTempPasswordAction = () => MainThread.BeginInvokeOnMainThread(async () => await UpdateTempPasswordAsync());
|
|
_vm.CloseAction = () => { Navigation.PopModalAsync(); };
|
|
|
|
_vm.CreatePasswordlessLoginCommand.Execute(null);
|
|
}
|
|
|
|
protected override bool ShouldCheckToPreventOnNavigatedToCalledTwice => true;
|
|
|
|
protected override Task InitOnNavigatedToAsync()
|
|
{
|
|
_vm.StartCheckLoginRequestStatus();
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
protected override void OnNavigatedFrom(NavigatedFromEventArgs args)
|
|
{
|
|
base.OnNavigatedFrom(args);
|
|
_vm.StopCheckLoginRequestStatus();
|
|
}
|
|
|
|
private async Task StartTwoFactorAsync()
|
|
{
|
|
var page = new TwoFactorPage(false, _appOptions);
|
|
await Navigation.PushModalAsync(new NavigationPage(page));
|
|
}
|
|
|
|
private async Task LogInSuccessAsync()
|
|
{
|
|
try
|
|
{
|
|
if (AppHelpers.SetAlternateMainPage(_appOptions))
|
|
{
|
|
return;
|
|
}
|
|
|
|
_appOptions.HasJustLoggedInOrUnlocked = true;
|
|
var previousPage = await AppHelpers.ClearPreviousPage();
|
|
App.MainPage = new TabsPage(_appOptions, previousPage);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LoggerHelper.LogEvenIfCantBeResolved(ex);
|
|
throw;
|
|
}
|
|
}
|
|
|
|
private async Task UpdateTempPasswordAsync()
|
|
{
|
|
var page = new UpdateTempPasswordPage();
|
|
await Navigation.PushModalAsync(new NavigationPage(page));
|
|
}
|
|
}
|
|
}
|