private void SyncLocal(PwDatabase pwDatabase, YandexWebDavClient webClient, string filename, YandexDiscSyncConf vaultConf) { SetStatusText("Check changes..."); var value = GetRemoteLastModified(filename, webClient); if (value == null) { SetStatusText("Database not found on Yandex Disc. Nothing to sync"); return; } var lastModified = value.Value; if (vaultConf.SyncRemoteLastModified == lastModified.ToString("u")) { SetStatusText("No changes"); return; } SetStatusText("Downloading..."); var dbData = Async.Invoke(() => DownloadFile(filename, webClient)); SetStatusText("Sync..."); SyncDatabase(pwDatabase, dbData, false); SetStatusText("Successfull Sync Local <= Remote"); vaultConf.SyncRemoteLastModified = lastModified.ToString("u"); vaultConf.Save(); pwDatabase.Save(new NullStatusLogger()); }
private void SyncDownload(PwDatabase pwDatabase, YandexWebDavClient webClient, string filename, YandexDiscSyncConf storageConf) { var lastModified = GetRemoteLastModified(filename, webClient); if (lastModified != null) { SetStatusText("Downloading..."); var dbData = Async.Invoke(() => DownloadFile(filename, webClient)); ReplaceDatabase(pwDatabase, dbData); SetStatusText("Download Done."); storageConf.ChangeDatabase(_host.Database); storageConf.SyncRemoteLastModified = lastModified.Value.ToString("u"); storageConf.Save(); pwDatabase.Save(new NullStatusLogger()); } else { SetStatusText("Database not found. Nothing to sync"); } }
private void SyncUpload(PwDatabase pwDatabase, YandexWebDavClient webClient, string databaseUuid, YandexDiscSyncConf storageConf) { var lastModified = GetLastModified(pwDatabase); var location = _host.Database.IOConnectionInfo.Path; SetStatusText("Saving to Yandex Disc..."); Async.Invoke(() => { webClient.PutFile( databaseUuid, File.ReadAllBytes(location), lastModified, progress => { SetStatusText($"Saving to YandexDisc ({Math.Floor(progress)}%)"); }); }); SetStatusText("Successfull save to YandexDisc"); storageConf.SyncRemoteLastModified = lastModified.ToString("u"); storageConf.Save(); }
/// <summary> /// Event handler for configuration menu entry /// </summary> private void OnConfigure(object sender, EventArgs e) { if (!_host.Database.IsOpen) { ShowMessageBox("You first need to open a database."); return; } if (_host.Database.IsOpen) { YandexDiscSyncConf conf = new YandexDiscSyncConf(_host.Database); VaultConnectionConfigForm form1 = new VaultConnectionConfigForm(); form1.InitEx(conf); if (DialogResult.OK == UIUtil.ShowDialogAndDestroy(form1)) { conf.Save(); _host.MainWindow.UpdateUI(false, null, true, null, true, null, bSetModified: true); } } }
private void SyncRemote(PwDatabase pwDatabase, YandexWebDavClient webClient, string filename, YandexDiscSyncConf vaultConf) { SetStatusText("Check changes..."); var localLastModified = GetLastModified(pwDatabase); var lastModified = GetRemoteLastModified(filename, webClient); if (lastModified != null && lastModified == localLastModified) { SetStatusText("No changes."); return; } if (lastModified != null) { SetStatusText("Downloading..."); var dbData = Async.Invoke(() => DownloadFile(filename, webClient)); if (dbData != null) { SetStatusText("Sync..."); SyncDatabase(pwDatabase, dbData, true); _host.MainWindow.Enabled = false; localLastModified = GetLastModified(pwDatabase); } } SetStatusText("Saving to YandexDisc..."); Async.Invoke(() => { webClient.PutFile( filename, File.ReadAllBytes(pwDatabase.IOConnectionInfo.Path), localLastModified, progress => { SetStatusText($"Saving to YandexDisc ({Math.Floor(progress)}%)"); }); }); SetStatusText("Successfull Sync Local <=> Remote"); vaultConf.SyncRemoteLastModified = localLastModified.ToString("u"); vaultConf.Save(); pwDatabase.Save(new NullStatusLogger()); }