# frozen_string_literal: true class Event < ApplicationRecord KINDS = %w[user_present_on_map user_not_present_on_map conversation_started_on_map topic_added_to_map topic_moved_on_map topic_removed_from_map synapse_added_to_map synapse_removed_from_map topic_updated synapse_updated].freeze belongs_to :eventable, polymorphic: true belongs_to :map belongs_to :user scope :chronologically, (-> { order('created_at asc') }) after_create :notify_webhooks!, if: :map validates :kind, inclusion: { in: KINDS } validates :eventable, presence: true def belongs_to?(this_user) user_id == this_user.id end def notify_webhooks! map.webhooks.each { |webhook| WebhookService.publish! webhook: webhook, event: self } end handle_asynchronously :notify_webhooks! end