diff --git a/src/lib/components/admin/Users/Groups.svelte b/src/lib/components/admin/Users/Groups.svelte index fcf5128c7b..5bee36ed38 100644 --- a/src/lib/components/admin/Users/Groups.svelte +++ b/src/lib/components/admin/Users/Groups.svelte @@ -33,9 +33,6 @@ let loaded = false; - let users = []; - let total = 0; - let groups = []; let filteredGroups; @@ -93,16 +90,6 @@ return; } - const res = await getAllUsers(localStorage.token).catch((error) => { - toast.error(`${error}`); - return null; - }); - - if (res) { - users = res.users; - total = res.total; - } - defaultPermissions = await getUserDefaultPermissions(localStorage.token); await setGroups(); loaded = true; @@ -189,7 +176,7 @@ {#each filteredGroups as group}
- +
{/each} diff --git a/src/lib/components/admin/Users/Groups/EditGroupModal.svelte b/src/lib/components/admin/Users/Groups/EditGroupModal.svelte index 1225a3dcf4..7f753c537c 100644 --- a/src/lib/components/admin/Users/Groups/EditGroupModal.svelte +++ b/src/lib/components/admin/Users/Groups/EditGroupModal.svelte @@ -19,7 +19,6 @@ export let show = false; export let edit = false; - export let users = []; export let group = null; export let defaultPermissions = {}; @@ -31,6 +30,8 @@ let loading = false; let showDeleteConfirmDialog = false; + let userCount = 0; + export let name = ''; export let description = ''; @@ -75,7 +76,6 @@ code_interpreter: true } }; - export let userIds = []; const submitHandler = async () => { loading = true; @@ -83,8 +83,7 @@ const group = { name, description, - permissions, - user_ids: userIds + permissions }; await onSubmit(group); @@ -99,7 +98,7 @@ description = group.description; permissions = group?.permissions ?? {}; - userIds = group?.user_ids ?? []; + userCount = group?.member_count ?? 0; } }; @@ -121,7 +120,7 @@ }} /> - +
@@ -220,20 +219,20 @@
-
{$i18n.t('Users')} ({userIds.length})
+
{$i18n.t('Users')} ({userCount})
{/if}
{#if selectedTab == 'general'} {:else if selectedTab == 'permissions'} {:else if selectedTab == 'users'} - + {/if}
diff --git a/src/lib/components/admin/Users/Groups/GroupItem.svelte b/src/lib/components/admin/Users/Groups/GroupItem.svelte index a16ab6560e..47481655cb 100644 --- a/src/lib/components/admin/Users/Groups/GroupItem.svelte +++ b/src/lib/components/admin/Users/Groups/GroupItem.svelte @@ -12,7 +12,6 @@ import UserCircleSolid from '$lib/components/icons/UserCircleSolid.svelte'; import GroupModal from './EditGroupModal.svelte'; - export let users = []; export let group = { name: 'Admins', user_ids: [1, 2, 3] @@ -58,7 +57,6 @@
- {group.user_ids.length} + {group?.member_count}
diff --git a/src/lib/components/admin/Users/Groups/Users.svelte b/src/lib/components/admin/Users/Groups/Users.svelte index 2cc75a30d3..a82fb9228d 100644 --- a/src/lib/components/admin/Users/Groups/Users.svelte +++ b/src/lib/components/admin/Users/Groups/Users.svelte @@ -8,42 +8,49 @@ import Checkbox from '$lib/components/common/Checkbox.svelte'; import Badge from '$lib/components/common/Badge.svelte'; import Search from '$lib/components/icons/Search.svelte'; + import { getUsers } from '$lib/apis/users'; + import { toast } from 'svelte-sonner'; + import Pagination from '$lib/components/common/Pagination.svelte'; - export let users = []; - export let userIds = []; + export let userCount = 0; + let userIds = []; - let filteredUsers = []; - - $: filteredUsers = users - .filter((user) => { - if (query === '') { - return true; - } - - return ( - user.name.toLowerCase().includes(query.toLowerCase()) || - user.email.toLowerCase().includes(query.toLowerCase()) - ); - }) - .sort((a, b) => { - const aUserIndex = userIds.indexOf(a.id); - const bUserIndex = userIds.indexOf(b.id); - - // Compare based on userIds or fall back to alphabetical order - if (aUserIndex !== -1 && bUserIndex === -1) return -1; // 'a' has valid userId -> prioritize - if (bUserIndex !== -1 && aUserIndex === -1) return 1; // 'b' has valid userId -> prioritize - - // Both a and b are either in the userIds array or not, so we'll sort them by their indices - if (aUserIndex !== -1 && bUserIndex !== -1) return aUserIndex - bUserIndex; - - // If both are not in the userIds, fallback to alphabetical sorting by name - return a.name.localeCompare(b.name); - }); + let users = []; + let total = 0; let query = ''; + let page = 1; + + const getUserList = async () => { + try { + const res = await getUsers(localStorage.token, query, null, null, page).catch((error) => { + toast.error(`${error}`); + return null; + }); + + if (res) { + users = res.users; + total = res.total; + } + } catch (err) { + console.error(err); + } + }; + + $: if (page) { + getUserList(); + } + + $: if (query !== null) { + getUserList(); + } + + $: if (query) { + page = 1; + } -
+
@@ -57,10 +64,10 @@
-
+
- {#if filteredUsers.length > 0} - {#each filteredUsers as user, userIdx (user.id)} + {#if users.length > 0} + {#each users as user, userIdx (user.id)}
{/each} + + {page} + + {total} + + {#if total > 30} + + {/if} {:else}
{$i18n.t('No users were found.')}