From 9eb066846d4fa0f74c303863c702c992cf342f78 Mon Sep 17 00:00:00 2001
From: Teal Bauer <git@teal.is>
Date: Mon, 27 May 2024 21:20:52 +0200
Subject: [PATCH] only notify for relevant stages

---
 app/subscribers/telegram_bot_subscriber.rb | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/app/subscribers/telegram_bot_subscriber.rb b/app/subscribers/telegram_bot_subscriber.rb
index 5fc4c35..88c02a6 100644
--- a/app/subscribers/telegram_bot_subscriber.rb
+++ b/app/subscribers/telegram_bot_subscriber.rb
@@ -13,20 +13,22 @@ class TelegramBotSubscriber
   def handle_session_updated(event)
     Rails.logger.info("session event #{event.inspect}")
     model_name, action = event.name.split('.')
-    record = event.payload[:record]
+    session = event.payload[:record]
     changes = event.payload[:changes]
 
     return unless changes.any? do |attr, (from, to)|
       %w[title language status starts_at ends_at stage_id].include? attr
     end
 
+    return unless session.conference.relevant_stages.include? session.stage || changes["stage_id"].any? { |stage_id| session.conference.relevant_stages.include? Stage.find(stage_id) }
+
     if changes["stage_id"]
       changes["stage"] = [Stage.find(changes["stage_id"].first).name, Stage.find(changes["stage_id"].last).name]
       changes.delete("stage_id")
     end
 
-    message = "<b><a href=\"#{conference_session_url(record.conference, record, host: 'rescheduled.c3lingo.org', protocol: 'https')}\">Session #{record.title}</a> #{action}</b>\n" +
-      changes.map { |attr, (from, to)| "- #{attr}: #{from} -> #{to}" }.join("\n") + "\n#{conference_session_url(record.conference, record)}"
+    message = "<b><a href=\"#{conference_session_url(session.conference, session, host: 'rescheduled.c3lingo.org', protocol: 'https')}\">Session #{session.title}</a> #{action}</b>\n" +
+      changes.map { |attr, (from, to)| "- #{attr}: #{from} -> #{to}" }.join("\n") + "\n#{conference_session_url(session.conference, session)}"
 
     TelegramGroupChatNotificationJob.perform_later(target: "-316096320", text: message, parse_mode: 'HTML')
     # TelegramGroupChatNotificationJob.perform_later(target: "2192297", text: message, parse_mode: 'HTML')
@@ -35,11 +37,13 @@ class TelegramBotSubscriber
   def handle_session_speaker_event(event)
     Rails.logger.info("session_speaker event #{event.inspect}")
     model_name, action = event.name.split('.')
-    record = event.payload[:record]
-    session = record.session
+    session_speaker = event.payload[:record]
+    session = session_speaker.session
+
+    return unless session.conference.relevant_stages.include? session.stage
 
     message = "<b><a href=\"#{conference_session_url(session.conference, session, host: 'rescheduled.c3lingo.org', protocol: 'https')}\">Session #{session.title}</a> Speaker Change</b>\n" +
-      "#{record.speaker.name} #{action == 'destroyed' ? 'removed' : 'added'}" + "\n#{conference_session_url(session.conference, session)}"
+      "#{session_speaker.speaker.name} #{action == 'destroyed' ? 'removed' : 'added'}" + "\n#{conference_session_url(session.conference, session)}"
 
     TelegramGroupChatNotificationJob.perform_later(target: "-316096320", text: message, parse_mode: 'HTML')
   end
-- 
GitLab