import { withTracker } from 'meteor/react-meteor-data';
import Meetings from '/imports/api/meetings';
import Auth from '/imports/ui/services/auth';
import { LockStruct } from './context';
import Users from '/imports/api/users';
import { withLockContext } from './withContext';

const lockContextContainer = (component) => withTracker(() => {
  const lockSetting = new LockStruct();
  const Meeting = Meetings.findOne({ meetingId: Auth.meetingID },
    { fields: { lockSettings: 1 } });
  const User = Users.findOne({ userId: Auth.userID },
    { fields: { role: 1, locked: 1 } });

  const ROLE_MODERATOR = window.meetingClientSettings.public.user.role_moderator;
  const userIsLocked = User ? User.locked && User.role !== ROLE_MODERATOR : true;
  const lockSettings = Meeting.lockSettings;

  lockSetting.isLocked = userIsLocked;
  lockSetting.lockSettings = lockSettings;
  lockSetting.userLocks.userWebcam = userIsLocked && lockSettings.disableCam;
  lockSetting.userLocks.userMic = userIsLocked && lockSettings.disableMic;
  lockSetting.userLocks.userNotes = userIsLocked && lockSettings.disableNotes;
  lockSetting.userLocks.userPrivateChat = userIsLocked && lockSettings.disablePrivateChat;
  lockSetting.userLocks.userPublicChat = userIsLocked && lockSettings.disablePublicChat;
  lockSetting.userLocks.hideViewersCursor = userIsLocked && lockSettings.hideViewersCursor;
  lockSetting.userLocks.hideViewersAnnotation = userIsLocked && lockSettings.hideViewersAnnotation;

  return lockSetting;
})(withLockContext(component));

export default lockContextContainer;
