accessCodeCheckIfValid method
Future<Either<RepositoryFailure, (AccessCodeCheckReturn, String)> >
accessCodeCheckIfValid(
- String code
override
Implementation
@override
Future<Either<RepositoryFailure, (AccessCodeCheckReturn validity, String welcomeMessage)>>
accessCodeCheckIfValid(
String code,
) async {
logd('accessCodeCheckIfValid: $code');
try {
// Submit the code
var result = await retryIt(() async => await authCallable.call(
{
'action': 'accessCodeCheck',
'accessCode': code,
'timezone': (await FlutterTimezone.getLocalTimezone()).identifier,
},
));
// HttpsCallableResult.data returns Map<Object?, Object?>, not Map<String, dynamic>
final data = Map<String, dynamic>.from(result.data as Map);
// Check if the code is valid
if (data['result'] != 'valid') {
logd('checkAccessCode: invalid code');
return right((AccessCodeCheckReturn.invalidCode, ''));
}
// Save the access code
logd('checkAccessCode: valid code');
_accessCodeCached = code;
return right((AccessCodeCheckReturn.valid, data['welcomeMessage']));
} catch (e) {
loge(StackTrace.current, e.toString());
return const Left(RepositoryFailure.unexpected);
}
}