This is an automated email from the ASF dual-hosted git repository.

linkinstar pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/answer.git

commit c8908b7b3405e1bd927c6019e35630526a29c484
Author: Douglas Cortez <[email protected]>
AuthorDate: Fri Dec 26 12:18:26 2025 -0300

    fix(review): notifications from the specific external system will take 
precedence
---
 internal/service/notification/new_question_notification.go | 10 ++++++++++
 internal/service/notification_common/notification.go       |  8 ++++++++
 2 files changed, 18 insertions(+)

diff --git a/internal/service/notification/new_question_notification.go 
b/internal/service/notification/new_question_notification.go
index 085b3ec4..0a547187 100644
--- a/internal/service/notification/new_question_notification.go
+++ b/internal/service/notification/new_question_notification.go
@@ -238,6 +238,7 @@ func (ns *ExternalNotificationService) 
syncNewQuestionNotificationToPlugin(ctx c
                                }
                        }
 
+                       // Get all external logins as fallback
                        externalLogins, err := 
ns.userExternalLoginRepo.GetUserExternalLoginList(ctx, subscriberUserID)
                        if err != nil {
                                log.Errorf("get user external login list failed 
for user %s: %v", subscriberUserID, err)
@@ -249,6 +250,15 @@ func (ns *ExternalNotificationService) 
syncNewQuestionNotificationToPlugin(ctx c
                                }
                        }
 
+                       // Try to get external login specific to this plugin 
(takes precedence over fallback)
+                       userInfo, exist, err := 
ns.userExternalLoginRepo.GetByUserID(ctx, fn.Info().SlugName, subscriberUserID)
+                       if err != nil {
+                               log.Errorf("get user external login info 
failed: %v", err)
+                               return nil
+                       }
+                       if exist {
+                               newMsg.ReceiverExternalID = userInfo.ExternalID
+                       }
                        fn.Notify(newMsg)
                }
                return nil
diff --git a/internal/service/notification_common/notification.go 
b/internal/service/notification_common/notification.go
index 5dbadcb9..94ce86b1 100644
--- a/internal/service/notification_common/notification.go
+++ b/internal/service/notification_common/notification.go
@@ -431,6 +431,14 @@ func (ns *NotificationCommon) syncNotificationToPlugin(ctx 
context.Context, objI
        }
 
        _ = plugin.CallNotification(func(fn plugin.Notification) error {
+               userInfo, exist, err := 
ns.userExternalLoginRepo.GetByUserID(ctx, fn.Info().SlugName, 
msg.ReceiverUserID)
+               if err != nil {
+                       log.Errorf("get user external login info failed: %v", 
err)
+                       return nil
+               }
+               if exist {
+                       pluginNotificationMsg.ReceiverExternalID = 
userInfo.ExternalID
+               }
                fn.Notify(pluginNotificationMsg)
                return nil
        })

Reply via email to