bitwarden-android/src/App/Pages/SyncPage.cs

76 lines
2 KiB
C#
Raw Normal View History

2016-05-03 00:50:16 +03:00
using System;
using System.Threading.Tasks;
using Acr.UserDialogs;
using Bit.App.Abstractions;
using Bit.App.Controls;
using Bit.App.Resources;
2016-05-07 01:49:01 +03:00
using Plugin.Connectivity.Abstractions;
2016-05-03 00:50:16 +03:00
using Xamarin.Forms;
using XLabs.Ioc;
2016-05-03 00:50:16 +03:00
namespace Bit.App.Pages
{
public class SyncPage : ContentPage
{
private readonly ISyncService _syncService;
private readonly IUserDialogs _userDialogs;
2016-05-07 01:49:01 +03:00
private readonly IConnectivity _connectivity;
2016-05-03 00:50:16 +03:00
public SyncPage()
{
_syncService = Resolver.Resolve<ISyncService>();
_userDialogs = Resolver.Resolve<IUserDialogs>();
2016-05-07 01:49:01 +03:00
_connectivity = Resolver.Resolve<IConnectivity>();
Init();
}
public void Init()
{
var syncButton = new Button
{
Text = "Sync Vault",
2016-05-12 00:30:09 +03:00
Command = new Command(async () => await SyncAsync())
};
var stackLayout = new StackLayout { };
2016-05-12 00:30:09 +03:00
stackLayout.Children.Add(syncButton);
2016-05-03 00:50:16 +03:00
Title = "Sync";
Content = stackLayout;
Icon = "fa-refresh";
2016-05-07 01:49:01 +03:00
2016-05-12 00:30:09 +03:00
if(!_connectivity.IsConnected)
2016-05-07 01:49:01 +03:00
{
AlertNoConnection();
}
}
public async Task SyncAsync()
{
2016-05-12 00:30:09 +03:00
if(!_connectivity.IsConnected)
2016-05-07 01:49:01 +03:00
{
AlertNoConnection();
return;
}
2016-05-12 00:30:09 +03:00
_userDialogs.ShowLoading("Syncing...", MaskType.Black);
var succeeded = await _syncService.SyncAsync();
_userDialogs.HideLoading();
2016-05-12 00:30:09 +03:00
if(succeeded)
{
2016-05-12 00:30:09 +03:00
_userDialogs.SuccessToast("Syncing complete.");
}
else
{
2016-05-12 00:30:09 +03:00
_userDialogs.ErrorToast("Syncing failed.");
}
2016-05-03 00:50:16 +03:00
}
2016-05-07 01:49:01 +03:00
public void AlertNoConnection()
{
2016-05-12 00:30:09 +03:00
DisplayAlert(AppResources.InternetConnectionRequiredTitle, AppResources.InternetConnectionRequiredMessage, AppResources.Ok);
2016-05-07 01:49:01 +03:00
}
2016-05-03 00:50:16 +03:00
}
}