@monkvision/camera-web 5.0.21 → 5.0.22

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.
@@ -203,16 +203,17 @@ function useUserMedia(constraints, videoRef) {
203
203
  var _e = (0, react_1.useState)([]), availableCameraDevices = _e[0], setAvailableCameraDevices = _e[1];
204
204
  var _f = (0, react_1.useState)(null), selectedCameraDeviceId = _f[0], setSelectedCameraDeviceId = _f[1];
205
205
  var _g = (0, react_1.useState)(null), lastConstraintsApplied = _g[0], setLastConstraintsApplied = _g[1];
206
+ var lastGetUserMediaTimeRef = (0, react_1.useRef)(null);
206
207
  var handleError = (0, monitoring_1.useMonitoring)().handleError;
207
208
  var isMounted = (0, common_1.useIsMounted)();
208
209
  var handleGetUserMediaError = function (err, permissionState) {
209
210
  var type = UserMediaErrorType.OTHER;
210
211
  if (err instanceof Error && err.name === 'NotAllowedError') {
211
212
  switch (permissionState) {
212
- case 'denied':
213
+ case 'prompt':
213
214
  type = UserMediaErrorType.WEBPAGE_NOT_ALLOWED;
214
215
  break;
215
- case 'granted':
216
+ case 'denied':
216
217
  type = UserMediaErrorType.BROWSER_NOT_ALLOWED;
217
218
  break;
218
219
  default:
@@ -297,27 +298,35 @@ function useUserMedia(constraints, videoRef) {
297
298
  }
298
299
  setLastConstraintsApplied(constraints);
299
300
  var effect = function () { return __awaiter(_this, void 0, void 0, function () {
300
- var err_2, permissionState;
301
- var _a, _b;
302
- return __generator(this, function (_c) {
303
- switch (_c.label) {
301
+ var err_2, isCameraPermissionDenied, permissionState, _a;
302
+ var _b, _c;
303
+ return __generator(this, function (_d) {
304
+ switch (_d.label) {
304
305
  case 0:
305
- _c.trys.push([0, 2, , 4]);
306
+ _d.trys.push([0, 2, , 6]);
307
+ lastGetUserMediaTimeRef.current = Date.now();
306
308
  return [4 /*yield*/, getUserMedia()];
307
309
  case 1:
308
- _c.sent();
309
- return [3 /*break*/, 4];
310
+ _d.sent();
311
+ return [3 /*break*/, 6];
310
312
  case 2:
311
- err_2 = _c.sent();
312
- return [4 /*yield*/, getCameraPermissionState()];
313
- case 3:
314
- permissionState = (_b = (_a = (_c.sent())) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : null;
313
+ err_2 = _d.sent();
314
+ isCameraPermissionDenied = lastGetUserMediaTimeRef.current && Date.now() - lastGetUserMediaTimeRef.current < 100;
315
+ if (!isCameraPermissionDenied) return [3 /*break*/, 3];
316
+ _a = 'denied';
317
+ return [3 /*break*/, 5];
318
+ case 3: return [4 /*yield*/, getCameraPermissionState()];
319
+ case 4:
320
+ _a = (_c = (_b = (_d.sent())) === null || _b === void 0 ? void 0 : _b.state) !== null && _c !== void 0 ? _c : null;
321
+ _d.label = 5;
322
+ case 5:
323
+ permissionState = _a;
315
324
  if (err_2 && isMounted()) {
316
325
  handleGetUserMediaError(err_2, permissionState);
317
326
  throw err_2;
318
327
  }
319
- return [3 /*break*/, 4];
320
- case 4: return [2 /*return*/];
328
+ return [3 /*break*/, 6];
329
+ case 6: return [2 /*return*/];
321
330
  }
322
331
  });
323
332
  }); };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monkvision/camera-web",
3
- "version": "5.0.21",
3
+ "version": "5.0.22",
4
4
  "license": "BSD-3-Clause-Clear",
5
5
  "packageManager": "yarn@3.2.4",
6
6
  "description": "MonkJs camera package for React (web) used to display a camera preview and take pictures",
@@ -28,9 +28,9 @@
28
28
  "lint:fix": "yarn run prettier:fix && yarn run eslint:fix"
29
29
  },
30
30
  "dependencies": {
31
- "@monkvision/common": "5.0.21",
32
- "@monkvision/common-ui-web": "5.0.21",
33
- "@monkvision/monitoring": "5.0.21",
31
+ "@monkvision/common": "5.0.22",
32
+ "@monkvision/common-ui-web": "5.0.22",
33
+ "@monkvision/monitoring": "5.0.22",
34
34
  "fast-deep-equal": "^3.1.3",
35
35
  "i18next": "^23.4.5",
36
36
  "react-i18next": "^13.2.0"
@@ -42,13 +42,13 @@
42
42
  "react-router-dom": "^6.22.3"
43
43
  },
44
44
  "devDependencies": {
45
- "@monkvision/eslint-config-base": "5.0.21",
46
- "@monkvision/eslint-config-typescript": "5.0.21",
47
- "@monkvision/eslint-config-typescript-react": "5.0.21",
48
- "@monkvision/jest-config": "5.0.21",
49
- "@monkvision/prettier-config": "5.0.21",
50
- "@monkvision/test-utils": "5.0.21",
51
- "@monkvision/typescript-config": "5.0.21",
45
+ "@monkvision/eslint-config-base": "5.0.22",
46
+ "@monkvision/eslint-config-typescript": "5.0.22",
47
+ "@monkvision/eslint-config-typescript-react": "5.0.22",
48
+ "@monkvision/jest-config": "5.0.22",
49
+ "@monkvision/prettier-config": "5.0.22",
50
+ "@monkvision/test-utils": "5.0.22",
51
+ "@monkvision/typescript-config": "5.0.22",
52
52
  "@testing-library/react": "^12.1.5",
53
53
  "@testing-library/react-hooks": "^8.0.1",
54
54
  "@types/fscreen": "^1.0.1",
@@ -90,5 +90,5 @@
90
90
  "url": "https://github.com/monkvision/monkjs/issues"
91
91
  },
92
92
  "homepage": "https://github.com/monkvision/monkjs",
93
- "gitHead": "cd5e702c63e437dcd6daf445ba2b28294b8c03da"
93
+ "gitHead": "a247bce658ecb086070158973a2e30ca420f0713"
94
94
  }