Merge branch 'main' of https://github.com/john-david3/cs3305-team11
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user