diff --git a/react-app/src/navigation/AppRouter.tsx b/react-app/src/navigation/AppRouter.tsx
index cc673761..62c01726 100644
--- a/react-app/src/navigation/AppRouter.tsx
+++ b/react-app/src/navigation/AppRouter.tsx
@@ -12,51 +12,55 @@ import AppScaffold from "../components/AppScaffold/AppScaffold";
import ProposalDetailRouter from "../components/ProposalDetailScreen/ProposalDetailRouter";
import ValidatorDetailScreen from "../components/ValidatorDetailScreen/ValidatorDetailScreen";
import ValidatorScreen from "../components/ValidatorScreen/ValidatorScreen";
+import Config from "../config/Config";
import AppRoutes from "./AppRoutes";
+import RouterAnalytics from "./RouterAnalytics";
const AppRouter: React.FC = () => {
const wallet = useWallet();
return (
-
- }>
- } />
- } />
- } />
- } />
- }
- />
- }
- />
+
+
+ }>
+ } />
+ } />
+ } />
+ } />
+ }
+ />
+ }
+ />
+ }
+ />
+ } />
+ }
+ />
+
+
}
+ path={AppRoutes.NotFound}
+ element={}
/>
- } />
}
+ path={AppRoutes.ErrorInvalidAddress}
+ element={}
/>
-
-
- }
- />
- }
- />
- } />
-
+ } />
+
- {wallet.status === ConnectionStatus.Connecting && (
-
- )}
+ {wallet.status === ConnectionStatus.Connecting && (
+
+ )}
+
);
};
diff --git a/react-app/src/navigation/RouterAnalytics.tsx b/react-app/src/navigation/RouterAnalytics.tsx
new file mode 100644
index 00000000..56d9fc95
--- /dev/null
+++ b/react-app/src/navigation/RouterAnalytics.tsx
@@ -0,0 +1,35 @@
+import React, { useEffect, useState } from "react";
+import * as ReactGA from "react-ga";
+import { useLocation } from "react-router-dom";
+import { useEffectOnce } from "../hooks/useEffectOnce";
+
+interface RouterAnalyticsProps {
+ id: string | null;
+ children: React.ReactNode;
+}
+
+const RouterAnalytics: React.FC = (props) => {
+ const { id, children } = props;
+ const location = useLocation();
+ const [isInitialized, setIsInitialized] = useState(false);
+
+ useEffect(() => {
+ if (!isInitialized) return;
+
+ ReactGA.pageview(location.pathname + location.search);
+ }, [location, isInitialized]);
+
+ useEffectOnce(
+ () => {
+ if (id) {
+ ReactGA.initialize(id);
+ }
+ setIsInitialized(true);
+ },
+ () => true
+ );
+
+ return <>{children}>;
+};
+
+export default RouterAnalytics;