Skip to content

Commit

Permalink
Lint fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
LobeTia committed Apr 24, 2024
1 parent 08d4ba8 commit d346ae9
Show file tree
Hide file tree
Showing 10 changed files with 114 additions and 117 deletions.
49 changes: 23 additions & 26 deletions src/app/actions/createMembership.ts
Original file line number Diff line number Diff line change
@@ -1,36 +1,33 @@
"use server";
"use server"

import { MembershipStatus } from "@prisma/client";
import { MembershipStatus } from "@prisma/client"

import {
type ServerActionState,
ServerActionStatus,
} from "@/app/actions/types";
import { db } from "@/services/db";
import { stripe } from "@/services/stripe";
import { type ServerActionState, ServerActionStatus } from "@/app/actions/types"
import { db } from "@/services/db"
import { stripe } from "@/services/stripe"

const MEMBERSHIP_PRICE_ID = "price_1P3HNlCXdJySzBrwlcoAQqS2";
const MEMBERSHIP_PRICE_ID = "price_1P3HNlCXdJySzBrwlcoAQqS2"

export interface FormProps {
email: string;
firstName: string;
lastName: string;
socialSecurityNumber: string;
email: string
firstName: string
lastName: string
socialSecurityNumber: string
}

export async function createMembership(
prevState: ServerActionState,
data: FormProps,
): Promise<ServerActionState> {
// Avoid double membership creation
if (prevState.nextStep === "providePayment") return prevState;
if (prevState.nextStep === "providePayment") return prevState

// Check for user
let user = await db.user.findFirst({
where: {
email: data.email,
},
});
})

// No User found, creates it
if (!user) {
Expand All @@ -41,7 +38,7 @@ export async function createMembership(
emailVerified: new Date(),
name: `${data.firstName} ${data.lastName}`.trim(),
},
});
})
}

// User is not linked to Stripe, creates it
Expand All @@ -50,13 +47,13 @@ export async function createMembership(
const stripeCustomer = await stripe.customers.create({
email: data.email,
name: `${data.firstName} ${data.lastName}`.trim(),
});
})

user.stripeCustomerId = stripeCustomer.id;
user.stripeCustomerId = stripeCustomer.id
await db.user.update({
data: { stripeCustomerId: stripeCustomer.id },
where: { id: user.id },
});
})
}

// Lookup for membership
Expand All @@ -67,7 +64,7 @@ export async function createMembership(
},
userId: user.id,
},
});
})

// Membership already exists, block creation
if (membership) {
Expand All @@ -78,7 +75,7 @@ export async function createMembership(
},
],
status: ServerActionStatus.Error,
};
}
}

// Creates membership
Expand All @@ -88,7 +85,7 @@ export async function createMembership(
status: MembershipStatus.PENDING,
userId: user.id,
},
});
})

// Create Stripe subscription
const stripeSubscription = await stripe.subscriptions.create({
Expand All @@ -103,14 +100,14 @@ export async function createMembership(
payment_settings: {
payment_method_types: ["card", "link", "paypal", "sepa_debit"],
},
});
})

// Update membership
membership.stripeSubscriptionId = stripeSubscription.id;
membership.stripeSubscriptionId = stripeSubscription.id
await db.membership.update({
data: { stripeSubscriptionId: stripeSubscription.id },
where: { id: membership.id },
});
})

// Return secret to client to finalize payment
return {
Expand All @@ -121,5 +118,5 @@ export async function createMembership(
membershipId: membership.id,
},
status: ServerActionStatus.Success,
};
}
}
2 changes: 1 addition & 1 deletion src/app/actions/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ export enum ServerActionStatus {
export const InitialServerActionState = {
payload: {},
status: ServerActionStatus.Pending,
};
}
52 changes: 26 additions & 26 deletions src/app/admin/@authenticated/membership/manage/form.tsx
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
"use client";
"use client"

import { useForm } from "react-hook-form";
import { z } from "zod";
import { zodResolver } from "@hookform/resolvers/zod";
import { useForm } from "react-hook-form"
import { z } from "zod"
import { zodResolver } from "@hookform/resolvers/zod"
import {
Form,
FormControl,
FormField,
FormItem,
FormLabel,
FormMessage,
} from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { Textarea } from "@/components/ui/textarea";
import { StatefulButton } from "@/components/molecules/statefulButton";
import { useFormState } from "react-dom";
} from "@/components/ui/form"
import { Input } from "@/components/ui/input"
import { Textarea } from "@/components/ui/textarea"
import { StatefulButton } from "@/components/molecules/statefulButton"
import { useFormState } from "react-dom"
import {
InitialServerActionState,
ServerActionStatus,
} from "@/app/actions/types";
import { createMembershipTemplate } from "@/app/actions/createMembershipTemplate";
} from "@/app/actions/types"
import { createMembershipTemplate } from "@/app/actions/createMembershipTemplate"
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
import { CRUDFormIntent } from "@/modules/crudForm/types";
import { editMembershipTemplate } from "@/app/actions/editMembershipTemplate";
import { useEffect, useState } from "react";
} from "@/components/ui/select"
import { CRUDFormIntent } from "@/modules/crudForm/types"
import { editMembershipTemplate } from "@/app/actions/editMembershipTemplate"
import { useEffect, useState } from "react"

const formSchema = z.object({
id: z.string().optional(),
Expand All @@ -44,12 +44,12 @@ const formSchema = z.object({
new RegExp("^price_[0-9A-Za-z]+$"),
"You need to provide a Stripe Product Price ID, format: price_xxxxx",
),
});
})

