This commit is contained in:
Timothy Jaeryang Baek
2026-08-24 19:25:03 -04:00
parent 11db926a7b
commit 18bf0ade7b
4 changed files with 22 additions and 5 deletions
+6 -1
View File
@@ -59,6 +59,11 @@
adminGroupCount.set(groups.length);
};
/** @param {any} updatedGroup */
const updateGroup = (updatedGroup) => {
groups = groups.map((group) => (group.id === updatedGroup.id ? updatedGroup : group));
};
/** @param {any} group */
const addGroupHandler = async (group) => {
const res = await createNewGroup(localStorage.token, group).catch((error) => {
@@ -177,7 +182,7 @@
{#if filteredGroups.length !== 0}
<div class="mt-1 grid grid-cols-1">
{#each filteredGroups as group, idx (group.id)}
<GroupItem {group} {setGroups} {defaultPermissions} />
<GroupItem {group} {setGroups} {updateGroup} {defaultPermissions} />
{#if idx < filteredGroups.length - 1}
<hr class="border-gray-50 dark:border-gray-850/40" />
{/if}
@@ -19,6 +19,7 @@
export let onSubmit: Function = () => {};
export let onDelete: Function = () => {};
export let onMemberChange: Function = () => {};
export let show = false;
export let edit = false;
@@ -280,7 +281,7 @@
{:else if selectedTab == 'permissions'}
<Permissions bind:permissions {defaultPermissions} />
{:else if selectedTab == 'users'}
<Users bind:userCount groupId={group?.id} />
<Users bind:userCount groupId={group?.id} {onMemberChange} />
{:else if selectedTab == 'preview'}
<GroupPreviewPanel groupId={group?.id} />
{/if}
@@ -20,6 +20,8 @@
export let defaultPermissions = {};
export let setGroups = () => {};
/** @type {(group: any) => void} */
export let updateGroup = () => {};
let showEdit = false;
$: hasCustomPermissions = Object.keys(group?.permissions ?? {}).length > 0;
@@ -64,6 +66,7 @@
tabs={['general', 'permissions', 'users', 'preview']}
onSubmit={updateHandler}
onDelete={deleteHandler}
onMemberChange={updateGroup}
/>
<button
@@ -24,6 +24,7 @@
export let groupId: string;
export let userCount = 0;
export let onMemberChange: Function = () => {};
let users = null;
let total = null;
@@ -74,19 +75,26 @@
};
const toggleMember = async (userId, state) => {
let res = null;
if (state === 'checked') {
await addUserToGroup(localStorage.token, groupId, [userId]).catch((error) => {
res = await addUserToGroup(localStorage.token, groupId, [userId]).catch((error) => {
toast.error(`${error}`);
return null;
});
} else {
await removeUserFromGroup(localStorage.token, groupId, [userId]).catch((error) => {
res = await removeUserFromGroup(localStorage.token, groupId, [userId]).catch((error) => {
toast.error(`${error}`);
return null;
});
}
getUserList();
if (res) {
userCount = res.member_count ?? userCount;
onMemberChange(res);
}
await getUserList();
};
$: if (page !== null && orderBy !== null && direction !== null) {