@newtonschool/react_proctoring_library 0.0.134 → 0.0.137
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.
|
@@ -77,6 +77,24 @@ const ProctorApp = _ref => {
|
|
|
77
77
|
return releaseWakeUpLock;
|
|
78
78
|
}, []);
|
|
79
79
|
const CustomPermissionView = customPermissionView;
|
|
80
|
+
const {
|
|
81
|
+
parentProctoredEntityType: proctoredEntityType,
|
|
82
|
+
parentProctoredEntityHash: proctoredEntityHash
|
|
83
|
+
} = permissionPassedProps;
|
|
84
|
+
const proctoringSessionId = (0, _react.useMemo)(() => {
|
|
85
|
+
if (!proctoredEntityType || !proctoredEntityHash) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return "".concat(proctoredEntityType, "-").concat(proctoredEntityHash);
|
|
89
|
+
}, [proctoredEntityType, proctoredEntityHash]);
|
|
90
|
+
const sessionScopedFirebaseClient = (0, _react.useMemo)(() => {
|
|
91
|
+
if (!firebaseClient) {
|
|
92
|
+
return firebaseClient;
|
|
93
|
+
}
|
|
94
|
+
return _objectSpread(_objectSpread({}, firebaseClient), {}, {
|
|
95
|
+
proctoringSessionId
|
|
96
|
+
});
|
|
97
|
+
}, [firebaseClient, proctoringSessionId]);
|
|
80
98
|
const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
|
|
81
99
|
const shouldShowProctoredComponent = (0, _react.useMemo)(() => (0, _breachUtils.showProctoredComponent)(proctorParams, permissions), [proctorParams, permissions, _breachUtils.showProctoredComponent]);
|
|
82
100
|
const allPermissionsGrantedCallback = () => {
|
|
@@ -133,7 +151,7 @@ const ProctorApp = _ref => {
|
|
|
133
151
|
permissions: permissions,
|
|
134
152
|
proctoredContext: proctoredContext,
|
|
135
153
|
isSecondaryDevice: isSecondaryDevice,
|
|
136
|
-
firebaseClient:
|
|
154
|
+
firebaseClient: sessionScopedFirebaseClient,
|
|
137
155
|
allPermissionGranted: allPermissionGrantedOnce.current
|
|
138
156
|
}), proctorParams.webcamSnapshots && /*#__PURE__*/(0, _jsxRuntime.jsx)(_webcamActivityTracker.default, {
|
|
139
157
|
logger: logger,
|
|
@@ -143,7 +161,7 @@ const ProctorApp = _ref => {
|
|
|
143
161
|
getWebcamSnapshot: getWebcamSnapshot,
|
|
144
162
|
proctoringIdentifier: proctoringIdentifier,
|
|
145
163
|
setAskPermissionAction: setAskPermissionAction,
|
|
146
|
-
firebaseClient:
|
|
164
|
+
firebaseClient: sessionScopedFirebaseClient,
|
|
147
165
|
isSecondaryDevice: isSecondaryDevice
|
|
148
166
|
}), proctorParams.screenshareSnapshots && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screenshareActivityTracker.default, {
|
|
149
167
|
config: config,
|
|
@@ -10,7 +10,19 @@ const OTHER_DEVICE_HEARTBEAT_TIMEOUT_MS = 20000;
|
|
|
10
10
|
const SERVER_TIMESTAMP = {
|
|
11
11
|
'.sv': 'timestamp'
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
const getProctoringStatusBasePath = function getProctoringStatusBasePath() {
|
|
14
|
+
let {
|
|
15
|
+
userUuid,
|
|
16
|
+
proctoringSessionId
|
|
17
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
18
|
+
if (!userUuid) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
if (proctoringSessionId) {
|
|
22
|
+
return "".concat(_defaults.PROCTORING_STATUS_PATH, "/").concat(userUuid, "/").concat(proctoringSessionId);
|
|
23
|
+
}
|
|
24
|
+
return "".concat(_defaults.PROCTORING_STATUS_PATH, "/").concat(userUuid);
|
|
25
|
+
};
|
|
14
26
|
/**
|
|
15
27
|
* Marks the primary device as connected in Firebase. Call when desktop webcam
|
|
16
28
|
* connects successfully. No-op if firebaseClient is missing required fields.
|
|
@@ -26,7 +38,11 @@ const setPrimaryDeviceConnected = firebaseClient => {
|
|
|
26
38
|
updateValue: update,
|
|
27
39
|
getRef: ref
|
|
28
40
|
} = firebaseClient;
|
|
29
|
-
const
|
|
41
|
+
const statusBasePath = getProctoringStatusBasePath(firebaseClient);
|
|
42
|
+
if (!statusBasePath) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const primaryDeviceRef = ref(firebaseClient.myFirebaseDB, "".concat(statusBasePath, "/primaryDevice"));
|
|
30
46
|
const payload = {
|
|
31
47
|
connected: true
|
|
32
48
|
};
|
|
@@ -51,7 +67,11 @@ const setSecondaryDeviceConnected = firebaseClient => {
|
|
|
51
67
|
updateValue: update,
|
|
52
68
|
getRef: ref
|
|
53
69
|
} = firebaseClient;
|
|
54
|
-
const
|
|
70
|
+
const statusBasePath = getProctoringStatusBasePath(firebaseClient);
|
|
71
|
+
if (!statusBasePath) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
const secondaryDeviceRef = ref(firebaseClient.myFirebaseDB, "".concat(statusBasePath, "/secondaryDevice"));
|
|
55
75
|
const payload = {
|
|
56
76
|
connected: true
|
|
57
77
|
};
|
|
@@ -84,8 +104,12 @@ const updateCurrentDeviceStatus = _ref => {
|
|
|
84
104
|
updateValue: update,
|
|
85
105
|
getRef: ref
|
|
86
106
|
} = firebaseClient;
|
|
107
|
+
const statusBasePath = getProctoringStatusBasePath(firebaseClient);
|
|
108
|
+
if (!statusBasePath) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
87
111
|
const deviceKey = isSecondaryDevice ? 'secondaryDevice' : 'primaryDevice';
|
|
88
|
-
const deviceStatusRef = ref(firebaseClient.myFirebaseDB, "".concat(
|
|
112
|
+
const deviceStatusRef = ref(firebaseClient.myFirebaseDB, "".concat(statusBasePath, "/").concat(deviceKey));
|
|
89
113
|
const payload = {
|
|
90
114
|
allPermissionGranted
|
|
91
115
|
};
|
|
@@ -122,6 +146,7 @@ const setupDeviceStatusListeners = _ref2 => {
|
|
|
122
146
|
const {
|
|
123
147
|
userUuid,
|
|
124
148
|
firestoreAuthStatus,
|
|
149
|
+
proctoringSessionId,
|
|
125
150
|
myFirebaseDB,
|
|
126
151
|
setValue: set,
|
|
127
152
|
getRef: ref,
|
|
@@ -132,8 +157,15 @@ const setupDeviceStatusListeners = _ref2 => {
|
|
|
132
157
|
if (!userUuid || !firestoreAuthStatus || !ref || !set || !onDisconnect || !onValue) {
|
|
133
158
|
return () => {};
|
|
134
159
|
}
|
|
135
|
-
const
|
|
136
|
-
|
|
160
|
+
const statusBasePath = getProctoringStatusBasePath({
|
|
161
|
+
userUuid,
|
|
162
|
+
proctoringSessionId
|
|
163
|
+
});
|
|
164
|
+
if (!statusBasePath) {
|
|
165
|
+
return () => {};
|
|
166
|
+
}
|
|
167
|
+
const primaryDeviceStatusRef = ref(myFirebaseDB, "".concat(statusBasePath, "/primaryDevice"));
|
|
168
|
+
const secondaryDeviceStatusRef = ref(myFirebaseDB, "".concat(statusBasePath, "/secondaryDevice"));
|
|
137
169
|
const currentDeviceStatusRef = isSecondaryDevice ? secondaryDeviceStatusRef : primaryDeviceStatusRef;
|
|
138
170
|
const otherDeviceStatusRef = isSecondaryDevice ? primaryDeviceStatusRef : secondaryDeviceStatusRef;
|
|
139
171
|
const serverTimeOffsetRef = ref(myFirebaseDB, '.info/serverTimeOffset');
|