All files / src newPopupManager.js

0% Statements 0/34
0% Branches 0/23
0% Functions 0/5
0% Lines 0/34
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67                                                                                                                                     
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;
}