Files
cinny/src/app/hooks/useMembership.ts
T
Lotus Bot 61a1f008d0 chore: upgrade i18next 26, prettier 3, fontsource-variable, domhandler 6, lint-staged 17
- i18next 23->26 + react-i18next 15->17
- prettier 2->3, reformat all files
- replace @fontsource/inter with @fontsource-variable/inter 5, update import path
- domhandler 5->6 (aligns with transitive deps)
- lint-staged 16->17
2026-05-21 23:30:50 -04:00

29 lines
989 B
TypeScript

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;
};