getAuthenticatedSession method
Implementation
@override
Future<Either<Failure, AuthenticationData?>> getAuthenticatedSession() async {
String? token;
String? id;
User? user;
AuthDeviceInfo? deviceInfo;
try {
token = sharedPreferences.getString(AuthSharedPrefKeys.TOKEN_KEY);
final refreshToken = sharedPreferences.getString(AuthSharedPrefKeys.REFRESH_KEY);
final userData = sharedPreferences.getString(AuthSharedPrefKeys.USER_KEY);
final deviceInfoData = sharedPreferences.getString(AuthSharedPrefKeys.DEVICE_INFO);
id = sharedPreferences.getString(AuthSharedPrefKeys.USER_ID_KEY);
user = userData != null
? await (config.customUserMapper?.call(jsonDecode(userData)) ?? _defaultUserParser(jsonDecode(userData)))
: null;
if (token == null || id == null) {
return right<Failure, AuthenticationData?>(null);
}
deviceInfo = deviceInfoData != null ? AuthDeviceInfoModel.fromJson(deviceInfoData) : null;
return right<Failure, AuthenticationData?>(
AuthenticationDataModel(
id: id,
token: token,
refreshToken: refreshToken,
user: user,
deviceInfo: deviceInfo,
),
);
} catch (e, s) {
if (id != null && token != null) {
logger.e("AuthInvalidSession", e, s);
return left(
NoParsableUserFailure(
partialData: AuthenticationDataModel(
id: id,
token: token,
),
),
);
}
logger.e(e, e, s);
return left(
UnknownFailure.fromException(e),
);
}
}