fetchAuthSession method Null safety

Future<User> fetchAuthSession()

Cognito 인증세션을 fetch합니다.

Implementation

Future<User> fetchAuthSession() async {
  LogManager().addLog("fetchAuthSession", screen: runtimeType.toString());
  CognitoAuthSession session = await Amplify.Auth.fetchAuthSession(
    options: CognitoSessionOptions(getAWSCredentials: true),
  ) as CognitoAuthSession;

  LogManager().initCloudWatch(
    awsAccessKey: userState.currentUser?.awsAccessKey,
    awsSecretKey: userState.currentUser?.awsSecretKey,
    awsSessionToken: userState.currentUser?.awsSessionToken,
  );

  LogManager().addLog("awsAccessKey: ${session.credentials?.awsAccessKey}", screen: runtimeType.toString());
  LogManager().addLog("awsSecretKey: ${session.credentials?.awsSecretKey}", screen: runtimeType.toString());
  LogManager().addLog("sessionToken: ${session.credentials?.sessionToken}", screen: runtimeType.toString());

  /// CloudWatch에 로그를 남기기 위해서는 aws키가 필요합니다. aws키는 로그인이 되어있지 않은 상태에서도 받아올 수 있습니다.
  /// id, username, name은 [getCurrentUser]에서 받아올 수 있으므로, getCurrentUser 이전에 출력된 로그도 cloudwatch에 남기기 위해 먼저 aws 키만 할당해놓습니다.
  /// 이 상태에서의 cloudwatch에서 남기는 로그들이 저장되는 로그 그룹명은 null/null/null ... 과 같은 형태로 표시되게 됩니다.
  /// 개선이 필요하긴 합니다.
  userState.currentUser = User(
    id: "null",
    username: "null",
    name: "null",
    type: "owner",
    awsAccessKey: session.credentials?.awsAccessKey,
    awsSecretKey: session.credentials?.awsSecretKey,
    awsSessionToken: session.credentials?.sessionToken,
  );

  return userState.currentUser!;
}