# frozen_string_literal: true module Mutations module AwardEmojis class Base < BaseMutation include ::Mutations::FindsByGid NOT_EMOJI_AWARDABLE = 'You cannot award emoji to this resource.' authorize :award_emoji argument :awardable_id, ::Types::GlobalIDType[::Awardable], required: true, description: 'Global ID of the awardable resource.' argument :name, GraphQL::Types::String, required: true, description: copy_field_description(Types::AwardEmojis::AwardEmojiType, :name) field :award_emoji, Types::AwardEmojis::AwardEmojiType, null: true, description: 'Award emoji after mutation.' private # TODO: remove this method when the compatibility layer is removed # See: https://gitlab.com/gitlab-org/gitlab/-/issues/257883 def find_object(id:) super(id: ::Types::GlobalIDType[::Awardable].coerce_isolated_input(id)) end def authorize!(object) super raise_resource_not_available_error!(NOT_EMOJI_AWARDABLE) unless object.emoji_awardable? end end end end