Link Search Menu Expand Document

Post React

/api/v2/feed/post/react

Post

posts

profiles

groups

notifications

jwt


Purpose

To allow a user to react on a post that he/she is allowed to react on.

Body Content [input]

{
    uid: string,
    postID: 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].
  • Ensures that that 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 current post record does not contain a value corresponding to the uid passed in its blocked 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].
  • 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].
  • If react has a value of true, ensure that uid is not already a value among the reacts field of that post, else, if react has a value of false, ensure that uid is a value among the reacts field of that post [403].
  • Appends and saves uid to the reacts field of that post if 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: post.uid,
      notificationID: notificationID,
      content: `uid.${uid} reacted to your post`,
      profileID: uid,
      type: "post_react",
      created_on: timestamp,
      read: false,
      redirect: `/posts/${postID}`
    }