promptForReferralCode method
Implementation
Future<bool> promptForReferralCode(String? referralCode) async {
try {
final refCode = Requests.box.read('refCode');
print(refCode);
if (refCode != null && refCode.isNotEmpty) {
bool isReferralValid = await checkReferralCode(refCode);
if (isReferralValid) {
bool updateSuccessfull = await setRefferalCode(refCode);
Preferences.clearRefCode();
return updateSuccessfull;
}
}
if (referralCode == null) {
final Completer<bool> completer = Completer<bool>();
WidgetsBinding.instance.addPostFrameCallback((_) async {
final context = navigatorKey.currentContext ??
navigatorKey.currentState?.overlay?.context;
if (context != null) {
ReferralCodePopup.show(
onSubmit: (referralCode) async {
bool isReferralValid = await checkReferralCode(referralCode);
if (!isReferralValid) {
closeDialog(result: false);
CustomFlashWidget.showFlashMessage(
type: FlashType.error,
title: "Error",
message: "Enter a valid referral code",
);
completer.complete(false);
} else {
bool updateSuccessfull =
await setRefferalCode(referralCode);
log(updateSuccessfull.toString());
closeDialog(result: updateSuccessfull);
completer.complete(updateSuccessfull);
}
},
);
} else {
print("Error: No valid context to show dialog.");
completer.complete(false);
}
});
return completer.future;
}
return true;
} catch (e) {
print(e.toString());
return false;
}
}