From f6f93a1161a6ca0fab7859ce33c7acfd36ab8bf6 Mon Sep 17 00:00:00 2001 From: Kyle Corbitt Date: Tue, 27 Jun 2023 00:11:07 -0700 Subject: [PATCH] trying out analytics --- Dockerfile | 2 ++ package.json | 3 ++- pnpm-lock.yaml | 13 +++++++++++++ src/env.mjs | 3 ++- src/pages/_app.tsx | 1 + src/pages/experiments/[id].tsx | 9 +++------ src/utils/analytics.ts | 13 +++++++++++++ src/utils/hooks.ts | 11 +++++++---- 8 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 src/utils/analytics.ts diff --git a/Dockerfile b/Dockerfile index 75236ae..931a29c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,6 +18,8 @@ RUN pnpm install --frozen-lockfile FROM base as builder # Include all NEXT_PUBLIC_* env vars here +ARG NEXT_PUBLIC_POSTHOG_KEY + WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . diff --git a/package.json b/package.json index 99b1cc8..0b727aa 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "prompt-lab", "type": "module", "version": "0.1.0", - "license": "AGPL", + "license": "AGPL-3.0", "scripts": { "build": "next build", "dev": "next dev", @@ -34,6 +34,7 @@ "next": "^13.4.2", "next-auth": "^4.22.1", "nextjs-routes": "^2.0.1", + "posthog-js": "^1.68.4", "react": "18.2.0", "react-dom": "18.2.0", "react-icons": "^4.10.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aba0b2c..cd86424 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,9 @@ dependencies: nextjs-routes: specifier: ^2.0.1 version: 2.0.1(next@13.4.2) + posthog-js: + specifier: ^1.68.4 + version: 1.68.4 react: specifier: 18.2.0 version: 18.2.0 @@ -3158,6 +3161,10 @@ packages: reusify: 1.0.4 dev: true + /fflate@0.4.8: + resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4163,6 +4170,12 @@ packages: source-map-js: 1.0.2 dev: false + /posthog-js@1.68.4: + resolution: {integrity: sha512-rHk4uk99nvWiDTU7P2mFdEfzFR6km0hvOpCR3tm/+F7kCJKs7QDkMblOZZHZultxM4wSNyB4neeohmnHjKYUhQ==} + dependencies: + fflate: 0.4.8 + dev: false + /preact-render-to-string@5.2.6(preact@10.15.1): resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} peerDependencies: diff --git a/src/env.mjs b/src/env.mjs index 1c9bf6c..9ebc363 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -30,7 +30,7 @@ export const env = createEnv({ * `NEXT_PUBLIC_`. */ client: { - // NEXT_PUBLIC_CLIENTVAR: z.string().min(1), + NEXT_PUBLIC_POSTHOG_KEY: z.string(), }, /** @@ -45,6 +45,7 @@ export const env = createEnv({ DISCORD_CLIENT_ID: process.env.DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET: process.env.DISCORD_CLIENT_SECRET, OPENAI_API_KEY: process.env.OPENAI_API_KEY, + NEXT_PUBLIC_POSTHOG_KEY: process.env.NEXT_PUBLIC_POSTHOG_KEY, }, /** * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 3706a1c..0f371e9 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -5,6 +5,7 @@ import { api } from "~/utils/api"; import { ChakraProvider } from "@chakra-ui/react"; import theme from "~/utils/theme"; import Favicon from "~/components/Favicon"; +import "~/utils/analytics"; const MyApp: AppType<{ session: Session | null }> = ({ Component, diff --git a/src/pages/experiments/[id].tsx b/src/pages/experiments/[id].tsx index b3219d4..3e2e4a3 100644 --- a/src/pages/experiments/[id].tsx +++ b/src/pages/experiments/[id].tsx @@ -2,7 +2,6 @@ import { Box, Breadcrumb, BreadcrumbItem, - BreadcrumbLink, Button, Center, Flex, @@ -78,11 +77,9 @@ export default function Experiment() { - - - Experiments - - + + Experiments + { return experiment; }; -export function useHandledAsyncCallback Promise>( - callback: T, +type AsyncFunction = (...args: T) => Promise; + +export function useHandledAsyncCallback( + callback: AsyncFunction, deps: React.DependencyList ) { const [loading, setLoading] = useState(false); const [error, setError] = useState(null); - const wrappedCallback = useCallback((...args: Parameters) => { + const wrappedCallback = useCallback((...args: T) => { setLoading(true); setError(null); @@ -31,7 +33,8 @@ export function useHandledAsyncCallback Promis .finally(() => { setLoading(false); }); - /* eslint-disable react-hooks/exhaustive-deps */ + + // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); return [wrappedCallback, loading, error] as const;