mirror of
https://github.com/open-webui/open-webui
synced 2025-03-27 07:50:37 +00:00
85 lines
1.8 KiB
Svelte
85 lines
1.8 KiB
Svelte
<script>
|
|
import { toast } from 'svelte-sonner';
|
|
import { getContext } from 'svelte';
|
|
|
|
const i18n = getContext('i18n');
|
|
|
|
import { deleteGroupById, updateGroupById } from '$lib/apis/groups';
|
|
|
|
import Pencil from '$lib/components/icons/Pencil.svelte';
|
|
import User from '$lib/components/icons/User.svelte';
|
|
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]
|
|
};
|
|
|
|
export let setGroups = () => {};
|
|
|
|
let showEdit = false;
|
|
|
|
const updateHandler = async (_group) => {
|
|
const res = await updateGroupById(localStorage.token, group.id, _group).catch((error) => {
|
|
toast.error(error);
|
|
return null;
|
|
});
|
|
|
|
if (res) {
|
|
toast.success($i18n.t('Group updated successfully'));
|
|
setGroups();
|
|
}
|
|
};
|
|
|
|
const deleteHandler = async () => {
|
|
const res = await deleteGroupById(localStorage.token, group.id).catch((error) => {
|
|
toast.error(error);
|
|
return null;
|
|
});
|
|
|
|
if (res) {
|
|
toast.success($i18n.t('Group deleted successfully'));
|
|
setGroups();
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<GroupModal
|
|
bind:show={showEdit}
|
|
edit
|
|
{users}
|
|
{group}
|
|
onSubmit={updateHandler}
|
|
onDelete={deleteHandler}
|
|
/>
|
|
|
|
<button
|
|
class="flex items-center gap-3 justify-between px-1 text-xs w-full transition"
|
|
on:click={() => {
|
|
showEdit = true;
|
|
}}
|
|
>
|
|
<div class="flex items-center gap-1.5 w-full font-medium">
|
|
<div>
|
|
<UserCircleSolid className="size-4" />
|
|
</div>
|
|
{group.name}
|
|
</div>
|
|
|
|
<div class="flex items-center gap-1.5 w-full font-medium">
|
|
{group.user_ids.length}
|
|
|
|
<div>
|
|
<User className="size-3.5" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="w-full flex justify-end">
|
|
<div class=" rounded-lg p-1 hover:bg-gray-100 dark:hover:bg-gray-850 transition">
|
|
<Pencil className="size-3.5" />
|
|
</div>
|
|
</div>
|
|
</button>
|