mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
feat(builder): add page view tracking
This commit is contained in:
@@ -5,12 +5,15 @@ import { ThemeProvider as NextThemesProvider } from "next-themes";
|
||||
import { ThemeProviderProps } from "next-themes/dist/types";
|
||||
import { TooltipProvider } from "@/components/ui/tooltip";
|
||||
import SupabaseProvider from "@/components/SupabaseProvider";
|
||||
import { PageViewProvider } from "@/components/providers/PageViewProvider";
|
||||
|
||||
export function Providers({ children, ...props }: ThemeProviderProps) {
|
||||
return (
|
||||
<NextThemesProvider {...props}>
|
||||
<SupabaseProvider>
|
||||
<TooltipProvider>{children}</TooltipProvider>
|
||||
<PageViewProvider>
|
||||
<TooltipProvider>{children}</TooltipProvider>
|
||||
</PageViewProvider>
|
||||
</SupabaseProvider>
|
||||
</NextThemesProvider>
|
||||
);
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
import React, { createContext, useContext, useEffect } from 'react';
|
||||
import logPageViewAction from './actions';
|
||||
|
||||
const PageViewContext = createContext<null>(null);
|
||||
|
||||
export const PageViewProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
||||
|
||||
useEffect(() => {
|
||||
const logPageView = async () => {
|
||||
const pageViewData = { page: window.location.pathname, data: {} };
|
||||
await logPageViewAction(pageViewData.page, pageViewData.data);
|
||||
};
|
||||
|
||||
logPageView().catch(console.error);
|
||||
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<PageViewContext.Provider value={null}>
|
||||
{children}
|
||||
</PageViewContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export const usePageViews = () => useContext(PageViewContext);
|
||||
6
rnd/autogpt_builder/src/components/providers/actions.ts
Normal file
6
rnd/autogpt_builder/src/components/providers/actions.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import AutoGPTServerAPI from "@/lib/autogpt-server-api/client";
|
||||
|
||||
export default function logPageViewAction(page: string, data: any) {
|
||||
const apiClient = new AutoGPTServerAPI();
|
||||
apiClient.logPageView({ page, data });
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
User,
|
||||
UserData,
|
||||
TutorialStepData,
|
||||
PageViewData,
|
||||
} from "./types";
|
||||
|
||||
export default class AutoGPTServerAPI {
|
||||
@@ -43,6 +44,12 @@ export default class AutoGPTServerAPI {
|
||||
return this._request("POST", "/analytics/log_tutorial_step", data);
|
||||
}
|
||||
|
||||
async logPageView(pageViewData: PageViewData): Promise<string> {
|
||||
return this._request("POST", "/analytics/log_page_view", {
|
||||
page_view_data: pageViewData,
|
||||
});
|
||||
}
|
||||
|
||||
async getBlocks(): Promise<Block[]> {
|
||||
return await this._get("/blocks");
|
||||
}
|
||||
|
||||
@@ -194,3 +194,8 @@ export type TutorialStepData = {
|
||||
step: string;
|
||||
data: { [key: string]: any };
|
||||
};
|
||||
|
||||
export type PageViewData = {
|
||||
page: string;
|
||||
data: { [key: string]: any };
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user