Sha256: 639256fede7b85d4bef642e8bb3d36459d270333fa7f8d0567c8dd4c1328b3ae

Contents?: true

Size: 1.39 KB

Versions: 10

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true

module Osso
  module GraphQL
    module Mutations
      class SetRedirectUris < BaseMutation
        null false

        argument :id, ID, required: true
        argument :redirect_uris, [Types::RedirectUrisInput], required: true

        field :oauth_client, Types::OauthClient, null: true
        field :errors, [String], null: false

        def resolve(id:, redirect_uris:)
          oauth_client = Osso::Models::OauthClient.find(id)

          update_existing(oauth_client, redirect_uris)
          create_new(oauth_client, redirect_uris)

          response_data(oauth_client: oauth_client.reload)
        rescue StandardError => e
          response_error(errors: e)
        end

        def ready?(*)
          admin_ready?
        end

        def update_existing(oauth_client, redirect_uris)
          oauth_client.redirect_uris.each do |redirect|
            updating_index = redirect_uris.index { |incoming| incoming[:id] == redirect.id }

            if updating_index
              updating = redirect_uris.delete_at(updating_index)
              redirect.update(updating.to_h)
              next
            end

            redirect.destroy
          end
        end

        def create_new(oauth_client, redirect_uris)
          redirect_uris.map do |uri|
            oauth_client.redirect_uris.create(uri.to_h.without(:id))
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
osso-0.0.3.26 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.25 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.24 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.23 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.22 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.21 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.20 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.19 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.18 lib/osso/graphql/mutations/set_redirect_uris.rb
osso-0.0.3.17 lib/osso/graphql/mutations/set_redirect_uris.rb