From a1bed3622918d218426245ee2a1556e0786a471d Mon Sep 17 00:00:00 2001 From: Josh Holtz Date: Sun, 23 Jan 2022 22:58:42 -0600 Subject: [PATCH] Start of migration deliver to new app store review process --- deliver/lib/deliver/runner.rb | 21 +++++++++++++++++-- deliver/lib/deliver/submit_for_review.rb | 26 +++++++++++++++++++++--- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/deliver/lib/deliver/runner.rb b/deliver/lib/deliver/runner.rb index 533e5ede29b..2dfdd4944eb 100644 --- a/deliver/lib/deliver/runner.rb +++ b/deliver/lib/deliver/runner.rb @@ -197,8 +197,25 @@ def upload_binary def reject_version_if_possible app = Deliver.cache[:app] platform = Spaceship::ConnectAPI::Platform.map(options[:platform]) - if app.reject_version_if_possible!(platform: platform) - UI.success("Successfully rejected previous version!") + + submission = app.get_in_progress_review_submission(platform: platform) + if submission + submission.cancel_submission() + UI.message("Review submission cancellation has been requested") + + # An app version won't get removed from review instantly + # Polling until app version has a state of DEVELOPER_REJECT + loop do + version = app.get_edit_app_store_version(platform: platform) + if version.app_store_state == Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::DEVELOPER_REJECTED + break + end + + UI.message("Waiting for cancellation to take effect...") + sleep(10) + end + + UI.success("Successfully cancelled previous submission!") end end diff --git a/deliver/lib/deliver/submit_for_review.rb b/deliver/lib/deliver/submit_for_review.rb index 8e7217c4f84..b8ef79fa15f 100644 --- a/deliver/lib/deliver/submit_for_review.rb +++ b/deliver/lib/deliver/submit_for_review.rb @@ -23,12 +23,32 @@ def submit!(options) update_idfa(options, app, version) update_submission_information(options, app) - version.create_app_store_version_submission - + create_review_submission(options, app, version, platform) UI.success("Successfully submitted the app for review!") end - private def select_build(options, app, version, platform) + private + + def create_review_submission(options, app, version, platform) + if app.get_in_progress_review_submission(platform: platform) + UI.user_error!("Cannot submit for review - A review submission is already in progress") + end + + # TODO: I don't like this logic here + # Maybe error out if there are aleady items in this review? + submission = app.get_ready_review_submission(platform: platform, includes: "items") + + if submission.nil? + submission = app.create_review_submission(platform: platform) + elsif !submission.items.empty? + UI.user_error!("Cannot submit for review - A review submission already exists with items not managed by fastlane. Please cancel or remove items from submission for the App Store Connect website") + end + + submission.add_app_store_version_to_review_items(app_store_version_id: version.id) + submission.submit_for_review + end + + def select_build(options, app, version, platform) if options[:build_number] && options[:build_number] != "latest" UI.message("Selecting existing build-number: #{options[:build_number]}")