/* eslint-disable react-hooks/set-state-in-effect -- pre-existing pattern flagged by the React Compiler rules added in eslint-plugin-react-hooks v7; refactoring it is out of scope for the lint toolchain upgrade. */ import { useEffect, useState } from 'react' import { Channel, Event } from 'stream-chat' export const useChannelStar = (channel?: Channel) => { const [isChannelStarred, setIsChannelStarred] = useState( !!channel?.state?.membership?.pinned_at ) useEffect(() => { if (!channel) { setIsChannelStarred(false) return } setIsChannelStarred(!!channel.state.membership?.pinned_at) const handleMemberUpdate = (event: Event) => { setIsChannelStarred( event?.member ? !!event.member.pinned_at : !!channel.state.membership?.pinned_at ) } channel.on('member.updated', handleMemberUpdate) return () => { channel.off('member.updated', handleMemberUpdate) } }, [channel]) return isChannelStarred }