diff --git a/Content.Client/Info/LinkBanner.cs b/Content.Client/Info/LinkBanner.cs index 6439f32030..00db424c23 100644 --- a/Content.Client/Info/LinkBanner.cs +++ b/Content.Client/Info/LinkBanner.cs @@ -1,12 +1,15 @@ using Content.Client.Changelog; +using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Systems.EscapeMenu; using Content.Client.UserInterface.Systems.Guidebook; using Content.Client.White.Stalin; +using Content.Client.White.Stalin.StalinUi; using Content.Shared.CCVar; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Collections; using Robust.Shared.Configuration; +using Robust.Shared.Utility; namespace Content.Client.Info { diff --git a/Content.Client/White/Stalin/StalinManager.cs b/Content.Client/White/Stalin/StalinManager.cs index 53e85f5711..e05b3e72b1 100644 --- a/Content.Client/White/Stalin/StalinManager.cs +++ b/Content.Client/White/Stalin/StalinManager.cs @@ -1,6 +1,10 @@ -using Content.Shared.White.SaltedYayca; +using Content.Client.UserInterface.Controls; +using Content.Client.White.Stalin.StalinUi; +using Content.Shared.White.SaltedYayca; using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; using Robust.Shared.Network; +using Robust.Shared.Utility; namespace Content.Client.White.Stalin; @@ -8,6 +12,7 @@ public sealed class StalinManager { [Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly IUriOpener _uriOpener = default!; + private StalinLinkWindow _stalinLinkWindow = null!; public void Initialize() { @@ -21,6 +26,12 @@ public sealed class StalinManager private void OnStalinResponse(DiscordAuthResponse message) { - _uriOpener.OpenUri(message.Uri); + if (_stalinLinkWindow != null) + { + _stalinLinkWindow.Close(); + } + _stalinLinkWindow = new StalinLinkWindow(); + _stalinLinkWindow.SetUri(message.Uri); + _stalinLinkWindow.OpenCentered(); } } diff --git a/Content.Client/White/Stalin/StalinUi/StalinLinkWindow.xaml b/Content.Client/White/Stalin/StalinUi/StalinLinkWindow.xaml new file mode 100644 index 0000000000..c8dce11382 --- /dev/null +++ b/Content.Client/White/Stalin/StalinUi/StalinLinkWindow.xaml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/Content.Client/White/Stalin/StalinUi/StalinLinkWindow.xaml.cs b/Content.Client/White/Stalin/StalinUi/StalinLinkWindow.xaml.cs new file mode 100644 index 0000000000..b5ff00945c --- /dev/null +++ b/Content.Client/White/Stalin/StalinUi/StalinLinkWindow.xaml.cs @@ -0,0 +1,29 @@ +using Content.Client.UserInterface.Controls; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Utility; + +namespace Content.Client.White.Stalin.StalinUi; + +[GenerateTypedNameReferences] +public sealed partial class StalinLinkWindow : FancyWindow +{ + [Dependency] private readonly IUriOpener _uriOpener = default!; + + public StalinLinkWindow() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + } + + public void SetUri(string uri) + { + OpenInBrowserButton.OnPressed += args => + { + _uriOpener.OpenUri(uri); + }; + + StalinLinkText.Text = uri; + } +}