Source: zoom_upgrade_account.js

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

/**
*@module
*/
var ZoomPaymentReminder = (function () {
  let instance;

  /**
   * mode: Zoom SDK Payment Reminder Init
   * @param {Object} addon zoom sdk module
   * @return {ZoomPaymentReminder}
   */
  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;

    function onFreeMeetingNeedToUpgrade (type, gift_url) {
      if (_onFreeMeetingNeedToUpgrade) {
        _onFreeMeetingNeedToUpgrade(type, gift_url)
      }
    }

    function onFreeMeetingUpgradeToGiftFreeTrialStart (result) {
      if (_onFreeMeetingUpgradeToGiftFreeTrialStart) {
        _onFreeMeetingUpgradeToGiftFreeTrialStart(result)
      }
    }

    function onFreeMeetingUpgradeToGiftFreeTrialStop (result) {
      if (_onFreeMeetingUpgradeToGiftFreeTrialStop) {
        _onFreeMeetingUpgradeToGiftFreeTrialStop(result)
      }
    }

    function onFreeMeetingUpgradeToProMeeting (result) {
      if (_onFreeMeetingUpgradeToProMeeting) {
        _onFreeMeetingUpgradeToProMeeting(result)
      }
    }

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

    return {
      /** mode: Set Free Meeting Need T oUpgrade CB
       * @param {Function} onFreeMeetingNeedToUpgrade
       * @return {Boolean}
       */
      MeetingConfig_SetFreeMeetingNeedToUpgradeCB: function (onFreeMeetingNeedToUpgrade) {
        if (_addon && onFreeMeetingNeedToUpgrade && onFreeMeetingNeedToUpgrade instanceof Function) {
          _onFreeMeetingNeedToUpgrade = onFreeMeetingNeedToUpgrade;
          return true;
        }
        return false;
      },
      /** mode: Set Free Meeting Upgrade To Gift Free TrialStop CB
       * @param {Function} onFreeMeetingUpgradeToGiftFreeTrialStart
       * @return {Boolean}
       */
      MeetingConfig_SetFreeMeetingUpgradeToGiftFreeTrialStartCB: function (onFreeMeetingUpgradeToGiftFreeTrialStart) {
        if (_addon && onFreeMeetingUpgradeToGiftFreeTrialStart && onFreeMeetingUpgradeToGiftFreeTrialStart instanceof Function) {
          _onFreeMeetingUpgradeToGiftFreeTrialStart = onFreeMeetingUpgradeToGiftFreeTrialStart;
          return true;
        }
        return false;
      },
      /** mode: Set Free Meeting Upgrade To Gift Free TrialStop CB
       * @param {Function} onFreeMeetingUpgradeToGiftFreeTrialStop
       * @return {ZoomSDKError}
       */
      MeetingConfig_SetFreeMeetingUpgradeToGiftFreeTrialStopCB: function (onFreeMeetingUpgradeToGiftFreeTrialStop) {
        if (_addon && onFreeMeetingUpgradeToGiftFreeTrialStop && onFreeMeetingUpgradeToGiftFreeTrialStop instanceof Function) {
          _onFreeMeetingUpgradeToGiftFreeTrialStop = onFreeMeetingUpgradeToGiftFreeTrialStop;
          return true;
        }
        return false;
      },
      /** mode: Set Free Meeting Upgrade To ProMeeting CB
       * @param {Function} onFreeMeetingUpgradeToProMeeting
       * @return {ZoomSDKError}
       */
      MeetingConfig_SetFreeMeetingUpgradeToProMeetingCB: function (onFreeMeetingUpgradeToProMeeting) {
        if (_addon && onFreeMeetingUpgradeToProMeeting && onFreeMeetingUpgradeToProMeeting instanceof Function) {
          _onFreeMeetingUpgradeToProMeeting = onFreeMeetingUpgradeToProMeeting;
          return true;
        }
        return false;
      },
      /** mode: Get Reminder Type
       * @return {ZoomSDKError}
       */
      MeetingConfig_GetReminderType: function () {
        if (_addon) {
          return _addon.GetReminderType();
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      },
      /** mode: Upgrade Meeting
       * @return {ZoomSDKError}
       */
      MeetingConfig_UpgradeMeeting: function () {
        if (_addon) {
          return _addon.UpgradeMeeting();
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      },
      /** mode: Upgrade Account
       * @return {ZoomSDKError}
       */
      MeetingConfig_UpgradeAccount: function () {
        if (_addon) {
          return _addon.UpgradeAccount();
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      },
      /** mode: Cancel Update
       * @return {ZoomSDKError}
       */
      MeetingConfig_CancelUpdate: function () {
        if (_addon) {
          return _addon.CancelUpdate();
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      }
    }
  };
  return {
    /**
     * mode: Get Zoom SDK Payment Reminder
     * @return {ZoomPaymentReminder}
    */
    getInstance: function (opts) {
      if (!instance) {
        instance = init(opts);
      }
      return instance;
    }
  }
 })();
  
module.exports = {
  ZoomPaymentReminder: ZoomPaymentReminder
}