- Increase page count

- /chat2Viewer is now sorted by date
- Echo everything that hasn't any channel set
- Fixed channel inputs are now enforced
- Added a warning for ECL channel mismatch
This commit is contained in:
Infi
2025-02-03 13:05:26 +01:00
parent f6dd0359e7
commit 5a78877abf
6 changed files with 33 additions and 13 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<Version>1.29.16</Version> <Version>1.29.17</Version>
<TargetFramework>net8.0-windows</TargetFramework> <TargetFramework>net8.0-windows</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
+1 -1
View File
@@ -109,7 +109,7 @@ internal static class InputChannelExt
InputChannel.ExtraChatLinkshell7 => "/ecl7", InputChannel.ExtraChatLinkshell7 => "/ecl7",
InputChannel.ExtraChatLinkshell8 => "/ecl8", InputChannel.ExtraChatLinkshell8 => "/ecl8",
InputChannel.Invalid => "/e", InputChannel.Invalid => "/e",
_ => "", _ => "/e",
}; };
public static IEnumerable<TextCommand>? TextCommands(this InputChannel channel, IDataManager data) public static IEnumerable<TextCommand>? TextCommands(this InputChannel channel, IDataManager data)
+7
View File
@@ -460,6 +460,13 @@ internal class UsedChannel
TempTellTarget = null; TempTellTarget = null;
TempChannel = InputChannel.Invalid; TempChannel = InputChannel.Invalid;
} }
internal void SetChannel(InputChannel channel)
{
UseTempChannel = false;
TempTellTarget = null;
Channel = channel;
}
} }
[Serializable] [Serializable]
+4 -2
View File
@@ -2,6 +2,7 @@
using System.Collections; using System.Collections;
using System.Data.Common; using System.Data.Common;
using ChatTwo.Code; using ChatTwo.Code;
using ChatTwo.Ui;
using ChatTwo.Util; using ChatTwo.Util;
using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling;
using MessagePack; using MessagePack;
@@ -444,7 +445,7 @@ internal class MessageStore : IDisposable
ExtraChatChannel ExtraChatChannel
FROM messages FROM messages
" + whereClause + @" " + whereClause + @"
LIMIT $Offset, 500; LIMIT $Offset, $OffsetCount;
"; ";
cmd.CommandTimeout = 120; // this could take a while on slow computers cmd.CommandTimeout = 120; // this could take a while on slow computers
@@ -453,7 +454,8 @@ internal class MessageStore : IDisposable
cmd.Parameters.AddWithValue("$After", ((DateTimeOffset) after).ToUnixTimeMilliseconds()); cmd.Parameters.AddWithValue("$After", ((DateTimeOffset) after).ToUnixTimeMilliseconds());
cmd.Parameters.AddWithValue("$Before", ((DateTimeOffset) before).ToUnixTimeMilliseconds()); cmd.Parameters.AddWithValue("$Before", ((DateTimeOffset) before).ToUnixTimeMilliseconds());
cmd.Parameters.AddWithValue("$Offset", 500 * page); cmd.Parameters.AddWithValue("$Offset", DbViewer.RowPerPage * page);
cmd.Parameters.AddWithValue("OffsetCount", DbViewer.RowPerPage);
return new MessageEnumerator(cmd.ExecuteReader()); return new MessageEnumerator(cmd.ExecuteReader());
} }
+15 -6
View File
@@ -505,9 +505,9 @@ public sealed class ChatLogWindow : Window
AddPopOutsToDraw(); AddPopOutsToDraw();
DrawAutoComplete(); DrawAutoComplete();
} }
catch (Exception e) catch (Exception ex)
{ {
Plugin.Log.Error($"Error drawing Chat Log window: {e}"); Plugin.Log.Error(ex, "Error drawing Chat Log window");
// Prevent recurring draw failures from constantly trying to grab // Prevent recurring draw failures from constantly trying to grab
// input focus, which breaks every other ImGui window. // input focus, which breaks every other ImGui window.
Activate = false; Activate = false;
@@ -540,6 +540,11 @@ public sealed class ChatLogWindow : Window
DrawTabBar(); DrawTabBar();
var activeTab = Plugin.CurrentTab; var activeTab = Plugin.CurrentTab;
// This tab has a fixed channel, so we force this channel to be always set as current
if (activeTab.Channel is not null)
activeTab.CurrentChannel.SetChannel(activeTab.Channel.Value);
if (Plugin.Config.PreviewPosition is PreviewPosition.Inside && Plugin.InputPreview.IsDrawable) if (Plugin.Config.PreviewPosition is PreviewPosition.Inside && Plugin.InputPreview.IsDrawable)
Plugin.InputPreview.DrawPreview(); Plugin.InputPreview.DrawPreview();
@@ -793,15 +798,14 @@ public sealed class ChatLogWindow : Window
channelNameChunks = [new TextChunk(ChunkSource.None, null, name)]; channelNameChunks = [new TextChunk(ChunkSource.None, null, name)];
} }
} }
else if (activeTab.CurrentChannel.TellTarget != null && activeTab.CurrentChannel.TellTarget.IsSet()) else if (activeTab.CurrentChannel.TellTarget?.IsSet() == true)
{ {
channelNameChunks = GenerateTellTargetName(activeTab.CurrentChannel.TellTarget); channelNameChunks = GenerateTellTargetName(activeTab.CurrentChannel.TellTarget);
} }
else if (activeTab is { Channel: { } channel }) else if (activeTab is { Channel: { } channel })
{ {
// We cannot lookup ExtraChat channel names from index over // We cannot lookup ExtraChat channel names from index over
// IPC so we just don't show the name if it's the tabs // IPC so we just don't show the name if it's the tabs channel.
// channel.
// //
// We don't call channel.ToChatType().Name() as it has the // We don't call channel.ToChatType().Name() as it has the
// long name as used in the settings window. // long name as used in the settings window.
@@ -809,7 +813,12 @@ public sealed class ChatLogWindow : Window
} }
else if (Plugin.ExtraChat.ChannelOverride is var (overrideName, _)) else if (Plugin.ExtraChat.ChannelOverride is var (overrideName, _))
{ {
channelNameChunks = [new TextChunk(ChunkSource.None, null, overrideName)]; // If the current channel is not an ExtraChat Linkshell add a warning for the user
var warning = new TextChunk(ChunkSource.None, null, activeTab.CurrentChannel.Channel.IsExtraChatLinkshell()
? ""
: $"(Warning: {activeTab.CurrentChannel.Channel.ToChatType().Name()})");
channelNameChunks = [new TextChunk(ChunkSource.None, null, overrideName), warning];
} }
else if (ScreenshotMode && activeTab.CurrentChannel.Channel is InputChannel.Tell && activeTab.CurrentChannel.TellTarget != null) else if (ScreenshotMode && activeTab.CurrentChannel.Channel is InputChannel.Tell && activeTab.CurrentChannel.TellTarget != null)
{ {
+5 -3
View File
@@ -15,6 +15,8 @@ namespace ChatTwo.Ui;
public class DbViewer : Window public class DbViewer : Window
{ {
public const float RowPerPage = 1000.0f;
private readonly Plugin Plugin; private readonly Plugin Plugin;
private static readonly DateTime MinimalDate = new(2021, 1, 1); private static readonly DateTime MinimalDate = new(2021, 1, 1);
@@ -73,7 +75,7 @@ public class DbViewer : Window
public override void Draw() public override void Draw()
{ {
var totalPages = (int)Math.Ceiling(Count / 500.0f); var totalPages = (int)Math.Ceiling(Count / RowPerPage);
if (totalPages < 1) if (totalPages < 1)
totalPages = 1; totalPages = 1;
@@ -236,7 +238,7 @@ public class DbViewer : Window
{ {
if (SimpleSearchTerm == "") if (SimpleSearchTerm == "")
{ {
Filtered = new ConcurrentStack<Message>(Messages.Reverse()); Filtered = new ConcurrentStack<Message>(Messages.Reverse().OrderByDescending(m => m.Date));
return; return;
} }
@@ -244,7 +246,7 @@ public class DbViewer : Window
Messages.Reverse().Where(m => Messages.Reverse().Where(m =>
ChunkUtil.ToRawString(m.Sender).Contains(SimpleSearchTerm, StringComparison.InvariantCultureIgnoreCase) || ChunkUtil.ToRawString(m.Sender).Contains(SimpleSearchTerm, StringComparison.InvariantCultureIgnoreCase) ||
ChunkUtil.ToRawString(m.Content).Contains(SimpleSearchTerm, StringComparison.InvariantCultureIgnoreCase) ChunkUtil.ToRawString(m.Content).Contains(SimpleSearchTerm, StringComparison.InvariantCultureIgnoreCase)
)); ).OrderByDescending(m => m.Date));
} }
private void DateRefresh() private void DateRefresh()