@newtonschool/react_proctoring_library 0.0.63 → 0.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,7 +32,7 @@ const Permission = _ref => {
32
32
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Header, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Title, null, text.PERMISSION_TITLE)), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Body, {
33
33
  className: "font-medium"
34
34
  }, /*#__PURE__*/_react.default.createElement(_permissionBody.PermissionBody, {
35
- showFullscreenText: !permissions.fullscreen,
35
+ showFullscreenText: !permissions.fullscreen && proctorParams.fullscreenExit,
36
36
  showAudioPermissionText: !permissions.audio && (0, _breachUtils.isAudioRequired)(proctorParams),
37
37
  showVideoPermissionText: !permissions.video && (0, _breachUtils.isWebcamRequired)(proctorParams),
38
38
  showScreensharePermission: !permissions.screenshare && proctorParams.screenshareSnapshots
@@ -94,15 +94,20 @@ const ProctorApp = _ref => {
94
94
  const isTabSwitched = !(0, _hooks.usePageVisibility)(proctorParams.tabSwitch);
95
95
  const isPageFocussed = (0, _useIsPageFocussed.default)(proctorParams.pageFocus);
96
96
  (0, _react.useEffect)(() => {
97
+ let timeoutId = null;
97
98
  if (recurring) {
98
- recurringFetchIntervalRef.current = setInterval(() => {
99
- sendProctoredParamValues();
100
- sendWebcamSnapshot();
101
- sendScreengrab();
102
- }, recurringFetchInterval);
99
+ const randomStartDelay = 1000 * (Math.floor(Math.random() * 10) + 1);
100
+ timeoutId = setTimeout(() => {
101
+ recurringFetchIntervalRef.current = setInterval(() => {
102
+ sendProctoredParamValues();
103
+ sendWebcamSnapshot();
104
+ sendScreengrab();
105
+ }, recurringFetchInterval);
106
+ }, randomStartDelay);
103
107
  }
104
108
  return () => {
105
109
  clearInterval(recurringFetchIntervalRef.current);
110
+ clearTimeout(timeoutId);
106
111
  };
107
112
  }, [recurring, recurringFetchInterval, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab]);
108
113
  (0, _react.useEffect)(() => {
@@ -133,7 +138,7 @@ const ProctorApp = _ref => {
133
138
  proctorParams: proctorParams,
134
139
  permissions: permissions,
135
140
  askPermission: actions.askPermission
136
- }), /*#__PURE__*/_react.default.createElement(_webcamActivityTracker.default, {
141
+ }), proctorParams.webcamSnapshots && /*#__PURE__*/_react.default.createElement(_webcamActivityTracker.default, {
137
142
  proctorParams: proctorParams,
138
143
  setAudioPermission: permissionSetter.audio,
139
144
  setVideoPermission: permissionSetter.video,
@@ -117,7 +117,9 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
117
117
  collectScreenshare(screenshareReference, stream);
118
118
  track.onended = e => {
119
119
  setScreensharePermission(false);
120
- screenshareReference.current.srcObject = null;
120
+ if (screenshareReference.current) {
121
+ screenshareReference.current.srcObject = null;
122
+ }
121
123
  };
122
124
  } else {
123
125
  track.stop();
@@ -130,18 +132,26 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
130
132
  });
131
133
  exports.setupScreensharePermission = setupScreensharePermission;
132
134
  const collectScreenshare = (screenshareReference, stream) => {
133
- screenshareReference.current.srcObject = stream;
134
- screenshareReference.current.onloadedmetadata = e => {
135
- screenshareReference.current.play();
136
- };
135
+ if (screenshareReference.current) {
136
+ screenshareReference.current.srcObject = stream;
137
+ screenshareReference.current.onloadedmetadata = e => {
138
+ if (screenshareReference.current) {
139
+ screenshareReference.current.play();
140
+ }
141
+ };
142
+ }
137
143
  };
138
144
  exports.collectScreenshare = collectScreenshare;
139
145
  const resetScreenshotReference = screenshareReference => {
140
- screenshareReference.current.srcObject = null;
146
+ if (screenshareReference.current) {
147
+ screenshareReference.current.srcObject = null;
148
+ }
141
149
  };
142
150
  exports.resetScreenshotReference = resetScreenshotReference;
143
151
  const resetWebcamReference = webcamReference => {
144
- webcamReference.current = null;
152
+ if (webcamReference.current) {
153
+ webcamReference.current = null;
154
+ }
145
155
  };
146
156
  exports.resetWebcamReference = resetWebcamReference;
147
157
  const getVideoPermissionQuery = () => navigator.permissions.query({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newtonschool/react_proctoring_library",
3
- "version": "0.0.63",
3
+ "version": "0.0.65",
4
4
  "description": "Used to proctor online tests",
5
5
  "author": "ayushkagrawal,shreyachandra,weastel",
6
6
  "main": "dist/index.js",