From ecc84f5f2d2f66c6044a237edc607946ac62b7b8 Mon Sep 17 00:00:00 2001 From: ze0s <43699394+zze0s@users.noreply.github.com> Date: Thu, 15 Jun 2023 23:17:26 +0200 Subject: [PATCH] fix(irc): view channel history (#987) fix(irc): irc monitor channels * base64 sse stream key --- internal/irc/handler.go | 4 +++- internal/irc/service.go | 9 +++++++-- web/src/screens/settings/Irc.tsx | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/irc/handler.go b/internal/irc/handler.go index f0fa6d4..48e673f 100644 --- a/internal/irc/handler.go +++ b/internal/irc/handler.go @@ -547,7 +547,9 @@ func (h *Handler) onNick(msg ircmsg.Message) { } func (h *Handler) publishSSEMsg(msg domain.IrcMessage) { - h.sse.Publish(fmt.Sprintf("%d%s", h.network.ID, strings.TrimPrefix(msg.Channel, "#")), &sse.Event{ + key := genSSEKey(h.network.ID, msg.Channel) + + h.sse.Publish(key, &sse.Event{ Data: msg.Bytes(), }) } diff --git a/internal/irc/service.go b/internal/irc/service.go index c3dde1f..8c29abd 100644 --- a/internal/irc/service.go +++ b/internal/irc/service.go @@ -5,6 +5,7 @@ package irc import ( "context" + "encoding/base64" "fmt" "strings" "sync" @@ -638,7 +639,7 @@ func (s *service) SendCmd(ctx context.Context, req *domain.SendIrcCmdRequest) er } func (s *service) createSSEStream(networkId int64, channel string) { - key := fmt.Sprintf("%d%s", networkId, strings.TrimPrefix(channel, "#")) + key := genSSEKey(networkId, channel) s.sse.CreateStreamWithOpts(key, sse.StreamOpts{ MaxEntries: sseMaxEntries, @@ -647,7 +648,11 @@ func (s *service) createSSEStream(networkId int64, channel string) { } func (s *service) removeSSEStream(networkId int64, channel string) { - key := fmt.Sprintf("%d%s", networkId, strings.TrimPrefix(channel, "#")) + key := genSSEKey(networkId, channel) s.sse.RemoveStream(key) } + +func genSSEKey(networkId int64, channel string) string { + return base64.URLEncoding.EncodeToString([]byte(fmt.Sprintf("%d%s", networkId, strings.ToLower(channel)))) +} diff --git a/web/src/screens/settings/Irc.tsx b/web/src/screens/settings/Irc.tsx index 9d8b563..16dccee 100644 --- a/web/src/screens/settings/Irc.tsx +++ b/web/src/screens/settings/Irc.tsx @@ -629,7 +629,7 @@ export const Events = ({ network, channel }: EventsProps) => { }; useEffect(() => { - const key = `${network.id}${channel.replace("#", "")}`; + const key = btoa(`${network.id}${channel.toLowerCase()}`); const es = APIClient.irc.events(key); es.onmessage = (event) => {