- 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:
@@ -1,6 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<Version>1.29.16</Version>
|
||||
<Version>1.29.17</Version>
|
||||
<TargetFramework>net8.0-windows</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
@@ -109,7 +109,7 @@ internal static class InputChannelExt
|
||||
InputChannel.ExtraChatLinkshell7 => "/ecl7",
|
||||
InputChannel.ExtraChatLinkshell8 => "/ecl8",
|
||||
InputChannel.Invalid => "/e",
|
||||
_ => "",
|
||||
_ => "/e",
|
||||
};
|
||||
|
||||
public static IEnumerable<TextCommand>? TextCommands(this InputChannel channel, IDataManager data)
|
||||
|
||||
@@ -460,6 +460,13 @@ internal class UsedChannel
|
||||
TempTellTarget = null;
|
||||
TempChannel = InputChannel.Invalid;
|
||||
}
|
||||
|
||||
internal void SetChannel(InputChannel channel)
|
||||
{
|
||||
UseTempChannel = false;
|
||||
TempTellTarget = null;
|
||||
Channel = channel;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using System.Collections;
|
||||
using System.Data.Common;
|
||||
using ChatTwo.Code;
|
||||
using ChatTwo.Ui;
|
||||
using ChatTwo.Util;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using MessagePack;
|
||||
@@ -444,7 +445,7 @@ internal class MessageStore : IDisposable
|
||||
ExtraChatChannel
|
||||
FROM messages
|
||||
" + whereClause + @"
|
||||
LIMIT $Offset, 500;
|
||||
LIMIT $Offset, $OffsetCount;
|
||||
";
|
||||
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("$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());
|
||||
}
|
||||
|
||||
@@ -505,9 +505,9 @@ public sealed class ChatLogWindow : Window
|
||||
AddPopOutsToDraw();
|
||||
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
|
||||
// input focus, which breaks every other ImGui window.
|
||||
Activate = false;
|
||||
@@ -540,6 +540,11 @@ public sealed class ChatLogWindow : Window
|
||||
DrawTabBar();
|
||||
|
||||
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)
|
||||
Plugin.InputPreview.DrawPreview();
|
||||
|
||||
@@ -793,15 +798,14 @@ public sealed class ChatLogWindow : Window
|
||||
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);
|
||||
}
|
||||
else if (activeTab is { Channel: { } channel })
|
||||
{
|
||||
// We cannot lookup ExtraChat channel names from index over
|
||||
// IPC so we just don't show the name if it's the tabs
|
||||
// channel.
|
||||
// IPC so we just don't show the name if it's the tabs channel.
|
||||
//
|
||||
// We don't call channel.ToChatType().Name() as it has the
|
||||
// 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, _))
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -15,6 +15,8 @@ namespace ChatTwo.Ui;
|
||||
|
||||
public class DbViewer : Window
|
||||
{
|
||||
public const float RowPerPage = 1000.0f;
|
||||
|
||||
private readonly Plugin Plugin;
|
||||
|
||||
private static readonly DateTime MinimalDate = new(2021, 1, 1);
|
||||
@@ -73,7 +75,7 @@ public class DbViewer : Window
|
||||
|
||||
public override void Draw()
|
||||
{
|
||||
var totalPages = (int)Math.Ceiling(Count / 500.0f);
|
||||
var totalPages = (int)Math.Ceiling(Count / RowPerPage);
|
||||
if (totalPages < 1)
|
||||
totalPages = 1;
|
||||
|
||||
@@ -236,7 +238,7 @@ public class DbViewer : Window
|
||||
{
|
||||
if (SimpleSearchTerm == "")
|
||||
{
|
||||
Filtered = new ConcurrentStack<Message>(Messages.Reverse());
|
||||
Filtered = new ConcurrentStack<Message>(Messages.Reverse().OrderByDescending(m => m.Date));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -244,7 +246,7 @@ public class DbViewer : Window
|
||||
Messages.Reverse().Where(m =>
|
||||
ChunkUtil.ToRawString(m.Sender).Contains(SimpleSearchTerm, StringComparison.InvariantCultureIgnoreCase) ||
|
||||
ChunkUtil.ToRawString(m.Content).Contains(SimpleSearchTerm, StringComparison.InvariantCultureIgnoreCase)
|
||||
));
|
||||
).OrderByDescending(m => m.Date));
|
||||
}
|
||||
|
||||
private void DateRefresh()
|
||||
|
||||
Reference in New Issue
Block a user