saveProfile method
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;
}