From 96806c613f11dcab7fbf93823fc6f55810bc0af1 Mon Sep 17 00:00:00 2001 From: Piyush Gupta <56182734+gupta-piyush19@users.noreply.github.com> Date: Wed, 19 Jun 2024 12:52:05 +0530 Subject: [PATCH] fix: fixes notification subscription based on user membership (#2779) --- .../environments/[environmentId]/actions.ts | 6 ++- apps/web/app/(auth)/invite/page.tsx | 13 +++++- apps/web/app/api/v1/users/route.ts | 21 +++++++++ .../app/setup/organization/create/actions.ts | 3 ++ packages/lib/authOptions.ts | 17 +++++++ packages/lib/organization/service.ts | 44 +++++++++---------- packages/lib/survey/service.ts | 6 ++- 7 files changed, 82 insertions(+), 28 deletions(-) diff --git a/apps/web/app/(app)/environments/[environmentId]/actions.ts b/apps/web/app/(app)/environments/[environmentId]/actions.ts index 22ab2a321b..85ce61beb9 100644 --- a/apps/web/app/(app)/environments/[environmentId]/actions.ts +++ b/apps/web/app/(app)/environments/[environmentId]/actions.ts @@ -17,6 +17,7 @@ import { OperationNotAllowedError, ResourceNotFoundError, } from "@formbricks/types/errors"; +import { TUserNotificationSettings } from "@formbricks/types/user"; export const createShortUrlAction = async (url: string) => { const session = await getServerSession(authOptions); @@ -54,7 +55,7 @@ export const createOrganizationAction = async (organizationName: string): Promis name: "My Product", }); - const updatedNotificationSettings = { + const updatedNotificationSettings: TUserNotificationSettings = { ...session.user.notificationSettings, alert: { ...session.user.notificationSettings?.alert, @@ -63,6 +64,9 @@ export const createOrganizationAction = async (organizationName: string): Promis ...session.user.notificationSettings?.weeklySummary, [product.id]: true, }, + unsubscribedOrganizationIds: Array.from( + new Set([...(session.user.notificationSettings?.unsubscribedOrganizationIds || []), newOrganization.id]) + ), }; await updateUser(session.user.id, { diff --git a/apps/web/app/(auth)/invite/page.tsx b/apps/web/app/(auth)/invite/page.tsx index 0f8e3f143b..b2680d9aab 100644 --- a/apps/web/app/(auth)/invite/page.tsx +++ b/apps/web/app/(auth)/invite/page.tsx @@ -85,7 +85,18 @@ const Page = async ({ searchParams }) => { session.user?.name ?? "", invite.creator.email ); - await updateUser(session.user.id, { onboardingCompleted: true }); + await updateUser(session.user.id, { + onboardingCompleted: true, + notificationSettings: { + ...session.user.notificationSettings, + unsubscribedOrganizationIds: Array.from( + new Set([ + ...(session.user.notificationSettings?.unsubscribedOrganizationIds || []), + invite.organizationId, + ]) + ), + }, + }); return (