Spaces:
Running
Running
<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> | |