commit e3c4969e3abde903bd88f0c2dd900a6fdbdba414
parent e5820fb773250f3499f5b50298b61d0252505f7f
Author: MTRNord <mtrnord1@gmail.com>
Date: Sun, 2 Jan 2022 00:33:22 +0100
Make sure to not excessively join rooms if logged in
Diffstat:
5 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/components/ClientContext.tsx b/components/ClientContext.tsx
@@ -2,7 +2,11 @@ import React, { Context } from "react";
import Client from "../helpers/matrix_client";
import Storage from "../helpers/storage";
-const client = new Client(new Storage());
-const ClientContext: Context<{ client: Client; }> = React.createContext<{ client: Client; }>({ client: client });
+// Actual user client
+const client = new Client(new Storage("main"));
-export { ClientContext, client };
-\ No newline at end of file
+// Client used if logged in for the Homepage to prevent excessive room joining
+const guest_client = new Client(new Storage("guest"));
+const ClientContext: Context<{ client: Client; guest_client: Client; }> = React.createContext<{ client: Client; guest_client: Client; }>({ client: client, guest_client: guest_client });
+
+export { ClientContext, client, guest_client };
+\ No newline at end of file
diff --git a/e2e/auth.json b/e2e/auth.json
@@ -5,19 +5,19 @@
"origin": "http://localhost:3000",
"localStorage": [
{
- "name": "accessToken",
+ "name": "main_accessToken",
"value": "syt_bWF0cml4X2FydF9ndWVzdF8xNjQxMDQ3ODI1NDkz_sHzGkEbUPwgafJZCVqDE_2LrWnQ"
},
{
- "name": "serverName",
+ "name": "main_serverName",
"value": "art.midnightthoughts.space"
},
{
- "name": "userId",
+ "name": "main_userId",
"value": "@matrix_art_guest_1641047825493:art.midnightthoughts.space"
},
{
- "name": "serverUrl",
+ "name": "main_serverUrl",
"value": "https://matrix.art.midnightthoughts.space/_matrix/client"
}
]
diff --git a/helpers/storage.ts b/helpers/storage.ts
@@ -1,6 +1,8 @@
export default class Storage {
+ private prefix;
private nodeLocalStorage?;
- constructor() {
+ constructor(prefix: string) {
+ this.prefix = prefix;
if (typeof window === "undefined") {
var LocalStorage = require('node-localstorage').LocalStorage;
var path = require('path');
@@ -9,25 +11,25 @@ export default class Storage {
}
getItem(key: string): any {
if (typeof window !== "undefined") {
- return window.localStorage.getItem(key);
+ return window.localStorage.getItem(this.prefix + key);
} else {
- return this.nodeLocalStorage?.getItem(key);
+ return this.nodeLocalStorage?.getItem(this.prefix + key);
}
}
setItem(key: string, value: any): any {
if (typeof window !== "undefined") {
- return window.localStorage.setItem(key, value);
+ return window.localStorage.setItem(this.prefix + key, value);
} else {
- return this.nodeLocalStorage?.setItem(key, value);
+ return this.nodeLocalStorage?.setItem(this.prefix + key, value);
}
}
removeItem(key: string): any {
if (typeof window !== "undefined") {
- return window.localStorage.removeItem(key);
+ return window.localStorage.removeItem(this.prefix + key);
} else {
- return this.nodeLocalStorage?.removeItem(key);
+ return this.nodeLocalStorage?.removeItem(this.prefix + key);
}
}
diff --git a/pages/Home.tsx b/pages/Home.tsx
@@ -85,14 +85,15 @@ export default class Home extends Component<Props, State>{
if (!directoryIsLoaded || isLoadingImages || hasFullyLoaded) {
return;
}
+ const client = this.context.client.isGuest ? this.context.client : this.context.guest_client;
this.setState({
isLoadingImages: true,
});
try {
for (let user of directory_data) {
// We dont need many events
- const roomId = await this.context.client?.followUser(user.user_room);
- await this.context.client?.getTimeline(roomId, 100, (events) => {
+ const roomId = await client?.followUser(user.user_room);
+ await client?.getTimeline(roomId, 100, (events) => {
// Filter events by type
const image_events = events.filter((event) => event.type == "m.image_gallery" || event.type == "m.image");
console.log("Adding ", image_events.length, " items");
diff --git a/pages/index.tsx b/pages/index.tsx
@@ -1,7 +1,7 @@
import type { NextPage } from 'next';
import Head from 'next/head';
import React from 'react';
-import { client, ClientContext } from '../components/ClientContext';
+import { guest_client, client, ClientContext } from '../components/ClientContext';
import Home from './Home';
const App: NextPage = () => {
@@ -17,6 +17,7 @@ const App: NextPage = () => {
<ClientContext.Provider
value={{
client: client,
+ guest_client: guest_client,
}}
>
<Home />