@newtonschool/react_proctoring_library 0.0.83 → 0.0.85
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.
- package/dist/components/breach-parameters/index.js +4 -2
- package/dist/components/proctor-app/index.js +3 -1
- package/dist/components/proctor-context-app/index.js +6 -9
- package/dist/hooks/electron/useIllegalKeysCombination.js +11 -7
- package/dist/hooks/useCleanupPermissions.js +30 -0
- package/dist/hooks/useTrackBreachParameters.js +3 -2
- package/dist/index.js +7 -0
- package/dist/utils/breachUtils.js +1 -1
- package/dist/utils/permission.js +30 -2
- package/package.json +1 -1
|
@@ -11,14 +11,16 @@ function BreachParameters(_ref) {
|
|
|
11
11
|
getProctorParamValues,
|
|
12
12
|
proctoringIdentifier,
|
|
13
13
|
permissions,
|
|
14
|
-
proctorParams
|
|
14
|
+
proctorParams,
|
|
15
|
+
allPermissionGrantedOnce
|
|
15
16
|
} = _ref;
|
|
16
17
|
(0, _useTrackBreachParameters.useTrackBreachParameters)({
|
|
17
18
|
config,
|
|
18
19
|
getProctorParamValues,
|
|
19
20
|
proctoringIdentifier,
|
|
20
21
|
permissions,
|
|
21
|
-
proctorParams
|
|
22
|
+
proctorParams,
|
|
23
|
+
allPermissionGrantedOnce
|
|
22
24
|
});
|
|
23
25
|
return null;
|
|
24
26
|
}
|
|
@@ -46,7 +46,8 @@ const ProctorApp = _ref => {
|
|
|
46
46
|
const {
|
|
47
47
|
permissions,
|
|
48
48
|
references,
|
|
49
|
-
permissionErrors
|
|
49
|
+
permissionErrors,
|
|
50
|
+
allPermissionGrantedOnce
|
|
50
51
|
} = context;
|
|
51
52
|
const {
|
|
52
53
|
acquireWakeUpLock,
|
|
@@ -113,6 +114,7 @@ const ProctorApp = _ref => {
|
|
|
113
114
|
getProctorParamValues: getProctorParamValues,
|
|
114
115
|
permissions: permissions,
|
|
115
116
|
proctorParams: proctorParams,
|
|
117
|
+
allPermissionGrantedOnce: allPermissionGrantedOnce,
|
|
116
118
|
proctoringIdentifier: proctoringIdentifier
|
|
117
119
|
})]
|
|
118
120
|
});
|
|
@@ -36,6 +36,7 @@ const ProctoredContextApp = _ref => {
|
|
|
36
36
|
const [screenShareDeviceId, setScreenShareDeviceId] = (0, _react.useState)();
|
|
37
37
|
const [audioPermisison, setAudioPermission] = (0, _react.useState)();
|
|
38
38
|
const [videoPermission, setVideoPermission] = (0, _react.useState)();
|
|
39
|
+
const allPermissionGrantedOnce = (0, _react.useRef)(false);
|
|
39
40
|
const [permissionErrors, setPermissionErrors] = (0, _react.useState)({
|
|
40
41
|
audio: null,
|
|
41
42
|
video: null,
|
|
@@ -61,19 +62,15 @@ const ProctoredContextApp = _ref => {
|
|
|
61
62
|
const forceUpdate = () => {
|
|
62
63
|
setUpdateId(oldId => oldId + 1);
|
|
63
64
|
};
|
|
64
|
-
|
|
65
|
-
if (
|
|
66
|
-
|
|
65
|
+
(0, _react.useEffect)(() => {
|
|
66
|
+
if (videoPermission && screensharePermission && isFullscreen) {
|
|
67
|
+
allPermissionGrantedOnce.current = true;
|
|
67
68
|
}
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
// useEffect(()=>{
|
|
71
|
-
// endTest
|
|
72
|
-
// })
|
|
73
|
-
|
|
69
|
+
}, [videoPermission, isFullscreen, screensharePermission]);
|
|
74
70
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Context.Provider, {
|
|
75
71
|
value: _objectSpread(_objectSpread({}, customContext), {}, {
|
|
76
72
|
permissions,
|
|
73
|
+
allPermissionGrantedOnce,
|
|
77
74
|
permissionSetter: {
|
|
78
75
|
audio: setAudioPermission,
|
|
79
76
|
video: setVideoPermission,
|
|
@@ -10,15 +10,19 @@ var _ElectronContext = require("../../contexts/ElectronContext");
|
|
|
10
10
|
function useIllegalKeysCombination() {
|
|
11
11
|
const [keysClickedCount, setKeysClickedCount] = (0, _react.useState)(0);
|
|
12
12
|
const isElectronApp = (0, _react.useContext)(_ElectronContext.ElectronContext);
|
|
13
|
+
const illegalKeysClickHandler = () => {
|
|
14
|
+
setKeysClickedCount(count => count + 1);
|
|
15
|
+
};
|
|
13
16
|
(0, _react.useEffect)(() => {
|
|
14
17
|
if (isElectronApp) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
try {
|
|
19
|
+
const signal = window.electron.listener.illegalKeysCombinationDetected(illegalKeysClickHandler);
|
|
20
|
+
return () => {
|
|
21
|
+
window.electron.listener.removeListener(signal, illegalKeysClickHandler);
|
|
22
|
+
};
|
|
23
|
+
} catch (e) {
|
|
24
|
+
console.error(e);
|
|
25
|
+
}
|
|
22
26
|
}
|
|
23
27
|
}, [isElectronApp]);
|
|
24
28
|
return keysClickedCount;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useCleanupPermissions = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _permission = require("../utils/permission");
|
|
9
|
+
const useCleanupPermissions = _ref => {
|
|
10
|
+
let {
|
|
11
|
+
proctoredContext
|
|
12
|
+
} = _ref;
|
|
13
|
+
const {
|
|
14
|
+
references,
|
|
15
|
+
screenshareStream,
|
|
16
|
+
permissionSetter,
|
|
17
|
+
streamSetter,
|
|
18
|
+
allPermissionGrantedOnce
|
|
19
|
+
} = (0, _react.useContext)(proctoredContext);
|
|
20
|
+
const cleanupPermissions = () => {
|
|
21
|
+
const screenShareReference = references.screenshareReference;
|
|
22
|
+
const setScreensharePermission = permissionSetter.screenshare;
|
|
23
|
+
const setScreenshareStream = streamSetter.screenshare;
|
|
24
|
+
(0, _permission.stopScreenshare)(screenshareStream, setScreensharePermission, screenShareReference, setScreenshareStream);
|
|
25
|
+
allPermissionGrantedOnce.current = false;
|
|
26
|
+
(0, _permission.exitFullscreen)();
|
|
27
|
+
};
|
|
28
|
+
return cleanupPermissions;
|
|
29
|
+
};
|
|
30
|
+
exports.useCleanupPermissions = useCleanupPermissions;
|
|
@@ -18,7 +18,8 @@ const useTrackBreachParameters = _ref => {
|
|
|
18
18
|
getProctorParamValues,
|
|
19
19
|
proctoringIdentifier,
|
|
20
20
|
proctorParams,
|
|
21
|
-
permissions
|
|
21
|
+
permissions,
|
|
22
|
+
allPermissionGrantedOnce
|
|
22
23
|
} = _ref;
|
|
23
24
|
const statistics = (0, _react.useRef)((0, _breachUtils.getInitialStats)(proctorParams));
|
|
24
25
|
const {
|
|
@@ -65,7 +66,7 @@ const useTrackBreachParameters = _ref => {
|
|
|
65
66
|
};
|
|
66
67
|
const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
|
|
67
68
|
(0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
|
|
68
|
-
if (breachData) {
|
|
69
|
+
if (breachData && allPermissionGrantedOnce.current) {
|
|
69
70
|
sendProctoredParamValues(true, breachData.breachedParam);
|
|
70
71
|
}
|
|
71
72
|
previousIllegalKeysCombinationCount.current = illegalKeysCombinationCount;
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "ProctoredContextApp", {
|
|
|
15
15
|
return _components.ProctoredContextApp;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "useCleanupPermissions", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _useCleanupPermissions.useCleanupPermissions;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "useIsElectron", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function get() {
|
|
@@ -23,4 +29,5 @@ Object.defineProperty(exports, "useIsElectron", {
|
|
|
23
29
|
});
|
|
24
30
|
var _components = require("./components");
|
|
25
31
|
var _useIsElectron = _interopRequireDefault(require("./hooks/electron/useIsElectron"));
|
|
32
|
+
var _useCleanupPermissions = require("./hooks/useCleanupPermissions");
|
|
26
33
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -74,7 +74,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
const illegalKeyCombinationDetectedParam = _defaults.STATS_PARAMS.illegalKeysCombinationDetected;
|
|
77
|
-
if (proctorParams.illegalKeysCombinationDetected && isIllegalKeysCombinationDetected
|
|
77
|
+
if (proctorParams.illegalKeysCombinationDetected && isIllegalKeysCombinationDetected) {
|
|
78
78
|
return {
|
|
79
79
|
breachedParam: illegalKeyCombinationDetectedParam,
|
|
80
80
|
timestamp,
|
package/dist/utils/permission.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.hasAllPermissions = void 0;
|
|
6
|
+
exports.stopScreenshare = exports.hasAllPermissions = exports.exitFullscreen = void 0;
|
|
7
7
|
const hasAllPermissions = (requiredPermissions, permissions) => {
|
|
8
8
|
let hasPermission = true;
|
|
9
9
|
requiredPermissions.forEach(element => {
|
|
@@ -15,4 +15,32 @@ const hasAllPermissions = (requiredPermissions, permissions) => {
|
|
|
15
15
|
});
|
|
16
16
|
return hasPermission;
|
|
17
17
|
};
|
|
18
|
-
exports.hasAllPermissions = hasAllPermissions;
|
|
18
|
+
exports.hasAllPermissions = hasAllPermissions;
|
|
19
|
+
const exitFullscreen = () => {
|
|
20
|
+
if (!document) return;
|
|
21
|
+
if (document.exitFullscreen) {
|
|
22
|
+
var _document;
|
|
23
|
+
(_document = document) === null || _document === void 0 ? void 0 : _document.exitFullscreen();
|
|
24
|
+
} else if (document.mozCancelFullScreen) {
|
|
25
|
+
var _document2;
|
|
26
|
+
(_document2 = document) === null || _document2 === void 0 ? void 0 : _document2.mozCancelFullScreen();
|
|
27
|
+
} else if (document.webkitExitFullscreen) {
|
|
28
|
+
var _document3;
|
|
29
|
+
(_document3 = document) === null || _document3 === void 0 ? void 0 : _document3.webkitExitFullscreen();
|
|
30
|
+
} else if (document.msExitFullscreen) {
|
|
31
|
+
var _document4;
|
|
32
|
+
(_document4 = document) === null || _document4 === void 0 ? void 0 : _document4.msExitFullscreen();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.exitFullscreen = exitFullscreen;
|
|
36
|
+
const stopScreenshare = (screenshareStream, setScreensharePermission, screenshareReference, setScreenshareStream) => {
|
|
37
|
+
if (screenshareStream) {
|
|
38
|
+
screenshareStream.getTracks().forEach(track => track.stop());
|
|
39
|
+
if (screenshareReference.current) {
|
|
40
|
+
screenshareReference.current.srcObject = null;
|
|
41
|
+
}
|
|
42
|
+
setScreenshareStream(null);
|
|
43
|
+
setScreensharePermission(false);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.stopScreenshare = stopScreenshare;
|