1+ import { Flex , Spinner } from "@radix-ui/themes" ;
2+ import { Suspense } from "react" ;
13import { Base } from "../shared/base" ;
24import { DjangoAdminLayout } from "../shared/django-admin-layout" ;
35import { useCurrentConference } from "../utils/conference" ;
46import { AddItemModalProvider } from "./add-item-modal/context" ;
57import { Calendar } from "./calendar" ;
68import { PendingItemsBasket } from "./pending-items-basket" ;
7- import { useConferenceScheduleQuery } from "./schedule.generated" ;
9+ import {
10+ useConferenceScheduleQuery ,
11+ useConferenceScheduleSuspenseQuery ,
12+ } from "./schedule.generated" ;
813
914export const ScheduleBuilderRoot = ( {
1015 conferenceId,
@@ -21,7 +26,23 @@ export const ScheduleBuilderRoot = ({
2126 >
2227 < AddItemModalProvider >
2328 < DjangoAdminLayout >
24- < ScheduleBuilder />
29+ < Suspense
30+ fallback = {
31+ < Flex
32+ align = "center"
33+ justify = "center"
34+ width = "100%"
35+ height = "100%"
36+ position = "absolute"
37+ top = "0"
38+ left = "0"
39+ >
40+ < Spinner size = "3" />
41+ </ Flex >
42+ }
43+ >
44+ < ScheduleBuilder />
45+ </ Suspense >
2546 </ DjangoAdminLayout >
2647 </ AddItemModalProvider >
2748 </ Base >
@@ -30,30 +51,28 @@ export const ScheduleBuilderRoot = ({
3051
3152const ScheduleBuilder = ( ) => {
3253 const { conferenceCode } = useCurrentConference ( ) ;
33- const { error, loading , data } = useConferenceScheduleQuery ( {
54+ const { error, data } = useConferenceScheduleSuspenseQuery ( {
3455 variables : {
3556 conferenceCode,
3657 } ,
3758 } ) ;
3859
3960 const {
4061 conference : { days } ,
41- } = data ?? { conference : { } } ;
62+ } = data ;
63+
64+ if ( error ) {
65+ return (
66+ < h2 > Something went wrong. Make sure you have the right permissions.</ h2 >
67+ ) ;
68+ }
4269
4370 return (
4471 < >
45- { loading && < h2 > Please wait</ h2 > }
46- { ! loading && error && (
47- < h2 > Something went wrong. Make sure you have the right permissions.</ h2 >
48- ) }
49- { ! loading && (
50- < >
51- { days . map ( ( day ) => (
52- < Calendar key = { day . id } day = { day } />
53- ) ) }
54- < PendingItemsBasket />
55- </ >
56- ) }
72+ { days . map ( ( day ) => (
73+ < Calendar key = { day . id } day = { day } />
74+ ) ) }
75+ < PendingItemsBasket />
5776 </ >
5877 ) ;
5978} ;
0 commit comments