Skip to content

Commit edb9450

Browse files
committed
fix: applies fix on task cards
1 parent 138aaa4 commit edb9450

5 files changed

Lines changed: 31 additions & 22 deletions

File tree

src/components/Projects/KanbanBoardView.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,16 @@ import { TaskDetailsModal } from './TaskDetailsModal'
99
import { AddEpicModal } from './AddEpicModal'
1010
import { DashboardHero } from '../Heros/DashboardHero'
1111

12-
import { Project, Epic, Sprint, Task, DigitalColleague, User } from '../Foundary/types'
12+
import { Project, Epic, Sprint, Task, DigitalColleague, User, Colleague } from '../Foundary/types'
1313
import { extractId } from '@/lib/utils/extract-id'
14-
// import { extractId } from '@/utils/extract-id'
1514

1615
export interface KanbanBoardProps {
1716
initialTasks?: Task[]
1817
initialEpics?: Epic[]
1918
initialSprints?: (Sprint & { isSelected: boolean })[]
2019
initialProjects?: Project[]
2120
initialUsers?: User[]
22-
initialColleagues?: DigitalColleague[]
21+
initialColleagues?: Colleague[]
2322
// Task handlers
2423
onAddTask?: (newTask: Omit<Task, 'id' | 'createdAt' | 'updatedAt'>) => void
2524
onUpdateTask?: (taskId: string, updates: Partial<Task>) => Promise<Task>
@@ -54,7 +53,7 @@ export const KanbanBoardView: React.FC<KanbanBoardProps> = ({
5453
const [selectedTask, setSelectedTask] = useState<Task | null>(null)
5554
const [draggedTask, setDraggedTask] = useState<Task | null>(null)
5655
const [users, setUsers] = useState<User[]>(initialUsers)
57-
const [colleagues, setColleagues] = useState<DigitalColleague[]>(initialColleagues)
56+
const [colleagues, setColleagues] = useState<Colleague[]>(initialColleagues)
5857
const [heroHeight, setHeroHeight] = useState(0)
5958

6059
const heroRef = useRef<HTMLDivElement>(null)
@@ -77,6 +76,10 @@ export const KanbanBoardView: React.FC<KanbanBoardProps> = ({
7776
setSprints(initialSprints)
7877
}, [initialSprints])
7978

79+
useEffect(() => {
80+
setColleagues(initialColleagues)
81+
}, [initialColleagues])
82+
8083
// Measure hero height and adjust when it changes
8184
useEffect(() => {
8285
const measureHeroHeight = () => {
@@ -334,7 +337,7 @@ export const KanbanBoardView: React.FC<KanbanBoardProps> = ({
334337
sprints={sprints}
335338
onUpdateTask={handleUpdateTask}
336339
onDeleteTask={handleDeleteTask}
337-
colleagues={[...colleagues, ...users]}
340+
colleagues={colleagues}
338341
onAddComment={onAddComment}
339342
/>
340343
)}

src/components/Projects/ProjectView.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import type {
2121
Epic,
2222
Sprint,
2323
Project,
24+
Colleague,
2425
} from '../Foundary/types'
2526
// import { Epic, Sprint, Project, Task } from "@/components/DigitalColleagues/KanbanBoard"
2627
import { useRouter } from 'next/navigation'
@@ -80,7 +81,7 @@ interface Props {
8081
initialSprints?: Sprint[]
8182
initialProjects?: Project[]
8283
initialReminders?: Reminder[]
83-
initialColleagues?: DigitalColleague[]
84+
initialColleagues?: Colleague[]
8485
initialUsers?: User[]
8586
initialFiles?: FileType[]
8687
initialView?: View
@@ -175,7 +176,7 @@ export default function ProjectView({
175176
const [sprints, setSprints] = useState<Sprint[]>(initialSprints)
176177
const [projects, setProjects] = useState<Project[]>(initialProjects)
177178
const [reminders, setReminders] = useState<Reminder[]>(initialReminders)
178-
const [colleagues, setColleagues] = useState<DigitalColleague[]>(initialColleagues)
179+
const [colleagues, setColleagues] = useState<Colleague[]>(initialColleagues)
179180
const [users, setUsers] = useState<User[]>(initialUsers)
180181
const [files, setFiles] = useState<FileType[]>(initialFiles)
181182
const [isAddTaskModalOpen, setIsAddTaskModalOpen] = useState(false)

src/components/Projects/TaskDetailsModal.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { use, useEffect, useState } from 'react'
22
import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'
3-
import { Task, Epic, Sprint, DigitalColleague, User } from '../Foundary/types'
3+
import { Task, Epic, Sprint, DigitalColleague, User, Colleague } from '../Foundary/types'
44
import { EditableField } from '../AdvancedComponents/EditableField'
55
import { CommentSection } from '../AdvancedComponents/CommentSection'
66
import { TaskSidebar } from './TaskSidebar'
@@ -24,7 +24,7 @@ interface TaskDetailsModalProps {
2424
onUpdateTask: (taskId: string, updates: Partial<Task>) => Promise<Task>
2525
onDeleteTask: (taskId: string) => Promise<void>
2626
onAddComment?: ({ content, taskId }: { taskId: string; content: string }) => Promise<Task>
27-
colleagues: (User | DigitalColleague)[]
27+
colleagues: Colleague[]
2828
}
2929

3030
export const TaskDetailsModal: React.FC<TaskDetailsModalProps> = ({
@@ -56,6 +56,7 @@ export const TaskDetailsModal: React.FC<TaskDetailsModalProps> = ({
5656
// createdAt: new Date(task.createdAt.getTime() + 86400000), // +1 day
5757
// },
5858
])
59+
const [members, setMembers] = useState(colleagues)
5960

6061
useEffect(() => {
6162
setTask(initialTask)
@@ -91,6 +92,7 @@ export const TaskDetailsModal: React.FC<TaskDetailsModalProps> = ({
9192
// Reset to idle after showing success
9293
setTimeout(() => setUpdateState('idle'), 1500)
9394
} catch (error) {
95+
console.log('error', error)
9496
setUpdateState('error')
9597
// Reset to idle after showing error
9698
setTimeout(() => setUpdateState('idle'), 3000)
@@ -237,7 +239,7 @@ export const TaskDetailsModal: React.FC<TaskDetailsModalProps> = ({
237239
isUpdating={updateState === 'loading'}
238240
isDeleting={deleteState === 'loading'}
239241
deleteState={deleteState}
240-
teamMembers={colleagues}
242+
teamMembers={members}
241243
/>
242244
</div>
243245
</DialogContent>

src/components/Projects/TaskSidebar.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@ export const TaskSidebar: React.FC<TaskSidebarProps> = ({
140140
}) => {
141141
const [storyPoints, setStoryPoints] = useState(task.storyPoints)
142142
const debounceTimeoutRef = useRef<NodeJS.Timeout | null>(null)
143+
const [members, setMembers] = useState(teamMembers)
144+
145+
useEffect(() => {
146+
setMembers(teamMembers)
147+
}, [teamMembers])
143148

144149
// Debounced version of onUpdateTask for story points
145150
const debouncedUpdateTask = useCallback(
@@ -315,7 +320,7 @@ export const TaskSidebar: React.FC<TaskSidebarProps> = ({
315320
<TaskSelect
316321
label=""
317322
value={extractId(task.epic).toString()}
318-
onValueChange={(value) => onUpdateTask('epicId', value)}
323+
onValueChange={(value) => onUpdateTask('epic', value)}
319324
options={(epics || []).map((epic) => ({
320325
value: epic.id.toString(),
321326
label: epic?.name,
@@ -332,7 +337,7 @@ export const TaskSidebar: React.FC<TaskSidebarProps> = ({
332337
<TaskSelect
333338
label=""
334339
value={extractId(task.sprint).toString() || 'none'}
335-
onValueChange={(value) => onUpdateTask('sprintId', value === 'none' ? '' : value)}
340+
onValueChange={(value) => onUpdateTask('sprint', value === 'none' ? '' : value)}
336341
options={[
337342
{
338343
value: 'none',
@@ -354,7 +359,7 @@ export const TaskSidebar: React.FC<TaskSidebarProps> = ({
354359
label=""
355360
value={(task.assignee as any)?.value?.name}
356361
onValueChange={(value) => onUpdateTask('assignee', value)}
357-
options={teamMembers.map((member) => ({
362+
options={members.map((member) => ({
358363
value: `${
359364
typeof (member as any).email === 'string' ? 'users' : 'digital-colleagues'
360365
}:${member.id}`,

src/components/Projects/TasksView.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ import {
3434
BellOff,
3535
} from 'lucide-react'
3636

37-
import { type Reminder, type DigitalColleague } from '../Foundary/types'
37+
import { type Reminder, type Colleague } from '../Foundary/types'
3838

3939
export interface TasksViewProps {
4040
initialReminders?: Reminder[]
41-
initialColleagues?: DigitalColleague[]
41+
initialColleagues?: Colleague[]
4242
onAddReminder?: (reminder: Omit<Reminder, 'id' | 'createdAt'>) => void
4343
onUpdateReminder?: (reminderId: string, updates: Partial<Reminder>) => void
4444
onDeleteReminder?: (reminderId: string) => void
@@ -114,7 +114,7 @@ const isTomorrow = (date: Date) => {
114114
}
115115

116116
const AddReminderModal: React.FC<{
117-
colleagues: DigitalColleague[]
117+
colleagues: Colleague[]
118118
onAddReminder: (reminder: Omit<Reminder, 'id' | 'createdAt'>) => void
119119
open: boolean
120120
setOpen: (open: boolean) => void
@@ -409,7 +409,7 @@ const AddReminderModal: React.FC<{
409409

410410
const EditReminderModal: React.FC<{
411411
reminder: Reminder
412-
colleagues: DigitalColleague[]
412+
colleagues: Colleague[]
413413
onUpdateReminder: (reminderId: string, updates: Partial<Reminder>) => void
414414
open: boolean
415415
onClose: () => void
@@ -662,7 +662,7 @@ const EditReminderModal: React.FC<{
662662

663663
const ReminderCard: React.FC<{
664664
reminder: Reminder
665-
colleagues: DigitalColleague[]
665+
colleagues: Colleague[]
666666
onUpdateReminder: (reminderId: string, updates: Partial<Reminder>) => void
667667
onDeleteReminder: (reminderId: string) => void
668668
}> = ({ reminder, colleagues, onUpdateReminder, onDeleteReminder }) => {
@@ -805,9 +805,7 @@ export const TasksView: React.FC<TasksViewProps> = ({
805805
onDeleteReminder,
806806
}) => {
807807
const [reminders, setReminders] = useState<Reminder[]>(initialReminders.filter(Boolean))
808-
const [colleagues, setColleagues] = useState<DigitalColleague[]>(
809-
initialColleagues.filter(Boolean),
810-
)
808+
const [colleagues, setColleagues] = useState<Colleague[]>(initialColleagues.filter(Boolean))
811809
const [filter, setFilter] = useState<'all' | 'pending' | 'completed' | 'overdue' | 'today'>('all')
812810
const [searchTerm, setSearchTerm] = useState('')
813811
const [openAddReminderModal, setOpenAddReminderModal] = useState(false)
@@ -918,7 +916,7 @@ export const TasksView: React.FC<TasksViewProps> = ({
918916
}
919917

920918
// Ensure we have at least one valid colleague for the default reminder
921-
const defaultColleague: DigitalColleague = (colleagues.find(Boolean) as DigitalColleague) || {
919+
const defaultColleague: Colleague = (colleagues.find(Boolean) as Colleague) || {
922920
id: '1',
923921
name: 'Default Colleague',
924922
// status: 'active' as const,

0 commit comments

Comments
 (0)