import { At, Hash, Menu } from "@styled-icons/boxicons-regular"; import { Notepad, Group } from "@styled-icons/boxicons-solid"; import { Channel, User } from "revolt.js"; import styled from "styled-components"; import { useContext } from "preact/hooks"; import { isTouchscreenDevice } from "../../lib/isTouchscreenDevice"; import { useIntermediate } from "../../context/intermediate/Intermediate"; import { AppContext } from "../../context/revoltjs/RevoltClient"; import { getChannelName } from "../../context/revoltjs/util"; import { useStatusColour } from "../../components/common/user/UserIcon"; import UserStatus from "../../components/common/user/UserStatus"; import Header from "../../components/ui/Header"; import Markdown from "../../components/markdown/Markdown"; import HeaderActions from "./actions/HeaderActions"; export interface ChannelHeaderProps { channel: Channel; toggleSidebar?: () => void; } const Info = styled.div` flex-grow: 1; min-width: 0; overflow: hidden; white-space: nowrap; display: flex; gap: 8px; align-items: center; * { display: inline-block; } .divider { height: 20px; margin: 0 5px; padding-left: 1px; background-color: var(--tertiary-background); } .status { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-inline-end: 6px; } .desc { cursor: pointer; margin-top: 2px; font-size: 0.8em; font-weight: 400; color: var(--secondary-foreground); > * { pointer-events: none; } } `; export default function ChannelHeader({ channel, toggleSidebar, }: ChannelHeaderProps) { const { openScreen } = useIntermediate(); const client = useContext(AppContext); const name = getChannelName(client, channel); let icon, recipient; switch (channel.channel_type) { case "SavedMessages": icon = ; break; case "DirectMessage": icon = ; const uid = client.channels.getRecipient(channel._id); recipient = client.users.get(uid); break; case "Group": icon = ; break; case "TextChannel": icon = ; break; } return (
{isTouchscreenDevice && (
)} {icon} {name} {isTouchscreenDevice && channel.channel_type === "DirectMessage" && ( <>
)} {!isTouchscreenDevice && (channel.channel_type === "Group" || channel.channel_type === "TextChannel") && channel.description && ( <>
openScreen({ id: "channel_info", channel_id: channel._id, }) }> )}
); }