129 lines
3.2 KiB
JavaScript
129 lines
3.2 KiB
JavaScript
/* global $, APP, JitsiMeetJS */
|
|
import UIEvents from "../../../service/UI/UIEvents";
|
|
import FeedbackWindow from "./FeedbackWindow";
|
|
|
|
/**
|
|
* Shows / hides the feedback button.
|
|
* @private
|
|
*/
|
|
function _toggleFeedbackIcon() {
|
|
$('#feedbackButtonDiv').toggleClass("hidden");
|
|
}
|
|
|
|
/**
|
|
* Shows / hides the feedback button.
|
|
* @param {show} set to {true} to show the feedback button or to {false}
|
|
* to hide it
|
|
* @private
|
|
*/
|
|
function _showFeedbackButton (show) {
|
|
var feedbackButton = $("#feedbackButtonDiv");
|
|
|
|
if (show)
|
|
feedbackButton.css("display", "block");
|
|
else
|
|
feedbackButton.css("display", "none");
|
|
}
|
|
|
|
/**
|
|
* Defines all methods in connection to the Feedback window.
|
|
*
|
|
* @type {{openFeedbackWindow: Function}}
|
|
*/
|
|
var Feedback = {
|
|
|
|
/**
|
|
* Initialise the Feedback functionality.
|
|
* @param emitter the EventEmitter to associate with the Feedback.
|
|
*/
|
|
init: function (emitter) {
|
|
// CallStats is the way we send feedback, so we don't have to initialise
|
|
// if callstats isn't enabled.
|
|
if (!APP.conference.isCallstatsEnabled())
|
|
return;
|
|
|
|
// If enabled property is still undefined, i.e. it hasn't been set from
|
|
// some other module already, we set it to true by default.
|
|
if (typeof this.enabled == "undefined")
|
|
this.enabled = true;
|
|
|
|
_showFeedbackButton(this.enabled);
|
|
|
|
this.window = new FeedbackWindow();
|
|
|
|
$("#feedbackButton").click(Feedback.openFeedbackWindow);
|
|
|
|
// Show / hide the feedback button whenever the film strip is
|
|
// shown / hidden.
|
|
emitter.addListener(UIEvents.TOGGLE_FILM_STRIP, function () {
|
|
_toggleFeedbackIcon();
|
|
});
|
|
},
|
|
/**
|
|
* Enables/ disabled the feedback feature.
|
|
*/
|
|
enableFeedback: function (enable) {
|
|
if (this.enabled !== enable)
|
|
_showFeedbackButton(enable);
|
|
this.enabled = enable;
|
|
},
|
|
|
|
/**
|
|
* Indicates if the feedback functionality is enabled.
|
|
*
|
|
* @return true if the feedback functionality is enabled, false otherwise.
|
|
*/
|
|
isEnabled: function() {
|
|
return this.enabled && APP.conference.isCallstatsEnabled();
|
|
},
|
|
|
|
/**
|
|
* Returns true if the feedback window is currently visible and false
|
|
* otherwise.
|
|
* @return {boolean} true if the feedback window is visible, false
|
|
* otherwise
|
|
*/
|
|
isVisible: function() {
|
|
return $(".feedback").is(":visible");
|
|
},
|
|
|
|
/**
|
|
* Indicates if the feedback is submitted.
|
|
*
|
|
* @return {boolean} {true} to indicate if the feedback is submitted,
|
|
* {false} - otherwise
|
|
*/
|
|
isSubmitted: function() {
|
|
return Feedback.window.submitted;
|
|
},
|
|
|
|
/**
|
|
* Opens the feedback window.
|
|
*/
|
|
openFeedbackWindow: function (callback) {
|
|
Feedback.window.show(callback);
|
|
|
|
JitsiMeetJS.analytics.sendEvent('feedback.open');
|
|
},
|
|
|
|
/**
|
|
* Returns the feedback score.
|
|
*
|
|
* @returns {*}
|
|
*/
|
|
getFeedbackScore: function() {
|
|
return Feedback.window.feedbackScore;
|
|
},
|
|
|
|
/**
|
|
* Returns the feedback free text.
|
|
*
|
|
* @returns {null|*|message}
|
|
*/
|
|
getFeedbackText: function() {
|
|
return Feedback.window.feedbackText;
|
|
}
|
|
};
|
|
|
|
module.exports = Feedback;
|