Links to sha commit of matrix-js-sdk that exposes the call membership event id and refactors some async code

Signed-off-by: Milton Moura <miltonmoura@gmail.com>
This commit is contained in:
Milton Moura
2024-09-10 23:04:36 +00:00
parent 0730ba5c70
commit ab5654cf32

View File

@@ -320,7 +320,8 @@ export const InCallView: FC<InCallViewProps> = ({
const getLastReactionEvent = async ( const getLastReactionEvent = async (
eventId: string, eventId: string,
): Promise<MatrixEvent | undefined> => { ): Promise<MatrixEvent | undefined> => {
const rels = await client.relations( return client
.relations(
rtcSession.room.roomId, rtcSession.room.roomId,
eventId, eventId,
RelationType.Annotation, RelationType.Annotation,
@@ -328,9 +329,10 @@ export const InCallView: FC<InCallViewProps> = ({
{ {
limit: 1, limit: 1,
}, },
); )
.then((rels) => {
return rels.events.length > 0 ? rels.events[0] : undefined; return rels.events.length > 0 ? rels.events[0] : undefined;
});
}; };
const fetchReactions = async (): Promise<void> => { const fetchReactions = async (): Promise<void> => {
@@ -347,7 +349,7 @@ export const InCallView: FC<InCallViewProps> = ({
setRaisedHands(newRaisedHands); setRaisedHands(newRaisedHands);
}; };
fetchReactions(); void fetchReactions();
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, []); }, []);
@@ -556,43 +558,39 @@ export const InCallView: FC<InCallViewProps> = ({
.catch(logger.error); .catch(logger.error);
}, [localParticipant, isScreenShareEnabled]); }, [localParticipant, isScreenShareEnabled]);
const toggleRaisedHand = useCallback(async () => { const toggleRaisedHand = useCallback(() => {
try {
if (isHandRaised) { if (isHandRaised) {
try {
if (reactionId) { if (reactionId) {
await client.redactEvent(rtcSession.room.roomId, reactionId); client
.redactEvent(rtcSession.room.roomId, reactionId)
.then(() => {
setReactionId(null); setReactionId(null);
setRaisedHands(raisedHands.filter((id) => id !== userId)); setRaisedHands(raisedHands.filter((id) => id !== userId));
logger.debug("Redacted reaction event"); logger.debug("Redacted reaction event");
} })
} catch (e) { .catch((e) => {
logger.error("Failed to redact reaction event", e); logger.error("Failed to redact reaction event", e);
});
} }
} else { } else {
const m = memberships.filter((m) => m.sender === userId); const m = memberships.filter((m) => m.sender === userId);
const eventId = m[0].eventId!; const eventId = m[0].eventId!;
try { client
const reaction = await client.sendEvent( .sendEvent(rtcSession.room.roomId, EventType.Reaction, {
rtcSession.room.roomId,
EventType.Reaction,
{
"m.relates_to": { "m.relates_to": {
rel_type: RelationType.Annotation, rel_type: RelationType.Annotation,
event_id: eventId, event_id: eventId,
key: "🖐️", key: "🖐️",
}, },
}, })
); .then((reaction) => {
setReactionId(reaction.event_id); setReactionId(reaction.event_id);
setRaisedHands([...raisedHands, userId]); setRaisedHands([...raisedHands, userId]);
logger.debug("Sent reaction event", reaction.event_id); logger.debug("Sent reaction event", reaction.event_id);
} catch (e) { })
.catch((e) => {
logger.error("Failed to send reaction event", e); logger.error("Failed to send reaction event", e);
} });
}
} catch (e) {
logger.error(e);
} }
}, [ }, [
client, client,