This commit is contained in:
EvanLin3141
2025-02-05 13:47:51 +00:00
3 changed files with 9 additions and 8 deletions

View File

@@ -13,9 +13,10 @@ interface ChatMessage {
interface ChatPanelProps { interface ChatPanelProps {
streamId: number; streamId: number;
onViewerCountChange?: (count: number) => void;
} }
const ChatPanel: React.FC<ChatPanelProps> = ({ streamId }) => { const ChatPanel: React.FC<ChatPanelProps> = ({ streamId, onViewerCountChange }) => {
const { socket, isConnected } = useSocket(); const { socket, isConnected } = useSocket();
const [messages, setMessages] = useState<ChatMessage[]>([]); const [messages, setMessages] = useState<ChatMessage[]>([]);
const [inputMessage, setInputMessage] = useState(""); const [inputMessage, setInputMessage] = useState("");
@@ -47,7 +48,6 @@ const ChatPanel: React.FC<ChatPanelProps> = ({ streamId }) => {
}) })
.then((data) => { .then((data) => {
if (data.chat_history) { if (data.chat_history) {
console.log("Chat history:", data.chat_history);
setMessages(data.chat_history); setMessages(data.chat_history);
} }
}) })
@@ -62,8 +62,11 @@ const ChatPanel: React.FC<ChatPanelProps> = ({ streamId }) => {
}); });
// Handle live viewership // Handle live viewership
socket.on("status", (data: ChatMessage) => { socket.on("status", (data: any) => {
console.log("Live viewership: ", data) // returns dictionary {message: message, num_viewers: num_viewers} console.log("Live viewership: ", data) // returns dictionary {message: message, num_viewers: num_viewers}
if (onViewerCountChange && data.num_viewers) {
onViewerCountChange(data.num_viewers);
}
}) })
// Cleanup function // Cleanup function

View File

@@ -56,7 +56,6 @@ export function StreamsProvider({ children }: { children: React.ReactNode }) {
category: stream.category_name, category: stream.category_name,
})); }));
console.log(extractedData);
setFeaturedStreams(extractedData); setFeaturedStreams(extractedData);
}); });

View File

@@ -17,7 +17,6 @@ interface StreamDataProps {
streamerName: string; streamerName: string;
streamerId: number; streamerId: number;
startTime: string; startTime: string;
viewerCount: number;
categoryName: string; categoryName: string;
} }
@@ -25,6 +24,7 @@ const VideoPage: React.FC<VideoPageProps> = ({ streamId }) => {
const { isLoggedIn } = useAuth(); const { isLoggedIn } = useAuth();
const { streamerName } = useParams<{ streamerName: string }>(); const { streamerName } = useParams<{ streamerName: string }>();
const [streamData, setStreamData] = useState<StreamDataProps>(); const [streamData, setStreamData] = useState<StreamDataProps>();
const [viewerCount, setViewerCount] = useState(1000000);
const [isChatOpen, setIsChatOpen] = useState(true); const [isChatOpen, setIsChatOpen] = useState(true);
// const [showCheckout, setShowCheckout] = useState(false); // const [showCheckout, setShowCheckout] = useState(false);
// const showReturn = window.location.search.includes("session_id"); // const showReturn = window.location.search.includes("session_id");
@@ -62,7 +62,6 @@ const VideoPage: React.FC<VideoPageProps> = ({ streamId }) => {
streamerId: data.user_id, streamerId: data.user_id,
streamTitle: data.title, streamTitle: data.title,
startTime: data.start_time, startTime: data.start_time,
viewerCount: data.num_viewers,
categoryName: data.category_name, categoryName: data.category_name,
}; };
setStreamData(transformedData); setStreamData(transformedData);
@@ -100,7 +99,7 @@ const VideoPage: React.FC<VideoPageProps> = ({ streamId }) => {
{isChatOpen ? "Hide Chat" : "Show Chat"} {isChatOpen ? "Hide Chat" : "Show Chat"}
</ToggleButton> </ToggleButton>
<ChatPanel streamId={streamId} /> <ChatPanel streamId={streamId} onViewerCountChange={(count: number) => setViewerCount(count)} />
<div <div
id="stream-info" id="stream-info"
@@ -127,7 +126,7 @@ const VideoPage: React.FC<VideoPageProps> = ({ streamId }) => {
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<span className="font-semibold">Viewer Count:</span> <span className="font-semibold">Viewer Count:</span>
<span>{streamData ? streamData.viewerCount : "0"}</span> <span>{viewerCount}</span>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<span className="font-semibold">Started At:</span> <span className="font-semibold">Started At:</span>