diff --git a/src/index.css b/src/index.css index a196794..e35eb6f 100644 --- a/src/index.css +++ b/src/index.css @@ -683,6 +683,17 @@ button { .dc-composer .btn { flex: none; } +.dc-closed-banner { + flex: none; + margin: 0 16px 20px; + padding: 12px 14px; + text-align: center; + color: var(--text-muted); + background: var(--elevated); + border: 1px solid var(--border); + border-radius: 8px; + font-size: 13px; +} /* members */ .dc-members { diff --git a/src/pages/ChatPage.tsx b/src/pages/ChatPage.tsx index a3257ee..507c48e 100644 --- a/src/pages/ChatPage.tsx +++ b/src/pages/ChatPage.tsx @@ -34,7 +34,7 @@ function timeOf(iso?: string): string { const X_TYPES = ['general', 'work', 'report', 'discuss', 'triage', 'custom'] as const type XType = (typeof X_TYPES)[number] -type GuildChannel = { id: string; name: string; guildId?: string; xType?: XType; isMember?: boolean; isPublic?: boolean } +type GuildChannel = { id: string; name: string; guildId?: string; xType?: XType; isMember?: boolean; isPublic?: boolean; closed?: boolean } type MemberItem = { userId: string; email: string; name: string; status: string } export default function ChatPage() { @@ -500,24 +500,28 @@ export default function ChatPage() { ))} -
{ - e.preventDefault() - void sendMessage() - }} - > - setContent(e.target.value)} - placeholder={currentChannel ? `Message #${currentChannel.name}` : 'Select a channel first'} - disabled={!currentChannel} - /> - -
+ {currentChannel?.closed ? ( +
This channel is closed — history is read-only.
+ ) : ( +
{ + e.preventDefault() + void sendMessage() + }} + > + setContent(e.target.value)} + placeholder={currentChannel ? `Message #${currentChannel.name}` : 'Select a channel first'} + disabled={!currentChannel} + /> + +
+ )} {showMembers ? (