fix: assignee_changed callback not getting triggered during conversation creation (#9334)

The reload method in our callback was refreshing the object and hence the saved_change_to_assignee_id? Method wasn't working in the following callbacks.

This impacted the listeners subscribing to the event `ASSIGNEE_CHANGE`, `TEAM_CHANGE` etc
This commit is contained in:
Sojan Jose
2024-05-06 11:48:17 -07:00
committed by GitHub
parent 2af0d58deb
commit f6d7f3b665
9 changed files with 59 additions and 27 deletions

View File

@@ -110,7 +110,7 @@ class Conversation < ApplicationRecord
after_update_commit :execute_after_update_commit_callbacks
after_create_commit :notify_conversation_creation
after_commit :set_display_id, unless: :display_id?
after_create_commit :load_attributes_created_by_db_triggers
delegate :auto_resolve_duration, to: :account
@@ -257,8 +257,13 @@ class Conversation < ApplicationRecord
assignee_id.present? && Current.user&.id == assignee_id
end
def set_display_id
reload
def load_attributes_created_by_db_triggers
# Display id is set via a trigger in the database
# So we need to specifically fetch it after the record is created
# We can't use reload because it will clear the previous changes, which we need for the dispatcher
obj_from_db = self.class.find(id)
self[:display_id] = obj_from_db[:display_id]
self[:uuid] = obj_from_db[:uuid]
end
def notify_status_change