From 21a057e0bd4b1427caf9efc1163b337dbec3e260 Mon Sep 17 00:00:00 2001 From: Aireil <33433913+Aireil@users.noreply.github.com> Date: Sat, 16 Jan 2021 20:13:58 +0100 Subject: [PATCH 1/2] Add last link command back --- Dalamud/DalamudCommands.cs | 14 ++++++++++++++ Dalamud/Game/ChatHandlers.cs | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/Dalamud/DalamudCommands.cs b/Dalamud/DalamudCommands.cs index a231c6c54..9edce0b79 100644 --- a/Dalamud/DalamudCommands.cs +++ b/Dalamud/DalamudCommands.cs @@ -54,6 +54,10 @@ namespace Dalamud HelpMessage = Loc.Localize("DalamudUnmuteHelp", "Unmute a word or sentence. Usage: /xlunmute ") }); + this.dalamud.CommandManager.AddHandler("/ll", new CommandInfo(OnLastLinkCommand) { + HelpMessage = Loc.Localize("DalamudLastLinkHelp", "Open the last posted link in your default browser.") + }); + this.dalamud.CommandManager.AddHandler("/xlbgmset", new CommandInfo(OnBgmSetCommand) { HelpMessage = Loc.Localize("DalamudBgmSetHelp", "Set the Game background music. Usage: /xlbgmset ") @@ -171,6 +175,16 @@ namespace Dalamud string.Format(Loc.Localize("DalamudUnmuted", "Unmuted \"{0}\"."), arguments)); } + private void OnLastLinkCommand(string command, string arguments) { + if (string.IsNullOrEmpty(this.dalamud.ChatHandlers.LastLink)) { + this.dalamud.Framework.Gui.Chat.Print(Loc.Localize("DalamudNoLastLink", "No last link...")); + return; + } + + this.dalamud.Framework.Gui.Chat.Print(string.Format(Loc.Localize("DalamudOpeningLink", "Opening {0}"), this.dalamud.ChatHandlers.LastLink)); + Process.Start(this.dalamud.ChatHandlers.LastLink); + } + private void OnBgmSetCommand(string command, string arguments) { this.dalamud.Framework.Gui.SetBgm(ushort.Parse(arguments)); } diff --git a/Dalamud/Game/ChatHandlers.cs b/Dalamud/Game/ChatHandlers.cs index 0621337a9..8e7a8e534 100644 --- a/Dalamud/Game/ChatHandlers.cs +++ b/Dalamud/Game/ChatHandlers.cs @@ -78,8 +78,14 @@ namespace Dalamud.Game { } }; + private readonly Regex urlRegex = + new Regex(@"(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?", + RegexOptions.Compiled); + private bool hasSeenLoadingMsg; + public string LastLink { get; private set; } + public ChatHandlers(Dalamud dalamud) { this.dalamud = dalamud; @@ -160,6 +166,9 @@ namespace Dalamud.Game { var messageCopy = message; var senderCopy = sender; + var linkMatch = this.urlRegex.Match(message.TextValue); + if (linkMatch.Value.Length > 0) + LastLink = linkMatch.Value; // Handle all of this with SeString some day /* From f99c0736f48be98b081ecd577db26865d2b351c2 Mon Sep 17 00:00:00 2001 From: Aireil <33433913+Aireil@users.noreply.github.com> Date: Mon, 18 Jan 2021 02:50:47 +0100 Subject: [PATCH 2/2] Change URL regex, optional protocol --- Dalamud/Game/ChatHandlers.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dalamud/Game/ChatHandlers.cs b/Dalamud/Game/ChatHandlers.cs index 8e7a8e534..cf491e629 100644 --- a/Dalamud/Game/ChatHandlers.cs +++ b/Dalamud/Game/ChatHandlers.cs @@ -79,7 +79,7 @@ namespace Dalamud.Game { }; private readonly Regex urlRegex = - new Regex(@"(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?", + new Regex(@"((http|ftp|https)://)?([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?", RegexOptions.Compiled); private bool hasSeenLoadingMsg;