feat: jitsu tracker setup (#542)
* feat: jitsu tracker setup also using it in create, update and delete project & workspace * refactor: added some more check condition on track-event api * fix: added env vars in turbo.json * feat: added user onboard event, workspace invite and workspace invite accept events * feat: add tracker for issues, state, modules and cycles * fix: add @jitsu/nextjs in package.json
This commit is contained in:
parent
9eb9b7bf6c
commit
c3e1d33518
11 changed files with 503 additions and 26 deletions
50
apps/app/pages/api/track-event.ts
Normal file
50
apps/app/pages/api/track-event.ts
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
|
||||
// jitsu
|
||||
import { createClient } from "@jitsu/nextjs";
|
||||
import { convertCookieStringToObject } from "lib/cookie";
|
||||
|
||||
const jitsu = createClient({
|
||||
key: process.env.JITSU_ACCESS_KEY || "",
|
||||
tracking_host: "https://t.jitsu.com",
|
||||
});
|
||||
|
||||
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
const { eventName, extra } = req.body;
|
||||
|
||||
if (!eventName) {
|
||||
return res.status(400).json({ message: "Bad request" });
|
||||
}
|
||||
|
||||
const cookie = convertCookieStringToObject(req.headers.cookie);
|
||||
const accessToken = cookie?.accessToken;
|
||||
|
||||
if (!accessToken) return res.status(401).json({ message: "Unauthorized" });
|
||||
|
||||
const user = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/users/me/`, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
Authorization: `Bearer ${accessToken}`,
|
||||
},
|
||||
})
|
||||
.then((res) => res.json())
|
||||
.then((data) => data.user)
|
||||
.catch(() => res.status(401).json({ message: "Unauthorized" }));
|
||||
|
||||
if (!user) return res.status(401).json({ message: "Unauthorized" });
|
||||
|
||||
// TODO: cache user info
|
||||
|
||||
jitsu
|
||||
.id({
|
||||
...user,
|
||||
})
|
||||
.then(() => {
|
||||
jitsu.track(eventName, {
|
||||
...extra,
|
||||
});
|
||||
});
|
||||
|
||||
res.status(200).json({ message: "success" });
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue