File tree Expand file tree Collapse file tree 14 files changed +843
-378
lines changed
Expand file tree Collapse file tree 14 files changed +843
-378
lines changed Original file line number Diff line number Diff line change 1+ import { ModalEditMembership } from '@/components/memberships/ModalEditMembership'
2+ import { getMembership } from '@/lib/api/membership'
3+ import { Verify } from '@/lib/firebase/firebase'
4+
5+ // This is a server component use to pass data to the modal
6+ export default async function MembershipEditPage ( {
7+ params,
8+ } : {
9+ params : Promise < { id : string } >
10+ } ) {
11+ const { id } = await params
12+
13+ await Verify ( { from : `/admin/memberships/${ id } ` } )
14+
15+ const [ membershipRes ] = await Promise . all ( [ getMembership ( { id } ) ] )
16+ if ( 'error' in membershipRes ) {
17+ return < div > { JSON . stringify ( membershipRes . message ) } </ div >
18+ }
19+ return < ModalEditMembership membership = { membershipRes . data } />
20+ }
Original file line number Diff line number Diff line change 1+ export default function Default ( ) {
2+ return null
3+ }
Original file line number Diff line number Diff line change 1+ import { Verify } from '@/lib/firebase/firebase'
2+ import { getMembership } from '@/lib/api/membership'
3+ import { FormMembership } from '@/components/memberships/FormMembership'
4+ import { updateMembershipAction } from '@/lib/actions/update-membership'
5+ import { redirect } from 'next/navigation'
6+
7+ export default async function MembershipEditPage ( {
8+ params,
9+ } : {
10+ params : Promise < { id : string } >
11+ } ) {
12+ const { id } = await params
13+
14+ await Verify ( { from : `/admin/memberships/${ id } ` } )
15+
16+ const [ membershipRes ] = await Promise . all ( [ getMembership ( { id } ) ] )
17+
18+ if ( 'error' in membershipRes ) {
19+ console . log ( { libRes : membershipRes } )
20+ return < div > { JSON . stringify ( membershipRes . message ) } </ div >
21+ }
22+
23+ const handleSubmit = async ( data : any ) => {
24+ 'use server'
25+ const res = await updateMembershipAction ( { id, ...data } )
26+ if ( ! ( 'error' in res ) ) {
27+ redirect ( `/admin/memberships/${ id } ` )
28+ }
29+ return res
30+ }
31+
32+ return (
33+ < div className = "pt-4 max-w-2xl mx-auto" >
34+ < h2 className = "text-xl font-semibold mb-6" > Edit Membership</ h2 >
35+ < FormMembership
36+ libraryID = { membershipRes . data . library_id }
37+ membership = { membershipRes . data }
38+ onSubmitAction = { handleSubmit }
39+ />
40+ </ div >
41+ )
42+ }
Original file line number Diff line number Diff line change @@ -15,9 +15,11 @@ export const metadata: Metadata = {
1515
1616export default async function MembershipDetailsLayout ( {
1717 children,
18+ edit,
1819 params,
1920} : Readonly < {
2021 children : React . ReactNode
22+ edit : React . ReactNode
2123 params : Promise < { id : string } >
2224} > ) {
2325 const { id } = await params
@@ -30,7 +32,7 @@ export default async function MembershipDetailsLayout({
3032 }
3133 return (
3234 < >
33- < nav className = "backdrop-blur-sm sticky top-0 z-10" >
35+ < nav className = "backdrop-blur-sm sticky top-0 z-10 mb-4 " >
3436 < h1 className = "text-2xl font-semibold" > { membershipRes . data . name } </ h1 >
3537 < div className = "flex justify-between items-center" >
3638 < Breadcrumb >
@@ -51,6 +53,7 @@ export default async function MembershipDetailsLayout({
5153 </ div >
5254 </ nav >
5355 { children }
56+ { edit }
5457 </ >
5558 )
5659}
Original file line number Diff line number Diff line change 11import { ListCardMembership } from '@/components/memberships/ListCardMembership'
22import { getMembership } from '@/lib/api/membership'
3+ import { Button } from '@/components/ui/button'
4+ import Link from 'next/link'
5+ import { Pen } from 'lucide-react'
36
47export default async function Memberships ( {
58 params,
@@ -18,8 +21,18 @@ export default async function Memberships({
1821 }
1922
2023 return (
21- < div className = "space-y-4" >
22- < ListCardMembership membership = { membershipRes . data } />
24+ < div className = "space-y-4 max-w-2xl mx-auto" >
25+ < ListCardMembership membership = { membershipRes . data } >
26+ < Button asChild >
27+ < Link
28+ href = { `/admin/memberships/${ membershipRes . data . id } /edit` }
29+ className = "w-full"
30+ >
31+ < Pen />
32+ Edit
33+ </ Link >
34+ </ Button >
35+ </ ListCardMembership >
2336 </ div >
2437 )
2538}
Original file line number Diff line number Diff line change @@ -43,7 +43,7 @@ export default async function BorrowDetailsPage({
4343
4444 return (
4545 < DetailBorrow borrow = { borrowRes . data } >
46- < Button variant = "secondary" asChild >
46+ < Button variant = "secondary" className = 'bottom-2 sticky' asChild >
4747 < Link href = { `/borrows/${ borrowRes . data . id } /review` } className = "w-full" >
4848 < Star
4949 className = { clsx (
You can’t perform that action at this time.
0 commit comments