in app/hooks/useRaisedHandAttendees.tsx [11:37]
export default function useRaisedHandAttendees() {
const chime: ChimeSdkWrapper | null = useContext(getChimeContext());
const [raisedHandAttendees, setRaisedHandAttendees] = useState(new Set());
useEffect(() => {
const realTimeRaisedHandAttendees = new Set();
const callback = (message: DataMessage) => {
const attendeeId = message.text();
if (attendeeId) {
if (message.topic === MessageTopic.RaiseHand) {
realTimeRaisedHandAttendees.add(attendeeId);
} else if (message.topic === MessageTopic.DismissHand) {
realTimeRaisedHandAttendees.delete(attendeeId);
}
setRaisedHandAttendees(new Set(realTimeRaisedHandAttendees));
}
};
const raiseHandMessageUpdateCallback = {
topic: MessageTopic.RaiseHand,
callback
};
chime?.subscribeToMessageUpdate(raiseHandMessageUpdateCallback);
return () => {
chime?.unsubscribeFromMessageUpdate(raiseHandMessageUpdateCallback);
};
}, []);
return raisedHandAttendees;
}