Link Search Menu Expand Document

Comment React

/api/v2/feed/comment/react

Post

posts

profiles

groups

notifications

jwt


Purpose

To allow a user to react to an existing comment on a post.

Body Content [input]

{
    uid: string,
    postID: string,
    commentID: string,
    react: bool
}

Returns if valid [output]

{
    message: string,
    error: 0
}

What the API does

  • Finds the profile corresponding to the uid passed and fetches a list of all values inside of the following and blocked fields.
  • Finds the record from the posts collection having a postID corresponding to the one passed [404].
  • Ensures that the record found does not have a value for its visibility field set to none [403].
  • If the record does not have a visibility of none, followers or public, fetch the members field of the AccessGroup corresponding to the value of the visibility field and ensures that uid is among the values of that members field [403].
  • If the record has a value for its groupID field, find the group corresponding to that groupID and check if uid is a value among that group’s members field with a status of accepted [403].
  • Ensures that the record’s uid field does not equal to a value among those of the fetched blocked field above [403].
  • Ensures that the profile that has a uid corresponding to that of the record does not contain a value corresponding to the uid passed in its blocked field [403].
  • Else, if the record does not have a value for its groupID field, and has a value of followers for its visibility field, check if uid is among the values of the following field or if it is equal to the uid of the post itself [403].
  • Checks that there is a comment corresponding to the value of the commentID field passed inside of that post’s comments field [404].
  • Loops through each of the comment of the comments field of that post if the value of the reply_to field of the found comment is not empty and:
    • Create a new data structure illegalComments for the commentIDs of comments that the user is not allowed to reply to.
    • Append the value of the commentID field of a comment if:
      • That comment if has a visibility set to none.
      • uid is not among the values of the members field obtained by fetching the members field of the AccessGroup corresponding to the value of the visibility field if the comment does not have a visibility of none, followers or public and is not equal to the uid of that comment either.
      • The value of its uid field is among those of the fetched blocked field above.
      • The blocked field of the profile that has a uid corresponding to that of the comment has the uid passed among its values.
      • uid is not among the values of the followers field of the profile corresponding to the value of the uid field of that comment if the comment has a visibility of followers.
  • Checks that the value of the reply_to field of the found comment is not among those of the illegalComments data structure [403].
  • If react has a value of true, ensure that uid is not already a value among the reacts field of the found comment, else, if react has a value of false, ensure that uid is a value among the reacts field of the found comment [403].
  • Updates and saves the object inside of that post’s comments field corresponding to the commentID passed, and appends uid to the values of the reacts field is react is set to true, else removes uid from the values of that field.
  • Generates a new notificationID and a timestamp corresponding to the current date and time, and creates a new object in the notifications collection with the following data if react is set to true:
    {
      uid: comments[commentID].uid,
      notificationID: notificationID,
      content: `uid.${uid} reacted to your comment`,
      profileID: uid,
      type: "comment_react",
      created_on: timestamp,
      read: false,
      redirect: `/posts/${postID}`
    }