Fix error on room leave

Signed-off-by: Ajay Bura <ajbura@gmail.com>
This commit is contained in:
Ajay Bura 2022-01-09 10:29:06 +05:30
parent ca3cced6ad
commit 34bb5f9928
2 changed files with 24 additions and 22 deletions

View file

@ -188,29 +188,29 @@ function EmojiBoard({ onSelect }) {
const [availableEmojis, setAvailableEmojis] = useState([]);
// This should be called whenever the room changes, so that we can switch out the emoji
// for whatever packs are relevant to this room
function updateAvailableEmoji(selectedRoomId) {
// Retrieve the packs for the new room
const packs = getRelevantPacks(
initMatrix.matrixClient.getRoom(selectedRoomId),
)
// Remove packs that aren't marked as emoji packs
.filter((pack) => pack.usage.indexOf('emoticon') !== -1)
// Remove packs without emojis
.filter((pack) => pack.getEmojis().length !== 0);
// Set an index for each pack so that we know where to jump when the user uses the nav
for (let i = 0; i < packs.length; i += 1) {
packs[i].packIndex = i;
}
// Update the component state
setAvailableEmojis(packs);
}
// Register the above function as an event listener
useEffect(() => {
const updateAvailableEmoji = (selectedRoomId) => {
if (!selectedRoomId) {
setAvailableEmojis([]);
return;
}
// Retrieve the packs for the new room
// Remove packs that aren't marked as emoji packs
// Remove packs without emojis
const packs = getRelevantPacks(
initMatrix.matrixClient.getRoom(selectedRoomId),
)
.filter((pack) => pack.usage.indexOf('emoticon') !== -1)
.filter((pack) => pack.getEmojis().length !== 0);
// Set an index for each pack so that we know where to jump when the user uses the nav
for (let i = 0; i < packs.length; i += 1) {
packs[i].packIndex = i;
}
setAvailableEmojis(packs);
};
navigation.on(cons.events.navigation.ROOM_SELECTED, updateAvailableEmoji);
return () => {
navigation.removeListener(cons.events.navigation.ROOM_SELECTED, updateAvailableEmoji);

View file

@ -73,6 +73,8 @@ class Navigation extends EventEmitter {
this.emit(cons.events.navigation.SPACE_SELECTED, this.selectedSpaceId);
},
[cons.actions.navigation.SELECT_ROOM]: () => {
if (this.selectedRoomId === action.roomId) return;
const prevSelectedRoomId = this.selectedRoomId;
this.selectedRoomId = action.roomId;
this.removeRecentRoom(prevSelectedRoomId);