import { Match, Show, Switch } from "solid-js"; import { Trans } from "@lingui-solid/solid/macro"; import { Channel } from "stoat.js"; import { useModals } from "@revolt/modal"; import { useState } from "@revolt/state"; import MdBadge from "@material-design-icons/svg/outlined/badge.svg?component-solid"; import MdDelete from "@material-design-icons/svg/outlined/delete.svg?component-solid"; import MdGroupAdd from "@material-design-icons/svg/outlined/group_add.svg?component-solid"; import MdLibraryAdd from "@material-design-icons/svg/outlined/library_add.svg?component-solid"; import MdLogout from "@material-design-icons/svg/outlined/logout.svg?component-solid"; import MdMarkChatRead from "@material-design-icons/svg/outlined/mark_chat_read.svg?component-solid"; import MdSettings from "@material-design-icons/svg/outlined/settings.svg?component-solid"; import MdShare from "@material-design-icons/svg/outlined/share.svg?component-solid"; import MdShield from "@material-design-icons/svg/outlined/shield.svg?component-solid"; import { ContextMenu, ContextMenuButton, ContextMenuDivider, } from "./ContextMenu"; import { NotificationContextMenu } from "./shared/NotificationContextMenu"; /** * Context menu for channels */ export function ChannelContextMenu(props: { channel: Channel }) { const state = useState(); const { openModal } = useModals(); /** * Mark channel as read */ function markAsRead() { props.channel.ack(); } /** * Create a new invite */ function createInvite() { openModal({ type: "create_invite", channel: props.channel, }); } /** * Create a new channel */ function createChannel() { openModal({ type: "create_channel", server: props.channel.server!, }); } /** * Edit channel */ function editChannel() { openModal({ type: "settings", config: "channel", context: props.channel, }); } /** * Delete channel */ function deleteChannel() { openModal({ type: "delete_channel", channel: props.channel, }); } /** * Open channel in Stoat Admin Panel */ function openAdminPanel() { window.open( `https://old-admin.stoatinternal.com/panel/inspect/channel/${props.channel.id}`, "_blank", ); } /** * Copy channel link to clipboard */ function copyLink() { navigator.clipboard.writeText( `${location.origin}${ props.channel.server ? `/server/${props.channel.server?.id}` : "" }/channel/${props.channel.id}`, ); } /** * Copy channel id to clipboard */ function copyId() { navigator.clipboard.writeText(props.channel.id); } return ( Mark as read Create invite Create channel Open channel settings Delete channel}> Leave group Admin Panel Copy link Copy channel ID ); }