fix(messages): exclude TempTabs from ClearAllTabs and FilterAllTabs
TempTabs (Auto-Tell-Tabs) are session-only and populated directly by AutoTellTabsService.HandleTell — they have no DB persistence to refilter from. The Settings-save flow calls ClearAllTabs() + FilterAllTabsAsync() to rebuild persistent tabs after potential filter changes; this wiped TempTabs as collateral because their tells aren't in the DB (either Privacy-filtered out or simply not yet persisted). Skip TempTabs in both methods so their live-state survives any settings save. Live tells continue to land via HandleTell, regardless of the clear/filter cycle.
This commit is contained in:
@@ -151,7 +151,13 @@ internal class MessageManager : IAsyncDisposable
|
|||||||
|
|
||||||
internal void ClearAllTabs()
|
internal void ClearAllTabs()
|
||||||
{
|
{
|
||||||
foreach (var tab in Plugin.Config.Tabs)
|
// Hellion Chat — TempTabs haben keine DB-Persistenz (session-only,
|
||||||
|
// direkt vom AutoTellTabsService befüllt). Ein Clear+Refilter würde
|
||||||
|
// sie leer hinterlassen weil FilterAllTabs nichts aus der DB
|
||||||
|
// findet — Tells sind oft durch Privacy-Filter blockiert oder
|
||||||
|
// schlicht session-flüchtig. TempTabs vom Clear-Pfad ausschließen
|
||||||
|
// damit Settings-Save den Tell-Verlauf nicht zerstört.
|
||||||
|
foreach (var tab in Plugin.Config.Tabs.Where(t => !t.IsTempTab))
|
||||||
tab.Clear();
|
tab.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +171,11 @@ internal class MessageManager : IAsyncDisposable
|
|||||||
|
|
||||||
// We store the pending messages to be added to the chat log in a
|
// We store the pending messages to be added to the chat log in a
|
||||||
// temporary list, and apply them all at once after filtering.
|
// temporary list, and apply them all at once after filtering.
|
||||||
var pendingTabs = Plugin.Config.Tabs.Select(tab => (tab, new List<Message>())).ToList();
|
// TempTabs werden ausgeschlossen — sie bleiben live-state aus dem
|
||||||
|
// AutoTellTabsService, ein DB-Refilter würde sie nur partial
|
||||||
|
// wiederherstellen falls Tells in DB liegen, oder leer lassen wenn
|
||||||
|
// Privacy-Filter sie blockiert hat.
|
||||||
|
var pendingTabs = Plugin.Config.Tabs.Where(t => !t.IsTempTab).Select(tab => (tab, new List<Message>())).ToList();
|
||||||
foreach (var message in messages)
|
foreach (var message in messages)
|
||||||
foreach (var (_, pendingMessages) in pendingTabs.Where(ptab => ptab.Item1.Matches(message)))
|
foreach (var (_, pendingMessages) in pendingTabs.Where(ptab => ptab.Item1.Matches(message)))
|
||||||
pendingMessages.Add(message);
|
pendingMessages.Add(message);
|
||||||
|
|||||||
Reference in New Issue
Block a user