hidden shit, and online status bars, search settings
This commit is contained in:
@@ -24,23 +24,30 @@ const getUserPresence = (user: User): UserPresence => ({
|
||||
|
||||
export const useUserPresence = (userId: string): UserPresence | undefined => {
|
||||
const mx = useMatrixClient();
|
||||
const user = mx.getUser(userId);
|
||||
const user = userId ? mx.getUser(userId) : null;
|
||||
|
||||
const [presence, setPresence] = useState(() => (user ? getUserPresence(user) : undefined));
|
||||
|
||||
useEffect(() => {
|
||||
const updatePresence: UserEventHandlerMap[UserEvent.Presence] = (event, u) => {
|
||||
if (u.userId === user?.userId) {
|
||||
if (!user) {
|
||||
setPresence(undefined);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
setPresence(getUserPresence(user));
|
||||
|
||||
const updatePresence: UserEventHandlerMap[UserEvent.Presence] = (_event, u) => {
|
||||
if (u.userId === user.userId) {
|
||||
setPresence(getUserPresence(user));
|
||||
}
|
||||
};
|
||||
user?.on(UserEvent.Presence, updatePresence);
|
||||
user?.on(UserEvent.CurrentlyActive, updatePresence);
|
||||
user?.on(UserEvent.LastPresenceTs, updatePresence);
|
||||
user.on(UserEvent.Presence, updatePresence);
|
||||
user.on(UserEvent.CurrentlyActive, updatePresence);
|
||||
user.on(UserEvent.LastPresenceTs, updatePresence);
|
||||
return () => {
|
||||
user?.removeListener(UserEvent.Presence, updatePresence);
|
||||
user?.removeListener(UserEvent.CurrentlyActive, updatePresence);
|
||||
user?.removeListener(UserEvent.LastPresenceTs, updatePresence);
|
||||
user.removeListener(UserEvent.Presence, updatePresence);
|
||||
user.removeListener(UserEvent.CurrentlyActive, updatePresence);
|
||||
user.removeListener(UserEvent.LastPresenceTs, updatePresence);
|
||||
};
|
||||
}, [user]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user