import React, { useMemo } from "react"; import "./open-channel-preview.scss"; const kFormat = (num) => { if (num < 1000) { return num; } const trimmed = num / 1000; return `${trimmed.toFixed(2)} k`; }; export default function OpenChannelPreview({ channel, selected = false, onClick, isStreaming = false }) { const streamInfo = useMemo(() => { let channelMeta = null ; if (isStreaming) { try { channelMeta = JSON.parse(channel.data); } catch (error) { } } return channelMeta; }, [isStreaming]); return ( <div className={` channel-preview ${selected ? "channel-preview--selected" : null} ${isStreaming ? "channel-preview--streaming" : null} `} onClick={onClick} > <div className="channel-preview__selection" /> <div className="channel-preview__inner-left"> <div className="channel-preview__avatar"> <img src={channel.coverUrl} alt={channel.name} /> </div> </div> <div className="channel-preview__inner-right"> <div className="channel-preview__name">{channel.name}</div> {isStreaming && ( <div className="channel-preview__creator-name"> {streamInfo.creator_info.name} </div> )} {isStreaming && ( <div className="channel-preview__count"> <div className="channel-preview__count-icon" /> <div className="channel-preview__count-text"> {kFormat(channel.participantCount)} </div> </div> )} {channel.isFrozen && <div style={{ position: "absolute" }}>*</div>} </div> </div> ); }