models/communities/PostActivityTarget.js

import CommunitiesIds from './CommunitiesIds.js';
import CommunitiesEntityType from './CommunitiesEntityType.js';
import UserId from '../UserId.js';

export default class PostActivityTarget {
    /**
     * Creates an PostActivityTarget
     *
     * @constructor PostActivityTarget
     * @param {CommunitiesIds} ids - Entity IDs.
     */
    constructor(ids) {
        this.ids = ids;
    }

    /**
     * Post activity in topic.
     *
     * @memberof PostActivityTarget
     * @param {string} id - Topic ID.
     * @return {PostActivityTarget} - New instance.
     */
    static topic(id) {
        return new PostActivityTarget(CommunitiesIds.topic(id));
    }

    /**
     * Post activity in group.
     *
     * @memberof PostActivityTarget
     * @param {string} id - Group ID.
     * @return {PostActivityTarget} - New instance.
     */
    static group(id) {
        return new PostActivityTarget(CommunitiesIds.group(id));
    }

    /**
     * Post comment to the activity.
     *
     * @memberof PostActivityTarget
     * @param {string} activityId - Activity ID.
     * @return {PostActivityTarget} - New instance.
     */
    static comment(activityId) {
        return new PostActivityTarget(CommunitiesIds.activity(activityId));
    }

    /**
     * Post to the feed of current user.
     *
     * @memberof PostActivityTarget
     * @return {PostActivityTarget} - New instance.
     */
    static timeline() {
        const user = CommunitiesIds.user(UserId.currentUser());
        return new PostActivityTarget(user);
    }

    /** @ignore */
    getType() {
        return this.ids.type || CommunitiesEntityType.Unknown;
    }

    /** @ignore */
    getTargetId() {
        return this.ids.ids.length
            ? this.ids.ids[0]
            : '';
    }
}