import styled from "styled-components"; import { Channel, User } from "revolt.js"; import { useContext } from "preact/hooks"; import Header from "../../components/ui/Header"; import HeaderActions from "./actions/HeaderActions"; import Markdown from "../../components/markdown/Markdown"; import { getChannelName } from "../../context/revoltjs/util"; import UserStatus from "../../components/common/user/UserStatus"; import { AppContext } from "../../context/revoltjs/RevoltClient"; import { At, Hash } from "@styled-icons/boxicons-regular"; import { Notepad, Group } from "@styled-icons/boxicons-solid"; import { useStatusColour } from "../../components/common/user/UserIcon"; import { useIntermediate } from "../../context/intermediate/Intermediate"; 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: baseline; * { display: inline-block; } .divider { height: 14px; 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; font-size: 0.8em; font-weight: 400; color: var(--secondary-foreground); } `; 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 (
{ icon } { name } {channel.channel_type === "DirectMessage" && ( <>
)} {(channel.channel_type === "Group" || channel.channel_type === "TextChannel") && channel.description && ( <>
openScreen({ id: "channel_info", channel_id: channel._id }) }> )}
) }