zoom_upgrade_account.js

const { ZoomSDKError } = require('./settings.js');

var ZoomPaymentReminder = (function () {
  let instance;

  /**
   * Zoom Upgrade Account
   * @module zoom_upgrade_account
   * @param {Function} onVerifySMSVerificationCodeResultNotification The callback of upgrading the free meeting.
   * @param {Function} onFreeMeetingUpgradeToGiftFreeTrialStart Callback function of starting to upgrade the free meeting by the gift link.
   * @param {Function} onFreeMeetingUpgradeToGiftFreeTrialStop Callback function of ending upgrade the free meeting by the gift link.
   * @param {Function} onFreeMeetingUpgradeToProMeeting Callback function of free meting upgrades successfully.
   * @return {zoomUpgradeAccount}
   */
  function init(opts) {
    var clientOpts = opts || {};
    // Private methods and variables
    var _addon = clientOpts.addon.GetMeetingConfigCtrl() || null;
    let _onFreeMeetingNeedToUpgrade = clientOpts.onFreeMeetingNeedToUpgrade || null;
    let _onFreeMeetingUpgradeToGiftFreeTrialStart = clientOpts.onFreeMeetingUpgradeToGiftFreeTrialStart || null;
    let _onFreeMeetingUpgradeToGiftFreeTrialStop = clientOpts.onFreeMeetingUpgradeToGiftFreeTrialStop || null;
    let _onFreeMeetingUpgradeToProMeeting = clientOpts.onFreeMeetingUpgradeToProMeeting || null;

    /**
      The callback of upgrading the free meeting.
      @event onFreeMeetingNeedToUpgrade
      @param {String} type Type of upgrading the free meeting, {@link FreeMeetingNeedUpgradeType}
      @param {String} gift_url Upgrade the free meeting by the gift link. When and only when the value of type_ is FreeMeetingNeedUpgradeType_BY_GIFTURL, this parameter is meaningful.
    */
    function onFreeMeetingNeedToUpgrade (type, gift_url) {
      if (_onFreeMeetingNeedToUpgrade) {
        _onFreeMeetingNeedToUpgrade(type, gift_url)
      }
    }

    /**
      Callback function of starting to upgrade the free meeting by the gift link.
      @event onFreeMeetingUpgradeToGiftFreeTrialStart
    */
    function onFreeMeetingUpgradeToGiftFreeTrialStart () {
      if (_onFreeMeetingUpgradeToGiftFreeTrialStart) {
        _onFreeMeetingUpgradeToGiftFreeTrialStart()
      }
    }

    /**
      Callback function of ending upgrade the free meeting by the gift link.
      @event onFreeMeetingUpgradeToGiftFreeTrialStop
    */
    function onFreeMeetingUpgradeToGiftFreeTrialStop () {
      if (_onFreeMeetingUpgradeToGiftFreeTrialStop) {
        _onFreeMeetingUpgradeToGiftFreeTrialStop()
      }
    }

    /**
      Callback function of free meting upgrades successfully.
      @event onFreeMeetingUpgradeToProMeeting
    */
    function onFreeMeetingUpgradeToProMeeting () {
      if (_onFreeMeetingUpgradeToProMeeting) {
        _onFreeMeetingUpgradeToProMeeting()
      }
    }

    if (_addon) {
      _addon.SetFreeMeetingNeedToUpgradeCB(onFreeMeetingNeedToUpgrade);
      _addon.SetFreeMeetingUpgradeToGiftFreeTrialStartCB(onFreeMeetingUpgradeToGiftFreeTrialStart);
      _addon.SetFreeMeetingUpgradeToGiftFreeTrialStopCB(onFreeMeetingUpgradeToGiftFreeTrialStop);
      _addon.SetFreeMeetingUpgradeToProMeetingCB(onFreeMeetingUpgradeToProMeeting);
    }

    return {
      /**
       * Set Free Meeting Need T oUpgrade Callback
       * @method MeetingConfig_SetFreeMeetingNeedToUpgradeCB
       * @param {Function} MeetingConfig_SetFreeMeetingNeedToUpgradeCB
       * @return {Boolean}
       */
      MeetingConfig_SetFreeMeetingNeedToUpgradeCB: function (onFreeMeetingNeedToUpgrade) {
        if (_addon && onFreeMeetingNeedToUpgrade && onFreeMeetingNeedToUpgrade instanceof Function) {
          _onFreeMeetingNeedToUpgrade = onFreeMeetingNeedToUpgrade;
          return true;
        }
        return false;
      },
      /**
       * Set Free Meeting Upgrade To Gift Free TrialStop Callback
       * @method MeetingConfig_SetFreeMeetingUpgradeToGiftFreeTrialStartCB
       * @param {Function} onFreeMeetingUpgradeToGiftFreeTrialStart
       * @return {Boolean}
       */
      MeetingConfig_SetFreeMeetingUpgradeToGiftFreeTrialStartCB: function (onFreeMeetingUpgradeToGiftFreeTrialStart) {
        if (_addon && onFreeMeetingUpgradeToGiftFreeTrialStart && onFreeMeetingUpgradeToGiftFreeTrialStart instanceof Function) {
          _onFreeMeetingUpgradeToGiftFreeTrialStart = onFreeMeetingUpgradeToGiftFreeTrialStart;
          return true;
        }
        return false;
      },
      /**
       * Set Free Meeting Upgrade To Gift Free TrialStop Callback
       * @method MeetingConfig_SetFreeMeetingUpgradeToGiftFreeTrialStopCB
       * @param {Function} onFreeMeetingUpgradeToGiftFreeTrialStop
       * @return {Boolean}
       */
      MeetingConfig_SetFreeMeetingUpgradeToGiftFreeTrialStopCB: function (onFreeMeetingUpgradeToGiftFreeTrialStop) {
        if (_addon && onFreeMeetingUpgradeToGiftFreeTrialStop && onFreeMeetingUpgradeToGiftFreeTrialStop instanceof Function) {
          _onFreeMeetingUpgradeToGiftFreeTrialStop = onFreeMeetingUpgradeToGiftFreeTrialStop;
          return true;
        }
        return false;
      },
      /**
       * Set Free Meeting Upgrade To ProMeeting Callback
       * @method MeetingConfig_SetFreeMeetingUpgradeToProMeetingCB
       * @param {Function} onFreeMeetingUpgradeToProMeeting
       * @return {Boolean}
       */
      MeetingConfig_SetFreeMeetingUpgradeToProMeetingCB: function (onFreeMeetingUpgradeToProMeeting) {
        if (_addon && onFreeMeetingUpgradeToProMeeting && onFreeMeetingUpgradeToProMeeting instanceof Function) {
          _onFreeMeetingUpgradeToProMeeting = onFreeMeetingUpgradeToProMeeting;
          return true;
        }
        return false;
      }
    }
  }
    return {
    getInstance: function (opts) {
      if (!instance) {
        instance = init(opts);
      }
      return instance;
    }
  }
 })();

module.exports = {
  ZoomPaymentReminder: ZoomPaymentReminder
};