signupUser method
- SignupData signupData,
- bool rememberMe
Registers a new user using the provided signup information.
This function hashes the password, sends the registration request to the
server, and saves the user's credentials locally if rememberMe is true.
signupData: ASignupDataobject containing the username and password.rememberMe: A flag indicating if the user's credentials should be saved for future logins.
Returns null on successful registration, or an error message otherwise.
Implementation
Future<String?> signupUser(SignupData signupData, bool rememberMe) async {
LoadingDialog loadingDialog = LoadingDialog(buildContext: context);
loadingDialog.showLoadingDialog();
try {
// Hash the password before sending to API
EncryptionUtils encryptionUtils = EncryptionUtils();
String hashedPassword = encryptionUtils.hashUserPassword(
userName: signupData.name!,
passwordToHash: signupData.password!
);
// Call the register API
DataHandler dataHandler = DataHandler();
ApiReturn registrationReturn = await dataHandler
.getUserRepo()
.registerUser(
hashedPassword: hashedPassword,
userName: signupData.name!,
);
// If registration is successful
if (registrationReturn.success) {
await Provider.of<DataProvider>(context, listen: false)
.userHasLoggedIn(registrationReturn.data);
// Save user credentials if `rememberMe` is enabled
if (rememberMe) {
await SharedPrefUtils().set("lastLoggedInUserName", signupData.name!);
await SharedPrefUtils().set("lastLoggedInUserPassword", signupData.password!);
}
loadingDialog.closeLoadingDialog();
return null;
} else {
loadingDialog.closeLoadingDialog();
return '${registrationReturn.returnCode}\n${registrationReturn.explanation}';
}
} catch (e) {
loadingDialog.closeLoadingDialog();
return e.toString();
}
}