diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-02-05 19:41:34 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-02-05 19:41:34 +0200 |
| commit | 0bf5515629f1cfe1557dba4f8d588ac64b77d408 (patch) | |
| tree | 2bfc56b990c6edd6bab6ddf7b10964b0efb1dbcb /internal/server | |
| parent | 8a8c4e9abc1006da92969e0234bb2d42f587c149 (diff) | |
When a user sends a message "signal" and the receiving user doesn't have
the signal already open, it will be added as the first signal
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/api/api.go | 10 | ||||
| -rw-r--r-- | internal/server/api/helpers.go | 7 | ||||
| -rw-r--r-- | internal/server/server.go | 4 |
3 files changed, 18 insertions, 3 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go index 92679b8..e087268 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -156,6 +156,16 @@ func SendMessage(ctx context.Context, sess *session.Session, request *packet.Sen return &ErrInternalError } + err = queries.InsertLastReadMessage(ctx, data.InsertLastReadMessageParams{ + UserID: *request.ReceiverID, + SourceID: sess.ID(), + LastRead: 0, + }) + if err != nil { + log.Println("database error 7:", err) + return &ErrInternalError + } + return UserPropagate(ctx, sess, user.ID, &packet.MessagesInfo{ Messages: []data.Message{message}, RemovedMessages: nil, diff --git a/internal/server/api/helpers.go b/internal/server/api/helpers.go index 2daeb9f..4327a49 100644 --- a/internal/server/api/helpers.go +++ b/internal/server/api/helpers.go @@ -151,15 +151,16 @@ SELECT e.source_id, e.last_read, CASE WHEN COUNT(m.id) = 0 THEN NULL - ELSE SUM(CASE WHEN (m.ping = 0 OR (m.ping = 1 AND pf.is_admin = true) OR m.ping = ?) THEN 1 ELSE 0 END) + ELSE SUM(CASE WHEN (m.frequency_id IS NULL OR + m.ping = 0 OR (m.ping = 1 AND pf.is_admin = true) OR m.ping = ?) THEN 1 ELSE 0 END) -- 0 is @everyone, 1 is @admins, otherwise it's user_id END AS pings FROM entries e +LEFT JOIN permitted_frequencies pf ON e.source_id = pf.id LEFT JOIN messages m ON m.id > e.last_read - AND (m.frequency_id = e.source_id OR + AND ((m.frequency_id = e.source_id AND pf.id IS NOT NULL) OR (m.receiver_id = e.source_id AND m.sender_id = ?) OR (m.sender_id = e.source_id AND m.receiver_id = ?)) -JOIN permitted_frequencies pf ON e.source_id = pf.id GROUP BY e.source_id, e.last_read; ` diff --git a/internal/server/server.go b/internal/server/server.go index 153f612..1477e7f 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -414,6 +414,7 @@ func (server *server) sendInitialPackets(ctx context.Context, sess *session.Sess if payload == &api.ErrInternalError { return false } + log.Println(sess.Addr(), "sending", payload.Type(), "payload:", payload) pkt := packet.NewPacket(packet.NewMsgPackEncoder(payload)) sess.Write(ctx, pkt) @@ -421,6 +422,7 @@ func (server *server) sendInitialPackets(ctx context.Context, sess *session.Sess if payload == &api.ErrInternalError { return false } + log.Println(sess.Addr(), "sending", payload.Type(), "payload:", payload) pkt = packet.NewPacket(packet.NewMsgPackEncoder(payload)) sess.Write(ctx, pkt) @@ -428,6 +430,7 @@ func (server *server) sendInitialPackets(ctx context.Context, sess *session.Sess if err != nil { return false } + log.Println(sess.Addr(), "sending", payload.Type(), "payload:", payload) pkt = packet.NewPacket(packet.NewMsgPackEncoder(payload)) sess.Write(ctx, pkt) @@ -435,6 +438,7 @@ func (server *server) sendInitialPackets(ctx context.Context, sess *session.Sess if payload == &api.ErrInternalError { return false } + log.Println(sess.Addr(), "sending", payload.Type(), "payload:", payload) pkt = packet.NewPacket(packet.NewMsgPackEncoder(payload)) sess.Write(ctx, pkt) |
