Sha256: 01f9a42882f8e3de03f5a897dac6d375ad340467af6e60de92bc59d01a898ba3

Contents?: true

Size: 1.55 KB

Versions: 9

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

module Extension
  module Forms
    module Questions
      class AskRegistration
        include ShopifyCli::MethodObject

        property! :ctx
        property! :type
        property! :prompt,
          converts: :to_proc,
          default: -> { CLI::UI::Prompt.method(:ask) }

        def call(project_details)
          project_details.tap(&method(:prompt_for_registration))
        end

        private

        def prompt_for_registration(project_details)
          apps_and_registrations = load_registrations(type)
          app, registration = choose_interactively(apps_and_registrations)
          project_details.app = app
          project_details.registration = registration
        end

        def choose_interactively(apps_and_registrations)
          prompt.call(ctx.message("connect.ask_registration")) do |handler|
            apps_and_registrations.each do |(app, extension)|
              handler.option("#{app.title} by #{app.business_name}: #{extension.title}") { [app, extension] }
            end
          end
        end

        def load_registrations(type)
          ctx.puts(@ctx.message("connect.loading_extensions"))
          registrations = Tasks::GetExtensions.call(context: ctx, type: type)

          registrations.empty? ? abort_no_registrations : registrations
        end

        def abort_no_registrations
          ctx.puts(@ctx.message("connect.no_extensions", type))
          ctx.puts(@ctx.message("connect.learn_about_extensions"))
          raise ShopifyCli::AbortSilent
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
shopify-cli-2.4.0 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.3.0 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.2.2 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.2.1 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.2.0 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.1.0 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.0.2 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.0.1 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.0.0 lib/project_types/extension/forms/questions/ask_registration.rb