diff --git a/README.md b/README.md index b56b3f2..0863fe5 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ meteor build ../build --directory # Build (5-15 min) | Method | Args | Description | | --------------------- | --------------------------------- | ---------------------------- | | `teams.ensurePersonalWorkspace` | — | Create personal workspace | -| `teams.create` | `{ name }` | Create a new team | +| `teams.create` | `{ name, description? }` | Create a new team | | `teams.join` | `{ teamCode }` | Join a team via invite code | | `teams.updateName` | `{ teamId, newName }` | Rename a team | | `teams.delete` | `teamId` | Delete a team | diff --git a/imports/features/teams/TeamsPage.tsx b/imports/features/teams/TeamsPage.tsx index fc66182..710b444 100644 --- a/imports/features/teams/TeamsPage.tsx +++ b/imports/features/teams/TeamsPage.tsx @@ -70,7 +70,7 @@ export const TeamsPage: React.FC = () => { const selectedTeam = teams.find((t) => t._id === selectedTeamId) ?? null; // Methods - const createTeam = useMethod<[{ name: string }], { teamId: string; code: string }>('teams.create'); + const createTeam = useMethod<[{ name: string; description?: string }], { teamId: string; code: string }>('teams.create'); const joinTeam = useMethod<[{ teamCode: string }], string>('teams.join'); const updateName = useMethod<[{ teamId: string; newName: string }]>('teams.updateName'); const deleteTeam = useMethod<[string]>('teams.delete'); @@ -94,9 +94,15 @@ export const TeamsPage: React.FC = () => { >(null); const [formValue, setFormValue] = useState(''); + const [createDescription, setCreateDescription] = useState(''); const [formError, setFormError] = useState(null); - const closeModal = () => { setModal(null); setFormValue(''); setFormError(null); }; + const closeModal = () => { + setModal(null); + setFormValue(''); + setCreateDescription(''); + setFormError(null); + }; const [menuOpen, setMenuOpen] = useState(null); @@ -114,14 +120,18 @@ export const TeamsPage: React.FC = () => { const handleCreate = useCallback(async () => { if (!formValue.trim()) return; try { - const result = await createTeam.call({ name: formValue.trim() }); + const result = await createTeam.call({ + name: formValue.trim(), + description: createDescription.trim() || undefined, + }); setSelectedTeamId(result.teamId); setModal({ type: 'created', code: result.code }); setFormValue(''); + setCreateDescription(''); } catch (e: any) { setFormError(e.reason || 'Failed to create team'); } - }, [formValue, createTeam, setSelectedTeamId]); + }, [formValue, createDescription, createTeam, setSelectedTeamId]); const handleJoin = useCallback(async () => { if (!formValue.trim()) return; @@ -246,6 +256,11 @@ export const TeamsPage: React.FC = () => { {selectedTeam.isPersonal ? 'Personal Workspace' : selectedTeam.name} + {selectedTeam.description && ( + + {selectedTeam.description} + + )} {!selectedTeam.isPersonal && (
{selectedTeam.code} @@ -369,16 +384,27 @@ export const TeamsPage: React.FC = () => { - setFormValue(e.target.value)} - onKeyDown={(e) => e.key === 'Enter' && handleCreate()} - error={formError ?? undefined} - autoFocus - /> +
+ setFormValue(e.target.value)} + onKeyDown={(e) => e.key === 'Enter' && handleCreate()} + error={formError ?? undefined} + autoFocus + /> +