Skip to content
This repository has been archived by the owner on Mar 12, 2024. It is now read-only.

Feature/posthog backend #243

Merged
merged 32 commits into from
Aug 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
6d3df37
Create param validator
EstebanDalelR Aug 10, 2023
19c21bc
Move discord
EstebanDalelR Aug 10, 2023
6f0fee5
Move user settings getter to app router
EstebanDalelR Aug 10, 2023
e0cbda0
Use standard var
EstebanDalelR Aug 10, 2023
72c5579
move getAllPublicUserData to app router
EstebanDalelR Aug 10, 2023
f35d3b0
Better error handling
EstebanDalelR Aug 10, 2023
c11176a
Delete getAllData.ts
EstebanDalelR Aug 10, 2023
c80b7df
Delete discord
EstebanDalelR Aug 10, 2023
67de0d7
Throw errors
EstebanDalelR Aug 10, 2023
8840990
Handle error throwing
EstebanDalelR Aug 10, 2023
ce8e89b
Move updateSettings to app router
EstebanDalelR Aug 10, 2023
31ed562
Update confluence.svg
EstebanDalelR Aug 10, 2023
3084c23
Configure jest
EstebanDalelR Aug 10, 2023
0194db6
Create settings.test.ts
EstebanDalelR Aug 10, 2023
17adccb
Create updateSettings.test.ts
EstebanDalelR Aug 10, 2023
da02249
Add getting test
EstebanDalelR Aug 10, 2023
0e692c2
Merge branch 'main' into feature/api-tests
EstebanDalelR Aug 10, 2023
1f94ec5
Merge branch 'main' into feature/api-tests
EstebanDalelR Aug 11, 2023
ef3f0fd
Use generalized validator
EstebanDalelR Aug 11, 2023
5b025bc
Move Stripe to app router
EstebanDalelR Aug 11, 2023
0fb476f
Move Sendgrid to app router
EstebanDalelR Aug 11, 2023
e19ea72
Move vscode to airtable Analytics to app router
EstebanDalelR Aug 11, 2023
d251728
Create posthog.ts
EstebanDalelR Aug 12, 2023
c6246a1
Add types, move to utils
EstebanDalelR Aug 12, 2023
084037d
Capture posthog event
EstebanDalelR Aug 12, 2023
e3ed6dd
Change export
EstebanDalelR Aug 12, 2023
b10132b
Fix export
EstebanDalelR Aug 12, 2023
bef6602
Merge branch 'feature/finish-api-routes' into feature/posthog-backend
EstebanDalelR Aug 12, 2023
29bf166
Fix export
EstebanDalelR Aug 12, 2023
4ceaacf
Merge branch 'feature/finish-api-routes' into feature/posthog-backend
EstebanDalelR Aug 12, 2023
bd9134d
Check dev env
EstebanDalelR Aug 14, 2023
d338fdc
Merge branch 'main' into feature/posthog-backend
EstebanDalelR Aug 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion app/api/user/settings/route.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { NextResponse } from "next/server";
import getUserSettings from "../../../../utils/db/user/settings";
import validateParams from "../../../../utils/api/validateParams";
import posthog from "../../../../utils/posthog/posthog";

export async function POST(request: Request) {
const req = await request.json();
Expand All @@ -11,7 +12,13 @@ export async function POST(request: Request) {
error: `Missing parameters: ${missingParams.join(", ")}`,
});
}

posthog.capture({
distinctId: req.email,
event: "user_settings_viewed",
properties: {
email: req.email,
},
});
try {
let dbResponse = await getUserSettings({ email: req.email });
return NextResponse.json(dbResponse);
Expand Down
36 changes: 36 additions & 0 deletions utils/posthog/posthog.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { PostHog } from "posthog-node";
interface PostHogEvent {
event: string;
distinctId?: string;
properties?: Record<string, any>;
groups?: Record<string, any>;
}

function PostHogClient(apiKey: string) {
const posthogClient = new PostHog(apiKey, {
host: process.env.NEXT_PUBLIC_POSTHOG_HOST,
});

return {
capture: ({ event, distinctId, properties, groups }: PostHogEvent) => {
posthogClient.capture({
distinctId: distinctId || "unknown_user",
event,
properties,
groups,
});
console.log("posthog event", event, properties);
if (process.env.NODE_ENV === "development") {
console.log(
`PostHog event: ${event} with properties: ${JSON.stringify(
properties
)}`
);
}
},
};
}

const posthog = PostHogClient(process.env.NEXT_PUBLIC_POSTHOG_KEY!);

export default posthog;