"use client";

import { RoleForm } from "@/components/admins/rbac/role-form";
import type { RbacModule } from "@/app/dashboard/admins/access/app-modules/_lib/app-modules-server-api";
import { updateRole } from "@/components/admins/rbac/api/roles-api";
import type { RoleFormValues } from "@/components/admins/rbac/schemas/rbac.schema";
import type { Role } from "@/components/admins/rbac/types";
import { toast } from "sonner";

type EditRolePageClientProps = {
  role: Role;
  availableModules: RbacModule[];
  modulesErrorMessage: string | null;
};

export function EditRolePageClient({
  role,
  availableModules,
  modulesErrorMessage,
}: EditRolePageClientProps) {
  const onSubmit = async (values: RoleFormValues) => {
    const data = await updateRole(values);
    toast.success(data.message ?? `Role "${values.name}" updated.`);
  };

  return (
    <RoleForm
      mode="edit"
      initialRole={role}
      isTemplate={role.type === "template"}
      availableModules={availableModules}
      modulesErrorMessage={modulesErrorMessage}
      onSubmit={onSubmit}
    />
  );
}
