diff --git a/ui/src/App.tsx b/ui/src/App.tsx index 99cf033..2ce645e 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -1,35 +1,52 @@ -import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; -import { LoginPage } from "./pages/login"; -import { SignUpPage } from "./pages/signup"; -import { ThemeProvider } from "./contexts/ThemeContext"; +import { + BrowserRouter as Router, + Routes, + Route, + useLocation, +} from "react-router-dom"; +import { LoginPage } from "@ui/pages/login"; +import { SignUpPage } from "@ui/pages/signup"; +import { ThemeProvider } from "@ui/contexts/ThemeContext"; import { twMerge } from "tailwind-merge"; -import { ResetPasswordPage } from "./pages/reset-password"; -import { LandingPage } from "./pages/landing"; -import { PublicRoute } from "./components/PublicRoute"; -import { TabloPage } from "./pages/tablo"; -import { SessionProvider } from "./contexts/SessionContext"; -import { OAuthSigninPage } from "./pages/oauth-signin"; -import { NotFoundPage } from "./pages/NotFoundPage"; -import { Layout } from "./components/Layout"; -import { DevisPage } from "./pages/devis"; -import { FacturesPage } from "./pages/factures"; -import { PlanningPage } from "./pages/planning"; -import { ChantiersPage } from "./pages/chantiers"; -import { ChatPage } from "./pages/chat"; -import { FeedbackPage } from "./pages/feedback"; -import { SupportPage } from "./pages/support"; +import { ResetPasswordPage } from "@ui/pages/reset-password"; +import { LandingPage } from "@ui/pages/landing"; +import { PublicRoute } from "@ui/components/PublicRoute"; +import { TabloPage } from "@ui/pages/tablo"; +import { SessionProvider } from "@ui/contexts/SessionContext"; +import { OAuthSigninPage } from "@ui/pages/oauth-signin"; +import { NotFoundPage } from "@ui/pages/NotFoundPage"; +import { Layout } from "@ui/components/Layout"; +import { DevisPage } from "@ui/pages/devis"; +import { FacturesPage } from "@ui/pages/factures"; +import { PlanningPage } from "@ui/pages/planning"; +import { ChantiersPage } from "@ui/pages/chantiers"; +import { ChatPage } from "@ui/pages/chat"; +import { FeedbackPage } from "@ui/pages/feedback"; +import { SupportPage } from "@ui/pages/support"; import { AllCommunityModule, ModuleRegistry } from "ag-grid-community"; -import ChatProvider from "./providers/ChatProvider"; -import { UserStoreProvider } from "./providers/UserStoreProvider"; -import { ProtectedRoute } from "./components/ProtectedRoute"; +import ChatProvider from "@ui/providers/ChatProvider"; +import { UserStoreProvider } from "@ui/providers/UserStoreProvider"; +import { ProtectedRoute } from "@ui/components/ProtectedRoute"; import { JoinPage } from "@ui/pages/join"; -import { CreateEventModal } from "./components/CreateEventModal"; -import { isProd } from "./utils/helpers"; +import { CreateEventModal } from "@ui/components/CreateEventModal"; +import { isProd } from "@ui/utils/helpers"; +import { useEffect } from "react"; +import { datadogRum } from "@datadog/browser-rum"; +import { initRum } from "@ui/lib/rum"; // Register all Community features ModuleRegistry.registerModules([AllCommunityModule]); export const App = () => { + const location = useLocation(); + useEffect(() => { + initRum(); + datadogRum.setGlobalContext({ + location: location.pathname, + }); + datadogRum.startSessionReplayRecording(); + }, [location]); + return ( diff --git a/ui/src/lib/rum.ts b/ui/src/lib/rum.ts new file mode 100644 index 0000000..c3fbb7b --- /dev/null +++ b/ui/src/lib/rum.ts @@ -0,0 +1,19 @@ +import { datadogRum } from "@datadog/browser-rum"; +import { reactPlugin } from "@datadog/browser-rum-react"; + +export const initRum = () => { + datadogRum.init({ + applicationId: "8e268e1a-1be0-44c6-b12a-978530d497c7", + clientToken: "pub1761af09ab04e215cc90d34da6ac576b", + site: "datadoghq.com", + service: "xtablo-ui", + env: import.meta.env.MODE, + + // Specify a version number to identify the deployed version of your application in Datadog + // version: '1.0.0', + sessionSampleRate: 100, + sessionReplaySampleRate: 80, + defaultPrivacyLevel: "mask-user-input", + plugins: [reactPlugin({ router: true })], + }); +}; diff --git a/ui/src/main.tsx b/ui/src/main.tsx index 81772af..f0d44aa 100644 --- a/ui/src/main.tsx +++ b/ui/src/main.tsx @@ -4,27 +4,10 @@ import { App } from "./App"; import { QueryClientProvider } from "@tanstack/react-query"; import { queryClient } from "./lib/api"; import { GlobalToastRegion } from "./ui-library/toast/toast-region"; -import { datadogRum } from "@datadog/browser-rum"; -import { reactPlugin } from "@datadog/browser-rum-react"; import "stream-chat-react/dist/css/v2/index.css"; import "./main.css"; -datadogRum.init({ - applicationId: "8e268e1a-1be0-44c6-b12a-978530d497c7", - clientToken: "pub1761af09ab04e215cc90d34da6ac576b", - site: "datadoghq.com", - service: "xtablo-ui", - env: "staging", - - // Specify a version number to identify the deployed version of your application in Datadog - // version: '1.0.0', - sessionSampleRate: 100, - sessionReplaySampleRate: 80, - defaultPrivacyLevel: "mask-user-input", - plugins: [reactPlugin({ router: true })], -}); - createRoot(document.getElementById("root")!).render(