Source: app_actions.js

'use strict';

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

var _dispatchersApp_dispatcher = require('dispatchers/app_dispatcher');

var _dispatchersApp_dispatcher2 = _interopRequireDefault(_dispatchersApp_dispatcher);

var _actionsAnalytics_actions = require('actions/analytics_actions');

var _actionsAnalytics_actions2 = _interopRequireDefault(_actionsAnalytics_actions);

var _dispatchersAnalytics_dispatcher = require('dispatchers/analytics_dispatcher');

var _dispatchersAnalytics_dispatcher2 = _interopRequireDefault(_dispatchersAnalytics_dispatcher);

var _spi = require('spi');

var _spi2 = _interopRequireDefault(_spi);

/**
 * Global actions intended for non react managed actions like mention clicks, etc.
 * @module actions/AppActions
 */
module.exports = {

  /**
   * Opens a chat based on an HTML element with a data-mention-name attribute.
   * Used primarily to allow hyperlinks to open a 1-1 chat by mention name.
   * @param {HTMLAnchorElement} target Hyperlink
   * @param {Attr} target.dataset.mentionName HipChat registered @-mention name of user
   */
  openChatByMentionName: function openChatByMentionName(target) {
    var mentionName = typeof target === 'string' ? target : target.dataset.mentionName;
    _dispatchersApp_dispatcher2['default'].dispatch('open-chat-by-mention-name', mentionName);
    _actionsAnalytics_actions2['default'].chatRoomMentionClicked();
  },

  /**
   * Open a chat by JID
   * @param data
   */
  openChatByJID: function openChatByJID(data) {
    _dispatchersApp_dispatcher2['default'].dispatch('set-route', { jid: data.jid });
    data.source = "jid";
    _dispatchersAnalytics_dispatcher2['default'].dispatch('analytics-open-room', data);
  },

  /**
   * Set route by JID
   * @param jid
   */
  navigateToChat: function navigateToChat(jid) {
    if (jid) {
      _dispatchersApp_dispatcher2['default'].dispatch('set-route', {
        jid: jid
      });
    }
  },

  /**
   * Add file to the chat input for uploading via fileUrl
   * @param fileUrl
   * @param source dragndrop or paste
   */
  addFileForUploadWithUrl: function addFileForUploadWithUrl(fileUrl, source) {
    if (fileUrl) {
      _dispatchersApp_dispatcher2['default'].dispatch('add-file-for-upload-with-url', {
        fileUrl: fileUrl,
        source: source
      });
    }
  },

  /**
   * Add file to the chat input for uploading via base64
   * @param base64 valid base64 string
   * @param fileName
   * @param source dragndrop or paste
   */
  addFileForUploadWithBase64: function addFileForUploadWithBase64(base64, fileName, source) {
    if (base64) {
      _dispatchersApp_dispatcher2['default'].dispatch('add-file-for-upload-with-base64', {
        base64: base64,
        fileName: fileName,
        source: source
      });
    }
  },

  /**
   * Request addLive credentials from the server
   * @param jid
   * @param callback
   */
  requestAddLiveCredentials: function requestAddLiveCredentials(jid, callback) {
    _dispatchersApp_dispatcher2['default'].dispatch('request-addlive-credentials', { jid: jid }, callback);
  },

  /**
   * Analytics event
   * @private
   */
  logoClicked: function logoClicked() {
    _dispatchersAnalytics_dispatcher2['default'].dispatch("analytics-event", {
      name: "hipchat.client.top.navigation.logo.clicked"
    });
  },

  /**
   * Enables an "experimental" feature in a way that can be triggered by Optimizely.  This will be added to the
   * features map on the hc.config object
   *
   * @param {String} featureName the name of the feature to enable
   * @param {String} user_jid user jid
   */
  enableDarkFeature: function enableDarkFeature(featureName, user_jid) {
    _dispatchersApp_dispatcher2['default'].dispatch("enable-dark-feature", { name: featureName });

    var analyticsData = {
      name: "hipchat.client.darkfeature.enabled",
      feature: featureName,
      user_jid: user_jid
    };
    _dispatchersAnalytics_dispatcher2['default'].dispatch("analytics-event", analyticsData);
  },

  clearWebCookies: function clearWebCookies(cb) {
    _dispatchersApp_dispatcher2['default'].dispatch("clear-web-cookies", cb);
  },

  revokeOauth2Token: function revokeOauth2Token(cb) {
    _dispatchersApp_dispatcher2['default'].dispatch("revoke-oauth2-token", cb);
  },

  /**
   * Requests room participants from API v2.
   */
  fetchRoomParticipants: function fetchRoomParticipants(room) {
    _dispatchersApp_dispatcher2['default'].dispatch("fetch-room-participants", room);
  },

  /**
   * Logs user out of /chat
   */
  signout: function signout() {
    _dispatchersAnalytics_dispatcher2['default'].dispatch("analytics-event", {
      name: "hipchat.client.top.navigation.profile.signout.clicked"
    });
    _dispatchersApp_dispatcher2['default'].dispatch('signout');
  },

  logInToAnotherTeam: function logInToAnotherTeam() {
    _actionsAnalytics_actions2['default'].logInToAnotherTeamClicked();
    _spi2['default'].onLogInToAnotherTeam();
  },

  showNotification: function showNotification() {
    _spi2['default'].onNotification.apply(this, arguments);
  },

  updateTotalUnreadCount: function updateTotalUnreadCount() {
    _spi2['default'].onTotalUnreadCountUpdate.apply(this, arguments);
  },

  openExternalWindow: function openExternalWindow() {
    _spi2['default'].openExternalWindow.apply(_spi2['default'], arguments);
  }

};