Skip to content

Commit c3f6809

Browse files
committed
refactor(whatsapp): remove legacy server retry logic and streamline recipient JID handling
1 parent ec180ba commit c3f6809

1 file changed

Lines changed: 21 additions & 45 deletions

File tree

internal/messaging/whatsapp_service.go

Lines changed: 21 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,6 @@ func (s *WhatsAppService) resolveRecipientAddress(canonicalPhone string) string
9494
return canonicalPhone
9595
}
9696

97-
func shouldRetryWithLegacyServer(err error) bool {
98-
if err == nil {
99-
return false
100-
}
101-
msg := err.Error()
102-
return strings.Contains(msg, "failed to get user info") || strings.Contains(msg, "rate-overlimit")
103-
}
104-
10597
// ValidateAndCanonicalizeRecipient validates and canonicalizes a WhatsApp phone number.
10698
// It removes all non-numeric characters and validates the result has at least 6 digits.
10799
func (s *WhatsAppService) ValidateAndCanonicalizeRecipient(recipient string) (string, error) {
@@ -194,19 +186,6 @@ func (s *WhatsAppService) SendMessage(ctx context.Context, to string, body strin
194186
}
195187
err = s.client.SendMessage(ctx, sendTo, body)
196188
if err != nil {
197-
if sendTo == canonicalTo && shouldRetryWithLegacyServer(err) {
198-
legacyTo := fmt.Sprintf("%s@%s", canonicalTo, types.LegacyUserServer)
199-
slog.Warn("WhatsAppService SendMessage retrying with legacy server", "to", legacyTo, "phone", canonicalTo)
200-
retryErr := s.client.SendMessage(ctx, legacyTo, body)
201-
if retryErr == nil {
202-
s.safeEmitReceipt(models.Receipt{To: canonicalTo, Status: models.MessageStatusSent, Time: time.Now().Unix()})
203-
slog.Info("WhatsAppService message sent via legacy server", "to", legacyTo, "phone", canonicalTo)
204-
return nil
205-
}
206-
slog.Error("WhatsAppService SendMessage legacy retry failed", "error", retryErr, "to", legacyTo, "phone", canonicalTo)
207-
return retryErr
208-
}
209-
210189
slog.Error("WhatsAppService SendMessage error", "error", err, "to", sendTo, "phone", canonicalTo)
211190
return err
212191
}
@@ -434,38 +413,35 @@ func (s *WhatsAppService) handleIncomingMessage(evt *events.Message) {
434413
senderAlt := evt.Info.SenderAlt.ToNonAD()
435414

436415
var phoneJID types.JID
437-
var lidJID types.JID
438-
439-
if evt.Info.AddressingMode == types.AddressingModeLID {
440-
lidJID = sender
441-
phoneJID = senderAlt
442-
} else {
443-
phoneJID = sender
444-
lidJID = senderAlt
445-
}
446-
447-
if phoneJID.User == "" || (phoneJID.Server != types.DefaultUserServer && phoneJID.Server != types.LegacyUserServer) {
448-
phoneJID = sender
416+
for _, candidate := range []types.JID{senderAlt, sender} {
417+
if candidate.User == "" {
418+
continue
419+
}
420+
if candidate.Server == types.DefaultUserServer || candidate.Server == types.LegacyUserServer {
421+
phoneJID = candidate
422+
break
423+
}
449424
}
450425

451-
if phoneJID.User != "" {
452-
fromNumber = phoneJID.User
453-
if !strings.HasPrefix(fromNumber, "+") {
454-
fromNumber = "+" + fromNumber
455-
}
426+
if phoneJID.User == "" {
427+
slog.Warn("WhatsAppService unable to determine phone JID; dropping message",
428+
"sender", sender.String(),
429+
"senderAlt", senderAlt.String(),
430+
"addressingMode", evt.Info.AddressingMode)
431+
return
456432
}
457433

458-
if fromNumber == "" {
459-
fromNumber = sender.User
460-
if !strings.HasPrefix(fromNumber, "+") {
461-
fromNumber = "+" + fromNumber
462-
}
434+
fromNumber = phoneJID.User
435+
if !strings.HasPrefix(fromNumber, "+") {
436+
fromNumber = "+" + fromNumber
463437
}
464438

465439
if canonical, err := s.ValidateAndCanonicalizeRecipient(fromNumber); err == nil {
466440
canonicalPhone = canonical
467-
if lidJID.User != "" && lidJID.Server == types.HiddenUserServer {
468-
s.storeRecipientLID(canonicalPhone, lidJID.String())
441+
if sender.Server == types.HiddenUserServer {
442+
s.storeRecipientLID(canonicalPhone, sender.String())
443+
} else if senderAlt.Server == types.HiddenUserServer {
444+
s.storeRecipientLID(canonicalPhone, senderAlt.String())
469445
}
470446
}
471447

0 commit comments

Comments
 (0)