#66: Project detail "Open Demands" summary incorrectly counted COMPLETED demands as open. Fix: add `status !== "COMPLETED"` to the activeDemands filter in /projects/[id]/page.tsx. #59/#67: Project creation and edit had two bugs: 1. Both invalidated `project.list` but the page queries `project.listWithCosts` — the list never refreshed after a save. 2. Success toasts were either absent (ProjectModal) or mounted inside the wizard component that unmounts before the toast finishes. Fix: correct invalidation key to listWithCosts; add optional onSuccess prop to both ProjectWizard and ProjectModal; ProjectsClient wires onSuccess to a persistent SuccessToast rendered outside the modals. Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
@@ -1041,9 +1041,10 @@ function Step5({ state, onChange, onSubmit, isSubmitting, submitError }: Step5Pr
|
||||
interface ProjectWizardProps {
|
||||
open: boolean;
|
||||
onClose: () => void;
|
||||
onSuccess?: (shortCode: string, name: string) => void;
|
||||
}
|
||||
|
||||
export function ProjectWizard({ open, onClose }: ProjectWizardProps) {
|
||||
export function ProjectWizard({ open, onClose, onSuccess }: ProjectWizardProps) {
|
||||
const utils = trpc.useUtils();
|
||||
const [step, setStep] = useState(0);
|
||||
const [state, setState] = useState<WizardState>(makeDefaultState);
|
||||
@@ -1164,13 +1165,14 @@ export function ProjectWizard({ open, onClose }: ProjectWizardProps) {
|
||||
}
|
||||
}
|
||||
|
||||
await utils.project.list.invalidate();
|
||||
await utils.project.listWithCosts.invalidate();
|
||||
await utils.timeline.getEntries.invalidate();
|
||||
await utils.timeline.getEntriesView.invalidate();
|
||||
setShowConfetti(true);
|
||||
setShowSuccessToast(true);
|
||||
setTimeout(() => {
|
||||
setShowConfetti(false);
|
||||
onSuccess?.(project.shortCode, project.name);
|
||||
handleClose();
|
||||
}, 1200);
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user