zoom_meeting_reaction.js

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

var ZoomMeetingReaction = (function () {
  var instance;
  /**
   * Zoom Meeting Emoji Reaction
   * @module zoom_meeting_reaction
   * @param {Function} onEmojiReactionReceived Emoji reaction callback. This function is used to inform the user once received the reaction sent by others or user himself.
   * @param {Function} onEmojiReactionReceivedInWebinar Emoji reaction callback. This callback notifies the user when an emoji is received in the 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;

    /**
     * Emoji reaction callback. This function is used to inform the user once received the reaction sent by others or user himself.
     * @event onEmojiReactionReceived
     * @param {Number} sender_id The user id of the reaction sender
     * @param {Number} type The type of the received reaction
     */
    function onEmojiReactionReceived(sender_id, type) {
      if (_onEmojiReactionReceived) {
        _onEmojiReactionReceived(sender_id, type);
      }
    }

    /**
     * Emoji reaction callback. This callback notifies the user when an emoji is received in the webinar.
     * @event onEmojiReactionReceivedInWebinar
     * @param {Number} type The type of the received reaction
     */
    function onEmojiReactionReceivedInWebinar(type) {
      if (_onEmojiReactionReceivedInWebinar) {
        _onEmojiReactionReceivedInWebinar(type);
      }
    }

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

    return {
      // Public methods and variables
      /**
       * Set onEmojiReactionReceived callback.
       * @method SetOnEmojiReactionReceivedCB
       * @param {Function} onEmojiReactionReceived
       * @return {Boolean} true or false
       */
      SetOnEmojiReactionReceivedCB: function (onEmojiReactionReceived) {
        if (_addon && onEmojiReactionReceived && onEmojiReactionReceived instanceof Function) {
          _onEmojiReactionReceived = onEmojiReactionReceived;
          return true;
        }
        return false;
      },
      /**
       * Set onEmojiReactionReceivedInWebinar callback.
       * @method SetOnEmojiReactionReceivedInWebinarCB
       * @param {Function} onEmojiReactionReceivedInWebinar
       * @return {Boolean} true or 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,
};