setUserFcmToken method Null safety
Updates the Firebase Cloud Messaging token for user. Returns true
on success and false on error.
Implementation
@protected
Future<bool> setUserFcmToken(
{required final User user, required final String token}) async {
// fail if this user is not linked to Firebase
if (user.firebaseUid == null) {
return false;
}
final userId = await fetchUserId(user.firebaseUid!);
if (userId == null) {
return false;
}
final gqlQueryString = '''
mutation UpdateFcmToken {
updateUser(
input: {
where: { id: "$userId" }
data: {
fcmToken: "$token"
fcmTokenDateTime: "${InstantPattern.extendedIso.format(Instant.now())}"
}
}
) {
user {
${UserGqlEntity.gqlQueryFragment}
}
}
}
''';
try {
final queryResult = await graphQLClient
.mutate<void>(MutationOptions(document: gql(gqlQueryString)));
if (queryResult.hasException) {
logger?.e(queryResult.exception.toString());
return false;
}
} catch (e, stackTrace) {
logger?.e(
'Could not set list of interests on user instance', e, stackTrace);
return false;
}
return true;
}