'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);
}
};