react-mic-cam-permissions
Version:
Managing camera and microphone permissions with React
33 lines (32 loc) • 1.92 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import React, { useState } from 'react';
import { useCameraPermission } from '../hooks/useCameraPermission';
export const CameraPermissionButton = () => {
const { permissionState, requestPermission } = useCameraPermission();
const [message, setMessage] = useState(null);
const handleClick = () => __awaiter(void 0, void 0, void 0, function* () {
if (typeof window !== 'undefined') {
const state = yield requestPermission();
if (state === 'granted') {
setMessage(null); // Clear any previous messages
}
else if (state === 'denied') {
setMessage('Permission denied. Please enable camera permission in your browser settings.');
}
}
});
return (React.createElement("div", { className: "space-y-4" },
React.createElement("button", { className: "bg-gray-500 text-sm p-2 text-white rounded-md hover:bg-blue-600 disabled:bg-gray-400", onClick: handleClick, disabled: permissionState === 'denied' },
"Request Camera Permission (",
permissionState,
")"),
message && React.createElement("p", { className: "text-red-600" }, message)));
};