diff --git a/react/app/src/App.js b/react/app/src/App.js index 901bde0..82bf55a 100644 --- a/react/app/src/App.js +++ b/react/app/src/App.js @@ -6,6 +6,7 @@ import { AuthProvider } from "./context/AuthContext"; import AuthPage from './pages/AuthPage' import SnippetPage from './pages/SnippetPage' import NewSnippet from './pages/NewSnippetPage' +import PublicSnippetsPage from "./pages/PublicSnippetsPage"; function App() { return ( @@ -23,6 +24,9 @@ function App() { } /> + + + } /> diff --git a/react/app/src/components/Header.jsx b/react/app/src/components/Header.jsx index d60702d..e3c7862 100644 --- a/react/app/src/components/Header.jsx +++ b/react/app/src/components/Header.jsx @@ -62,7 +62,7 @@ export default function App() { Snippets - Public snippets + Public snippets My snippets Shared to me snippets diff --git a/react/app/src/components/SnippetList.jsx b/react/app/src/components/SnippetList.jsx new file mode 100644 index 0000000..157f016 --- /dev/null +++ b/react/app/src/components/SnippetList.jsx @@ -0,0 +1,30 @@ +import { MDBBtn, MDBCard, MDBCardBody, MDBCardHeader, MDBCardTitle } from "mdb-react-ui-kit"; +import { useNavigate } from "react-router-dom"; + +const SnippetList = ({ snippets }) => { + const navigate = useNavigate(); + + const ShortenedSnippet = ({ snippet }) => { + return ( + + {snippet?.owner} + + {snippet?.title} + navigate(`/snippet/${snippet?.id}`)}>Open + + + ) + }; + + const snippetComponents = snippets?.map((snippet) => { + return ; + }); + + return ( +
+ {snippetComponents} +
+ ) +}; + +export default SnippetList; diff --git a/react/app/src/pages/PublicSnippetsPage.jsx b/react/app/src/pages/PublicSnippetsPage.jsx new file mode 100644 index 0000000..6446772 --- /dev/null +++ b/react/app/src/pages/PublicSnippetsPage.jsx @@ -0,0 +1,32 @@ +import { useContext, useEffect, useState } from 'react'; +import SnippetList from '../components/SnippetList'; +import AuthContext from '../context/AuthContext'; +import BasicPage from './BasicPage' + +const PublicSnippetsPage = () => { + const { authTokens } = useContext(AuthContext); + const [ snippets, setSnippets ] = useState(null); + + const getSnippets = async () => { + const response = await fetch(`http://${process.env.REACT_APP_DOMAIN}/api/snippets/`, { + method: "GET" + }); + const data = await response.json(); + + if (response.status === 200) { + setSnippets(data) + } + }; + + useEffect(() => { + getSnippets(); + }, []); + + return ( + + + + ); +} + +export default PublicSnippetsPage;