interface FormProps {
intent: CRUDFormIntent;
previousValues?: any;
onSuccess?: any;
intent: CRUDFormIntent
previousValues?: any
onSuccess?: any
}

export function AdminMembershipCRUDForm({
Expand All @@ -62,8 +62,8 @@ export function AdminMembershipCRUDForm({
? createMembershipTemplate
: editMembershipTemplate,
InitialServerActionState,
);
const [onSuccessFired, setOnSuccessFired] = useState<boolean>(false);
)
const [onSuccessFired, setOnSuccessFired] = useState<boolean>(false)

const form = useForm<z.infer<typeof formSchema>>({
defaultValues:
Expand All @@ -75,18 +75,18 @@ export function AdminMembershipCRUDForm({
priceAmount: previousValues.priceAmount / 100,
},
resolver: zodResolver(formSchema),
});
})

useEffect(() => {
if (
membershipTemplateState.status === ServerActionStatus.Success &&
onSuccess &&
!onSuccessFired
) {
onSuccess(membershipTemplateState);
setOnSuccessFired(true);
onSuccess(membershipTemplateState)
setOnSuccessFired(true)
}
}, [membershipTemplateState, onSuccess, onSuccessFired]);
}, [membershipTemplateState, onSuccess, onSuccessFired])

return (
<form action={form.handleSubmit(membershipTemplateAction) as any}>
Expand Down Expand Up @@ -207,5 +207,5 @@ export function AdminMembershipCRUDForm({
</div>
</Form>
</form>
);
)
}
2 changes: 1 addition & 1 deletion src/app/admin/@authenticated/membership/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Paragraph } from "@/components/ui/typography";
import { Paragraph } from "@/components/ui/typography"

export default async function AdminMembershipPage() {
return (
Expand Down
8 changes: 4 additions & 4 deletions src/app/admin/@unauthenticated/components/discordSignIn.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";
"use client"

import { signIn } from "next-auth/react";
import { DiscordLogoIcon } from "@radix-ui/react-icons";
import { signIn } from "next-auth/react"
import { DiscordLogoIcon } from "@radix-ui/react-icons"

export function DiscordSignIn() {
return (
Expand All @@ -14,5 +14,5 @@ export function DiscordSignIn() {
<DiscordLogoIcon className={"mr-2"} width={20} height={20} />
<span className={"text-sm font-semibold"}>Sign in with Discord</span>
</button>
);
)
}
28 changes: 14 additions & 14 deletions src/app/admin/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,41 @@ import {
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
} from "@/components/ui/card"
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet";
import logo from "@/images/logo.svg";
import { hasRequiredRole } from "@/lib/permissions";
import { usernameToInitials } from "@/lib/utils";
import { getServerAuthSession } from "@/server/auth";
import { Toaster } from "@/components/ui/toaster";
} from "@/components/ui/dropdown-menu"
import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"
import logo from "@/images/logo.svg"
import { hasRequiredRole } from "@/lib/permissions"
import { usernameToInitials } from "@/lib/utils"
import { getServerAuthSession } from "@/server/auth"
import { Toaster } from "@/components/ui/toaster"

interface LayoutInterface {
children: React.ReactNode;
authenticated: React.ReactNode;
unauthenticated: React.ReactNode;
children: React.ReactNode
authenticated: React.ReactNode
unauthenticated: React.ReactNode
}

export default async function Layout({
authenticated,
unauthenticated,
}: LayoutInterface) {
const session = await getServerAuthSession();
const isLoggedIn = session !== null;
const session = await getServerAuthSession()
const isLoggedIn = session !== null

if (!isLoggedIn) {
return (
<main className="flex h-screen items-center justify-center bg-zinc-900">
{unauthenticated}
</main>
);
)
}

if (!hasRequiredRole(UserRole.admin, session)) {
Expand Down
14 changes: 7 additions & 7 deletions src/app/devPage.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { toPlainObject } from "lodash";
import Link from "next/link";
import { toPlainObject } from "lodash"
import Link from "next/link"

import { Debug } from "@/components/devtool/debug";
import { Button } from "@/components/ui/button";
import { getServerAuthSession } from "@/server/auth";
import { env } from "@/env";
import { Debug } from "@/components/devtool/debug"
import { Button } from "@/components/ui/button"
import { getServerAuthSession } from "@/server/auth"
import { env } from "@/env"

export async function DevPage() {
const session = await getServerAuthSession();
const session = await getServerAuthSession()

return (
<div className={"h-dvh bg-gray-200 p-4"}>
Expand Down
6 changes: 3 additions & 3 deletions src/app/members/@authenticated/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import {
MembershipCard,
PricePeriod,
PriceUnit,
} from "@/components/molecules/membershipCard";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { getServerAuthSession } from "@/server/auth";
} from "@/components/molecules/membershipCard"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { getServerAuthSession } from "@/server/auth"

export default async function MembershipPortalHomePage() {
const session = await getServerAuthSession()
Expand Down
10 changes: 5 additions & 5 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { redirect, RedirectType } from "next/navigation";
import { redirect, RedirectType } from "next/navigation"

import { DevPage } from "@/app/devPage";
import { inDevEnvironment } from "@/lib/envs";
import { DevPage } from "@/app/devPage"
import { inDevEnvironment } from "@/lib/envs"

export default async function HomePage() {
if (inDevEnvironment) return <DevPage />;
else redirect("/members", RedirectType.replace);
if (inDevEnvironment) return <DevPage />
else redirect("/members", RedirectType.replace)
}
Loading

0 comments on commit d346ae9

Please sign in to comment.