Redesign user profile view (#2396)

* WIP - new profile view

* render common rooms in user profile

* add presence component

* WIP - room user profile

* temp hide profile button

* show mutual rooms in spaces, rooms and direct messages categories

* add message button

* add option to change user powers in profile

* improve ban info and option to unban

* add share user button in user profile

* add option to block user in user profile

* improve blocked user alert body

* add moderation tool in user profile

* open profile view on left side in member drawer

* open new user profile in all places
This commit is contained in:
Ajay Bura
2025-08-09 17:46:10 +05:30
committed by GitHub
parent a41dee4a55
commit 4d1ae4eafd
25 changed files with 1899 additions and 34 deletions

View File

@@ -0,0 +1,28 @@
import { useEffect, useState } from 'react';
import { Room, RoomMemberEvent, RoomMemberEventHandlerMap } from 'matrix-js-sdk';
import { Membership } from '../../types/matrix/room';
export const useMembership = (room: Room, userId: string): Membership => {
const member = room.getMember(userId);
const [membership, setMembership] = useState<Membership>(
() => (member?.membership as Membership | undefined) ?? Membership.Leave
);
useEffect(() => {
const handleMembershipChange: RoomMemberEventHandlerMap[RoomMemberEvent.Membership] = (
event,
m
) => {
if (event.getRoomId() === room.roomId && m.userId === userId) {
setMembership((m.membership as Membership | undefined) ?? Membership.Leave);
}
};
member?.on(RoomMemberEvent.Membership, handleMembershipChange);
return () => {
member?.removeListener(RoomMemberEvent.Membership, handleMembershipChange);
};
}, [room, member, userId]);
return membership;
};