getCurrentAccount static method

Future<AccountInfo?> getCurrentAccount({
  1. bool forceCredentialsUse = false,
})

get current account information.

if no user is logged in, this method returns null, else it returns an AccountInfo object.

Implementation

static Future<AccountInfo?> getCurrentAccount({
  bool forceCredentialsUse = false,
}) async {
  String? accessToken;

  if (!forceCredentialsUse) {
    accessToken = await Dropbox.getAccessToken();
  }

  if (accessToken == null) {
    final credentials = await Dropbox.getCredentials();
    if (credentials != null) {
      try {
        final jsonCredentials = jsonDecode(credentials);
        accessToken = jsonCredentials['access_token'];
      } catch (_) {
        return null;
      }
    }
  }

  if (accessToken == null) {
    return null;
  }

  final url =
      Uri.parse('https://api.dropboxapi.com/2/users/get_current_account');
  final response =
      await http.post(url, headers: {'Authorization': 'Bearer $accessToken'});
  final jsonBody = jsonDecode(response.body);
  if (jsonBody['account_id'] == null) {
    return null;
  } else {
    try {
      return AccountInfo.fromMap(jsonBody);
    } catch (_) {
      return null;
    }
  }
}