From 59aff363c72b4b20eeae2d882bfba35b7326da80 Mon Sep 17 00:00:00 2001 From: Delnia Alipour Date: Wed, 21 Jun 2023 12:26:48 +0100 Subject: [PATCH] step 22-23 --- src/Bookings.js | 35 +++++++++++++++++++++++++---------- src/TableRow.js | 2 +- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/Bookings.js b/src/Bookings.js index f3e5d4bfd..df14ac66e 100644 --- a/src/Bookings.js +++ b/src/Bookings.js @@ -1,26 +1,34 @@ import React, { useState, useEffect } from "react"; import Search from "./Search.js"; import SearchResults from "./SearchResults.js"; -import LoadingWait from "./LoadingWait.js"; import FakeBookings from "./data/fakeBookings.json"; const Bookings = () => { - let [dataAvailable, setDataAvailable] = useState(false); + const [loading, setLoading] = useState(true); + const [bookings, setBookings] = useState([]); + const [masterBookings, setMasterBookings] = useState([]); + const [error, setError] = useState(null); useEffect(() => { - // fetch(`https://cyf-react.glitch.me`) - fetch(`https://cyf-react.glitch.me/delayed`) - .then((res) => res.json()) + // fetch("https://cyf-react.glitch.me/error") + fetch("https://cyf-react.glitch.me/delayed") + .then((res) => { + if (!res.ok) { + throw new Error("Error occurred while fetching data"); + } + return res.json(); + }) .then((data) => { setBookings(data); setMasterBookings(data); - setDataAvailable(true); + setLoading(false); + }) + .catch((error) => { + setError(error.message); + setLoading(false); }); }, []); - let [bookings, setBookings] = useState([]); - let [masterBookings, setMasterBookings] = useState([]); - const search = (searchVal) => { let filteredBookings = masterBookings.filter((abooking) => { console.log(abooking); @@ -36,7 +44,14 @@ const Bookings = () => {
- {dataAvailable ? : } + + {error ? ( +

{error}

+ ) : loading ? ( +

Please wait while the data is loading...

+ ) : ( + + )}
); diff --git a/src/TableRow.js b/src/TableRow.js index 92ef74945..86bca70b0 100644 --- a/src/TableRow.js +++ b/src/TableRow.js @@ -41,7 +41,7 @@ const TableRow = (props) => {