diff --git a/app/Desktop/Common/NumberValueConverter.cs b/app/Desktop/Common/NumberValueConverter.cs index 4f82c6d..663a3e1 100644 --- a/app/Desktop/Common/NumberValueConverter.cs +++ b/app/Desktop/Common/NumberValueConverter.cs @@ -4,11 +4,11 @@ using Avalonia.Data.Converters; namespace DHT.Desktop.Common { sealed class NumberValueConverter : IValueConverter { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { + public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { return string.Format(Program.Culture, "{0:n0}", value); } - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { + public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotSupportedException(); } } diff --git a/app/Desktop/Main/Pages/TrackingPage.axaml.cs b/app/Desktop/Main/Pages/TrackingPage.axaml.cs index 2766501..e93de88 100644 --- a/app/Desktop/Main/Pages/TrackingPage.axaml.cs +++ b/app/Desktop/Main/Pages/TrackingPage.axaml.cs @@ -24,9 +24,7 @@ namespace DHT.Desktop.Main.Pages { var originalText = button.Content; button.MinWidth = button.Bounds.Width; - await model.OnClickCopyTrackingScript(); - - if (!isCopyingScript) { + if (await model.OnClickCopyTrackingScript() && !isCopyingScript) { isCopyingScript = true; button.Content = "Script Copied!"; diff --git a/app/Desktop/Main/Pages/TrackingPageModel.cs b/app/Desktop/Main/Pages/TrackingPageModel.cs index 34d2ba3..6ef7611 100644 --- a/app/Desktop/Main/Pages/TrackingPageModel.cs +++ b/app/Desktop/Main/Pages/TrackingPageModel.cs @@ -67,7 +67,7 @@ namespace DHT.Desktop.Main.Pages { if (!IsToggleAppDevToolsButtonEnabled) { return "Unavailable"; } - + return AreDevToolsEnabled ? "Disable Ctrl+Shift+I" : "Enable Ctrl+Shift+I"; } } @@ -149,7 +149,7 @@ namespace DHT.Desktop.Main.Pages { } } - public async Task OnClickCopyTrackingScript() { + public async Task OnClickCopyTrackingScript() { string bootstrap = await Resources.ReadTextAsync("Tracker/bootstrap.js"); string script = bootstrap.Replace("= 0; /*[PORT]*/", "= " + ServerPort + ";") .Replace("/*[TOKEN]*/", HttpUtility.JavaScriptStringEncode(ServerToken)) @@ -157,7 +157,19 @@ namespace DHT.Desktop.Main.Pages { .Replace("/*[CSS-CONTROLLER]*/", await Resources.ReadTextAsync("Tracker/styles/controller.css")) .Replace("/*[CSS-SETTINGS]*/", await Resources.ReadTextAsync("Tracker/styles/settings.css")); - await Application.Current.Clipboard.SetTextAsync(script); + var clipboard = Application.Current?.Clipboard; + if (clipboard == null) { + await Dialog.ShowOk(window, "Copy Tracking Script", "Clipboard is not available on this system."); + return false; + } + + try { + await clipboard.SetTextAsync(script); + return true; + } catch { + await Dialog.ShowOk(window, "Copy Tracking Script", "An error occurred while copying to clipboard."); + return false; + } } public void OnClickRandomizeToken() { @@ -179,7 +191,7 @@ namespace DHT.Desktop.Main.Pages { public async void OnClickToggleAppDevTools() { const string DialogTitle = "Discord App Settings File"; - + bool oldState = AreDevToolsEnabled; bool newState = !oldState; @@ -188,7 +200,7 @@ namespace DHT.Desktop.Main.Pages { AreDevToolsEnabled = newState; await Dialog.ShowOk(window, DialogTitle, "Ctrl+Shift+I was " + (newState ? "enabled." : "disabled.") + " Restart the Discord app for the change to take effect."); break; - + case SettingsJsonResult.AlreadySet: await Dialog.ShowOk(window, DialogTitle, "Ctrl+Shift+I is already " + (newState ? "enabled." : "disabled.")); AreDevToolsEnabled = newState;