fix: invite flow

This commit is contained in:
Piyush Gupta
2024-12-02 19:33:12 +05:30
parent 2191d62c70
commit 0728a373a5
2 changed files with 38 additions and 29 deletions
+34 -24
View File
@@ -1,6 +1,7 @@
import { sendInviteAcceptedEmail } from "@/modules/email";
import { getServerSession } from "next-auth";
import { getTranslations } from "next-intl/server";
import { unstable_after as after } from "next/server";
import { authOptions } from "@formbricks/lib/authOptions";
import { DEFAULT_LOCALE, WEBAPP_URL } from "@formbricks/lib/constants";
import { deleteInvite, getInvite } from "@formbricks/lib/invite/service";
@@ -32,6 +33,37 @@ const Page = async (props) => {
const isInviteExpired = new Date(invite.expiresAt) < new Date();
const createMembershipAction = async () => {
"use server";
if (!session || !user) return;
await createMembership(invite.organizationId, session.user.id, {
accepted: true,
role: invite.role,
});
await deleteInvite(inviteId);
await sendInviteAcceptedEmail(
invite.creator.name ?? "",
user?.name ?? "",
invite.creator.email,
user?.locale ?? DEFAULT_LOCALE
);
await updateUser(session.user.id, {
notificationSettings: {
...user.notificationSettings,
alert: user.notificationSettings.alert ?? {},
weeklySummary: user.notificationSettings.weeklySummary ?? {},
unsubscribedOrganizationIds: Array.from(
new Set([
...(user.notificationSettings?.unsubscribedOrganizationIds || []),
invite.organizationId,
])
),
},
});
};
if (isInviteExpired) {
return (
<ContentLayout
@@ -68,30 +100,8 @@ const Page = async (props) => {
</ContentLayout>
);
} else {
await createMembership(invite.organizationId, session.user.id, {
accepted: true,
role: invite.role,
});
await deleteInvite(inviteId);
await sendInviteAcceptedEmail(
invite.creator.name ?? "",
user?.name ?? "",
invite.creator.email,
user?.locale ?? DEFAULT_LOCALE
);
await updateUser(session.user.id, {
notificationSettings: {
...user.notificationSettings,
alert: user.notificationSettings.alert ?? {},
weeklySummary: user.notificationSettings.weeklySummary ?? {},
unsubscribedOrganizationIds: Array.from(
new Set([
...(user.notificationSettings?.unsubscribedOrganizationIds || []),
invite.organizationId,
])
),
},
after(async () => {
await createMembershipAction();
});
return (
+4 -5
View File
@@ -20,12 +20,11 @@ const nextConfig = {
assetPrefix: process.env.ASSET_PREFIX_URL || undefined,
output: "standalone",
poweredByHeader: false,
outputFileTracingIncludes: {
"app/api/packages": ["../../packages/js-core/dist/*", "../../packages/surveys/dist/*"],
},
experimental: {
serverComponentsExternalPackages: ["@aws-sdk"],
instrumentationHook: true,
outputFileTracingIncludes: {
"app/api/packages": ["../../packages/js-core/dist/*", "../../packages/surveys/dist/*"],
},
after: true,
},
transpilePackages: ["@formbricks/database", "@formbricks/ee", "@formbricks/ui", "@formbricks/lib"],
images: {