Skip to content

Commit 11b1526

Browse files
committed
refactor
1 parent 096d93d commit 11b1526

File tree

1 file changed

+18
-27
lines changed

1 file changed

+18
-27
lines changed

pkg/connector/handlematrix.go

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -596,14 +596,10 @@ func (wa *WhatsAppClient) HandleRoomTag(ctx context.Context, msg *bridgev2.Matri
596596
return wa.Client.SendAppState(ctx, appstate.BuildPin(chatJID, isFavorite))
597597
}
598598

599-
func (wa *WhatsAppClient) HandleMarkedUnread(ctx context.Context, msg *bridgev2.MatrixMarkedUnread) error {
600-
chatJID, err := waid.ParsePortalID(msg.Portal.ID)
601-
if err != nil {
602-
return err
603-
}
604-
msgs, err := wa.Main.Bridge.DB.Message.GetLastNInPortal(ctx, msg.Portal.PortalKey, 1)
599+
func (wa *WhatsAppClient) getLastMessageInfo(ctx context.Context, chatJID types.JID, portalKey networkid.PortalKey) (time.Time, *waCommon.MessageKey, error) {
600+
msgs, err := wa.Main.Bridge.DB.Message.GetLastNInPortal(ctx, portalKey, 1)
605601
if err != nil {
606-
return fmt.Errorf("failed to get last message in portal: %w", err)
602+
return time.Time{}, nil, fmt.Errorf("failed to get last message in portal: %w", err)
607603
}
608604
var lastTS time.Time
609605
var lastKey *waCommon.MessageKey
@@ -624,37 +620,32 @@ func (wa *WhatsAppClient) HandleMarkedUnread(ctx context.Context, msg *bridgev2.
624620
}
625621
}
626622
}
627-
return wa.Client.SendAppState(ctx, appstate.BuildMarkChatAsRead(chatJID, msg.Content.Unread, lastTS, lastKey))
623+
return lastTS, lastKey, nil
628624
}
629625

630-
func (wa *WhatsAppClient) HandleMatrixDeleteChat(ctx context.Context, msg *bridgev2.MatrixDeleteChat) error {
626+
func (wa *WhatsAppClient) HandleMarkedUnread(ctx context.Context, msg *bridgev2.MatrixMarkedUnread) error {
631627
chatJID, err := waid.ParsePortalID(msg.Portal.ID)
632628
if err != nil {
633629
return err
634630
}
635-
messages, err := wa.Main.Bridge.DB.Message.GetLastNInPortal(ctx, msg.Portal.PortalKey, 1)
631+
lastTS, lastKey, err := wa.getLastMessageInfo(ctx, chatJID, msg.Portal.PortalKey)
636632
if err != nil {
637-
return fmt.Errorf("failed to get last message in portal: %w", err)
638-
}
639-
if len(messages) < 1 {
640-
return fmt.Errorf("failed to delete chat: no messages found")
633+
return err
641634
}
642-
message := messages[0]
643-
lastTS := messages[0].Timestamp
644-
parsed, err := waid.ParseMessageID(message.ID)
635+
return wa.Client.SendAppState(ctx, appstate.BuildMarkChatAsRead(chatJID, msg.Content.Unread, lastTS, lastKey))
636+
}
637+
638+
func (wa *WhatsAppClient) HandleMatrixDeleteChat(ctx context.Context, msg *bridgev2.MatrixDeleteChat) error {
639+
chatJID, err := waid.ParsePortalID(msg.Portal.ID)
645640
if err != nil {
646-
return fmt.Errorf("failed to parse last message ID: %w", err)
641+
return err
647642
}
648-
fromMe := parsed.Sender.ToNonAD() == wa.JID.ToNonAD() || parsed.Sender.ToNonAD() == wa.GetStore().GetLID().ToNonAD()
649-
var participant *string
650-
if chatJID.Server == types.GroupServer {
651-
participant = ptr.Ptr(parsed.Sender.String())
643+
lastTS, lastKey, err := wa.getLastMessageInfo(ctx, chatJID, msg.Portal.PortalKey)
644+
if err != nil {
645+
return err
652646
}
653-
lastKey := &waCommon.MessageKey{
654-
RemoteJID: ptr.Ptr(chatJID.String()),
655-
FromMe: &fromMe,
656-
ID: &parsed.ID,
657-
Participant: participant,
647+
if lastKey == nil {
648+
return fmt.Errorf("failed to delete chat: no messages found")
658649
}
659650
return wa.Client.SendAppState(ctx, appstate.BuildDeleteChat(chatJID, lastTS, lastKey))
660651
}

0 commit comments

Comments
 (0)