@newtonschool/react_proctoring_library 0.0.44 → 0.0.45

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.
@@ -49,7 +49,8 @@ const ProctorApp = _ref => {
49
49
  actions,
50
50
  permissions,
51
51
  references,
52
- permissionSetter
52
+ permissionSetter,
53
+ screenshareStream
53
54
  } = context;
54
55
  const CustomPermissionView = customPermissionView;
55
56
  const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
@@ -115,8 +116,6 @@ const ProctorApp = _ref => {
115
116
  className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth fullheight" : "fullwidth fullheight")
116
117
  }, shouldShowProctoredComponent && children, !shouldShowProctoredComponent && customPermissionView && /*#__PURE__*/_react.default.createElement(CustomPermissionView, _extends({
117
118
  permissions: permissions,
118
- hasAllPermission: actions.hasAllPermission,
119
- askPermission: actions.askPermission,
120
119
  references: references,
121
120
  actions: actions,
122
121
  browserDetails: (0, _browserUtils.getBrowserDetails)()
@@ -132,6 +131,7 @@ const ProctorApp = _ref => {
132
131
  webcamReference: references.webcamReference,
133
132
  canvasReference: references.canvasReference
134
133
  }), /*#__PURE__*/_react.default.createElement(_screenshareActivityTracker.ScreenshareActivityTracker, {
134
+ screenshareStream: screenshareStream,
135
135
  ref: references.screenshareReference
136
136
  }));
137
137
  };
@@ -38,10 +38,11 @@ const ProctoredContextApp = _ref => {
38
38
  const webcamReference = (0, _react.useRef)(null);
39
39
  const canvasReference = (0, _react.useRef)(null);
40
40
  const screenshareReference = (0, _react.useRef)(null);
41
+ const [screenshareStream, setScreenshareStream] = (0, _react.useState)(null);
41
42
  const Context = contextProvider;
42
43
  const askPermissionAction = (0, _react.useMemo)(() => ({
43
44
  screenshare: () => {
44
- (0, _webcamMicrophoneUtils.setupScreensharePermission)(setScreensharePermission, screenshareReference);
45
+ (0, _webcamMicrophoneUtils.setupScreensharePermission)(setScreensharePermission, screenshareReference, setScreenshareStream);
45
46
  },
46
47
  fullscreen: () => {
47
48
  setFullscreen();
@@ -86,7 +87,8 @@ const ProctoredContextApp = _ref => {
86
87
  webcamReference,
87
88
  canvasReference,
88
89
  screenshareReference
89
- }
90
+ },
91
+ screenshareStream
90
92
  })
91
93
  }, children);
92
94
  };
@@ -11,10 +11,13 @@ var _dom = require("../../constants/dom");
11
11
  var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
12
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
- const ScreenshareActivityTracker = /*#__PURE__*/(0, _react.forwardRef)((props, screenshareReference) => {
14
+ const ScreenshareActivityTracker = /*#__PURE__*/(0, _react.forwardRef)((_ref, screenshareReference) => {
15
+ let {
16
+ screenshareStream
17
+ } = _ref;
15
18
  (0, _react.useEffect)(() => {
16
- if (screenshareReference.stream) {
17
- (0, _webcamMicrophoneUtils.collectScreenshare)(screenshareReference);
19
+ if (screenshareStream) {
20
+ (0, _webcamMicrophoneUtils.collectScreenshare)(screenshareReference, screenshareStream);
18
21
  }
19
22
  }, []);
20
23
  return /*#__PURE__*/_react.default.createElement("video", {
@@ -109,21 +109,21 @@ const updateVideoPermissions = setVideoPermission => {
109
109
  });
110
110
  };
111
111
  exports.updateVideoPermissions = updateVideoPermissions;
112
- const setupScreensharePermission = (setScreensharePermission, screenshareReference) => navigator.mediaDevices.getDisplayMedia({
112
+ const setupScreensharePermission = (setScreensharePermission, screenshareReference, setScreenshareStream) => navigator.mediaDevices.getDisplayMedia({
113
113
  video: true
114
114
  }).then(stream => {
115
115
  const track = stream.getTracks()[0];
116
116
  if (track.getSettings().displaySurface === "monitor") {
117
117
  setScreensharePermission(true);
118
- screenshareReference.stream = stream;
119
- collectScreenshare(screenshareReference);
118
+ setScreenshareStream(stream);
119
+ collectScreenshare(screenshareReference, stream);
120
120
  track.onended = e => {
121
121
  setScreensharePermission(false);
122
122
  screenshareReference.current.srcObject = null;
123
123
  };
124
124
  } else {
125
125
  track.stop();
126
- screenshareReference.current = null;
126
+ resetScreenshotReference(screenshareReference);
127
127
  setScreensharePermission(false);
128
128
  }
129
129
  }).catch(e => {
@@ -131,8 +131,8 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
131
131
  setScreensharePermission(false);
132
132
  });
133
133
  exports.setupScreensharePermission = setupScreensharePermission;
134
- const collectScreenshare = screenshareReference => {
135
- screenshareReference.current.srcObject = screenshareReference.stream;
134
+ const collectScreenshare = (screenshareReference, stream) => {
135
+ screenshareReference.current.srcObject = stream;
136
136
  screenshareReference.current.onloadedmetadata = e => {
137
137
  screenshareReference.current.play();
138
138
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newtonschool/react_proctoring_library",
3
- "version": "0.0.44",
3
+ "version": "0.0.45",
4
4
  "description": "Used to proctor online tests",
5
5
  "author": "ayushkagrawal,shreyachandra,weastel",
6
6
  "main": "dist/index.js",