FPSMS-frontend
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

27 lines
671 B

  1. "use client";
  2. import { CameraDevice, Html5Qrcode } from "html5-qrcode";
  3. import React, { createContext, useContext, useEffect, useState } from "react";
  4. export const CameraContext = createContext<CameraDevice[]>([]);
  5. export const CameraProvider: React.FC<{ children: React.ReactNode }> = ({
  6. children,
  7. }) => {
  8. const [cameras, setCameras] = useState<CameraDevice[]>([]);
  9. useEffect(() => {
  10. const fetchCameras = async () => {
  11. const res = await Html5Qrcode.getCameras();
  12. if (res) {
  13. setCameras(res);
  14. }
  15. };
  16. fetchCameras();
  17. }, []);
  18. return (
  19. <CameraContext.Provider value={cameras}>{children}</CameraContext.Provider>
  20. );
  21. };