11import { useState } from 'react' ;
2- import { addItem } from '../api' ;
2+ import { addItem , shareList } from '../api' ;
33
4- export function ManageList ( ) {
4+ export function ManageList ( { userId } ) {
55 const [ formData , setFormData ] = useState ( {
66 name : '' ,
77 frequency : '' ,
88 } ) ;
99
10+ const [ email , setEmail ] = useState ( '' ) ;
1011 function handleChange ( e ) {
1112 e . preventDefault ( ) ;
1213 setFormData ( ( prev ) => ( {
@@ -15,6 +16,11 @@ export function ManageList() {
1516 } ) ) ;
1617 }
1718
19+ function handleEmailChange ( e ) {
20+ e . preventDefault ( ) ;
21+ setEmail ( e . target . value ) ;
22+ }
23+
1824 function handleSubmit ( e ) {
1925 e . preventDefault ( ) ;
2026 if ( formData . name . trim ( ) === '' ) {
@@ -46,6 +52,16 @@ export function ManageList() {
4652 } ) ;
4753 }
4854
55+ async function handleEmailSubmit ( e ) {
56+ e . preventDefault ( ) ;
57+ const listPath = localStorage . getItem ( 'tcl-shopping-list-path' ) ;
58+ try {
59+ const result = await shareList ( listPath , userId , email ) ;
60+ window . alert ( result . response ) ;
61+ setEmail ( '' ) ;
62+ } catch ( error ) { }
63+ }
64+
4965 return (
5066 < >
5167 < p >
@@ -85,6 +101,20 @@ export function ManageList() {
85101
86102 < button type = "submit" > Submit</ button >
87103 </ form >
104+
105+ < form onSubmit = { handleEmailSubmit } >
106+ < label htmlFor = "invite-email" > Invite user by email:</ label >
107+ < input
108+ id = "invite-email"
109+ type = "email"
110+ name = "email"
111+ value = { email }
112+ onChange = { handleEmailChange }
113+ required
114+ > </ input >
115+
116+ < button type = "submit" > Invite my friend</ button >
117+ </ form >
88118 </ div >
89119 </ >
90120 ) ;
0 commit comments