Home Reference Source

js/ui/views/post.js

import PostVoteViewController from '~/controllers/PostVoteViewController';
import CommentListViewController from '~/controllers/CommentListViewController';
import DeleteItemViewController from '~/controllers/DeleteItemViewController';
import addSchema from '~/helpers/addSchema';
import Post from '~/models/Post';

export const POST_ACTION_CONTAINER = 'post-action-list';

let post;
if (post = Post.current) {
    // Add the schema
    post.getSchema()
        .then(addSchema);

    PostVoteViewController.forClass(
        'vote-button',
        (elem) => [elem, {
            voteType: elem.dataset.type,
            postId: post.id
        }],
        POST_ACTION_CONTAINER
    )

    const postComments = new CommentListViewController(
        document.querySelector('#post > .comment-list'),
        post
    );
    postComments.setupSublists();

    const deleteController = DeleteItemViewController.forClass(
        'delete-button',
        (elem) => [{
            trigger: elem,
            item: post
        }],
        POST_ACTION_CONTAINER
    )[0];

    if (deleteController)
        deleteController.delegate.didSetStateTo = async (controller, state) => {
            if (state.isDeleted) {
                window.location.reload(true);
            }
        };
}