import {SafeAreaView} from "react-native-safe-area-context"; import {Button, Colors, Dialog, LoaderScreen, Text, View} from "react-native-ui-lib"; import React, {useCallback, useState} from "react"; import {useRouter} from "expo-router"; import QRIcon from "@/assets/svgs/QRIcon"; import {Camera, CameraView} from "expo-camera"; import {useLoginWithQrCode} from "@/hooks/firebase/useLoginWithQrCode"; import {useAuthContext} from "@/contexts/AuthContext"; import debounce from "debounce"; export default function Screen() { const router = useRouter() const {setRedirectOverride} = useAuthContext() const [hasPermission, setHasPermission] = useState(null); const [showCameraDialog, setShowCameraDialog] = useState(false); const {mutateAsync: signInWithQrCode, isLoading} = useLoginWithQrCode(); const debouncedRouterReplace = useCallback( debounce(() => { router.push("/(unauth)/cal_sync"); }, 300), [] ); const handleQrCodeScanned = async ({data}: { data: string }) => { setShowCameraDialog(false); setRedirectOverride(true); try { await signInWithQrCode({userId: data}); debouncedRouterReplace() } catch (err) { console.log(err) } }; const getCameraPermissions = async (callback: () => void) => { const {status} = await Camera.requestCameraPermissionsAsync(); setHasPermission(status === "granted"); if (status === "granted") { callback(); } }; const handleOpenQrCodeDialog = () => { getCameraPermissions(() => setShowCameraDialog(true)); } return ( Get started with Cally