1
0
forked from baron/baron-sso

fix(adminfront): fix Biome lint errors by removing explicit any types

This commit is contained in:
2026-03-27 18:02:53 +09:00
parent 5ae0e19e31
commit 6192220ec1
2 changed files with 54 additions and 37 deletions

View File

@@ -40,6 +40,7 @@ import {
} from "../../../components/ui/table";
import { toast } from "../../../components/ui/use-toast";
import {
type TenantAdmin,
addTenantAdmin,
addTenantOwner,
fetchTenantAdmins,
@@ -86,7 +87,7 @@ export function TenantAdminsAndOwnersTab() {
await queryClient.cancelQueries({
queryKey: ["tenant-owners", tenantId],
});
const previousOwners = queryClient.getQueryData<any[]>([
const previousOwners = queryClient.getQueryData<TenantAdmin[]>([
"tenant-owners",
tenantId,
]);
@@ -94,17 +95,20 @@ export function TenantAdminsAndOwnersTab() {
// Optimistically add to the list to prevent immediate double clicks
const addedUser = searchResults.find((u) => u.id === userId);
if (addedUser) {
queryClient.setQueryData<any[]>(["tenant-owners", tenantId], (old) => {
if (!old)
queryClient.setQueryData<TenantAdmin[]>(
["tenant-owners", tenantId],
(old) => {
if (!old)
return [
{ id: userId, name: addedUser.name, email: addedUser.email },
];
if (old.some((o) => o.id === userId)) return old;
return [
...old,
{ id: userId, name: addedUser.name, email: addedUser.email },
];
if (old.some((o) => o.id === userId)) return old;
return [
...old,
{ id: userId, name: addedUser.name, email: addedUser.email },
];
});
},
);
}
return { previousOwners };
},
@@ -140,12 +144,13 @@ export function TenantAdminsAndOwnersTab() {
await queryClient.cancelQueries({
queryKey: ["tenant-owners", tenantId],
});
const previousOwners = queryClient.getQueryData<any[]>([
const previousOwners = queryClient.getQueryData<TenantAdmin[]>([
"tenant-owners",
tenantId,
]);
queryClient.setQueryData<any[]>(["tenant-owners", tenantId], (old) =>
old ? old.filter((o) => o.id !== userId) : [],
queryClient.setQueryData<TenantAdmin[]>(
["tenant-owners", tenantId],
(old) => (old ? old.filter((o) => o.id !== userId) : []),
);
return { previousOwners };
},
@@ -182,24 +187,27 @@ export function TenantAdminsAndOwnersTab() {
await queryClient.cancelQueries({
queryKey: ["tenant-admins", tenantId],
});
const previousAdmins = queryClient.getQueryData<any[]>([
const previousAdmins = queryClient.getQueryData<TenantAdmin[]>([
"tenant-admins",
tenantId,
]);
const addedUser = searchResults.find((u) => u.id === userId);
if (addedUser) {
queryClient.setQueryData<any[]>(["tenant-admins", tenantId], (old) => {
if (!old)
queryClient.setQueryData<TenantAdmin[]>(
["tenant-admins", tenantId],
(old) => {
if (!old)
return [
{ id: userId, name: addedUser.name, email: addedUser.email },
];
if (old.some((a) => a.id === userId)) return old;
return [
...old,
{ id: userId, name: addedUser.name, email: addedUser.email },
];
if (old.some((a) => a.id === userId)) return old;
return [
...old,
{ id: userId, name: addedUser.name, email: addedUser.email },
];
});
},
);
}
return { previousAdmins };
},
@@ -234,12 +242,13 @@ export function TenantAdminsAndOwnersTab() {
await queryClient.cancelQueries({
queryKey: ["tenant-admins", tenantId],
});
const previousAdmins = queryClient.getQueryData<any[]>([
const previousAdmins = queryClient.getQueryData<TenantAdmin[]>([
"tenant-admins",
tenantId,
]);
queryClient.setQueryData<any[]>(["tenant-admins", tenantId], (old) =>
old ? old.filter((a) => a.id !== userId) : [],
queryClient.setQueryData<TenantAdmin[]>(
["tenant-admins", tenantId],
(old) => (old ? old.filter((a) => a.id !== userId) : []),
);
return { previousAdmins };
},

View File

@@ -12,11 +12,14 @@ import {
Save,
Trash2,
UserCheck,
UserMinus,
Users,
} from "lucide-react";
import * as React from "react";
import { useForm } from "react-hook-form";
import {
type FieldErrors,
type UseFormRegister,
useForm,
} from "react-hook-form";
import { Link, useNavigate, useParams } from "react-router-dom";
import { Badge } from "../../components/ui/badge";
import { Button } from "../../components/ui/button";
@@ -35,7 +38,6 @@ import {
type UserUpdateRequest,
deleteUser,
fetchMe,
fetchTenant,
fetchTenants,
fetchUser,
updateUser,
@@ -52,6 +54,10 @@ type UserSchemaField = {
validation?: string;
};
type UserFormValues = Omit<UserUpdateRequest, "metadata"> & {
metadata: Record<string, Record<string, string | number | boolean>>;
};
function TenantMetadataFields({
tenant,
schema,
@@ -60,8 +66,8 @@ function TenantMetadataFields({
}: {
tenant: { id: string; name: string; slug: string };
schema: UserSchemaField[];
register: any;
errors: any;
register: UseFormRegister<UserFormValues>;
errors: FieldErrors<UserFormValues>;
}) {
if (schema.length === 0) return null;
@@ -107,7 +113,7 @@ function TenantMetadataFields({
className={
field.type === "boolean" ? "w-auto h-auto" : "h-8 text-sm"
}
{...register(`metadata.${tenant.id}.${field.key}`, {
{...register(`metadata.${tenant.id}.${field.key}` as const, {
required: field.required
? t(
"msg.admin.users.detail.form.field_required",
@@ -149,10 +155,6 @@ function TenantMetadataFields({
);
}
type UserFormValues = Omit<UserUpdateRequest, "metadata"> & {
metadata: Record<string, Record<string, any>>;
};
function UserDetailPage() {
const params = useParams<{ id: string }>();
const userId = params.id ?? "";
@@ -191,7 +193,6 @@ function UserDetailPage() {
handleSubmit,
reset,
watch,
setValue,
formState: { errors },
} = useForm<UserFormValues>({
defaultValues: {
@@ -261,7 +262,11 @@ function UserDetailPage() {
department: user.department || "",
position: user.position || "",
jobTitle: user.jobTitle || "",
metadata: user.metadata || {},
metadata:
(user.metadata as unknown as Record<
string,
Record<string, string | number | boolean>
>) || {},
});
}
}, [user, reset]);
@@ -326,7 +331,10 @@ function UserDetailPage() {
}),
);
mutation.mutate({ ...data, metadata: cleanMetadata });
mutation.mutate({
...data,
metadata: cleanMetadata as Record<string, unknown>,
});
};
const handleDelete = () => {