BE Subscription for Featured Comments

This commit is contained in:
Belen Curcio
2017-08-01 18:27:02 -03:00
parent 779260c245
commit 4e5f1528f9
7 changed files with 50 additions and 2 deletions
+5 -1
View File
@@ -5,7 +5,11 @@ const {ADD_COMMENT_TAG, REMOVE_COMMENT_TAG} = require('../../perms/constants');
/**
* Modifies the targeted model with the specified operation to add/remove a tag.
*/
const modify = async ({user, loaders: {Tags}}, operation, {name, id, item_type, asset_id}) => {
const modify = async ({user, loaders: {Tags}, pubsub}, operation, {name, id, item_type, asset_id}) => {
if (operation.name === 'add') {
pubsub.publish('commentFeatured', {});
}
// Get the global list of tags from the dataloader.
const tags = await Tags.getAll.load({id, item_type, asset_id});
+3
View File
@@ -14,6 +14,9 @@ const Subscription = {
commentFlagged(comment) {
return comment;
},
commentFeatured(comment) {
return comment;
},
userBanned(user) {
return user;
},
+11
View File
@@ -24,6 +24,7 @@ const {
SUBSCRIBE_ALL_USER_SUSPENDED,
SUBSCRIBE_ALL_USER_BANNED,
SUBSCRIBE_ALL_USERNAME_REJECTED,
SUBSCRIBE_COMMENT_FEATURED
} = require('../perms/constants');
/**
@@ -86,6 +87,16 @@ const setupFunctions = plugins.get('server', 'setupFunctions').reduce((acc, {plu
}
},
}),
commentFeatured: (options, args) => ({
commentFeatured: {
filter: (comment, context) => {
if (!args.asset_id && (!context.user || !context.user.can(SUBSCRIBE_COMMENT_FEATURED))) {
return false;
}
return !args.asset_id || comment.asset_id === args.asset_id;
}
},
}),
userSuspended: (options, args) => ({
userSuspended: {
filter: (user, context) => {
+4
View File
@@ -1046,6 +1046,10 @@ type Subscription {
# Requires the `ADMIN` or `MODERATOR` role.
commentFlagged(asset_id: ID): Comment
# Get an update whenever a comment is featured.
# Requires the `ADMIN` or `MODERATOR` role.
commentFeatured(asset_id: ID): Comment
# Get an update whenever a comment has been accepted.
# Requires the `ADMIN` or `MODERATOR` role.
commentAccepted(asset_id: ID): Comment