saveProfile method

Future<bool> saveProfile()

Implementation

Future<bool> saveProfile() async {
  if (!form.validate()) {
    throw ValueError(form.firstErrorMessage);
  }

  if (referralCodeField.value.isNotEmpty) {
    _analytics.logEvent('click_signup_with_referral_code', {
      'code': referralCodeField.value,
    });
  }

  final response = await profileRepo
      .updateProfile(
        firstName: firstName,
        lastName: lastName,
        email: emailField.value,
        referralCode: referralCodeField.value,
      )
      .toData();

  final applyReferralCodeResponse = response.applyReferralCodeResponse;

  updateCache(
    email: emailField.value,
    referralCode: (applyReferralCodeResponse?.isApplied ?? false)
        ? referralCodeField.value
        : null,
  );
  if (applyReferralCodeResponse?.isApplied == true &&
      applyReferralCodeResponse?.rewardDetails != null) {
    final rewardDetails = applyReferralCodeResponse!.rewardDetails;
    getObject<IHubbleSequentialTaskRunner>().addNewSequentialTask(
      SequentialTask(
        isBackground: false,
        task: () async {
          appAnalytics().fireEvent(ProfileDirtyEvent());
          return ReferralSuccessDialog.reveal(
              referralPerc: rewardDetails.value,
              referralAmount: rewardDetails.maxAmount);
        },
        name: 'referral-success-dialog',
        whenInScreen: Screens.homeScreen.name,
      ),
    );
  }
  onAfterProfileSaved(
      isNewUser: ftu,
      referralCodeApplied: applyReferralCodeResponse?.isApplied == true);

  return true;
}