zoom_meeting_reaction.js

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

var ZoomMeetingReaction = (function () {
  var instance;
  /**
   * Zoom Meeting Reactions
   * @module zoom_meeting_reaction
   * @param {Function} onEmojiReactionReceived Callback event used to inform the user once an emoji is received
   * @param {Function} onEmojiReactionReceivedInWebinar Callback event used to inform the user once an emoji is received in a webinar
   * @return {ZoomMeetingReaction}
   */
  function init(opts) {
    let clientOpts = opts || {};
    // Private methods and variables
    let _addon = clientOpts.addon.GetMeetingReactionCtrl() || null;
    let _onEmojiReactionReceived = clientOpts.onEmojiReactionReceived || null;
    let _onEmojiReactionReceivedInWebinar = clientOpts.onEmojiReactionReceivedInWebinar || null;

    /**
     * Callback event used to inform the user once an emoji is received
      @event onEmojiReactionReceived
      @param {number} userid The user id of the send emoji reaction
      @param {number} type The send emoji reaction type
      @param {number} skinTone The send emoji reaction skinstone
     */
    function onEmojiReactionReceived(userid, type, skinTone) {
      if (_onEmojiReactionReceived) {
        _onEmojiReactionReceived(userid, type, skinTone);
      }
    }

    /**
     * Callback event used to inform the user once an emoji is received
      @event onEmojiReactionReceivedInWebinar
      @param {number} type The send emoji reaction type
     */
    function onEmojiReactionReceivedInWebinar(type) {
      if (_onEmojiReactionReceivedInWebinar) {
        _onEmojiReactionReceivedInWebinar(type);
      }
    }

    if (_addon) {
      _addon.SetOnEmojiReactionReceivedCB(onEmojiReactionReceived);
      _addon.SetOnEmojiReactionReceivedInWebinarCB(onEmojiReactionReceivedInWebinar);
    }

    return {
      // Public methods and variables
      /**
       * Set emoji reaction received callback
       * @method SetOnEmojiReactionReceivedCB
       * @param {Function} onEmojiReactionReceived
       * @param {Function} onEmojiReactionReceivedInWebinar
       * @return {Boolean}
       */
      SetOnEmojiReactionReceivedCB: function (onEmojiReactionReceived) {
        if (_addon && onEmojiReactionReceived && onEmojiReactionReceived instanceof Function) {
          _onEmojiReactionReceived = onEmojiReactionReceived;
          return true;
        }
        return false;
      },
      SetOnEmojiReactionReceivedInWebinarCB: function (onEmojiReactionReceivedInWebinar) {
        if (_addon && onEmojiReactionReceivedInWebinar && onEmojiReactionReceivedInWebinar instanceof Function) {
          _onEmojiReactionReceivedInWebinar = onEmojiReactionReceivedInWebinar;
          return true;
        }
        return false;
      },
    };
  }

  return {
    getInstance: function (opts) {
      if (!instance) {
        instance = init(opts);
      }
      return instance;
    },
  };
})();

module.exports = {
  ZoomMeetingReaction: ZoomMeetingReaction,
};