@@ -114,9 +114,21 @@ const GET_MEAL_REQUESTS_BY_ID = gql`
114
114
donor {
115
115
info {
116
116
organizationName
117
+ primaryContact {
118
+ name
119
+ email
120
+ phone
121
+ }
117
122
}
118
123
}
124
+ donorOnsiteContacts {
125
+ name
126
+ email
127
+ phone
128
+ }
129
+ commitmentDate
119
130
mealDescription
131
+ additionalInfo
120
132
}
121
133
}
122
134
}
@@ -159,7 +171,7 @@ function formatDate(inputDate: string): string {
159
171
return date . toLocaleDateString ( "en-US" , options ) ;
160
172
}
161
173
162
- export const UpcomingCard = ( { event } : { event : UpcomingEvent } ) => {
174
+ export const UpcomingCard = ( { event, setShouldReload } : { event : UpcomingEvent , setShouldReload : ( _ : boolean ) => void } ) => {
163
175
const { mealRequest } = event . extendedProps ;
164
176
const [ isEditModalOpen , setIsEditModalOpen ] = useState ( false ) ;
165
177
const [
@@ -173,17 +185,14 @@ export const UpcomingCard = ({ event }: { event: UpcomingEvent }) => {
173
185
} ;
174
186
175
187
return (
176
- < div
177
- style = { {
178
- maxWidth : "800px" ,
179
- } }
180
- >
188
+ < div >
181
189
{ currentlyEditingMealRequestId ? (
182
190
< EditMealRequestForm
183
191
open = { isEditModalOpen }
184
- onClose = { ( ) => {
192
+ onClose = { ( newMealRequest ) => {
185
193
setIsEditModalOpen ( false ) ;
186
194
setCurrentlyEditingMealRequestId ( undefined ) ;
195
+ setShouldReload ( true ) ;
187
196
} }
188
197
mealRequestId = { currentlyEditingMealRequestId }
189
198
isEditDonation
@@ -197,7 +206,7 @@ export const UpcomingCard = ({ event }: { event: UpcomingEvent }) => {
197
206
justifyContent = "space-around"
198
207
alignItems = "center"
199
208
>
200
- < VStack padding = { 10 } >
209
+ < VStack padding = { 1 } >
201
210
< Text fontSize = "md" >
202
211
{
203
212
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -226,7 +235,21 @@ export const UpcomingCard = ({ event }: { event: UpcomingEvent }) => {
226
235
Edit My Donation
227
236
</ ChakraButton >
228
237
</ VStack >
229
- < VStack alignItems = "left" padding = { 6 } >
238
+
239
+ < VStack alignItems = "left" padding = { 6 } alignSelf = "start" >
240
+ < HStack alignItems = "top" >
241
+ < IoPersonOutline />
242
+ < VStack alignItems = "left" >
243
+ < Text fontSize = "xs" >
244
+ < strong >
245
+ ASP Name:
246
+ < br />
247
+ </ strong >
248
+ { mealRequest ?. requestor . info ?. organizationName }
249
+ </ Text >
250
+ </ VStack >
251
+ </ HStack >
252
+
230
253
< HStack alignItems = "top" >
231
254
< IoLocationOutline />
232
255
< VStack alignItems = "left" >
@@ -240,19 +263,30 @@ export const UpcomingCard = ({ event }: { event: UpcomingEvent }) => {
240
263
</ VStack >
241
264
</ HStack >
242
265
266
+ < HStack alignItems = "top" gap = { 0 } >
267
+ < IoPersonOutline />
268
+ < VStack alignItems = "left" gap = { 0 } spacing = { 0 } >
269
+ < Text variant = "mobile-button-bold" > ASP Primary Contact</ Text >
270
+ < Text fontSize = "xs" > { mealRequest ?. requestor . info ?. primaryContact . name } </ Text >
271
+ < Text fontSize = "xs" > { mealRequest ?. requestor . info ?. primaryContact . email } </ Text >
272
+ < Text fontSize = "xs" > { mealRequest ?. requestor . info ?. primaryContact . name } </ Text >
273
+ </ VStack >
274
+ </ HStack >
275
+
243
276
< HStack alignItems = "top" >
244
277
< IoPersonOutline />
245
- < VStack alignItems = "left" >
278
+ < VStack alignItems = "left" gap = { 0 } spacing = { 1 } >
246
279
< Text fontSize = "xs" >
247
280
< strong > ASP Onsite Staff:</ strong >
248
281
</ Text >
249
282
{ mealRequest ?. onsiteContacts . map ( ( staffMember ) => (
250
- < >
251
- < Text fontSize = "xs" > { staffMember . name } </ Text >
252
- < Text fontSize = "xs" > { staffMember . email } </ Text >
253
- < Text fontSize = "xs" > { staffMember . phone } </ Text >
254
- </ >
283
+ < VStack alignItems = "left" gap = { 0 } spacing = { 0 } key = { staffMember . name + staffMember . email } >
284
+ < Text fontSize = "xs" > { staffMember . name } </ Text >
285
+ < Text fontSize = "xs" > { staffMember . email } </ Text >
286
+ < Text fontSize = "xs" > { staffMember . phone } </ Text >
287
+ </ VStack >
255
288
) ) }
289
+
256
290
</ VStack >
257
291
</ HStack >
258
292
@@ -277,6 +311,54 @@ export const UpcomingCard = ({ event }: { event: UpcomingEvent }) => {
277
311
</ VStack >
278
312
</ HStack >
279
313
</ VStack >
314
+
315
+ < VStack padding = { 6 } alignItems = "left" justifyContent = "start" alignSelf = "start" >
316
+ < HStack alignItems = "top" gap = { 0 } >
317
+ < IoPersonOutline />
318
+ < VStack alignItems = "left" gap = { 0 } spacing = { 0 } >
319
+ < Text variant = "mobile-button-bold" > Your Primary Contact</ Text >
320
+ < Text fontSize = "xs" > { mealRequest ?. donationInfo ?. donor ?. info ?. primaryContact ?. name } </ Text >
321
+ < Text fontSize = "xs" > { mealRequest ?. donationInfo ?. donor ?. info ?. primaryContact ?. email } </ Text >
322
+ < Text fontSize = "xs" > { mealRequest ?. donationInfo ?. donor ?. info ?. primaryContact ?. phone } </ Text >
323
+ </ VStack >
324
+ </ HStack >
325
+
326
+ < HStack alignItems = "top" >
327
+ < IoPersonOutline />
328
+ < VStack alignItems = "left" gap = { 0 } spacing = { 1 } >
329
+ < Text fontSize = "xs" >
330
+ < strong > Your Onsite Staff:</ strong >
331
+ </ Text >
332
+ { mealRequest ?. donationInfo ?. donorOnsiteContacts ?. map ( ( staffMember ) => (
333
+ < VStack alignItems = "left" gap = { 0 } spacing = { 0 } key = { staffMember . name + staffMember . email } >
334
+ < Text fontSize = "xs" > { staffMember . name } </ Text >
335
+ < Text fontSize = "xs" > { staffMember . email } </ Text >
336
+ < Text fontSize = "xs" > { staffMember . phone } </ Text >
337
+ </ VStack >
338
+ ) ) }
339
+ </ VStack >
340
+ </ HStack >
341
+ < HStack alignItems = "top" >
342
+ < EmailIcon />
343
+ < VStack alignItems = "left" >
344
+ < Text fontSize = "xs" >
345
+ < strong > Your meal description</ strong >
346
+ < br />
347
+ { mealRequest ?. donationInfo . mealDescription }
348
+ </ Text >
349
+ </ VStack >
350
+ </ HStack >
351
+ < HStack alignItems = "top" >
352
+ < EmailIcon />
353
+ < VStack alignItems = "left" >
354
+ < Text fontSize = "xs" >
355
+ < strong > Your additional information</ strong >
356
+ < br />
357
+ { mealRequest ?. donationInfo ?. additionalInfo }
358
+ </ Text >
359
+ </ VStack >
360
+ </ HStack >
361
+ </ VStack >
280
362
</ Flex >
281
363
</ Card >
282
364
</ div >
@@ -300,6 +382,7 @@ const UpcomingPage = (): React.ReactElement => {
300
382
301
383
const [ offset , setOffset ] = useState ( 0 ) ;
302
384
const [ currentPage , setCurrentPage ] = useState < number > ( 1 ) ;
385
+ const [ shouldReload , setShouldReload ] = useState ( false ) ;
303
386
304
387
const [
305
388
upcomingMealRequests ,
@@ -442,6 +525,15 @@ const UpcomingPage = (): React.ReactElement => {
442
525
// eslint-disable-next-line react-hooks/exhaustive-deps
443
526
} , [ currentPage ] ) ;
444
527
528
+ useEffect ( ( ) => {
529
+ if ( shouldReload ) {
530
+ reloadCompletedMealRequests ( ) ;
531
+ reloadUpcomingMealRequests ( ) ;
532
+ setShouldReload ( false )
533
+ }
534
+ // eslint-disable-next-line react-hooks/exhaustive-deps
535
+ } , [ shouldReload ] ) ;
536
+
445
537
if ( ! authenticatedUser ) {
446
538
return < Navigate replace to = { LOGIN_PAGE } /> ;
447
539
}
@@ -543,7 +635,7 @@ const UpcomingPage = (): React.ReactElement => {
543
635
< >
544
636
< Stack direction = "column" >
545
637
{ upcomingMealRequests ?. map ( ( event ) => (
546
- < UpcomingCard event = { event } key = { event . id } />
638
+ < UpcomingCard event = { event } key = { event . id } setShouldReload = { setShouldReload } />
547
639
) ) }
548
640
</ Stack >
549
641
< HStack >
0 commit comments