v0.5.0 UI and new message rules

This commit is contained in:
2026-03-10 11:14:33 -04:00
parent d5087cd693
commit 110624c866
11 changed files with 127 additions and 16 deletions

View File

@@ -57,8 +57,12 @@ export default function NewChatModal({ onClose, onCreated }) {
};
}
const { group } = await api.createGroup(payload);
toast(isDirect ? 'Direct message started!' : `${tab === 'public' ? 'Public message' : 'Group message'} created!`, 'success');
const { group, duplicate } = await api.createGroup(payload);
if (duplicate) {
toast('A group with these members already exists — opening it now.', 'info');
} else {
toast(isDirect ? 'Direct message started!' : `${tab === 'public' ? 'Public message' : 'Group message'} created!`, 'success');
}
onCreated(group);
} catch (e) {
toast(e.message, 'error');
@@ -89,8 +93,8 @@ export default function NewChatModal({ onClose, onCreated }) {
</div>
)}
{/* Message Name — hidden for direct (1-user) messages */}
{!isDirect && (
{/* Message Name — only shown when needed: public always, private only when 2+ members selected */}
{(tab === 'public' || (tab === 'private' && selected.length > 1)) && (
<div className="flex-col gap-2" style={{ marginBottom: 16 }}>
<label className="text-sm font-medium" style={{ color: 'var(--text-secondary)' }}>Message Name</label>
<input
@@ -98,7 +102,6 @@ export default function NewChatModal({ onClose, onCreated }) {
value={name}
onChange={e => setName(e.target.value)}
placeholder={namePlaceholder}
autoFocus={tab === 'public'}
/>
</div>
)}
@@ -118,7 +121,7 @@ export default function NewChatModal({ onClose, onCreated }) {
<label className="text-sm font-medium" style={{ color: 'var(--text-secondary)' }}>
{isDirect ? 'Direct Message with' : 'Add Members'}
</label>
<input className="input" placeholder="Search users..." value={search} onChange={e => setSearch(e.target.value)} autoFocus />
<input className="input" placeholder="Search users..." value={search} onChange={e => setSearch(e.target.value)} />
</div>
{selected.length > 0 && (