resolvePractitionerPatientRequest method Null safety

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

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

Implementation

Future<Patient?> resolvePractitionerPatientRequest(final String token) async {
  final gqlQueryString = '''
      mutation ResolvePractitionerPatientRequest {
        resolvePractitionerPatientRequest(
              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!['resolvePractitionerPatientRequest']
        as Map<String, dynamic>;

    final updatedPatient = PatientGqlEntity.fromJson(data);

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