commit aa45a94f3de300930329e87b6607cbfc2d23de10
parent fb78a241871e4524db36e7d6c09852e822330551
Author: MTRNord <mtrnord1@gmail.com>
Date: Sat, 5 Feb 2022 20:33:06 +0100
Fix last fix and kinda make sure to reduce amount of guest registrations
Diffstat:
7 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/components/ClientContext.tsx b/components/ClientContext.tsx
@@ -7,6 +7,6 @@ const client = new Client(new Storage("main"));
// 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 });
+const ClientContext: Context<{ client: Client; guest_client: Client; is_generating_guest: boolean; }> = React.createContext<{ client: Client; guest_client: Client; is_generating_guest: boolean; }>({ client: client, guest_client: guest_client, is_generating_guest: false });
export { ClientContext, client, guest_client };
\ No newline at end of file
diff --git a/components/FrontPageImage.tsx b/components/FrontPageImage.tsx
@@ -49,7 +49,7 @@ export default class FrontPageImage extends PureComponent<Props, State> {
async componentDidMount() {
// auto-register as a guest if not logged in
if (!this.context.client?.accessToken) {
- this.registerAsGuest();
+ this.registerAsGuest();;
} else {
console.log("Already logged in");
if (!this.props.event) {
@@ -68,9 +68,15 @@ export default class FrontPageImage extends PureComponent<Props, State> {
}
async registerAsGuest() {
+ console.log(this.context.is_generating_guest);
+ if (this.context.is_generating_guest) {
+ return;
+ }
+ this.context.is_generating_guest = true;
try {
let serverUrl = constMatrixArtServer + "/_matrix/client";
await this.context.client?.registerAsGuest(serverUrl);
+ this.context.is_generating_guest = false;
if (typeof window !== "undefined") {
window.location.reload();
}
@@ -80,6 +86,7 @@ export default class FrontPageImage extends PureComponent<Props, State> {
error: "Failed to register as guest: " + JSON.stringify(error),
});
}
+ this.context.is_generating_guest = false;
}
render() {
diff --git a/helpers/storage.ts b/helpers/storage.ts
@@ -16,7 +16,14 @@ export default class Storage {
}
this.nodeLocalStorage = new LocalStorage(dir);
}
- if (this.getItem("version") === undefined || this.getItem("version") !== STORAGE_VERSION.toString()) {
+ let version;
+ if (typeof window !== "undefined") {
+ version = window.localStorage.getItem("version");
+ } else {
+ version = this.nodeLocalStorage?.getItem("version");
+ }
+ console.log("storage_version:", version);
+ if (version === undefined || version === null || version !== STORAGE_VERSION.toString()) {
if (typeof window !== "undefined") {
window.localStorage.clear();
window.localStorage.setItem("version", STORAGE_VERSION.toString());
diff --git a/pages/_app.tsx b/pages/_app.tsx
@@ -1,7 +1,6 @@
import '../styles/globals.css';
import 'react-toastify/dist/ReactToastify.min.css';
import type { AppProps } from 'next/app';
-import { useState } from 'react';
import { client, ClientContext, guest_client } from '../components/ClientContext';
import React from 'react';
import Head from 'next/head';
@@ -9,10 +8,6 @@ import { ToastContainer } from 'react-toastify';
import { appWithTranslation } from 'next-i18next';
function MyApp({ Component, pageProps }: AppProps) {
- const [value] = useState({
- client: client,
- guest_client: guest_client,
- });
return (
<>
<Head>
@@ -23,7 +18,11 @@ function MyApp({ Component, pageProps }: AppProps) {
</Head>
<React.StrictMode>
<ClientContext.Provider
- value={value}
+ value={{
+ client: client,
+ guest_client: guest_client,
+ is_generating_guest: false,
+ }}
>
<Component {...pageProps} />
</ClientContext.Provider>
diff --git a/pages/index.tsx b/pages/index.tsx
@@ -136,6 +136,7 @@ export const getServerSideProps: GetServerSideProps = async ({ res, locale }) =>
if (!client?.accessToken) {
try {
let serverUrl = constMatrixArtServer + "/_matrix/client";
+ console.log(1);
await client?.registerAsGuest(serverUrl);
} catch (error) {
console.error("Failed to register as guest:", error);
@@ -157,6 +158,7 @@ export const getServerSideProps: GetServerSideProps = async ({ res, locale }) =>
roomId = await client?.followUser(user.public_user_room);
} catch {
console.error("Unbable to join room");
+ continue;
}
const events = await client?.getTimeline(roomId, 100);
// Filter events by type
diff --git a/pages/post/[id].tsx b/pages/post/[id].tsx
@@ -105,6 +105,7 @@ class Post extends PureComponent<Props, State> {
roomId = await client?.followUser(user.public_user_room);
} catch {
console.error("Unbable to join room");
+ continue;
}
const events = await client?.getTimeline(roomId, 100); // Filter events by type
const image_event = events.find((event) => (event.type === "m.image_gallery" || event.type === "m.image") && event.event_id === event_id);
diff --git a/pages/profile/[userid].tsx b/pages/profile/[userid].tsx
@@ -128,6 +128,7 @@ class Profile extends PureComponent<Props, State> {
roomId = await client?.followUser("#" + this.props.mxid);
} catch {
console.error("Unbable to join room");
+ return;
}
const events = await client?.getTimeline(roomId, 100, { limit: 30, types: ["m.image", "m.image_gallery", "matrixart.profile", "matrixart.profile_banner"] });
const profile_event = events.find((event) => event.type === "matrixart.profile" && event.sender === this.props.mxid);