Add more valid rooms to the recents list (#2361)
Include: - all rooms you are a member of - knock rooms you've knocked on and are waiting for an invite to - knock rooms you've been invited to in response to a knock
This commit is contained in:
committed by
GitHub
parent
2151696374
commit
94f267b93e
@@ -89,18 +89,44 @@ const roomIsJoinable = (room: Room): boolean => {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// otherwise we can always join rooms because we will automatically decide if we want to use perParticipant or password
|
// otherwise we can always join rooms because we will automatically decide if we want to use perParticipant or password
|
||||||
const joinRule = room.getJoinRule();
|
switch (room.getJoinRule()) {
|
||||||
return joinRule === JoinRule.Knock || joinRule === JoinRule.Public;
|
case JoinRule.Public:
|
||||||
|
return true;
|
||||||
|
case JoinRule.Knock:
|
||||||
|
switch (room.getMyMembership()) {
|
||||||
|
case KnownMembership.Join:
|
||||||
|
case KnownMembership.Knock:
|
||||||
|
return true;
|
||||||
|
case KnownMembership.Invite:
|
||||||
|
return (
|
||||||
|
room
|
||||||
|
.getLiveTimeline()
|
||||||
|
.getState(EventTimeline.FORWARDS)
|
||||||
|
?.getStateEvents(EventType.RoomMember, room.myUserId)
|
||||||
|
?.getPrevContent().membership === JoinRule.Knock
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// TODO: check JoinRule.Restricted and return true if join condition is satisfied
|
||||||
|
default:
|
||||||
|
return room.getMyMembership() === KnownMembership.Join;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const roomHasCallMembershipEvents = (room: Room): boolean => {
|
const roomHasCallMembershipEvents = (room: Room): boolean => {
|
||||||
const roomStateEvents = room
|
switch (room.getMyMembership()) {
|
||||||
.getLiveTimeline()
|
case KnownMembership.Join:
|
||||||
.getState(EventTimeline.FORWARDS)?.events;
|
return !!room
|
||||||
return (
|
.getLiveTimeline()
|
||||||
room.getMyMembership() === KnownMembership.Join &&
|
.getState(EventTimeline.FORWARDS)
|
||||||
!!roomStateEvents?.get(EventType.GroupCallMemberPrefix)
|
?.events?.get(EventType.GroupCallMemberPrefix);
|
||||||
);
|
case KnownMembership.Knock:
|
||||||
|
// Assume that a room you've knocked on is able to hold calls
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export function useGroupCallRooms(client: MatrixClient): GroupCallRoom[] {
|
export function useGroupCallRooms(client: MatrixClient): GroupCallRoom[] {
|
||||||
|
|||||||
Reference in New Issue
Block a user