runBillingCheck method
Implementation
Future<SetupStepResult> runBillingCheck({bool interactive = true}) async {
final BillingCheckResult check = await billing.checkBlazeStatus();
switch (check.status) {
case BlazeStatus.enabled:
info('Blaze plan confirmed for ${config.firebaseProjectId}.');
return SetupStepResult.success(
WizardSubStep.billingCheck,
message: check.billingAccountName != null
? 'Billing account: ${check.billingAccountName}'
: 'Blaze',
);
case BlazeStatus.notEnabled:
if (!interactive) {
return SetupStepResult.skipped(
WizardSubStep.billingCheck,
message: 'Project is on Spark — Cloud Run requires Blaze',
fixHint: _fixHintFor(WizardSubStep.billingCheck),
);
}
final BillingCheckResult upgraded = await billing.guideUpgrade();
if (upgraded.status == BlazeStatus.enabled) {
return SetupStepResult.success(
WizardSubStep.billingCheck,
message: 'Upgraded to Blaze',
);
}
return SetupStepResult.skipped(
WizardSubStep.billingCheck,
message:
upgraded.message ??
'Project remained on Spark; Blaze-only steps will be skipped.',
fixHint: _fixHintFor(WizardSubStep.billingCheck),
);
case BlazeStatus.unknown:
return SetupStepResult.skipped(
WizardSubStep.billingCheck,
message: check.message ?? 'Could not determine billing status',
fixHint: _fixHintFor(WizardSubStep.billingCheck),
);
}
}