Beispiel #1
0
        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);
        }