Skip to content

Commit ee2242f

Browse files
committed
refactor
1 parent 096d93d commit ee2242f

File tree

2 files changed

+18
-29
lines changed

2 files changed

+18
-29
lines changed

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,6 @@ go.mau.fi/util v0.9.2-0.20251005111801-c13b66219cee h1:wk1XGP/E1UH3YBqXbb9dajWdO
8181
go.mau.fi/util v0.9.2-0.20251005111801-c13b66219cee/go.mod h1:M0bM9SyaOWJniaHs9hxEzz91r5ql6gYq6o1q5O1SsjQ=
8282
go.mau.fi/webp v0.2.0 h1:QVMenHw7JDb4vall5sV75JNBQj9Hw4u8AKbi1QetHvg=
8383
go.mau.fi/webp v0.2.0/go.mod h1:VSg9MyODn12Mb5pyG0NIyNFhujrmoFSsZBs8syOZD1Q=
84-
go.mau.fi/whatsmeow v0.0.0-20251010113933-5806d60827b0 h1:Q4gIHMOPglOvX8JQ7ewWhoHMhveew2pwnBzmepgJi1w=
85-
go.mau.fi/whatsmeow v0.0.0-20251010113933-5806d60827b0/go.mod h1:CSdGU471Ss7bWunGomSe9RObY0MRxQDvxFH8i5Ndfk4=
8684
go.mau.fi/whatsmeow v0.0.0-20251014132254-6048f61ae25b h1:T0+Fhr2eaIOPW2M3xJW4qGzYLLa63aCsAnBFd/2GLhU=
8785
go.mau.fi/whatsmeow v0.0.0-20251014132254-6048f61ae25b/go.mod h1:CSdGU471Ss7bWunGomSe9RObY0MRxQDvxFH8i5Ndfk4=
8886
go.mau.fi/zeroconfig v0.2.0 h1:e/OGEERqVRRKlgaro7E6bh8xXiKFSXB3eNNIud7FUjU=

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)