deleteMoodEntry method Null safety

Future<bool> deleteMoodEntry(
  1. {required MoodEntry entry}
)

Deletes entry from the backend. Assumes that entry already exists. Will return true if entry was deleted, false otherwise.

Implementation

Future<bool> deleteMoodEntry({required MoodEntry entry}) async {
  final gqlQueryString = '''
      mutation DeleteMoodEntry {
        deleteMoodEntry(
          input: {
            where: { id: "${entry.id}" }
          }
        ) {
          moodEntry {
            ${MoodEntryGqlEntity.gqlQueryFragment}
          }
        }
      }
    ''';

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

    if (queryResult.hasException) {
      logger?.e(queryResult.exception.toString());
      return false;
    }
  } catch (e, stackTrace) {
    logger?.e('Could not update mood entry', e, stackTrace);
    return false;
  }

  if (!_lastUpdatedMoodStreamController.isClosed) {
    _lastUpdatedMoodStreamController
        .add([EntityDeleted(entry)].toBuiltList());
  }

  return true;
}