refactor: update OKR form and edit page to use new CreateKeyResultInput type for improved type safety and clarity
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 6m54s

This commit is contained in:
Julien Froidefond
2026-01-07 17:32:27 +01:00
parent 86c26b5af8
commit 47703db348
3 changed files with 20 additions and 20 deletions

View File

@@ -5,7 +5,7 @@ import { useRouter, useParams } from 'next/navigation';
import Link from 'next/link';
import { OKRForm } from '@/components/okrs';
import { Card } from '@/components/ui';
import type { CreateOKRInput, TeamMember, OKR, KeyResult } from '@/lib/types';
import type { CreateOKRInput, CreateKeyResultInput, TeamMember, OKR, KeyResult } from '@/lib/types';
type OKRWithTeamMember = OKR & {
teamMember: {
@@ -66,7 +66,7 @@ export default function EditOKRPage() {
startDate: Date | string;
endDate: Date | string;
keyResultsUpdates?: {
create?: Array<{ title: string; targetValue: number; unit: string; order: number }>;
create?: CreateKeyResultInput[];
update?: KeyResultUpdate[];
delete?: string[]
}
@@ -87,7 +87,7 @@ export default function EditOKRPage() {
startDate: string;
endDate: string;
keyResultsUpdates?: {
create?: Array<{ title: string; targetValue: number; unit: string; order: number }>;
create?: CreateKeyResultInput[];
update?: KeyResultUpdate[];
delete?: string[];
};

View File

@@ -69,21 +69,21 @@ type KeyResultUpdate = {
order?: number;
};
type OKRFormSubmitData =
| (CreateOKRInput & {
startDate: Date | string;
endDate: Date | string;
keyResultsUpdates?: {
create?: CreateKeyResultInput[];
update?: KeyResultUpdate[];
delete?: string[];
};
})
| CreateOKRInput;
interface OKRFormProps {
teamMembers: TeamMember[];
onSubmit: (
data:
| (CreateOKRInput & {
startDate: Date | string;
endDate: Date | string;
keyResultsUpdates?: {
create?: CreateKeyResultInput[];
update?: KeyResultUpdate[];
delete?: string[];
};
})
| CreateOKRInput
) => Promise<void>;
onSubmit: (data: OKRFormSubmitData) => Promise<void>;
onCancel: () => void;
initialData?: Partial<CreateOKRInput> & { keyResults?: KeyResult[] };
}
@@ -269,8 +269,8 @@ export function OKRForm({ teamMembers, onSubmit, onCancel, initialData }: OKRFor
objective,
description: description || undefined,
period: finalPeriod,
startDate: startDateObj.toISOString(),
endDate: endDateObj.toISOString(),
startDate: startDateObj.toISOString() as Date | string,
endDate: endDateObj.toISOString() as Date | string,
keyResults: [], // Not used in edit mode
keyResultsUpdates: {
create:
@@ -285,7 +285,7 @@ export function OKRForm({ teamMembers, onSubmit, onCancel, initialData }: OKRFor
update: allUpdates.length > 0 ? allUpdates : undefined,
delete: deletedIds.length > 0 ? deletedIds : undefined,
},
});
} as unknown as OKRFormSubmitData);
} else {
// In create mode, just send Key Results normally
await onSubmit({

View File

@@ -62,8 +62,8 @@ interface QuadrantHelpProps {
category: SwotCategory;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function QuadrantHelp({ category: _category }: QuadrantHelpProps) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [isOpen, setIsOpen] = useState(false);
return (