login function

Future login({
  1. required String appId,
  2. required String userId,
  3. String? userHash,
  4. String? userName,
  5. String? userEmail,
})

Implementation

Future login(
    {required String appId,
    required String userId,
    String? userHash,
    String? userName,
    String? userEmail}) {
  var uri = Uri.parse(loginUrl);

  return http
      .post(uri,
          headers: {'Content-Type': 'application/json'},
          body: jsonEncode({
            'appId': appId,
            'userId': userId,
            ...(userHash == null ? {} : {'userHash': userHash}),
            ...(userName == null ? {} : {'name': userName}),
            ...(userEmail == null ? {} : {'email': userEmail}),
          }))
      .then(
    (response) {
      if (response.statusCode >= 200 && response.statusCode < 300) {
        return jsonDecode(response.body);
      }

      var text = response.body;

      try {
        var body = jsonDecode(text);
        var errorMessage =
          body is Map &&
          body.containsKey('detail') &&
          body['detail'] is String
            ? body['detail']
            : jsonEncode(body);

        throw Exception("Login failed: $errorMessage");
      } catch (err) {}

      throw Exception("Login failed: HTTP(${response.statusCode}) $text");
    },
  );
}