v0.12.20 added option to not create user group dm
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "rosterchirp-frontend",
|
||||
"version": "0.12.19",
|
||||
"version": "0.12.20",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -68,6 +68,7 @@ function AllGroupsTab({ allUsers, onRefresh, isMobile = false, onIF, onIB }) {
|
||||
const [members, setMembers] = useState(new Set());
|
||||
const [fullMembers, setFullMembers] = useState([]); // full member objects including deleted
|
||||
const [editName, setEditName] = useState('');
|
||||
const [noDm, setNoDm] = useState(false);
|
||||
const [saving, setSaving] = useState(false);
|
||||
const [deleting, setDeleting] = useState(false);
|
||||
const [showDelete, setShowDelete] = useState(false);
|
||||
@@ -82,10 +83,12 @@ function AllGroupsTab({ allUsers, onRefresh, isMobile = false, onIF, onIB }) {
|
||||
const ids = new Set(mems.map(m => m.id));
|
||||
setSelected(g); setEditName(g.name); setMembers(ids); setSavedMembers(ids);
|
||||
setFullMembers(mems);
|
||||
// No DM → checkbox enabled+checked; has DM → checkbox disabled+unchecked
|
||||
setNoDm(!g.dm_group_id);
|
||||
};
|
||||
const clearSelection = () => {
|
||||
setSelected(null); setEditName(''); setMembers(new Set()); setSavedMembers(new Set());
|
||||
setShowDelete(false); setFullMembers([]);
|
||||
setShowDelete(false); setFullMembers([]); setNoDm(false);
|
||||
};
|
||||
|
||||
const handleSave = async () => {
|
||||
@@ -93,14 +96,18 @@ function AllGroupsTab({ allUsers, onRefresh, isMobile = false, onIF, onIB }) {
|
||||
setSaving(true);
|
||||
try {
|
||||
if (selected) {
|
||||
await api.updateUserGroup(selected.id, { name: editName.trim(), memberIds: [...members] });
|
||||
// createDm=true when the group has no DM and the user unchecked "Do not create Group DM"
|
||||
const createDm = !selected.dm_group_id && !noDm;
|
||||
const { group: updated } = await api.updateUserGroup(selected.id, { name: editName.trim(), memberIds: [...members], createDm });
|
||||
toast('Group updated', 'success');
|
||||
const { members: fresh } = await api.getUserGroup(selected.id);
|
||||
const freshIds = new Set(fresh.map(m => m.id));
|
||||
setSavedMembers(freshIds); setMembers(freshIds); setFullMembers(fresh);
|
||||
setSelected(prev => ({ ...prev, name: editName.trim() }));
|
||||
// Reflect new dm_group_id if a DM was just created
|
||||
setSelected(prev => ({ ...prev, name: editName.trim(), dm_group_id: updated?.dm_group_id ?? prev.dm_group_id }));
|
||||
if (createDm) setNoDm(false);
|
||||
} else {
|
||||
await api.createUserGroup({ name: editName.trim(), memberIds: [...members] });
|
||||
await api.createUserGroup({ name: editName.trim(), memberIds: [...members], noDm });
|
||||
toast(`Group "${editName.trim()}" created`, 'success');
|
||||
clearSelection();
|
||||
}
|
||||
@@ -159,7 +166,18 @@ function AllGroupsTab({ allUsers, onRefresh, isMobile = false, onIF, onIB }) {
|
||||
<div>
|
||||
<label className="settings-section-label">Group Name</label>
|
||||
<input className="input" value={editName} onChange={e => setEditName(e.target.value)} autoComplete="new-password" placeholder="e.g. Coaches" style={{ marginTop:6 }} autoComplete="new-password" onFocus={onIF} onBlur={onIB} />
|
||||
{isCreating && <p style={{ fontSize:12, color:'var(--text-tertiary)', marginTop:5 }}>A matching Direct Message group will be created automatically.</p>}
|
||||
{isCreating && !noDm && <p style={{ fontSize:12, color:'var(--text-tertiary)', marginTop:5 }}>A matching Direct Message group will be created automatically.</p>}
|
||||
<label style={{ display:'flex', alignItems:'center', gap:8, marginTop:8, cursor: (selected && selected.dm_group_id) ? 'not-allowed' : 'pointer', opacity: (selected && selected.dm_group_id) ? 0.5 : 1 }}>
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={noDm}
|
||||
disabled={!!(selected && selected.dm_group_id)}
|
||||
onChange={e => setNoDm(e.target.checked)}
|
||||
style={{ width:15, height:15, cursor: (selected && selected.dm_group_id) ? 'not-allowed' : 'pointer' }}
|
||||
/>
|
||||
<span style={{ fontSize:13, color:'var(--text-secondary)' }}>Do not create Group DM</span>
|
||||
</label>
|
||||
{selected && selected.dm_group_id && <p style={{ fontSize:12, color:'var(--text-tertiary)', marginTop:4 }}>Group DM already exists — cannot be removed.</p>}
|
||||
</div>
|
||||
<div>
|
||||
<label className="settings-section-label">Members</label>
|
||||
|
||||
Reference in New Issue
Block a user