mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-20 10:33:41 -05:00
hicli/sync: recalculate unreads on redaction
This commit is contained in:
parent
9254461795
commit
2179fb2c18
3 changed files with 9 additions and 6 deletions
|
@ -467,15 +467,15 @@ func (e *Event) sqlVariables() []any {
|
|||
}
|
||||
|
||||
func (e *Event) GetNonPushUnreadType() UnreadType {
|
||||
if e.RelationType == event.RelReplace {
|
||||
if e.RelationType == event.RelReplace || e.RedactedBy != "" {
|
||||
return UnreadTypeNone
|
||||
}
|
||||
switch e.Type {
|
||||
case event.EventMessage.Type, event.EventSticker.Type:
|
||||
case event.EventMessage.Type, event.EventSticker.Type, event.EventUnstablePollStart.Type:
|
||||
return UnreadTypeNormal
|
||||
case event.EventEncrypted.Type:
|
||||
switch e.DecryptedType {
|
||||
case event.EventMessage.Type, event.EventSticker.Type:
|
||||
case event.EventMessage.Type, event.EventSticker.Type, event.EventUnstablePollStart.Type:
|
||||
return UnreadTypeNormal
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ const (
|
|||
JOIN event ON receipt.event_id=event.event_id
|
||||
WHERE receipt.room_id = $1 AND receipt.user_id = $2
|
||||
)
|
||||
)
|
||||
) AND unread_type > 0 AND redacted_by IS NULL
|
||||
`
|
||||
)
|
||||
|
||||
|
|
|
@ -489,7 +489,7 @@ func (h *HiClient) processStateAndTimeline(
|
|||
decryptionQueue := make(map[id.SessionID]*database.SessionRequest)
|
||||
allNewEvents := make([]*database.Event, 0, len(state.Events)+len(timeline.Events))
|
||||
newNotifications := make([]SyncNotification, 0)
|
||||
recalculatePreviewEvent := false
|
||||
var recalculatePreviewEvent, unreadMessagesWereMaybeRedacted bool
|
||||
var newUnreadCounts database.UnreadCounts
|
||||
addOldEvent := func(rowID database.EventRowID, evtID id.EventID) (dbEvt *database.Event, err error) {
|
||||
if rowID != 0 {
|
||||
|
@ -513,6 +513,9 @@ func (h *HiClient) processStateAndTimeline(
|
|||
if dbEvt == nil {
|
||||
return nil
|
||||
}
|
||||
if dbEvt.UnreadType > 0 {
|
||||
unreadMessagesWereMaybeRedacted = true
|
||||
}
|
||||
if dbEvt.RelationType == event.RelReplace || dbEvt.RelationType == event.RelAnnotation {
|
||||
_, err = addOldEvent(0, dbEvt.RelatesTo)
|
||||
if err != nil {
|
||||
|
@ -677,7 +680,7 @@ func (h *HiClient) processStateAndTimeline(
|
|||
return fmt.Errorf("failed to save receipts: %w", err)
|
||||
}
|
||||
}
|
||||
if len(newOwnReceipts) > 0 && newUnreadCounts.IsZero() {
|
||||
if !room.UnreadCounts.IsZero() && ((len(newOwnReceipts) > 0 && newUnreadCounts.IsZero()) || unreadMessagesWereMaybeRedacted) {
|
||||
updatedRoom.UnreadCounts, err = h.DB.Room.CalculateUnreads(ctx, room.ID, h.Account.UserID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to recalculate unread counts: %w", err)
|
||||
|
|
Loading…
Add table
Reference in a new issue