Home Reference Source

js/models/Request/Comments.js

import Request, { HTTPMethod } from '~/models/Request/Request';
import Comment, { COMMENT_COUNT } from '~/models/Comment';

/**
 * Obtains paginated comments
 */
export default class CommentsRequest extends Request {
    /**
     * Returns the new comment object
     * @param {Object} data
     * @return {Object} in format `comments: Comment[], areMore: bool`
     */
    format(data) {
        return {
            comments: data.comments.map(Comment.fromJSON),
            areMore: data.are_more
        }
    }

    /**
     * Creates a new comment
     * @param {string} type - `post` or `answer`
     * @param {number|string} id - Id of post or answer
     * @param {number} page - Comment page number (0-indexed)
     * @param {?number} parentId - The parent ID if loading a subcomment. `-1` if none
     * @param {?number} [intialOffset=COMMENT_COUNT] - How many are loaded before paging started counting
     */
    constructor({ type, id, page, parentId = -1, intialOffset = COMMENT_COUNT }) {
        super({
            path: `/${type}/${id}/comments/parent/${parentId}/page/${page}/offset/${intialOffset}`,
            method: HTTPMethod.GET
        });
    }
}