diff --git a/src/App.jsx b/src/App.jsx index 5ef8293f..efaff843 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,6 +1,6 @@ -import AdviceSection from './sections/Advice' import ArtsSection from './sections/Art' import UsersSection from './sections/Users' +import AdviceSection from './sections/Advice' import './App.css' function App() { diff --git a/src/sections/Advice/components/AdviceSlip.jsx b/src/sections/Advice/components/AdviceSlip.jsx index e69de29b..cb70f6cf 100644 --- a/src/sections/Advice/components/AdviceSlip.jsx +++ b/src/sections/Advice/components/AdviceSlip.jsx @@ -0,0 +1,14 @@ +function AdviceSlip({random, fetchData, handleAddFavourites}) { + return ( +
+

Some Advice

+

{random && random.slip ? random.slip.advice : "Loading..."}

+ + +
+ + ) +} + + +export default AdviceSlip; \ No newline at end of file diff --git a/src/sections/Advice/components/FavouriteSlipsList.jsx b/src/sections/Advice/components/FavouriteSlipsList.jsx index e69de29b..638350a5 100644 --- a/src/sections/Advice/components/FavouriteSlipsList.jsx +++ b/src/sections/Advice/components/FavouriteSlipsList.jsx @@ -0,0 +1,15 @@ + +function FavouriteSlipsList({favourites}) { + return ( +
+

Favourite Advice Slips

+ +
+ ) +} + +export default FavouriteSlipsList \ No newline at end of file diff --git a/src/sections/Advice/index.jsx b/src/sections/Advice/index.jsx index 0405f11f..ac38ba8b 100644 --- a/src/sections/Advice/index.jsx +++ b/src/sections/Advice/index.jsx @@ -1,9 +1,34 @@ +import { useEffect, useState } from "react" +import FavouriteSlipsList from "./components/FavouriteSlipsList"; +import AdviceSlip from "./components/AdviceSlip"; + function AdviceSection() { + const url = "https://api.adviceslip.com/advice"; + const [random, setRandom] = useState(""); + const [favourites, setFavourites] = useState([]); + + + const fetchData = async () => { + const response = await fetch(url); + const jsonData = await response.json(); + setRandom(jsonData); + }; + useEffect(() => { + fetchData(); + }, []); + + const handleAddFavourites = () => { + if (random && random.slip ){ + if (!favourites.some(fav => fav.id === random.slip.id)) { + setFavourites([...favourites, random.slip]); + } + } + } return (

Advice Section

-
-
+ +
) } diff --git a/src/sections/Art/components/ArtList.jsx b/src/sections/Art/components/ArtList.jsx index e69de29b..4a01ee26 100644 --- a/src/sections/Art/components/ArtList.jsx +++ b/src/sections/Art/components/ArtList.jsx @@ -0,0 +1,13 @@ +import ArtListItem from "./ArtListItem" + +function ArtList({art, url}) { + + return ( +
+ +
+ + ) +} + +export default ArtList; \ No newline at end of file diff --git a/src/sections/Art/components/ArtListItem.jsx b/src/sections/Art/components/ArtListItem.jsx index e69de29b..c104685c 100644 --- a/src/sections/Art/components/ArtListItem.jsx +++ b/src/sections/Art/components/ArtListItem.jsx @@ -0,0 +1,24 @@ +import PublicationHistoryList from "./PublicationHistoryList"; + +function ArtListItem({art, url}) { + + return ( + <> + + + + ) +} + +export default ArtListItem; \ No newline at end of file diff --git a/src/sections/Art/components/PublicationHistoryList.jsx b/src/sections/Art/components/PublicationHistoryList.jsx index d3f5a12f..8ea01fbf 100644 --- a/src/sections/Art/components/PublicationHistoryList.jsx +++ b/src/sections/Art/components/PublicationHistoryList.jsx @@ -1 +1,15 @@ +function PublicationHistoryList({art}) { + return ( + <> +

Publication History:

+ + + ) +} + +export default PublicationHistoryList; \ No newline at end of file diff --git a/src/sections/Art/index.jsx b/src/sections/Art/index.jsx index 0c74ffc2..9a58607b 100644 --- a/src/sections/Art/index.jsx +++ b/src/sections/Art/index.jsx @@ -1,10 +1,32 @@ -function ArtsSection() { - return ( -
-

Arts Section

-
-
- ) +import {useEffect, useState} from "react" +import ArtList from "./components/ArtList"; + +function ArtListItem() { + + const url = "https://boolean-uk-api-server.fly.dev"; + + const [data, setData] = useState([]); + const [filteredData, setFilteredData] = useState([]); + + useEffect(() => { + const fetchData = async () => { + const reponse = await fetch(url+"/art"); + const jsonData = await reponse.json(); + setData(jsonData); + setFilteredData(jsonData); + }; + fetchData(); + }, []); + + return ( +
+

Arts Section

+ {filteredData.map((art, index) => ( + + ))} +
+ + ) } -export default ArtsSection +export default ArtListItem; \ No newline at end of file diff --git a/src/sections/Users/components/UsersList.jsx b/src/sections/Users/components/UsersList.jsx index e69de29b..ad349493 100644 --- a/src/sections/Users/components/UsersList.jsx +++ b/src/sections/Users/components/UsersList.jsx @@ -0,0 +1,13 @@ +import UsersListItem from "./UsersListItem" + +function UsersList({props}) { + const { user } = props + return ( +
+ + +
+ ) +} + +export default UsersList \ No newline at end of file diff --git a/src/sections/Users/components/UsersListItem.jsx b/src/sections/Users/components/UsersListItem.jsx index e69de29b..56aa30d5 100644 --- a/src/sections/Users/components/UsersListItem.jsx +++ b/src/sections/Users/components/UsersListItem.jsx @@ -0,0 +1,16 @@ +function UsersListItem(props) { + const { user } = props; + return ( + + ) +} + +export default UsersListItem \ No newline at end of file diff --git a/src/sections/Users/index.jsx b/src/sections/Users/index.jsx index 77332830..22b0a7fc 100644 --- a/src/sections/Users/index.jsx +++ b/src/sections/Users/index.jsx @@ -1,8 +1,29 @@ +import { useEffect, useState } from 'react' +import UsersListItem from './components/UsersListItem'; + function UsersSection() { + + const url = "https://boolean-uk-api-server.fly.dev/isabelltran/contact"; + + const [data, setData] = useState([]); + const [filteredData, setFilteredData] = useState([]); + + useEffect(() => { + const fetchData = async () => { + const response = await fetch(url); + const jsonData = await response.json(); + setData(jsonData); + setFilteredData(jsonData); + }; + fetchData(); + }, []); + return (

Users Section

-
+ {filteredData.map((user, index) => ( + + ))}
) }