Add bulk message sending
This commit is contained in:
@@ -9,6 +9,8 @@ public class ChannelListEvent(ChannelList channelList) : BaseEvent("channel-list
|
|||||||
|
|
||||||
public class SwitchChannelEvent(SwitchChannel switchChannel) : BaseEvent("switch-channel", JsonConvert.SerializeObject(switchChannel));
|
public class SwitchChannelEvent(SwitchChannel switchChannel) : BaseEvent("switch-channel", JsonConvert.SerializeObject(switchChannel));
|
||||||
|
|
||||||
|
public class BulkMessagesEvent(Messages messages) : BaseEvent("bulk-messages", JsonConvert.SerializeObject(messages));
|
||||||
|
|
||||||
public class NewMessageEvent(Messages messages) : BaseEvent("new-message", JsonConvert.SerializeObject(messages));
|
public class NewMessageEvent(Messages messages) : BaseEvent("new-message", JsonConvert.SerializeObject(messages));
|
||||||
|
|
||||||
public class BaseEvent(string eventType, string? data = null)
|
public class BaseEvent(string eventType, string? data = null)
|
||||||
|
|||||||
@@ -56,6 +56,22 @@ public class ServerCore : IAsyncDisposable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void SendBulkMessageList()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Plugin.Framework.RunOnTick(() =>
|
||||||
|
{
|
||||||
|
foreach (var eventServer in EventConnections)
|
||||||
|
eventServer.OutboundQueue.Enqueue(new BulkMessagesEvent(new Messages(Processing.ReadMessageList().Result)));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Plugin.Log.Error(ex, "Sending channel switch over SSE failed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal void SendChannelSwitch(Chunk[] channelName)
|
internal void SendChannelSwitch(Chunk[] channelName)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ class SSEConnection {
|
|||||||
updateChannelHint(JSON.parse(event.data).channel)
|
updateChannelHint(JSON.parse(event.data).channel)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// New messages that are able to be directly processed
|
||||||
this.socket.addEventListener('new-message', (event) => {
|
this.socket.addEventListener('new-message', (event) => {
|
||||||
for (let message of JSON.parse(event.data).messages)
|
for (let message of JSON.parse(event.data).messages)
|
||||||
{
|
{
|
||||||
@@ -19,6 +20,16 @@ class SSEConnection {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// New messages, that require a clean message list before processing
|
||||||
|
this.socket.addEventListener('bulk-messages', (event) => {
|
||||||
|
clearMessages();
|
||||||
|
|
||||||
|
for (let message of JSON.parse(event.data).messages)
|
||||||
|
{
|
||||||
|
addMessage(message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.socket.addEventListener('channel-list', (event) => {
|
this.socket.addEventListener('channel-list', (event) => {
|
||||||
updateChannelOptions(JSON.parse(event.data).channels)
|
updateChannelOptions(JSON.parse(event.data).channels)
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -159,7 +159,9 @@ public sealed class PayloadHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui.Checkbox(Language.Context_ScreenshotMode, ref LogWindow.ScreenshotMode);
|
// ScreenshotMode changed, so we inform the webinterface about the new message format
|
||||||
|
if (ImGui.Checkbox(Language.Context_ScreenshotMode, ref LogWindow.ScreenshotMode))
|
||||||
|
LogWindow.Plugin.ServerCore.SendBulkMessageList();
|
||||||
|
|
||||||
if (ImGui.Selectable(Language.Context_HideChat))
|
if (ImGui.Selectable(Language.Context_HideChat))
|
||||||
LogWindow.UserHide();
|
LogWindow.UserHide();
|
||||||
|
|||||||
Reference in New Issue
Block a user