From 3e9bfb605c76f751d287751ede5f13e1d792a1ac Mon Sep 17 00:00:00 2001 From: Borislav Pantaleev Date: Tue, 4 Feb 2025 23:13:43 +0200 Subject: [PATCH 1/7] Add manual pagination to Rooms tab in User's profile --- src/components/etke.cc/ServerStatusBadge.tsx | 2 +- src/resources/users.tsx | 4 +-- src/synapse/dataProvider.ts | 28 +++++++++++++++++--- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/components/etke.cc/ServerStatusBadge.tsx b/src/components/etke.cc/ServerStatusBadge.tsx index 4d0a461..ea0ae58 100644 --- a/src/components/etke.cc/ServerStatusBadge.tsx +++ b/src/components/etke.cc/ServerStatusBadge.tsx @@ -48,7 +48,7 @@ const StyledBadge = styled(Badge, { shouldForwardProp: (prop) => !['badgeColor', // every 5 minutes const SERVER_STATUS_INTERVAL_TIME = 5 * 60 * 1000; // every 5 seconds -const SERVER_CURRENT_PROCCESS_INTERVAL_TIME = 5 * 1000; +const SERVER_CURRENT_PROCCESS_INTERVAL_TIME = 35 * 1000; const useServerStatus = () => { const [serverStatus, setServerStatus] = useStore("serverStatus", { ok: false, success: false, host: "", results: [] }); diff --git a/src/resources/users.tsx b/src/resources/users.tsx index 28524b1..e0e5246 100644 --- a/src/resources/users.tsx +++ b/src/resources/users.tsx @@ -497,7 +497,7 @@ export const UserEdit = (props: EditProps) => { target="user_id" label={false} pagination={} - perPage={50} + perPage={10} sort={{ field: "created_ts", order: "DESC" }} > }> @@ -516,7 +516,7 @@ export const UserEdit = (props: EditProps) => { } path="rooms"> - + }> "/rooms/" + id + "/show"} bulkActionButtons={false}> diff --git a/src/synapse/dataProvider.ts b/src/synapse/dataProvider.ts index 5cade98..cfa3e9d 100644 --- a/src/synapse/dataProvider.ts +++ b/src/synapse/dataProvider.ts @@ -16,6 +16,8 @@ import { import { returnMXID } from "../utils/mxid"; import { MatrixError, displayError } from "../utils/error"; +const CACHED_MANY_REF: Record = {}; + // Adds the access token to all requests const jsonClient = async (url: string, options: Options = {}) => { const token = localStorage.getItem("access_token"); @@ -706,18 +708,36 @@ const baseDataProvider: SynapseDataProvider = { dir: getSearchOrder(order), }; + + const homeserver = localStorage.getItem("base_url"); if (!homeserver || !(resource in resourceMap)) throw Error("Homeserver not set"); const res = resourceMap[resource]; const ref = res.reference(params.id); - const endpoint_url = `${homeserver}${ref.endpoint}?${new URLSearchParams(filterUndefined(query)).toString()}`; - const { json } = await jsonClient(endpoint_url); + const endpoint_url = `${homeserver}${ref.endpoint}?${new URLSearchParams(filterUndefined(query)).toString()}`; + let jsonData = []; + let total = 0; + + if (CACHED_MANY_REF[ref]) { + jsonData = CACHED_MANY_REF[ref]["data"].slice(from, from + perPage); + total = CACHED_MANY_REF[ref]["total"]; + } else { + const { json } = await jsonClient(endpoint_url); + jsonData = json[res.data] + total = res.total(json, from, perPage); + if (resource === "joined_rooms") { + // cache will be applied only for joined_rooms + CACHED_MANY_REF[ref] = { data: jsonData, total: total }; + jsonData = jsonData.slice(from, from + perPage); + } + } + return { - data: json[res.data].map(res.map), - total: res.total(json, from, perPage), + data: jsonData.map(res.map), + total: total, }; }, From 3325b0407fb1138b1d0a187ff9aca451ee25d907 Mon Sep 17 00:00:00 2001 From: Borislav Pantaleev Date: Tue, 4 Feb 2025 23:14:24 +0200 Subject: [PATCH 2/7] revert status interval --- src/components/etke.cc/ServerStatusBadge.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/etke.cc/ServerStatusBadge.tsx b/src/components/etke.cc/ServerStatusBadge.tsx index ea0ae58..4d0a461 100644 --- a/src/components/etke.cc/ServerStatusBadge.tsx +++ b/src/components/etke.cc/ServerStatusBadge.tsx @@ -48,7 +48,7 @@ const StyledBadge = styled(Badge, { shouldForwardProp: (prop) => !['badgeColor', // every 5 minutes const SERVER_STATUS_INTERVAL_TIME = 5 * 60 * 1000; // every 5 seconds -const SERVER_CURRENT_PROCCESS_INTERVAL_TIME = 35 * 1000; +const SERVER_CURRENT_PROCCESS_INTERVAL_TIME = 5 * 1000; const useServerStatus = () => { const [serverStatus, setServerStatus] = useStore("serverStatus", { ok: false, success: false, host: "", results: [] }); From fd67f7d7d7cd86f109ed0e0677f2185b700915fa Mon Sep 17 00:00:00 2001 From: Borislav Pantaleev Date: Tue, 4 Feb 2025 23:19:12 +0200 Subject: [PATCH 3/7] Fix caching key --- src/synapse/dataProvider.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/synapse/dataProvider.ts b/src/synapse/dataProvider.ts index cfa3e9d..23198a0 100644 --- a/src/synapse/dataProvider.ts +++ b/src/synapse/dataProvider.ts @@ -721,7 +721,7 @@ const baseDataProvider: SynapseDataProvider = { let jsonData = []; let total = 0; - if (CACHED_MANY_REF[ref]) { + if (CACHED_MANY_REF[ref.endpoint]) { jsonData = CACHED_MANY_REF[ref]["data"].slice(from, from + perPage); total = CACHED_MANY_REF[ref]["total"]; } else { @@ -730,7 +730,8 @@ const baseDataProvider: SynapseDataProvider = { total = res.total(json, from, perPage); if (resource === "joined_rooms") { // cache will be applied only for joined_rooms - CACHED_MANY_REF[ref] = { data: jsonData, total: total }; + console.log("CACHING@@@@@@@", ref.endpoint); + CACHED_MANY_REF[ref.endpoint] = { data: jsonData, total: total }; jsonData = jsonData.slice(from, from + perPage); } } From 0024bf78d5c23506b0b5cb7b1af2a4ef1947a844 Mon Sep 17 00:00:00 2001 From: Borislav Pantaleev Date: Tue, 4 Feb 2025 23:20:14 +0200 Subject: [PATCH 4/7] remove console.log --- src/synapse/dataProvider.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/synapse/dataProvider.ts b/src/synapse/dataProvider.ts index 23198a0..9b52ab4 100644 --- a/src/synapse/dataProvider.ts +++ b/src/synapse/dataProvider.ts @@ -730,7 +730,6 @@ const baseDataProvider: SynapseDataProvider = { total = res.total(json, from, perPage); if (resource === "joined_rooms") { // cache will be applied only for joined_rooms - console.log("CACHING@@@@@@@", ref.endpoint); CACHED_MANY_REF[ref.endpoint] = { data: jsonData, total: total }; jsonData = jsonData.slice(from, from + perPage); } From e394193abb772cb08e021530d4b80a04ea17c2fb Mon Sep 17 00:00:00 2001 From: Borislav Pantaleev Date: Tue, 4 Feb 2025 23:24:35 +0200 Subject: [PATCH 5/7] Fix cache key again --- src/synapse/dataProvider.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/synapse/dataProvider.ts b/src/synapse/dataProvider.ts index 9b52ab4..36bad2d 100644 --- a/src/synapse/dataProvider.ts +++ b/src/synapse/dataProvider.ts @@ -718,19 +718,21 @@ const baseDataProvider: SynapseDataProvider = { const ref = res.reference(params.id); const endpoint_url = `${homeserver}${ref.endpoint}?${new URLSearchParams(filterUndefined(query)).toString()}`; + let CACHE_KEY = ref.endpoint; let jsonData = []; let total = 0; - if (CACHED_MANY_REF[ref.endpoint]) { - jsonData = CACHED_MANY_REF[ref]["data"].slice(from, from + perPage); - total = CACHED_MANY_REF[ref]["total"]; + if (CACHED_MANY_REF[CACHE_KEY]) { + console.log("cached many ref", CACHED_MANY_REF[CACHE_KEY]); + jsonData = CACHED_MANY_REF[CACHE_KEY]["data"].slice(from, from + perPage); + total = CACHED_MANY_REF[CACHE_KEY]["total"]; } else { const { json } = await jsonClient(endpoint_url); jsonData = json[res.data] total = res.total(json, from, perPage); if (resource === "joined_rooms") { // cache will be applied only for joined_rooms - CACHED_MANY_REF[ref.endpoint] = { data: jsonData, total: total }; + CACHED_MANY_REF[CACHE_KEY] = { data: jsonData, total: total }; jsonData = jsonData.slice(from, from + perPage); } } From 04e88621285af7c362b6c4a577b7f60951071eff Mon Sep 17 00:00:00 2001 From: Aine Date: Wed, 5 Feb 2025 12:03:33 +0200 Subject: [PATCH 6/7] change perPage of user's rooms to 10, to keep it in sync with media --- src/resources/users.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/resources/users.tsx b/src/resources/users.tsx index e0e5246..35175b1 100644 --- a/src/resources/users.tsx +++ b/src/resources/users.tsx @@ -516,7 +516,7 @@ export const UserEdit = (props: EditProps) => { } path="rooms"> - }> + }> "/rooms/" + id + "/show"} bulkActionButtons={false}> From 6fe9be463c359dcd8ff273d2db3d7cf6a8a23ca5 Mon Sep 17 00:00:00 2001 From: Borislav Pantaleev Date: Fri, 7 Feb 2025 22:00:57 +0200 Subject: [PATCH 7/7] remove conosle.log --- src/synapse/dataProvider.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/synapse/dataProvider.ts b/src/synapse/dataProvider.ts index 36bad2d..a099d76 100644 --- a/src/synapse/dataProvider.ts +++ b/src/synapse/dataProvider.ts @@ -723,7 +723,6 @@ const baseDataProvider: SynapseDataProvider = { let total = 0; if (CACHED_MANY_REF[CACHE_KEY]) { - console.log("cached many ref", CACHED_MANY_REF[CACHE_KEY]); jsonData = CACHED_MANY_REF[CACHE_KEY]["data"].slice(from, from + perPage); total = CACHED_MANY_REF[CACHE_KEY]["total"]; } else {