@@ -94,79 +94,48 @@ private async void UpdateBackupToGitHubButtonStatus()
9494 RestorePackagesFromGitHubButton . IsEnabled = isAuthenticated ;
9595 }
9696
97- /*private async void RestoreSettingsFromGitHubButton_Click(object sender, EventArgs e)
98- {
99- RestoreSettingsFromGitHubButton.IsEnabled = false;
100- var confirmDialog = DialogHelper.DialogFactory.Create();
101- confirmDialog.Title = CoreTools.Translate("Confirm Restore");
102- confirmDialog.Content = CoreTools.Translate("Restoring settings from GitHub Gist will overwrite your current local settings. Are you sure you want to continue?");
103- confirmDialog.PrimaryButtonText = CoreTools.Translate("Yes, Restore");
104- confirmDialog.CloseButtonText = CoreTools.Translate("Cancel");
105- confirmDialog.DefaultButton = ContentDialogButton.Close;
106-
107- var result = await DialogHelper.Window.ShowDialogAsync(confirmDialog);
108- if (result != ContentDialogResult.Primary)
109- {
110- UpdateBackupToGitHubButtonStatus();
111- return;
112- }
113-
114- DialogHelper.ShowLoadingDialog(CoreTools.Translate("Restoring settings from GitHub Gist..."));
115- var settingsContent = "";//await _backupService.RetrieveFileAsync("unigetui.settings.json");
116- if (settingsContent != null)
117- {
118- await Task.Run(() => Settings.ImportFromString_JSON(settingsContent));
119- DialogHelper.HideLoadingDialog();
120- Logger.Info("Successfully restored settings from GitHub Gist.");
121- DialogHelper.ShowDismissableBalloon(
122- CoreTools.Translate("Restore Successful"),
123- CoreTools.Translate("Your settings have been successfully restored from GitHub Gist. A restart is recommended to apply all changes."));
124- }
125- else
126- {
127- DialogHelper.HideLoadingDialog();
128- Logger.Error("Failed to restore settings from GitHub Gist.");
129- var errorDialog = DialogHelper.DialogFactory.Create();
130- errorDialog.Title = CoreTools.Translate("Restore Failed");
131- errorDialog.Content = CoreTools.Translate("Could not restore settings from GitHub Gist. Please check the logs for more details, or ensure a backup exists.");
132- errorDialog.PrimaryButtonText = CoreTools.Translate("OK");
133- errorDialog.DefaultButton = ContentDialogButton.Primary;
134- _ = DialogHelper.Window.ShowDialogAsync(errorDialog);
135- }
136- UpdateBackupToGitHubButtonStatus();
137- }*/
138-
13997 private async void RestorePackagesFromGitHubButton_Click ( object sender , EventArgs e )
14098 {
14199 RestorePackagesFromGitHubButton . IsEnabled = false ;
142100 try
143101 {
144- var b = await _backupService . GetAvailableBackups ( ) ;
102+ DialogHelper . ShowLoadingDialog ( CoreTools . Translate ( "Fetching available backups..." ) ) ;
103+ var availableBackups = await _backupService . GetAvailableBackups ( ) ;
104+ DialogHelper . HideLoadingDialog ( ) ;
145105
146- var errorDialog = DialogHelper . DialogFactory . Create ( ) ;
147- errorDialog . Title = CoreTools . Translate ( "Select backup:" ) ;
148- errorDialog . Content = CoreTools . Translate ( " - " + ( string . Join ( "\n - " , b ) ) ) ;
149- errorDialog . PrimaryButtonText = CoreTools . Translate ( "OK" ) ;
150- errorDialog . DefaultButton = ContentDialogButton . Primary ;
151- await DialogHelper . Window . ShowDialogAsync ( errorDialog ) ;
152- RestorePackagesFromGitHubButton . IsEnabled = true ;
153- return ;
106+ var selectedBackup = await DialogHelper . AskForBackupSelection ( availableBackups ) ;
107+ if ( selectedBackup is null )
108+ {
109+ RestorePackagesFromGitHubButton . IsEnabled = true ;
110+ return ;
111+ }
112+ selectedBackup = selectedBackup . Split ( ' ' ) [ 0 ] ;
154113
114+ DialogHelper . ShowLoadingDialog ( CoreTools . Translate ( "Downloading backup..." ) ) ;
115+ var backupContents = await _backupService . GetBackupContents ( selectedBackup ) ;
116+ DialogHelper . HideLoadingDialog ( ) ;
117+ await Task . Delay ( 500 ) ; // Prevent race conditions with dialogs
155118
156- MainApp . Instance . MainWindow . NavigationPage . LoadBundleFromString ( "" , BundleFormatType . UBUNDLE , "GitHub Gist" ) ;
119+ if ( backupContents is null )
120+ throw new Exception ( $ "The backupContents for backup { selectedBackup } returned null") ;
157121
158122 Logger . Info ( "Successfully loaded package bundle from GitHub Gist." ) ;
159123 DialogHelper . ShowDismissableBalloon (
160- CoreTools . Translate ( "Backup loaded successfully!" ) ,
161- CoreTools . Translate ( "The package bundle has been loaded into the Package Bundles page." ) ) ;
124+ CoreTools . Translate ( "Done!" ) ,
125+ CoreTools . Translate ( "The cloud backup has been loaded successfully." ) ) ;
126+
127+ MainApp . Instance . MainWindow . NavigationPage . LoadBundleFromString (
128+ backupContents , BundleFormatType . UBUNDLE , $ "GitHub Gist { selectedBackup } ") ;
162129 }
163130 catch ( Exception ex )
164131 {
132+ Logger . Error ( "An error occurred while loading a backup:" ) ;
133+ Logger . Error ( ex ) ;
134+
165135 DialogHelper . HideLoadingDialog ( ) ;
166- Logger . Error ( "Failed to restore packages from GitHub Gist." ) ;
167136 var errorDialog = DialogHelper . DialogFactory . Create ( ) ;
168- errorDialog . Title = CoreTools . Translate ( "Restore Failed " ) ;
169- errorDialog . Content = CoreTools . Translate ( "Could not restore packages from GitHub Gist. Please check the logs for more details, or ensure a backup exists." ) ;
137+ errorDialog . Title = CoreTools . Translate ( "An error occurred " ) ;
138+ errorDialog . Content = CoreTools . Translate ( "An error occurred while loading a backup: " ) + ex . Message ;
170139 errorDialog . PrimaryButtonText = CoreTools . Translate ( "OK" ) ;
171140 errorDialog . DefaultButton = ContentDialogButton . Primary ;
172141 await DialogHelper . Window . ShowDialogAsync ( errorDialog ) ;
0 commit comments