Files
calendar/packages/trpc/server/routers/loggedInViewer/addNotificationsSubscription.handler.ts
T
779eb19e7a feat: browser push notifications (#14888)
* feat: web push notifications feature

* Revert yarn.lock changes

* added new env variables requirement in .env.example

* moved useNotifications hook in packages/lib/hooks

* fix: bug

* use i18n

* chore: move to new file

* chore: add yarn.lock

* Update .env.example

Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>

* chore: add instruction for brave browser

* fix: tooltip

* chore: use enum

* chore

* small update

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: unknown <adhabal2002@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
2024-09-02 14:39:51 +00:00

31 lines
861 B
TypeScript

import prisma from "@calcom/prisma";
import type { TrpcSessionUser } from "@calcom/trpc/server/trpc";
import type { TAddNotificationsSubscriptionInputSchema } from "./addNotificationsSubscription.schema";
type AddSecondaryEmailOptions = {
ctx: {
user: NonNullable<TrpcSessionUser>;
};
input: TAddNotificationsSubscriptionInputSchema;
};
export const addNotificationsSubscriptionHandler = async ({ ctx, input }: AddSecondaryEmailOptions) => {
const { user } = ctx;
const { subscription } = input;
const existingSubscription = await prisma.notificationsSubscriptions.findFirst({
where: { userId: user.id, subscription },
});
if (!existingSubscription) {
await prisma.notificationsSubscriptions.create({
data: { userId: user.id, subscription },
});
}
return {
message: "Subscription added successfully",
};
};