Browse Source

feat(integration): prioritize feed-level webhook URL when available when saving entries

Frédéric Guillot 8 months ago
parent
commit
1f7843e313
2 changed files with 12 additions and 3 deletions
  1. 10 3
      internal/integration/integration.go
  2. 2 0
      internal/storage/entry_query_builder.go

+ 10 - 3
internal/integration/integration.go

@@ -372,20 +372,27 @@ func SendEntry(entry *model.Entry, userIntegrations *model.Integration) {
 	}
 
 	if userIntegrations.WebhookEnabled {
+		var webhookURL string
+		if entry.Feed != nil && entry.Feed.WebhookURL != "" {
+			webhookURL = entry.Feed.WebhookURL
+		} else {
+			webhookURL = userIntegrations.WebhookURL
+		}
+
 		slog.Debug("Sending entry to Webhook",
 			slog.Int64("user_id", userIntegrations.UserID),
 			slog.Int64("entry_id", entry.ID),
 			slog.String("entry_url", entry.URL),
-			slog.String("webhook_url", userIntegrations.WebhookURL),
+			slog.String("webhook_url", webhookURL),
 		)
 
-		webhookClient := webhook.NewClient(userIntegrations.WebhookURL, userIntegrations.WebhookSecret)
+		webhookClient := webhook.NewClient(webhookURL, userIntegrations.WebhookSecret)
 		if err := webhookClient.SendSaveEntryWebhookEvent(entry); err != nil {
 			slog.Error("Unable to send entry to Webhook",
 				slog.Int64("user_id", userIntegrations.UserID),
 				slog.Int64("entry_id", entry.ID),
 				slog.String("entry_url", entry.URL),
-				slog.String("webhook_url", userIntegrations.WebhookURL),
+				slog.String("webhook_url", webhookURL),
 				slog.Any("error", err),
 			)
 		}

+ 2 - 0
internal/storage/entry_query_builder.go

@@ -292,6 +292,7 @@ func (e *EntryQueryBuilder) GetEntries() (model.Entries, error) {
 			f.cookie,
 			f.hide_globally,
 			f.no_media_player,
+			f.webhook_url,
 			fi.icon_id,
 			i.external_id AS icon_external_id,
 			u.timezone
@@ -364,6 +365,7 @@ func (e *EntryQueryBuilder) GetEntries() (model.Entries, error) {
 			&entry.Feed.Cookie,
 			&entry.Feed.HideGlobally,
 			&entry.Feed.NoMediaPlayer,
+			&entry.Feed.WebhookURL,
 			&iconID,
 			&externalIconID,
 			&tz,