mirror of
https://github.com/bitwarden/mobile
synced 2025-12-10 21:33:36 +00:00
listen to yubikey
This commit is contained in:
@@ -1,20 +1,28 @@
|
||||
using Bit.App.Controls;
|
||||
using Bit.Core.Abstractions;
|
||||
using Bit.Core.Utilities;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace Bit.App.Pages
|
||||
{
|
||||
public partial class TwoFactorPage : BaseContentPage
|
||||
{
|
||||
private readonly IBroadcasterService _broadcasterService;
|
||||
private readonly IMessagingService _messagingService;
|
||||
|
||||
private TwoFactorPageViewModel _vm;
|
||||
|
||||
public TwoFactorPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
SetActivityIndicator();
|
||||
_broadcasterService = ServiceContainer.Resolve<IBroadcasterService>("broadcasterService");
|
||||
_messagingService = ServiceContainer.Resolve<IMessagingService>("messagingService");
|
||||
_vm = BindingContext as TwoFactorPageViewModel;
|
||||
_vm.Page = this;
|
||||
DuoWebView = _duoWebView;
|
||||
SetActivityIndicator();
|
||||
}
|
||||
|
||||
public HybridWebView DuoWebView { get; set; }
|
||||
@@ -34,9 +42,28 @@ namespace Bit.App.Pages
|
||||
ToolbarItems.Remove(_continueItem);
|
||||
}
|
||||
}
|
||||
|
||||
protected async override void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
_broadcasterService.Subscribe(nameof(TwoFactorPage), async (message) =>
|
||||
{
|
||||
if(message.Command == "gotYubiKeyOTP")
|
||||
{
|
||||
if(_vm.YubikeyMethod)
|
||||
{
|
||||
_vm.Token = (string)message.Data;
|
||||
await _vm.SubmitAsync();
|
||||
}
|
||||
}
|
||||
else if(message.Command == "resumeYubiKey")
|
||||
{
|
||||
if(_vm.YubikeyMethod)
|
||||
{
|
||||
_messagingService.Send("listenYubiKeyOTP", true);
|
||||
}
|
||||
}
|
||||
});
|
||||
await LoadOnAppearedAsync(_scrollView, true, () =>
|
||||
{
|
||||
_vm.Init();
|
||||
@@ -44,6 +71,31 @@ namespace Bit.App.Pages
|
||||
});
|
||||
}
|
||||
|
||||
protected override void OnDisappearing()
|
||||
{
|
||||
base.OnDisappearing();
|
||||
if(!_vm.YubikeyMethod)
|
||||
{
|
||||
_messagingService.Send("listenYubiKeyOTP", false);
|
||||
_broadcasterService.Unsubscribe(nameof(TwoFactorPage));
|
||||
}
|
||||
}
|
||||
|
||||
protected override bool OnBackButtonPressed()
|
||||
{
|
||||
// ref: https://github.com/bitwarden/mobile/issues/350
|
||||
if(_vm.YubikeyMethod)
|
||||
{
|
||||
if(Device.RuntimePlatform == Device.Android)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
_messagingService.Send("listenYubiKeyOTP", false);
|
||||
_broadcasterService.Unsubscribe(nameof(TwoFactorPage));
|
||||
}
|
||||
return base.OnBackButtonPressed();
|
||||
}
|
||||
|
||||
private async void Continue_Clicked(object sender, EventArgs e)
|
||||
{
|
||||
if(DoOnce())
|
||||
|
||||
Reference in New Issue
Block a user