From a3643c81f680456f85a1d230313088438fe43041 Mon Sep 17 00:00:00 2001 From: Johan Reitan Date: Mon, 1 Sep 2025 11:53:55 +0200 Subject: [PATCH] extension done --- src/sections/Advice/index.jsx | 61 +++++++++++++++++++++++++++++++++-- src/sections/Art/index.jsx | 44 ++++++++++++++++++++++++- src/sections/Users/index.jsx | 43 +++++++++++++++++++++++- 3 files changed, 144 insertions(+), 4 deletions(-) diff --git a/src/sections/Advice/index.jsx b/src/sections/Advice/index.jsx index 0405f11f..06232fcb 100644 --- a/src/sections/Advice/index.jsx +++ b/src/sections/Advice/index.jsx @@ -1,11 +1,68 @@ +import { useEffect, useState } from "react" + function AdviceSection() { + + const url = "https://api.adviceslip.com/advice"; + const [loading, setLoading] = useState(true); + const [slip, setSlip] = useState(); + const [favouriteSlips, setFavouriteSlips] = useState([]); + + + const loadSlip = async () => { + const response = await fetch(url); + const jsonData = await response.json(); + setSlip(jsonData); + }; + + const saveSlip = async () => { + if(!favouriteSlips.includes(slip)) setFavouriteSlips([...favouriteSlips, slip]) + }; + + + useEffect(() => { + const fetchData = async () => { + const response = await fetch(url); + const jsonData = await response.json(); + + + setSlip(jsonData); + }; + + fetchData(); +}, [url]); + + return (

Advice Section

-
-
+
+ {slip && ( +
+

advice #{slip.slip.id}

+

{slip.slip.advice}

+ + +
+ )} + + +
+ +
+

Favourite Advice Slips

+
    + {favouriteSlips.map((slip, index) => ( +
  • +

    advice #{slip.slip.id}

    +

    {slip.slip.advice}

    +
  • + ))} +
+
) } export default AdviceSection + + diff --git a/src/sections/Art/index.jsx b/src/sections/Art/index.jsx index 0c74ffc2..6e98d4de 100644 --- a/src/sections/Art/index.jsx +++ b/src/sections/Art/index.jsx @@ -1,8 +1,50 @@ +import { useEffect, useState } from "react"; + function ArtsSection() { + const url = "https://boolean-uk-api-server.fly.dev/art"; + 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 (

Arts Section

-
+
+
+

Arts Section

+
+
    + {filteredData.map((artPiece, index) => ( +
  • +
    + +
    +

    {artPiece.title}

    +

    Artist: {artPiece.artist}

    +

    Publication History:

    +
      + {artPiece.publicationHistory.map((publicationHistory, index) => ( +
    • {publicationHistory}
    • + ))} +
    +
  • + ))} +
+
+
+ +
) } diff --git a/src/sections/Users/index.jsx b/src/sections/Users/index.jsx index 77332830..350f3526 100644 --- a/src/sections/Users/index.jsx +++ b/src/sections/Users/index.jsx @@ -1,9 +1,50 @@ +import { useEffect, useState } from "react"; + function UsersSection() { + const url = "https://boolean-uk-api-server.fly.dev/johanreitan/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) => ( +
  • + {user.firstName +

    {user.firstName} {user.lastName}

    +

    Email: {user.email}

    +
  • + + ))}; +
  • + Chloe Lopez +

    Ms Chloe Lopez

    +

    Email: chloe.lopez@example.com

    +
  • +
+
+ ) }