public async void ContinueFileOpenPicker(FileOpenPickerContinuationEventArgs args) { var file = args.Files.FirstOrDefault(); if (file == null) { CurtainPrompt.ShowError("No backup file picked."); return; } UiBlockerUtility.Block("Preparing..."); App.Locator.AudioPlayerHelper.FullShutdown(); App.Locator.SqlService.Dispose(); App.Locator.BgSqlService.Dispose(); using (var stream = await file.OpenStreamForReadAsync()) { if (AutcpFormatHelper.ValidateHeader(stream)) { stream.Seek(0, SeekOrigin.Begin); var restoreFile = await StorageHelper.CreateFileAsync("_current_restore.autcp"); using (var restoreStream = await restoreFile.OpenAsync(FileAccess.ReadAndWrite)) { await stream.CopyToAsync(restoreStream); } UiBlockerUtility.Unblock(); await MessageBox.ShowAsync( "To finish applying the restore the app will close. Next time you start the app, it will finish restoring.", "Application Restart Required"); App.Locator.AppSettingsHelper.Write("Restore", true); Application.Current.Exit(); } else { CurtainPrompt.ShowError("Not a valid backup file."); } } }
public async void ContinueFileSavePicker(FileSavePickerContinuationEventArgs args) { var file = args.File; if (file == null) { CurtainPrompt.ShowError("Backup cancelled."); return; } using (Insights.TrackTime("Create Backup")) { UiBlockerUtility.Block("Backing up (this may take a bit)..."); App.Locator.SqlService.Dispose(); App.Locator.BgSqlService.Dispose(); try { var data = await AutcpFormatHelper.CreateBackup(ApplicationData.Current.LocalFolder); using (var stream = await file.OpenStreamForWriteAsync()) { await stream.WriteAsync(data, 0, data.Length); } } catch (Exception e) { Insights.Report(e, "Where", "Creating Backup"); CurtainPrompt.ShowError("Problem creating backup."); } App.Locator.SqlService.Initialize(); App.Locator.BgSqlService.Initialize(); UiBlockerUtility.Unblock(); } CurtainPrompt.Show("Backup completed."); }
public async override void NavigatedTo(Windows.UI.Xaml.Navigation.NavigationMode mode, object parameter) { base.NavigatedTo(mode, parameter); var reset = App.Locator.AppSettingsHelper.Read <bool>("FactoryReset"); var startingMsg = "Restoring (this may take a bit)..."; if (reset) { startingMsg = "Factory resetting..."; } using (Insights.TrackTime(reset ? "Factory Reset" : "Restore Collection")) { StatusBarHelper.ShowStatus(startingMsg); var file = reset ? null : await StorageHelper.GetFileAsync("_current_restore.autcp"); //delete artowkr and mp3s var artworkFolder = await StorageHelper.GetFolderAsync("artworks"); var artistFolder = await StorageHelper.GetFolderAsync("artists"); var songFolder = await StorageHelper.GetFolderAsync("songs"); if (artworkFolder != null) { await artworkFolder.DeleteAsync(); } if (artistFolder != null) { await artistFolder.DeleteAsync(); } if (songFolder != null) { await songFolder.DeleteAsync(); } if (!reset) { using (var stream = await file.OpenAsync(FileAccess.ReadAndWrite)) { await AutcpFormatHelper.UnpackBackup(ApplicationData.Current.LocalFolder, stream); } await file.DeleteAsync(); App.Locator.CollectionService.LibraryLoaded += async(sender, args) => { await CollectionHelper.DownloadArtistsArtworkAsync(false); await CollectionHelper.DownloadAlbumsArtworkAsync(false); }; App.Locator.AppSettingsHelper.Write("Restore", false); } else { var dbs = (await ApplicationData.Current.LocalFolder.GetFilesAsync()) .Where(p => p.FileType == ".sqldb").ToList(); foreach (var db in dbs) { await db.DeleteAsync(); } App.Locator.AppSettingsHelper.Write("FactoryReset", false); } StatusBarHelper.HideStatus(); } (Application.Current as App).BootAppServicesAsync(); App.Navigator.GoTo <HomePage, ZoomOutTransition>(null, false); }