Fixed Projects/Proposals/Time
This commit is contained in:
@@ -42,7 +42,9 @@ export default function ProjectDetail() {
|
||||
useEffect(() => {
|
||||
fetch(`/client-portal/api/projects/${id}`, { credentials: "include" })
|
||||
.then((r) => r.json())
|
||||
.then(setData)
|
||||
.then((d) => {
|
||||
if (d.project) setData({ ...d, milestones: d.milestones || [], deliverables: d.deliverables || [] })
|
||||
})
|
||||
.catch(() => {})
|
||||
}, [id])
|
||||
|
||||
@@ -60,10 +62,10 @@ export default function ProjectDetail() {
|
||||
if (!prev) return prev
|
||||
return {
|
||||
...prev,
|
||||
milestones: prev.milestones.map((m) =>
|
||||
milestones: (prev.milestones || []).map((m) =>
|
||||
m.id === milestoneId ? { ...m, ...updated.milestone } : m,
|
||||
),
|
||||
deliverables: prev.deliverables.map((d) =>
|
||||
deliverables: (prev.deliverables || []).map((d) =>
|
||||
d.milestone_id === milestoneId
|
||||
? { ...d, status: action === "approve" ? "approved" : "rejected" }
|
||||
: d,
|
||||
@@ -120,7 +122,7 @@ export default function ProjectDetail() {
|
||||
{milestones.length === 0 ? (
|
||||
<p className="text-sm text-[#6a6a75]">No milestones yet</p>
|
||||
) : (
|
||||
milestones.map((m) => {
|
||||
(milestones || []).map((m) => {
|
||||
const si = statusIcon[m.status] || { icon: Clock, color: "#6a6a75" }
|
||||
const Icon = si.icon
|
||||
const milestoneDeliverables = deliverables.filter((d) => d.milestone_id === m.id)
|
||||
@@ -163,7 +165,7 @@ export default function ProjectDetail() {
|
||||
{milestoneDeliverables.length > 0 && (
|
||||
<div className="space-y-2 mb-3">
|
||||
<span className="text-[11px] text-[#6a6a75] uppercase tracking-wider">Deliverables</span>
|
||||
{milestoneDeliverables.map((d) => (
|
||||
{(milestoneDeliverables || []).map((d) => (
|
||||
<div key={d.id} className="flex items-center justify-between bg-[#1a1a24] rounded-lg px-3 py-2">
|
||||
<div className="flex items-center gap-2">
|
||||
<FileText className="h-3.5 w-3.5 text-[#6a6a75]" />
|
||||
|
||||
Reference in New Issue
Block a user