resolveSupporterRequest method Null safety

Future<Patient?> resolveSupporterRequest(
  1. String token
)

Resolves a supporter request. Returns false if resolving failed. Returns true if resolving worked. In case of success, the currently logged in supporter will be linked to the patient who originally issued the token. This method can only be called when logged in as a supporter.

Implementation

Future<Patient?> resolveSupporterRequest(String token) async {
  final gqlQueryString = '''
      mutation ResolveSupporterRequest {
        resolveSupporterRequest(
              token: "$token"
        ) {
          ${PatientGqlEntity.gqlQueryFragment}
        }
      }
    ''';

  try {
    final queryResult = await graphQLClient
        .mutate<void>(MutationOptions(document: gql(gqlQueryString)));

    if (queryResult.hasException) {
      logger?.e(queryResult.exception.toString());
      return null;
    }

    final data =
        queryResult.data!['resolveSupporterRequest'] as Map<String, dynamic>;

    final updatedPatient = PatientGqlEntity.fromJson(data);

    if (updatedPatient != null) {
      return updatedPatient.toPatient();
    } else {
      return null;
    }
  } catch (e, stackTrace) {
    logger?.e('Could not resolve supporter request token', e, stackTrace);
    return null;
  }
}