commit 2b4f1fe94223ed6699a143b0eec1a4066f1d0d76
parent 6eff9140863d06684007cd09749907b679225ae8
Author: MTRNord <mtrnord1@gmail.com>
Date: Mon, 8 May 2023 19:24:56 +0200
Fix crypto
Diffstat:
3 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/src/app/protectedRoute.tsx b/src/app/protectedRoute.tsx
@@ -6,7 +6,7 @@ export const ProtectedRoute = ({ children }: { children: ReactElement<any, any>
const matrixClient = useContext(MatrixContext);
if (!matrixClient.isLoggedIn) {
// user is not authenticated
- return <Navigate to="login" />;
+ return <Navigate to="/login" />;
}
return children;
};
\ No newline at end of file
diff --git a/src/app/sdk/client.ts b/src/app/sdk/client.ts
@@ -418,6 +418,7 @@ export class MatrixClient extends EventEmitter {
await this.processRequest(request);
}
+ // TODO: This only should be done on sending a message in the room
for (const room of encryptedRooms) {
const encryptionSettings = room.getEncryptionSettings();
if (encryptionSettings) {
@@ -766,6 +767,30 @@ export class MatrixClient extends EventEmitter {
not_room_types: ["m.space"],
}
},
+ "e2ee": {
+ ranges: this.lastRanges["overview"],
+ sort: ["by_notification_level", "by_recency", "by_name"],
+ required_state: [
+ // needed to build sections
+ ["m.space.child", "*"],
+ ["m.space.parent", "*"],
+ ["m.room.create", ""],
+ ["m.room.tombstone", ""],
+ // Room Avatar
+ ["m.room.avatar", "*"],
+ // Room Topic
+ ["m.room.topic", "*"],
+ ["m.room.member", "*"],
+ // E2EE
+ ["m.room.encryption", ""],
+ ["m.room.history_visibility", ""],
+ ],
+ timeline_limit: timeline_limit,
+ filters: {
+ not_room_types: ["m.space"],
+ is_encrypted: true,
+ }
+ },
},
bump_event_types: ["m.room.message", "m.room.encrypted"],
@@ -1121,7 +1146,7 @@ export class MatrixClient extends EventEmitter {
roomObj.addStateEvents(state_events);
}
if (required_state || state_events) {
- if (roomObj.isEncrypted()) {
+ if (roomObj.isEncrypted() && roomObj.isJoined()) {
const joinEvents = [...(required_state || []), ...(state_events || [])]
.filter(event => event.type === "m.room.member" && event.content.membership === "join");
const memberIds = joinEvents.map(event => new UserId(event.state_key));
diff --git a/src/app/sdk/room.ts b/src/app/sdk/room.ts
@@ -356,6 +356,16 @@ export class Room extends EventEmitter {
}
return settings;
}
+
+ public isJoined(): boolean {
+ let isJoined: boolean = false;
+ this.stateEvents.forEach((event) => {
+ if (event.type === "m.room.member" && event.state_key === this.client.mxid) {
+ isJoined = event.content.membership === "join";
+ }
+ });
+ return isJoined;
+ }
}
export function useEvents(room?: Room) {