post<T extends ToJson> method Null safety

Future<AuthToken> post<T extends ToJson>(
  1. T payload
)

Posts the authentication request to the server

Implementation

Future<AuthToken> post<T extends ToJson>(T payload) async {
  const errMessage = 'Error while authenticating, please try again. '
      'If this persists please contact App Support.';
  try {
    final response = await authClient.post(endpoint, data: payload.toJson());
    return response.isSuccessful()
        ? AuthToken.fromJson(response.data)
        : AuthToken.failed(
            response.data.isNotEmpty ? response.data['message'] : errMessage);
  } on DioError catch (error) {
    return AuthToken.failed(error.response?.data?['message'] ?? errMessage);
  }
}