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();