"use client" import * as React from "react" import NextLink from "next/link" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip" import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover" import { Button } from "@/components/ui/button" import { GitHubIcon, PaletteIcon } from "@/components/Icon" import { useAppSelector, useAppDispatch, GITHUB_URL, COLOR_LIST, // getRandomUserId, // getRandomChannel, // genRandomString, API_GH_GET_REPO_INFO, } from "@/common" import { setThemeColor, setOptions } from "@/store/reducers/global" import { cn } from "@/lib/utils" import { HexColorPicker } from "react-colorful" import dynamic from "next/dynamic" import { useCancelableSWR } from "@/hooks" import { formatNumber } from "@/lib/utils" import styles from "./Header.module.css" export function HeaderRoomInfo() { const dispatch = useAppDispatch() const options = useAppSelector((state) => state.global.options) const { channel, userId } = options const roomConnected = useAppSelector((state) => state.global.roomConnected) const agentConnected = useAppSelector((state) => state.global.agentConnected) // const handleRegenerateChannelAndUserId = () => { // const newOptions = { // userName: genRandomString(8), // channel: getRandomChannel(), // userId: getRandomUserId(), // } // dispatch(setOptions(newOptions)) // } return ( <> {channel} {/* */}
INFO
ChannelName {channel}
UserID {userId}

STATUS
Room {roomConnected ? "Connected" : "Disconnected"}
Agent {agentConnected ? "Connected" : "Disconnected"}
) } export function HeaderActions() { return (
{/* GitHub */} {/* */}
) } export const ThemePalettePopover = () => { const themeColor = useAppSelector((state) => state.global.themeColor) const dispatch = useAppDispatch() const onMainClickSelect = (index: number) => { const target = COLOR_LIST[index] if (target.active !== themeColor) { dispatch(setThemeColor(target.active)) } } const onColorSliderChange = (color: string) => { console.log(color) dispatch(setThemeColor(color)) } return ( <>
STYLE
{COLOR_LIST.map((item, index) => { const isSelected = item.active === themeColor return ( ) })}
) } // export const Network = () => { // const [networkQuality, setNetworkQuality] = React.useState() // React.useEffect(() => { // rtcManager.on("networkQuality", onNetworkQuality) // return () => { // rtcManager.off("networkQuality", onNetworkQuality) // } // }, []) // const onNetworkQuality = (quality: NetworkQuality) => { // setNetworkQuality(quality) // } // return ( // // ) // } const NetworkIndicator = dynamic( () => import("@/components/Dynamic/NetworkIndicator"), { ssr: false, }, ) export const GitHubStar = () => { const [{ data, error, isLoading }] = useCancelableSWR<{ stargazers_count: number }>(API_GH_GET_REPO_INFO, { refreshInterval: 1000 * 60 * 60, // 1 hour revalidateOnFocus: false, revalidateOnReconnect: false, }) const starsCntMemo = React.useMemo(() => { if (!data || !data.stargazers_count) return null return formatNumber(data?.stargazers_count || 0) }, [data?.stargazers_count]) return ( ) }