@newtonschool/react_proctoring_library 0.0.134 → 0.0.135

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 proctoringSessionId = (0, _react.useMemo)(() => {
81
+ const {
82
+ proctoredEntityType,
83
+ proctoredEntityHash
84
+ } = permissionPassedProps;
85
+ if (!proctoredEntityType || !proctoredEntityHash) {
86
+ return null;
87
+ }
88
+ return "".concat(proctoredEntityType, "-").concat(proctoredEntityHash);
89
+ }, [permissionPassedProps]);
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: 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: 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 primaryDeviceRef = ref(firebaseClient.myFirebaseDB, "".concat(_defaults.PROCTORING_STATUS_PATH, "/").concat(firebaseClient.userUuid, "/primaryDevice"));
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 secondaryDeviceRef = ref(firebaseClient.myFirebaseDB, "".concat(_defaults.PROCTORING_STATUS_PATH, "/").concat(firebaseClient.userUuid, "/secondaryDevice"));
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(_defaults.PROCTORING_STATUS_PATH, "/").concat(firebaseClient.userUuid, "/").concat(deviceKey));
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 primaryDeviceStatusRef = ref(myFirebaseDB, "".concat(_defaults.PROCTORING_STATUS_PATH, "/").concat(userUuid, "/primaryDevice"));
136
- const secondaryDeviceStatusRef = ref(myFirebaseDB, "".concat(_defaults.PROCTORING_STATUS_PATH, "/").concat(userUuid, "/secondaryDevice"));
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');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newtonschool/react_proctoring_library",
3
- "version": "0.0.134",
3
+ "version": "0.0.135",
4
4
  "description": "Used to proctor online tests",
5
5
  "author": "ayushkagrawal,shreyachandra,weastel",
6
6
  "main": "dist/index.js",