Implementation
@protected
Future<bool> setUserInterests(
{required final User user,
required final BuiltSet<LocalizedType<Interest>> interests}) async {
if (user.firebaseUid == null) {
return false;
}
final userId = await fetchUserId(user.firebaseUid!);
if (userId == null) {
return false;
}
final gqlQueryString = '''
mutation SetUserInterests {
updateUser(
input: {
where: { id: "$userId" }
data: {
interests: [${interests.map<String>((e) => e.defaultValue.id.toString()).toList().join(',')}]
}
}
) {
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;
}