uploadMoodEntry method Null safety
- {required MoodEntry entry}
Uploads a lMoodEntry to the backend. Returns created MoodEntry
on success, null on failure.
Implementation
Future<MoodEntry?> uploadMoodEntry({required MoodEntry entry}) async {
final gqlQueryString = '''
mutation UploadMoodEntries {
createMoodEntry(input: { data: {mood: ${MoodType.toDatabaseFormat(moodType: entry.mood)}, dateTime: "${InstantPattern.extendedIso.format(entry.dateTime)}"}}) { 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());
throw queryResult.exception!;
}
final data = queryResult.data!['createMoodEntry'] as Map<String, dynamic>;
final moodGqlEntry = MoodEntryGqlEntity.fromJson(
data['moodEntry'] as Map<String, dynamic>);
if (moodGqlEntry == null) {
return null;
}
final moodEntry = moodGqlEntry.toMoodEntry();
if (!_lastUpdatedMoodStreamController.isClosed) {
_lastUpdatedMoodStreamController
.add([EntityCreated(moodEntry)].toBuiltList());
}
return moodEntry;
} catch (e, stackTrace) {
logger?.e('Could not upload mood data', e, stackTrace);
return null;
}
}