cetirizine

An experimental matrix client written in reactjs utilizing tailwind and storybook
git clone git://archive.git.mtrnord.blog/MTRNord/cetirizine.git
Log | Files | Refs | README | LICENSE

commit 2b4f1fe94223ed6699a143b0eec1a4066f1d0d76
parent 6eff9140863d06684007cd09749907b679225ae8
Author: MTRNord <mtrnord1@gmail.com>
Date:   Mon,  8 May 2023 19:24:56 +0200

Fix crypto

Diffstat:
Msrc/app/protectedRoute.tsx | 2+-
Msrc/app/sdk/client.ts | 27++++++++++++++++++++++++++-
Msrc/app/sdk/room.ts | 10++++++++++
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) {