import Bluebus from 'bluebus';
import global from './global';
import BaseFeedback from './popup-feedback/feedback.base';
export default class PopupManager {
feedbackObject = {};
init(initObj, callback) {
if (typeof initObj === 'object') {
Object.values(initObj).forEach((elem) => {
const popupType = elem.type || '';
if (popupType !== '') {
this.feedbackObject[popupType] = new BaseFeedback(elem.type, elem);
}
});
global.logger.log(['Useris', 'PopupManager', 'Init', this.feedbackObject]);
Bluebus.trigger('Useris-Popup-Init');
if (typeof callback === 'function') {
callback({ initialized: true });
}
} else {
global.logger.log(['Useris', 'PopupManager', 'Init', 'Any initialization object is given, please check the doc']);
if (typeof callback === 'function') {
callback({ initialized: false });
}
}
}
closeAllPopup(callback) {
Bluebus.bind('Useris-Popup-Init', () => {
Object.values(this.feedbackObject).forEach((elem) => {
if (elem.isEnabled() && elem.isShowed()) {
elem.closeUserFeedback();
}
});
if (typeof callback === 'function') {
callback();
}
});
}
showUserFeedback(obj) {
let feedbackToShow = {};
if (typeof obj !== 'undefined') {
Bluebus.bind('Useris-Popup-Init', () => {
if (typeof this.feedbackObject[obj.type] !== 'undefined' && this.feedbackObject[obj.type].isEnabled() && typeof obj.feedback !== 'undefined') {
feedbackToShow = this.feedbackObject[obj.type];
this.closeAllPopup(() => {
feedbackToShow.showUserFeedback(obj.feedback);
});
} else {
global.logger.warn(['Any feedback to show, feedback should be not enabled or not found', obj]);
}
});
}
}
isInitilized = () => Bluebus.isTriggered('Useris-Popup-Init');
getFeedback = () => this.feedbackObject;
}
|