Skip to content

Commit 724a038

Browse files
committed
cleanups
1 parent 44aff44 commit 724a038

5 files changed

Lines changed: 21 additions & 34 deletions

File tree

apps/web/app/(org)/onboarding/components/CustomDomainPage.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { Button } from "@cap/ui";
44
import { Effect } from "effect";
55
import { useRouter } from "next/navigation";
6-
import { startTransition, useState } from "react";
6+
import { type MouseEvent, startTransition, useState } from "react";
77
import { toast } from "sonner";
88
import { UpgradeModal } from "@/components/UpgradeModal";
99
import { useEffectMutation } from "@/lib/EffectRuntime";
@@ -35,9 +35,9 @@ export function CustomDomainPage() {
3535
},
3636
});
3737

38-
const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {
38+
const handleSubmit = async (e: MouseEvent<HTMLButtonElement>) => {
3939
e.preventDefault();
40-
customDomainMutation.mutate();
40+
await customDomainMutation.mutateAsync();
4141
};
4242

4343
return (

apps/web/app/(org)/onboarding/components/InviteTeamPage.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { useMutation } from "@tanstack/react-query";
99
import clsx from "clsx";
1010
import { Effect } from "effect";
1111
import { useRouter } from "next/navigation";
12-
import { startTransition, useId, useState } from "react";
12+
import { type MouseEvent, startTransition, useId, useState } from "react";
1313
import { toast } from "sonner";
1414
import { useEffectMutation } from "@/lib/EffectRuntime";
1515
import { withRpc } from "@/lib/Rpcs";
@@ -58,12 +58,12 @@ export function InviteTeamPage() {
5858
},
5959
});
6060

61-
const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {
61+
const handleSubmit = async (e: MouseEvent<HTMLButtonElement>) => {
6262
e.preventDefault();
63-
inviteTeamMutation.mutate();
63+
await inviteTeamMutation.mutateAsync();
6464
};
6565

66-
const planCheckout = async (e: React.MouseEvent<HTMLButtonElement>) => {
66+
const planCheckout = async (e: MouseEvent<HTMLButtonElement>) => {
6767
e.preventDefault();
6868
try {
6969
const planId = getProPlanId(isAnnually ? "yearly" : "monthly");
@@ -94,13 +94,11 @@ export function InviteTeamPage() {
9494
} catch (error) {
9595
console.error("Plan checkout error:", error);
9696
toast.error("Something went wrong. Please try again.");
97-
} finally {
98-
planCheckoutMutation.mutate(e);
9997
}
10098
};
10199

102100
const planCheckoutMutation = useMutation({
103-
mutationFn: (e: React.MouseEvent<HTMLButtonElement>) => planCheckout(e),
101+
mutationFn: (e: MouseEvent<HTMLButtonElement>) => planCheckout(e),
104102
onError: (error) => {
105103
console.error("Plan checkout error:", error);
106104
toast.error("Something went wrong. Please try again.");

apps/web/app/api/webhooks/stripe/route.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -275,24 +275,8 @@ export const POST = async (req: Request) => {
275275
invite_quota: inviteQuota,
276276
price_id: subscription.items.data[0]?.price.id,
277277
quantity: inviteQuota,
278-
is_onboarding:
279-
typeof session.metadata === "object" &&
280-
session.metadata !== null &&
281-
"isOnBoarding" in session.metadata &&
282-
typeof (session.metadata as Record<string, unknown>)
283-
.isOnBoarding === "string"
284-
? ((session.metadata as Record<string, unknown>)
285-
.isOnBoarding as string)
286-
: "false",
287-
platform:
288-
typeof session.metadata === "object" &&
289-
session.metadata !== null &&
290-
"platform" in session.metadata &&
291-
typeof (session.metadata as Record<string, unknown>)
292-
.platform === "string"
293-
? ((session.metadata as Record<string, unknown>)
294-
.platform as string)
295-
: "web",
278+
is_onboarding: session.metadata?.isOnBoarding === "true",
279+
platform: session.metadata?.platform === "web",
296280
is_first_purchase: isFirstPurchase,
297281
is_guest_checkout: isGuestCheckout,
298282
},

packages/web-backend/src/Users/UsersOnboarding.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,16 @@ export class UsersOnboarding extends Effect.Service<UsersOnboarding>()(
9494
if (data.organizationIcon) {
9595
const organizationIcon = data.organizationIcon;
9696
const uploadEffect = Effect.gen(function* () {
97-
const {
98-
data: fileData,
99-
contentType,
100-
fileName,
101-
} = organizationIcon;
102-
const fileExtension = fileName.split(".").pop();
97+
const { data: fileData, contentType } = organizationIcon;
98+
const allowedExt = new Map<string, string>([
99+
["image/png", "png"],
100+
["image/jpeg", "jpg"],
101+
["image/webp", "webp"],
102+
["image/svg+xml", "svg"],
103+
]);
104+
const fileExtension = allowedExt.get(contentType);
105+
if (!fileExtension)
106+
throw new Error("Unsupported icon content type");
103107
const fileKey = `organizations/${organizationId}/icon-${Date.now()}.${fileExtension}`;
104108

105109
const [bucket] = yield* s3Buckets.getBucketAccess(

packages/web-domain/src/User.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export const OnboardingStepResult = Schema.Union(
6060
}),
6161
Schema.Struct({
6262
step: Schema.Literal("inviteTeam"),
63+
data: Schema.Void,
6364
}),
6465
Schema.Struct({
6566
step: Schema.Literal("download"),

0 commit comments

Comments
 (0)