This commit is contained in:
Aslam
2024-09-05 06:19:03 +07:00
committed by GitHub
parent c8c0c86c96
commit 73abce0c2b
2 changed files with 48 additions and 10 deletions

View File

@@ -8,6 +8,7 @@ import { ClerkProviderClient } from "@/components/custom/clerk/clerk-provider-cl
import { JotaiProvider } from "@/lib/providers/jotai-provider"
import { Toaster } from "@/components/ui/sonner"
import { ConfirmProvider } from "@/lib/providers/confirm-provider"
import { DeepLinkProvider } from "@/lib/providers/deep-link-provider"
const fontSans = FontSans({
subsets: ["latin"],
@@ -27,16 +28,18 @@ export default function RootLayout({
return (
<html lang="en" className="h-full w-full" suppressHydrationWarning>
<ClerkProviderClient>
<body className={cn("h-full w-full font-sans antialiased", fontSans.variable)}>
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
<JotaiProvider>
<ConfirmProvider>
{children}
<Toaster expand={false} />
</ConfirmProvider>
</JotaiProvider>
</ThemeProvider>
</body>
<DeepLinkProvider>
<body className={cn("h-full w-full font-sans antialiased", fontSans.variable)}>
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
<JotaiProvider>
<ConfirmProvider>
{children}
<Toaster expand={false} />
</ConfirmProvider>
</JotaiProvider>
</ThemeProvider>
</body>
</DeepLinkProvider>
</ClerkProviderClient>
</html>
)

View File

@@ -0,0 +1,35 @@
"use client"
import React, { useEffect, ReactNode } from "react"
interface DeepLinkProviderProps {
children: ReactNode
}
export function DeepLinkProvider({ children }: DeepLinkProviderProps) {
useEffect(() => {
const eventHandlers: { [key: string]: (event: Event) => void } = {
click: (event: Event) => {
const e = event as MouseEvent
console.log("Click event:", { x: e.clientX, y: e.clientY })
},
keydown: (event: Event) => {
const e = event as KeyboardEvent
console.log("Keydown event:", { key: e.key, code: e.code })
}
}
// just a react thing
Object.entries(eventHandlers).forEach(([eventType, handler]) => {
window.addEventListener(eventType, handler)
})
return () => {
Object.entries(eventHandlers).forEach(([eventType, handler]) => {
window.removeEventListener(eventType, handler)
})
}
}, [])
return <>{children}</>
}