macros_update.rb 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. module Gql::Subscriptions
  3. class MacrosUpdate < BaseSubscription
  4. description 'Updated macros'
  5. field :macro_id, GraphQL::Types::ID, description: 'Macro ID that was updated'
  6. field :group_ids, [GraphQL::Types::ID], description: 'The group IDs from the updated macro'
  7. field :remove_macro_id, GraphQL::Types::ID, description: 'The macro ID that was removed'
  8. def authorized?
  9. true
  10. end
  11. class << self
  12. # Helper methods for triggering with custom payload.
  13. def trigger_after_create_or_update(macro)
  14. trigger({
  15. macro_id: Gql::ZammadSchema.id_from_object(macro),
  16. group_ids: macro.group_ids.map { |id| Gql::ZammadSchema.id_from_internal_id(Group, id) },
  17. event: :create_or_update
  18. })
  19. end
  20. def trigger_after_destroy(macro)
  21. trigger({ macro_id: Gql::ZammadSchema.id_from_object(macro), event: :destroy })
  22. end
  23. end
  24. def update
  25. if object[:event] == :destroy
  26. return { remove_macro_id: object[:macro_id] }
  27. end
  28. { macro_id: object[:macro_id], group_ids: object[:group_ids] }
  29. end
  30. end
  31. end