Home Reference Source

js/controllers/AnswerVoteViewController.js

import VoteViewController from '~/controllers/VoteViewController';
import AnswerVote from '~/models/Request/AnswerVote';
import Analytics, { EventType } from '~/models/Analytics';

/**
 * Voting on answers
 */
export default class AnswerVoteViewController extends VoteViewController {

    /**
     * Creates an answer view controller
     * @param {HTMLElement} voteButton
     * @param {Object} opts
     * @property {string} opts.voteType
     * @property {number} opts.answerId
     */
    constructor(voteButton, { voteType, answerId }) {
        super(voteButton, voteType);
        this._answerId = answerId;
    }

    /** @override */
    getRequest(voteType, isAdding) {
        Analytics.shared?.report(EventType.answerVote, +this._answerId);
        return new AnswerVote({
            answerId: this._answerId,
            voteType: voteType,
            isAdding: isAdding
        });
    }
}