Skip to content

Commit

Permalink
Add Chuck Norris Facts
Browse files Browse the repository at this point in the history
  • Loading branch information
Ivan committed Nov 19, 2023
1 parent c387ccf commit f15c06f
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
39 changes: 39 additions & 0 deletions src/pages/Home.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { useState } from 'react';
import { Badge, Button, ButtonGroup, Card, Col, Row } from "react-bootstrap";
import Modal from 'react-bootstrap/Modal';
import { saveAs } from "file-saver";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
Expand All @@ -10,6 +12,8 @@ import "./Home.css";

export const Home = () => {
const { t } = useTranslation();
const [showChuckNorrisFact, setShowChuckNorrisFact] = useState(false);
const [chuckNorrisFact, setChuckNorrisFact] = useState("...");

const saveCV = () => {
saveAs(cv, "Koldakov_Ivan_CV.pdf");
Expand Down Expand Up @@ -182,6 +186,26 @@ export const Home = () => {
}
];

const getChuckNorrisFact = () => {
fetch("https://api.chucknorris.io/jokes/random")
.then(response => response.json())
.then(json => setChuckNorrisFact(json["value"]))
.catch(error => {
console.error(error);
setChuckNorrisFact(t("UnknownHTTPError.text"))
});
}

const handleCloseChuckNorrisFact = () => {
setShowChuckNorrisFact(false);
setChuckNorrisFact("...");
}

const handleShowChuckNorrisFact = () => {
getChuckNorrisFact();
setShowChuckNorrisFact(true);
}

return(
<>
<Row>
Expand All @@ -202,6 +226,13 @@ export const Home = () => {
>
{t("DownloadCV.text")}
</Button>
<Button
className="mt-2"
variant="success"
onClick={handleShowChuckNorrisFact}
>
{t("GetChuckNorrisFact.text")}
</Button>
</ButtonGroup>
</Card>
</Col>
Expand Down Expand Up @@ -365,6 +396,14 @@ export const Home = () => {
</Card>
</Col>
</Row>
<Modal show={showChuckNorrisFact} onHide={handleCloseChuckNorrisFact}>
<Modal.Body>{chuckNorrisFact}</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={handleCloseChuckNorrisFact}>
{t("Close.text")}
</Button>
</Modal.Footer>
</Modal>
</>
);
}
18 changes: 18 additions & 0 deletions src/translations/resources.json
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,15 @@
},
"CookieButton": {
"text": "Got it"
},
"GetChuckNorrisFact": {
"text": "Get Chuck Norris fact"
},
"Close": {
"text": "Close"
},
"UnknownHTTPError": {
"text": "Something went wrong. Try again later."
}
}
},
Expand Down Expand Up @@ -313,6 +322,15 @@
},
"CookieButton": {
"text": "Понимаю"
},
"GetChuckNorrisFact": {
"text": "Быстрый факт о Чаке Норрисе"
},
"Close": {
"text": "Закрыть"
},
"UnknownHTTPError": {
"text": "Что-то пошло не так, попробуйте повторить запрос."
}
}
}
Expand Down

0 comments on commit f15c06f

Please sign in to comment.