mirror of
https://github.com/lukevella/rallly.git
synced 2025-05-16 18:36:24 +02:00
📈 Include pollId when capturing events (#555)
This commit is contained in:
parent
e77ed269f5
commit
d14a88e9eb
3 changed files with 73 additions and 63 deletions
|
@ -93,6 +93,7 @@ const Page: React.FunctionComponent<CreatePollPageProps> = ({
|
|||
onSuccess: (res) => {
|
||||
setIsRedirecting(true);
|
||||
posthog.capture("created poll", {
|
||||
pollId: res.id,
|
||||
numberOfOptions: formData.options?.options?.length,
|
||||
optionsView: formData?.options?.view,
|
||||
});
|
||||
|
|
|
@ -15,8 +15,9 @@ export const normalizeVotes = (
|
|||
|
||||
export const useAddParticipantMutation = () => {
|
||||
return trpc.polls.participants.add.useMutation({
|
||||
onSuccess: (_, { name }) => {
|
||||
onSuccess: (_, { pollId, name }) => {
|
||||
posthog.capture("add participant", {
|
||||
pollId,
|
||||
name,
|
||||
});
|
||||
},
|
||||
|
@ -61,8 +62,9 @@ export const useDeleteParticipantMutation = () => {
|
|||
},
|
||||
);
|
||||
},
|
||||
onSuccess: (_, { participantId }) => {
|
||||
onSuccess: (_, { pollId, participantId }) => {
|
||||
posthog.capture("remove participant", {
|
||||
pollId,
|
||||
participantId,
|
||||
});
|
||||
},
|
||||
|
|
|
@ -94,73 +94,80 @@ export const polls = router({
|
|||
demo: z.boolean().optional(),
|
||||
}),
|
||||
)
|
||||
.mutation(async ({ ctx, input }): Promise<{ urlId: string }> => {
|
||||
const adminUrlId = await nanoid();
|
||||
const participantUrlId = await nanoid();
|
||||
let verified = false;
|
||||
.mutation(
|
||||
async ({ ctx, input }): Promise<{ id: string; urlId: string }> => {
|
||||
const adminUrlId = await nanoid();
|
||||
const participantUrlId = await nanoid();
|
||||
let verified = false;
|
||||
|
||||
if (ctx.session.user.isGuest === false) {
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { id: ctx.session.user.id },
|
||||
if (ctx.session.user.isGuest === false) {
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { id: ctx.session.user.id },
|
||||
});
|
||||
|
||||
// If user is logged in with the same email address
|
||||
if (user?.email === input.user.email) {
|
||||
verified = true;
|
||||
}
|
||||
}
|
||||
|
||||
const poll = await prisma.poll.create({
|
||||
select: {
|
||||
adminUrlId: true,
|
||||
id: true,
|
||||
title: true,
|
||||
},
|
||||
data: {
|
||||
id: await nanoid(),
|
||||
title: input.title,
|
||||
type: input.type,
|
||||
timeZone: input.timeZone,
|
||||
location: input.location,
|
||||
description: input.description,
|
||||
authorName: input.user.name,
|
||||
demo: input.demo,
|
||||
verified: verified,
|
||||
notifications: verified,
|
||||
adminUrlId,
|
||||
participantUrlId,
|
||||
user: {
|
||||
connectOrCreate: {
|
||||
where: {
|
||||
email: input.user.email,
|
||||
},
|
||||
create: {
|
||||
id: await nanoid(),
|
||||
...input.user,
|
||||
},
|
||||
},
|
||||
},
|
||||
options: {
|
||||
createMany: {
|
||||
data: input.options.map((value) => ({
|
||||
value,
|
||||
})),
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// If user is logged in with the same email address
|
||||
if (user?.email === input.user.email) {
|
||||
verified = true;
|
||||
}
|
||||
}
|
||||
const adminLink = absoluteUrl(`/admin/${adminUrlId}`);
|
||||
const participantLink = absoluteUrl(`/p/${participantUrlId}`);
|
||||
|
||||
const poll = await prisma.poll.create({
|
||||
data: {
|
||||
id: await nanoid(),
|
||||
title: input.title,
|
||||
type: input.type,
|
||||
timeZone: input.timeZone,
|
||||
location: input.location,
|
||||
description: input.description,
|
||||
authorName: input.user.name,
|
||||
demo: input.demo,
|
||||
verified: verified,
|
||||
notifications: verified,
|
||||
adminUrlId,
|
||||
participantUrlId,
|
||||
user: {
|
||||
connectOrCreate: {
|
||||
where: {
|
||||
email: input.user.email,
|
||||
},
|
||||
create: {
|
||||
id: await nanoid(),
|
||||
...input.user,
|
||||
},
|
||||
},
|
||||
await sendEmail("NewPollEmail", {
|
||||
to: input.user.email,
|
||||
subject: `Let's find a date for ${poll.title}`,
|
||||
props: {
|
||||
title: poll.title,
|
||||
name: input.user.name,
|
||||
adminLink,
|
||||
participantLink,
|
||||
},
|
||||
options: {
|
||||
createMany: {
|
||||
data: input.options.map((value) => ({
|
||||
value,
|
||||
})),
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
const adminLink = absoluteUrl(`/admin/${adminUrlId}`);
|
||||
const participantLink = absoluteUrl(`/p/${participantUrlId}`);
|
||||
|
||||
await sendEmail("NewPollEmail", {
|
||||
to: input.user.email,
|
||||
subject: `Let's find a date for ${poll.title}`,
|
||||
props: {
|
||||
title: poll.title,
|
||||
name: input.user.name,
|
||||
adminLink,
|
||||
participantLink,
|
||||
},
|
||||
});
|
||||
|
||||
return { urlId: adminUrlId };
|
||||
}),
|
||||
return { id: poll.id, urlId: adminUrlId };
|
||||
},
|
||||
),
|
||||
update: publicProcedure
|
||||
.input(
|
||||
z.object({
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue