// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.

import * as Flux from 'flux';

import Constants from 'utils/constants.jsx';

const PayloadSources = Constants.PayloadSources;

const AppDispatcher = Object.assign(new Flux.Dispatcher(), {
    handleServerAction: function performServerAction(action) {
        if (!action.type) {
            console.warn('handleServerAction called with undefined action type'); // eslint-disable-line no-console
        }

        var payload = {
            source: PayloadSources.SERVER_ACTION,
            action,
        };
        this.dispatch(payload);
    },

    handleViewAction: function performViewAction(action) {
        if (!action.type) {
            console.warn('handleViewAction called with undefined action type'); // eslint-disable-line no-console
        }

        var payload = {
            source: PayloadSources.VIEW_ACTION,
            action,
        };
        this.dispatch(payload);
    },
});

export default AppDispatcher;
