diff --git a/src/lib/components/member-sidebar.svelte b/src/lib/components/member-sidebar.svelte index 55e609c..366055a 100644 --- a/src/lib/components/member-sidebar.svelte +++ b/src/lib/components/member-sidebar.svelte @@ -71,7 +71,7 @@
- +
- + diff --git a/src/routes/app/+page.server.ts b/src/routes/app/+page.server.ts index cd8d6ac..ed2af2d 100644 --- a/src/routes/app/+page.server.ts +++ b/src/routes/app/+page.server.ts @@ -426,6 +426,32 @@ export const actions = { _sendToSubscribers(groupId, { type: 'group', status: 'name-changed' }); return { success: true }; }, + configureGroup: async ({ request, locals }) => { + const data = await request.formData(); + const groupId = data.get('groupId'); + + if (typeof groupId !== 'string') { + return fail(400, { error: 'Invalid group ID' }); + } + + const group = await db.select().from(table.group).where(eq(table.group.id, groupId)).limit(1); + if (!group.length) return fail(404, { error: 'Group not found' }); + + if (group[0].owner !== locals.user!.id) { + return fail(403, { error: 'Only owner can configure group' }); + } + await db + .update(table.group) + .set({ + addMembers: data.has('addMembers') ? 1 : 0, + removeMembers: data.has('removeMembers') ? 1 : 0, + changeTitle: data.has('changeTitle') ? 1 : 0 + }) + .where(eq(table.group.id, groupId)); + _sendToSubscribers(group[0].id, { type: 'group', status: 'permission-change' }); + + return { success: true }; + }, createServer: async ({ request, locals }) => { const data = await request.formData();