|
1 | | -import {BookingSystem} from "./components/BookingSystem.tsx"; |
2 | | -import {useEventTypeGroups} from "./hooks/domain/useEventTypeGroups.tsx"; |
3 | | -import {Spinner} from "./components/global/Spinner.tsx"; |
4 | | -import {ErrorState} from "./components/global/ErrorState.tsx"; |
5 | | -import {VisitIntentStateProvider} from "./state/Intent/VisitIntentStateProvider.tsx"; |
6 | | -import {useVenue} from "./hooks/domain/useVenue.tsx"; |
7 | | -import {useEventHosts} from "./hooks/domain/useEventHosts.tsx"; |
8 | | -import {ConfigStateProvider} from "./state/Config/ConfigStateProvider.tsx"; |
9 | | -import type {ConfigInfoState} from "./state/Config/type.ts"; |
10 | | -import {UserStateProvider} from "./state/User/UserStateProvider.tsx"; |
11 | | -import {activity} from "../activity"; |
| 1 | +import {BookingSystemWrapper} from "./components/BookingSystemWrapper.tsx"; |
| 2 | +import {useWidgetConfig} from "./hooks/useWidgetConfig.ts"; |
| 3 | +import {SystemStateProvider} from "./state/System/SystemStateProvider.tsx"; |
12 | 4 |
|
13 | | -export function BookingSystemWidget() { |
14 | | - const { venue, venueError: venueError } = useVenue(); |
15 | | - const venueId = venue?.id; |
| 5 | +type Props = { |
| 6 | + host: HTMLElement; |
| 7 | +}; |
16 | 8 |
|
17 | | - const { |
18 | | - eventHosts, |
19 | | - hostsError, |
20 | | - } = useEventHosts(venueId); |
| 9 | +export function BookingSystemWidget({ host }: Props) { |
| 10 | + const config = useWidgetConfig(host); |
21 | 11 |
|
22 | | - const { |
23 | | - groups, |
24 | | - eventTypeGroupError |
25 | | - } = useEventTypeGroups(venueId); |
26 | | - |
27 | | - if (venueError || hostsError || eventTypeGroupError) { |
28 | | - return <ErrorState />; |
29 | | - } |
30 | | - |
31 | | - if (!venue || !eventHosts || !groups) { |
32 | | - activity('config-load', 'Config Data not loaded',{venue, eventHosts, groups}); |
33 | | - return <Spinner />; |
| 12 | + if (!config) { |
| 13 | + console.warn('[ContactUs] Widget is not correctly configured'); |
| 14 | + return null; |
34 | 15 | } |
35 | 16 |
|
36 | | - activity('config-load', 'Config Data',{venue, eventHosts, groups}); |
37 | | - |
38 | | - const config: ConfigInfoState = { |
39 | | - venue, |
40 | | - eventHosts, |
41 | | - eventTypeGroups: groups |
42 | | - }; |
43 | | - |
44 | 17 | return ( |
45 | | - <ConfigStateProvider config={config}> |
46 | | - <VisitIntentStateProvider eventTypeGroups={config.eventTypeGroups} eventHosts={config.eventHosts}> |
47 | | - <UserStateProvider> |
48 | | - <BookingSystem /> |
49 | | - </UserStateProvider> |
50 | | - </VisitIntentStateProvider> |
51 | | - </ConfigStateProvider> |
| 18 | + <SystemStateProvider config={config}> |
| 19 | + <BookingSystemWrapper venueId={config.venueId} /> |
| 20 | + </SystemStateProvider> |
52 | 21 | ); |
53 | 22 | } |
0 commit comments