Workspace roles ok.

This commit is contained in:
charles-gauthereau
2024-12-31 11:48:38 +01:00
parent 6f75079a40
commit 2312567bba
4 changed files with 57 additions and 17 deletions
@@ -24,7 +24,7 @@ export const usersColumnsAdmin: ColumnDef<User>[] = [
mutationFn: () => updateUserAction({id: row.original.id, data: {role: role}}),
onSuccess: () => {
toast.success(`User updated successfully.`);
router.refresh()
// router.refresh()
},
onError: () => {
@@ -11,6 +11,9 @@ import {useState} from "react";
import {Trash2} from "lucide-react";
import {deleteUserAction} from "@/components/wrappers/dashboard/profile/ButtonDeleteAccount/delete-account.action";
import {ButtonWithLoading} from "@/components/wrappers/common/button/button-with-loading";
import {
updateUserOrganizationAction
} from "@/components/wrappers/dashboard/settings/SettingsUsersTab/settings-user-tab.action";
export const usersColumns: ColumnDef<UserOrganization>[] = [
{
@@ -20,24 +23,24 @@ export const usersColumns: ColumnDef<UserOrganization>[] = [
const router = useRouter();
const [role, setRole] = useState<string>(row.getValue("role"))
// const updateMutation = useMutation({
// mutationFn: () => updateUserAction({id: row.original.id, data: {role: role}}),
// onSuccess: () => {
// toast.success(`User updated successfully.`);
// router.refresh()
//
// },
// onError: () => {
// toast.error(`An error occurred while updating user information.`);
// },
// });
const updateMutation = useMutation({
mutationFn: () => updateUserOrganizationAction({id: row.original.id, role: role}),
onSuccess: () => {
toast.success(`User updated successfully.`);
// router.refresh()
},
onError: () => {
toast.error(`An error occurred while updating user information.`);
},
});
const handleUpdateRole = async () => {
const nextRole = role === "admin" ? "member"
: role === "member" ? "user"
: role === "member" ? "admin"
: "admin";
setRole(nextRole);
// await updateMutation.mutateAsync()
await updateMutation.mutateAsync()
};
return <Badge
@@ -1,2 +1,30 @@
"use server"
import {userAction} from "@/safe-actions";
import {z} from "zod";
import {prisma} from "@/prisma";
export const updateUserOrganizationAction = userAction
.schema(
z.object({
id: z.string(),
role: z.string(),
}
)
)
.action(async ({parsedInput, ctx}) => {
const updatedUserOrganization = await prisma.userOrganization.update({
where: {
id: parsedInput.id,
},
data: {
role: parsedInput.role,
},
})
return {
data: updatedUserOrganization,
}
})