diff --git a/src/App/Pages/Settings/SyncPage.xaml b/src/App/Pages/Settings/SyncPage.xaml
index 7faf7bb8f..e5a7242a3 100644
--- a/src/App/Pages/Settings/SyncPage.xaml
+++ b/src/App/Pages/Settings/SyncPage.xaml
@@ -4,7 +4,6 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Bit.App.Pages.SyncPage"
xmlns:pages="clr-namespace:Bit.App.Pages"
- xmlns:controls="clr-namespace:Bit.App.Controls"
xmlns:u="clr-namespace:Bit.App.Utilities"
x:DataType="pages:SyncPageViewModel"
Title="{Binding PageTitle}">
@@ -12,9 +11,21 @@
-
+
+
diff --git a/src/App/Pages/Settings/SyncPage.xaml.cs b/src/App/Pages/Settings/SyncPage.xaml.cs
index a03d44a69..f9d1ce01a 100644
--- a/src/App/Pages/Settings/SyncPage.xaml.cs
+++ b/src/App/Pages/Settings/SyncPage.xaml.cs
@@ -13,6 +13,12 @@ namespace Bit.App.Pages
_vm.Page = this;
}
+ protected async override void OnAppearing()
+ {
+ base.OnAppearing();
+ await _vm.SetLastSyncAsync();
+ }
+
private async void Sync_Clicked(object sender, EventArgs e)
{
if(DoOnce())
diff --git a/src/App/Pages/Settings/SyncPageViewModel.cs b/src/App/Pages/Settings/SyncPageViewModel.cs
index a360acb94..87ae4bae9 100644
--- a/src/App/Pages/Settings/SyncPageViewModel.cs
+++ b/src/App/Pages/Settings/SyncPageViewModel.cs
@@ -13,6 +13,8 @@ namespace Bit.App.Pages
private readonly IPlatformUtilsService _platformUtilsService;
private readonly ISyncService _syncService;
+ private string _lastSync = "--";
+
public SyncPageViewModel()
{
_deviceActionService = ServiceContainer.Resolve("deviceActionService");
@@ -22,14 +24,42 @@ namespace Bit.App.Pages
PageTitle = AppResources.Sync;
}
+ public string LastSync
+ {
+ get => _lastSync;
+ set => SetProperty(ref _lastSync, value);
+ }
+
+ public async Task SetLastSyncAsync()
+ {
+ var last = await _syncService.GetLastSyncAsync();
+ if(last != null)
+ {
+ var localDate = last.Value.ToLocalTime();
+ LastSync = string.Format("{0} {1}", localDate.ToShortDateString(), localDate.ToShortTimeString());
+ }
+ else
+ {
+ LastSync = AppResources.Never;
+ }
+ }
+
public async Task SyncAsync()
{
try
{
await _deviceActionService.ShowLoadingAsync(AppResources.Syncing);
- await _syncService.FullSyncAsync(true);
+ var success = await _syncService.FullSyncAsync(true);
await _deviceActionService.HideLoadingAsync();
- _platformUtilsService.ShowToast("success", null, AppResources.SyncingComplete);
+ if(success)
+ {
+ await SetLastSyncAsync();
+ _platformUtilsService.ShowToast("success", null, AppResources.SyncingComplete);
+ }
+ else
+ {
+ await Page.DisplayAlert(null, AppResources.SyncingFailed, AppResources.Ok);
+ }
}
catch(ApiException e)
{