Comments
Here's an overview of how you can start integrating comments into your applications
Comments are a way to create comments for a particular piece of content without needing to join a channel or manage channel memberships.
Amity Social SDK provides support for common text in comments.
All comment methods are contained in a CommentRepository
class. Before calling any comment methods, you must ensure to import it.
Comment Description
Name | Data Type | Description | Attributes |
|
| ID of the comment | |
|
| ID of the user who posted the comment | |
|
| ID of a parent comment | |
|
| ID of a root comment | |
|
| ID of a reference | |
|
| Type of a reference |
|
|
| Type of the comment | Example: |
|
| Body of the comment | |
|
| Additional properties to support custom fields | |
|
| Number of children comments | |
|
| Number of users who has read the comment | |
|
| Flag for checking internally if this comment is reported or not | |
|
| Mapping of reaction with reactionCounter | Example: |
|
| Number of all reactions for the comment | |
|
| List of my reactions to the comment | Example: |
| Boolean | Flag that determines if comment is deleted | Default: false |
|
| Date/time when comment was edited | |
|
| Date/time when comment was created | |
|
| Date/time when comment was updated or deleted | |
|
| ID of the children comment | |
|
| ||
|
| ||
|
| User IDs of the mentioned users | Example: [ { type: ‘user’, userIds: [‘user-id-1’, ‘user-id-2’] } ] |
Comment Reference Type
A comment's referenceType
can be:
post
content
A post
type comment is a comment that is intended for a regular post. A content
type comment on the other hand is intended for a content type post. A content type comment will automatically create a content post if the referenceId
does not exist yet.
Sending Comments
All comment sending methods are designed to be robust enough to work under any network conditions. When you send any comment, that comment will be automatically placed in a queue in case of unstable network conditions. Once the SDK reconnects to the server, it will automatically resend all queued comments.
Additionally, sent comments are always returned in comment queries, even before they have been delivered to the server. It is done to provide the user with a fluid commenting behavior: when a user sends a comment, that comment would appear in the comment list right away, instead of waiting until it has been confirmed by the server.
Content ID
Unlike messages, comments are directly tied to a specific referenceId
that is managed by the client. The referenceId
has to be unique but can be any string.
The 3 main actions that take place in comments are: Create, Update and Delete. When a comment is created, the method returns a liveObject
. When a comment is updated or deleted, the method returns a promise
of successful update or deletion.
Create Comments
In creating a standard text comment, you need to specify the following parameters:
referenceType
- values can bepost
orcontent
referenceId
- ID of the post/content that you want to add the commenttext
- comment body
Refer to Comment reference type for a more detailed explanation of the referenceType
parameter.
A comment should not exceed 20,000 characters in length.
For a successful creation of the comment, the reply will be the comment model. Otherwise, it will return an error.
Get Comment
You can use the commentForId()
method in order to get a single comment. You need to pass the commentId
of the requested comment as the parameter.
The method returns a promise
to update a comment comment model. It will throw an error if the passed commentId
is not valid.
Comment Query
To query for a list of comments in a post:
This method will return a LiveCollection
of comments in the specified referenceId.
Refer to Comment reference type for a more detailed explanation of the referenceType
parameter.
Threaded Comments
A comment can be a root for a thread. To query the children of a comment thread, you can add the parentId
parameter in a comment query, along with the filterByParentId
flag.
When creating a comment, we can also pass the parentId
to make it appear under the parent.
Refer to Comment reference type for a more detailed explanation of the referenceType
parameter.
Flag & Unflag Comments
Before you can flag or unflag a comment, the related comment must be fetched from the server first using either of these methods:
Flag
You can report or flag a comment as inappropriate using the flag
method. The required parameter is the comment ID, which is a string.
To flag a comment, call the following method:
Unflag
You can unflag or revoke the report for a comment using the unflag
method. The required parameter is the comment ID, which is a string.
To unflag a comment, call the following method:
Check for isFlaggedByMe
The isFlaggedByMe
method checks if a comment has been flagged by the current user. The required parameter is the comment ID, which is a string.
Edit Comments
You can only perform edit and delete operations on your own comments. Once the operation is complete, the comment's editedAtDate
will be set to the current time. This allows you to provide UI to the user to inform the user of specific messages that have been edited, if needed. An optional completion block can be provided to notify you of operation success.
Add Comment to a Post
You can add a comment to a post with the following:
To know which post a comment belongs to, you can use the referenceType
parameter.
If a comment is a reply to another comment, the parentId
is undefined
.
Refer to Comment reference type for a more detailed explanation of the referenceType
parameter.
Delete Comments
There are two kinds of comments deletion:
Soft delete
The comment is only marked as deleted. This means that the comment still exists in the database but the
isDeleted
flag is set totrue
.Hard delete
The comment data, along with its reactions and replies, are removed from the database. Thus, all data related to the comment will be lost and irretrievable. Hard deleting children comments will not delete the parent comment.
Hard delete is applicable for posts and comments only. You cannot hard delete Users and Communities.
Hard deleting posts, as well as comments, is only supported via SDK. UIKit and Console support may be considered in the future.
Only the owner of the comment or an admin can update and/or delete a comment.
CommentRepository
provides a convenient method to delete comments. In deleting a comment, you need to pass the commentId
and a boolean parameter. Set the boolean parameter to true
for hard delete and false
for soft delete.
If you will not specify the boolean parameter, it will be set to false
by default which is just equivalent to a soft delete.
The deleteComment
method returns a promise acknowledging the server's successful response. Use await
to receive the result. It will return true
if the deletion is successful. Otherwise, it will return false
.
Last updated