diff --git a/frontend/src/components/NavBar.tsx b/frontend/src/components/NavBar.tsx index d542d1e..9afc362 100644 --- a/frontend/src/components/NavBar.tsx +++ b/frontend/src/components/NavBar.tsx @@ -49,7 +49,7 @@ const NavUserInfo: React.FC<{ user: User }> = ({ user }) => { Profile picture of logged in user )} diff --git a/frontend/src/components/RecentListens.tsx b/frontend/src/components/RecentListens.tsx index 527cde3..ce117fd 100644 --- a/frontend/src/components/RecentListens.tsx +++ b/frontend/src/components/RecentListens.tsx @@ -1,5 +1,5 @@ import { format, formatDistanceToNow } from "date-fns"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useMemo } from "react"; import { Redirect } from "react-router-dom"; import { getRecentListens } from "../api/api"; import { Listen } from "../api/entities/listen"; @@ -17,37 +17,40 @@ export const RecentListens: React.FC = () => { const [listens, setListens] = useState([]); const [isLoading, setIsLoading] = useState(true); - const loadListensForPage = async () => { - setIsLoading(true); + const loadListensForPage = useMemo( + () => async () => { + setIsLoading(true); - try { - const listensFromApi = await getRecentListens({ - page, - limit: LISTENS_PER_PAGE, - }); + try { + const listensFromApi = await getRecentListens({ + page, + limit: LISTENS_PER_PAGE, + }); - if (totalPages !== listensFromApi.meta.totalPages) { - setTotalPages(listensFromApi.meta.totalPages); + if (totalPages !== listensFromApi.meta.totalPages) { + setTotalPages(listensFromApi.meta.totalPages); + } + setListens(listensFromApi.items); + } catch (err) { + console.error("Error while fetching recent listens:", err); + } finally { + setIsLoading(false); } - setListens(listensFromApi.items); - } catch (err) { - console.error("Error while fetching recent listens:", err); - } finally { - setIsLoading(false); - } - }; + }, + [page, totalPages, setIsLoading, setTotalPages, setListens] + ); useEffect(() => { loadListensForPage(); - }, [user, page, totalPages]); + }, [loadListensForPage]); if (!user) { return ; } return ( -
-
+
+

Recent listens

- {pageButtons.map((buttonPage) => + {pageButtons.map((buttonPage, i) => buttonPage ? ( ) : ( -
+
...
) @@ -143,11 +150,11 @@ const ListenItem: React.FC<{ listen: Listen }> = ({ listen }) => { }); const dateTime = format(new Date(listen.playedAt), "PP p"); return ( -
-
{trackName}
-
{artists}
+
+
{trackName}
+
{artists}
{timeAgo}