peer-data/helpers/setUserData.js

import Skylink from '../../index';
import SkylinkSignalingServer from '../../server-communication/signaling-server';
import helpers from './index';
import { dispatchEvent } from '../../utils/skylinkEventManager';
import { peerUpdated } from '../../skylink-events';
import logger from '../../logger';
import MESSAGES from '../../messages';

/**
 * @description Function that overwrites the User current custom data.
 * @private
 * @param {SkylinkRoom} room
 * @param {String | Object} userData
 * @memberOf PeerDataHelpers
 * @fires peerUpdated
 */
const setUserData = (room, userData) => {
  const roomState = Skylink.getSkylinkState(room.id);
  const { PEER_INFORMATIONS: { UPDATE_USER_DATA } } = MESSAGES;
  const updatedUserData = userData || '';

  roomState.userData = updatedUserData;
  Skylink.setSkylinkState(roomState, roomState.room.id);

  new SkylinkSignalingServer().setUserData(roomState);

  dispatchEvent(peerUpdated({
    peerId: roomState.user.sid,
    peerInfo: helpers.getCurrentSessionInfo(room),
    isSelf: true,
  }));

  logger.log.INFO(UPDATE_USER_DATA, updatedUserData);
};

export default setUserData;