1
0
Fork 0
mirror of https://github.com/diamondburned/cchat-discord.git synced 2025-05-05 05:25:10 +00:00

Joining a channel now marks it as read

This commit is contained in:
diamondburned 2020-07-16 20:12:42 -07:00
parent 6e52197039
commit 50ba10bf61

View file

@ -237,17 +237,21 @@ func (ch *Channel) JoinServer(ctx context.Context, ct cchat.MessagesContainer) (
} }
} }
// Only do all this if we even have any messages.
if len(m) > 0 {
// Sort messages chronologically using the ID so that the oldest messages // Sort messages chronologically using the ID so that the oldest messages
// (ones with the smallest snowflake) is in front. // (ones with the smallest snowflake) is in front.
sort.Slice(m, func(i, j int) bool { sort.Slice(m, func(i, j int) bool { return m[i].ID < m[j].ID })
return m[i].ID < m[j].ID
})
// Iterate from the earliest messages to the latest messages. // Iterate from the earliest messages to the latest messages.
for _, m := range m { for _, m := range m {
ct.CreateMessage(constructor(m)) ct.CreateMessage(constructor(m))
} }
// Mark this channel as read.
ch.session.ReadState.MarkRead(ch.id, m[len(m)-1].ID)
}
// Bind the handler. // Bind the handler.
addcancel( addcancel(
ch.session.AddHandler(func(m *gateway.MessageCreateEvent) { ch.session.AddHandler(func(m *gateway.MessageCreateEvent) {