getAuthenticatedSession method

  1. @override
Future<Either<Failure, AuthenticationData?>> getAuthenticatedSession()
override

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", error: e, stackTrace: s);
      return left(
        NoParsableUserFailure(
          partialData: AuthenticationDataModel(
            id: id,
            token: token,
          ),
        ),
      );
    }
    logger.e(e, error: e, stackTrace: s);
    return left(
      UnknownFailure.fromException(e),
    );
  }
}