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

View File

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