diff --git a/backend/routes/api.js b/backend/routes/api.js index 49d4824..29d8960 100644 --- a/backend/routes/api.js +++ b/backend/routes/api.js @@ -219,7 +219,7 @@ router.post("/setUntrackedUsers", async (req, res) => { await db.query(query, [settings]); - res.send("Settings updated succesfully"); + res.send(excludedUsers); } else { res.status(404); res.send("Settings not found"); diff --git a/src/pages/users.jsx b/src/pages/users.jsx index ebffd7c..716a19a 100644 --- a/src/pages/users.jsx +++ b/src/pages/users.jsx @@ -108,6 +108,7 @@ function EnhancedTableHead(props) { function Row(row) { const { data } = row; + const { updateTrackedState } = row; function formatTotalWatchTime(seconds) { const hours = Math.floor(seconds / 3600); // 1 hour = 3600 seconds @@ -143,6 +144,31 @@ function Row(row) { return `${formattedTime + i18next.t("AGO").toLowerCase()}`; } + async function toggleTrackedState(userid) { + const url = `/api/setUntrackedUsers`; + + await axios + .post( + url, + { + userId: userid, + }, + { + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + } + ) + .then((response) => { + const excluded = response.data; + updateTrackedState(excluded); + }) + .catch((error) => { + console.log(error); + }); + } + return ( *": { borderBottom: "unset" } }}> @@ -158,7 +184,17 @@ function Row(row) { {data.UserName} - {data.Tracked ? : } + + {data.Tracked ? ( + + ) : ( + + )} + {data.LastWatched || i18next.t("ERROR_MESSAGES.NEVER")} @@ -336,6 +372,17 @@ function Users() { return stabilizedThis.map((el) => el[0]); } + function updateTrackedState(excluded) { + let updatedData = data.map((item) => { + return { + ...item, + Tracked: !excluded.includes(item.UserId), + }; + }); + + setData(updatedData); + } + const visibleRows = stableSort(data, getComparator(order, orderBy)).slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage); const handleRequestSort = (event, property) => { @@ -375,7 +422,7 @@ function Users() { {visibleRows.map((row) => ( - + ))} {data.length === 0 ? (