diff --git a/backend/routes/api.js b/backend/routes/api.js index f958c6a..75e1699 100644 --- a/backend/routes/api.js +++ b/backend/routes/api.js @@ -1122,7 +1122,7 @@ router.get("/getHistory", async (req, res) => { }); const groupedResults = groupActivity(result.results); - res.send({ current_page: page, pages: result.pages, results: Object.values(groupedResults) }); + res.send({ current_page: page, pages: result.pages, size: size, results: Object.values(groupedResults) }); } catch (error) { console.log(error); } @@ -1171,7 +1171,7 @@ router.post("/getLibraryHistory", async (req, res) => { }); const groupedResults = groupActivity(result.results); - res.send({ current_page: page, pages: result.pages, results: Object.values(groupedResults) }); + res.send({ current_page: page, pages: result.pages, size: size, results: Object.values(groupedResults) }); } catch (error) { console.log(error); res.status(503); @@ -1225,7 +1225,7 @@ router.post("/getItemHistory", async (req, res) => { pageSize: size, }); - res.send({ current_page: page, pages: result.pages, results: result.results }); + res.send({ current_page: page, pages: result.pages, size: size, results: result.results }); } catch (error) { console.log(error); res.status(503); @@ -1275,7 +1275,7 @@ router.post("/getUserHistory", async (req, res) => { pageSize: size, }); - res.send({ current_page: page, pages: result.pages, results: result.results }); + res.send({ current_page: page, pages: result.pages, size: size, results: result.results }); } catch (error) { console.log(error); res.status(503); diff --git a/src/pages/activity.jsx b/src/pages/activity.jsx index 38269b7..2452021 100644 --- a/src/pages/activity.jsx +++ b/src/pages/activity.jsx @@ -33,7 +33,7 @@ function Activity() { }; function setItemLimit(limit) { - setItemCount(limit); + setItemCount(parseInt(limit)); localStorage.setItem("PREF_ACTIVITY_ItemCount", limit); } @@ -121,7 +121,7 @@ function Activity() { }; if (config) { - if (!data || data.current_page !== currentPage) { + if (!data || (data.current_page && data.current_page !== currentPage) || (data.size && data.size !== itemCount)) { fetchHistory(); fetchLibraries(); } diff --git a/src/pages/components/item-info.jsx b/src/pages/components/item-info.jsx index cd0bfd5..a2bdd5f 100644 --- a/src/pages/components/item-info.jsx +++ b/src/pages/components/item-info.jsx @@ -27,6 +27,7 @@ import FileMusicLineIcon from "remixicon-react/FileMusicLineIcon"; import CheckboxMultipleBlankLineIcon from "remixicon-react/CheckboxMultipleBlankLineIcon"; import baseUrl from "../../lib/baseurl"; import GlobalStats from "./general/globalStats"; +import ErrorBoundary from "./general/ErrorBoundary.jsx"; function ItemInfo() { const { Id } = useParams(); @@ -257,7 +258,7 @@ function ItemInfo() { : <>} - + + + diff --git a/src/pages/components/item-info/item-activity.jsx b/src/pages/components/item-info/item-activity.jsx index 83321dd..74a6cd2 100644 --- a/src/pages/components/item-info/item-activity.jsx +++ b/src/pages/components/item-info/item-activity.jsx @@ -9,7 +9,7 @@ import Config from "../../../lib/config.jsx"; function ItemActivity(props) { const [data, setData] = useState(); const token = localStorage.getItem("token"); - const [itemCount, setItemCount] = useState(10); + const [itemCount, setItemCount] = useState(parseInt(localStorage.getItem("PREF_ACTIVITY_ItemCount") ?? "10")); const [searchQuery, setSearchQuery] = useState(""); const [streamTypeFilter, setStreamTypeFilter] = useState("All"); const [config, setConfig] = useState(); @@ -19,6 +19,10 @@ function ItemActivity(props) { const handlePageChange = (newPage) => { setCurrentPage(newPage); }; + function setItemLimit(limit) { + setItemCount(parseInt(limit)); + localStorage.setItem("PREF_ACTIVITY_ItemCount", limit); + } useEffect(() => { const fetchConfig = async () => { @@ -56,7 +60,7 @@ function ItemActivity(props) { } }; - if (!data || data.current_page !== currentPage) { + if (!data || (data.current_page && data.current_page !== currentPage) || (data.size && data.size !== itemCount)) { fetchData(); } @@ -122,7 +126,7 @@ function ItemActivity(props) { { - setItemCount(event.target.value); + setItemLimit(event.target.value); }} value={itemCount} className="my-md-3 w-md-75 rounded-0 rounded-end" diff --git a/src/pages/components/library/library-activity.jsx b/src/pages/components/library/library-activity.jsx index e623a7b..9e94362 100644 --- a/src/pages/components/library/library-activity.jsx +++ b/src/pages/components/library/library-activity.jsx @@ -24,7 +24,7 @@ function LibraryActivity(props) { }; function setItemLimit(limit) { - setItemCount(limit); + setItemCount(parseInt(limit)); localStorage.setItem("PREF_LIBRARY_ACTIVITY_ItemCount", limit); } @@ -68,7 +68,7 @@ function LibraryActivity(props) { } }; - if (!data || data.current_page !== currentPage) { + if (!data || (data.current_page && data.current_page !== currentPage) || (data.size && data.size !== itemCount)) { fetchData(); } diff --git a/src/pages/components/user-info/user-activity.jsx b/src/pages/components/user-info/user-activity.jsx index e8f5366..ce7309b 100644 --- a/src/pages/components/user-info/user-activity.jsx +++ b/src/pages/components/user-info/user-activity.jsx @@ -13,7 +13,7 @@ import Config from "../../../lib/config.jsx"; function UserActivity(props) { const [data, setData] = useState(); const token = localStorage.getItem("token"); - const [itemCount, setItemCount] = useState(10); + const [itemCount, setItemCount] = useState(parseInt(localStorage.getItem("PREF_ACTIVITY_ItemCount") ?? "10")); const [searchQuery, setSearchQuery] = useState(""); const [streamTypeFilter, setStreamTypeFilter] = useState("All"); const [libraryFilters, setLibraryFilters] = useState([]); @@ -23,6 +23,11 @@ function UserActivity(props) { const [currentPage, setCurrentPage] = useState(1); const [isBusy, setIsBusy] = useState(false); + function setItemLimit(limit) { + setItemCount(parseInt(limit)); + localStorage.setItem("PREF_ACTIVITY_ItemCount", limit); + } + useEffect(() => { const fetchConfig = async () => { try { @@ -105,7 +110,10 @@ function UserActivity(props) { }); }; - fetchHistory(); + if (!data || (data.current_page && data.current_page !== currentPage) || (data.size && data.size !== itemCount)) { + fetchHistory(); + } + fetchLibraries(); const intervalId = setInterval(fetchHistory, 60000 * 5); @@ -190,7 +198,7 @@ function UserActivity(props) { { - setItemCount(event.target.value); + setItemLimit(event.target.value); }} value={itemCount} className="my-md-3 w-md-75 rounded-0 rounded-end"