zoom_setting_ui_ctrl.js

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

var ZoomSettingUICtrl = (function () {
  var instance;
  /**
   * Zoom Setting UI Ctrl
   * @module zoom_setting_ui_ctrl
   * @return {ZoomSettingUICtrl}
   */
  function init(opts) {
    let clientOpts = opts || {};
    let _addon = clientOpts.addon.GetSettingUIStrategyCtrl() || null;

    return {
      // Public methods and variables
      /** 
      * Hide the link to check the advanced settings on the General Setting page or not.
      * @method SettingUI_DisableAdvancedFeatures4GeneralSetting
      * @param {Boolean} bDisable TRUE indicates to hide the link
      * @return {Number} Defined in: {@link ZoomSDKError}
      */
      SettingUI_DisableAdvancedFeatures4GeneralSetting: function (opts) {
        if (_addon){
          let clientOpts = opts || {};
          let bDisable = clientOpts.bDisable;
          try {
            let DisableAdvancedFeatures4GeneralSettingParams = new messages.DisableAdvancedFeatures4GeneralSettingParams();
            DisableAdvancedFeatures4GeneralSettingParams.setBdisable(bDisable);
            let bytes = DisableAdvancedFeatures4GeneralSettingParams.serializeBinary();
            return _addon.DisableAdvancedFeatures4GeneralSetting(bytes);
          } catch (error) {
            return ZoomSDKError.SDKERR_INVALID_PARAMETER;
          }
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      },
      /** 
      * Hide the Account Setting page or not
      * @method SettingUI_DisableAccountSettingTabPage
      * @param {Boolean} bDisable TRUE indicates to hide the account setting page
      * @return {Number} Defined in: {@link ZoomSDKError}
      */
      SettingUI_DisableAccountSettingTabPage: function (opts) {
        if (_addon){
          let clientOpts = opts || {};
          let bDisable = clientOpts.bDisable;
          try {
            let DisableAccountSettingTabPageParams = new messages.DisableAccountSettingTabPageParams();
            DisableAccountSettingTabPageParams.setBdisable(bDisable);
            let bytes = DisableAccountSettingTabPageParams.serializeBinary();
            return _addon.DisableAccountSettingTabPage(bytes);
          } catch (error) {
            return ZoomSDKError.SDKERR_INVALID_PARAMETER;
          }
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      },
      /** 
      * Custome the tab page show or hide
      * @method SettingUI_ConfSettingDialogShownTabPage
      * @param {Number} number settingDlgShowTabPageOption, Every bit indicates whether to show a certain tab page
       1. bit 1: indicates whether to show virtual background page. "1" show, "0" not show
       2. bit 2: indicates to whether to show video page. "1" show, "0" not show
       3. bit 3: indicates to whether to show staticstics page. "1" show, "0" not show
       4. bit 4: indicates to whether to show recording page. "1" show, "0" not show
       5. bit 5: indicates to whether to show general page. "1" show, "0" not show
       6. bit 6: indicates to whether to show feed back page. "1" show, "0" not show @deprecated this option is marked as deprecated.
       7. bit 7: indicates to whether to show audio page. "1" show, "0" not show
       8. bit 8: indicates to whether to show advance feature page. "1" show, "0" not show
       9. bit 9: indicates to whether to show accessibility page. "1" show, "0" not show
      * @return {Number}
      */
      SettingUI_ConfSettingDialogShownTabPage: function (opts) {
        if (_addon){
          let clientOpts = opts || {};
          let number = clientOpts.number;
          try {
            let ConfSettingDialogShownTabPageParams = new messages.ConfSettingDialogShownTabPageParams();
            ConfSettingDialogShownTabPageParams.setShowoption(number);
            let bytes = ConfSettingDialogShownTabPageParams.serializeBinary();
            return _addon.ConfSettingDialogShownTabPage(bytes);
          } catch (error) {
            return ZoomSDKError.SDKERR_INVALID_PARAMETER;
          }
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      },
      /** 
      * Set the visibility of the AUTOMATICALLY COPY INVITE URL check-box on the General Setting page.
      * @method SettingUI_HideAutoCopyInviteLinkCheckBox
      * @param {Boolean} bHide TRUE indicates to hide the check box.
      * @return {Number} Defined in: {@link ZoomSDKError} 
      */
      SettingUI_HideAutoCopyInviteLinkCheckBox: function (opts) {
        if (_addon){
          let clientOpts = opts || {};
          let bHide = clientOpts.bHide;
          try {
            let HideAutoCopyInviteLinkCheckBoxParams = new messages.HideAutoCopyInviteLinkCheckBoxParams();
            HideAutoCopyInviteLinkCheckBoxParams.setBhide(bHide);
            let bytes = HideAutoCopyInviteLinkCheckBoxParams.serializeBinary();
            return _addon.HideAutoCopyInviteLinkCheckBox(bytes);
          } catch (error) {
            return ZoomSDKError.SDKERR_INVALID_PARAMETER;
          }
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      },
      /** 
      * Custom the url link show or hide
      * @method SettingUI_ConfigToShowUrlLinksInSetting
      * @param {Number} showOption (require hexadecimal) Every bit indicates whether to show a certain url link, From right to left, every bit indicates as:
       1. bit 1: indicates whether to show the view more setting url in general page. "1" show, "0" not show.
       2. bit 2: indicates whether to show the support center url in video page. "1" show, "0" not show.
       3. bit 3: indicates whether to show the learn more url of suppress background noise in audio page. "1" show, "0" not show.
       4. bit 4: indicates whether to show the learn more url of screen capture mode in share screen and vb page. "1" show, "0" not show.
      * @return {Number} Defined in: {@link ZoomSDKError} 
      */
      SettingUI_ConfigToShowUrlLinksInSetting: function (opts) {
        if (_addon){
          let clientOpts = opts || {};
          let showOption = clientOpts.showOption;
          try {
            let ConfigToShowUrlLinksInSettingParams = new messages.ConfigToShowUrlLinksInSettingParams();
            ConfigToShowUrlLinksInSettingParams.setShowoption(showOption);
            let bytes = ConfigToShowUrlLinksInSettingParams.serializeBinary();
            return _addon.ConfigToShowUrlLinksInSetting(bytes);
          } catch (error) {
            return ZoomSDKError.SDKERR_INVALID_PARAMETER;
          }
        }
        return ZoomSDKError.SDKERR_UNINITIALIZE;
      },
    };
  };
 
  return {
    getInstance: function(opts) {
      if (!instance) {
        instance = init(opts);
      }
      return instance;
    }
  };
})();

module.exports = {
  ZoomSettingUICtrl: ZoomSettingUICtrl
}