import {
ThreadList,
ThreadListItem,
ThreadProvider,
Thread,
WithComponents,
useActiveThread,
} from "stream-chat-react";
export const CustomThreadsView = () => {
const [activeThread, setActiveThread] = useState(undefined);
useActiveThread({ activeThread });
return (
<div className="custom-threads-view">
<ThreadList
virtuosoProps={{
itemContent: (_, thread) => (
<ThreadListItem
thread={thread}
threadListItemUiProps={{
"aria-selected": thread === activeThread,
onClick: () => {
setActiveThread(thread);
},
}}
/>
),
}}
/>
{activeThread && (
<ThreadProvider thread={activeThread}>
<Thread />
</ThreadProvider>
)}
</div>
);
};Custom Threads View
Our SDK comes with ChatView which allows for an easy integration of different views. In this guide we’ll show how to implement custom threads view while utilising core components and hooks.
Required Components & Hooks
These components and hooks are required for your own implementation to work properly:
ThreadListThreadListItem- a provider forThreadListItemUiwith thread information, will be used to forward custom click event to theThreadListItemUibuttonThreadProvider- “adapter” for Thread component to work properly withThreadinstanceThread- providesMessageListwithMessageInputadjusted for threadsuseActiveThread- takes your selected thread instance and handles its activity state (Thread.activate()&Thread.deactivate()) based on document focus and visibility