Skip to content

Commit 407ad4e

Browse files
committed
Merge branch 'development' of https://github.com/existence-master/Sentient into development
2 parents e9fe19b + 82c2e33 commit 407ad4e

File tree

15 files changed

+160
-642
lines changed

15 files changed

+160
-642
lines changed

src/client/app/api/integrations/gcalendar/events/route.js

Lines changed: 0 additions & 43 deletions
This file was deleted.

src/client/app/tasks/page.js

Lines changed: 4 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,17 @@ import React, {
88
useMemo
99
} from "react"
1010
import { useRouter, useSearchParams } from "next/navigation"
11-
import {
12-
format,
13-
isSameDay,
14-
parseISO,
15-
startOfMonth,
16-
endOfMonth,
17-
startOfWeek,
18-
endOfWeek
19-
} from "date-fns"
11+
import { format, isSameDay, parseISO } from "date-fns"
2012
import { IconLoader, IconX, IconSparkles, IconCheck } from "@tabler/icons-react"
2113
import { AnimatePresence, motion } from "framer-motion"
2214
import toast from "react-hot-toast"
23-
import { cn } from "@utils/cn"
2415
import { Tooltip } from "react-tooltip"
2516
import { calculateNextRun } from "@utils/taskUtils"
2617

2718
import TaskDetailsPanel from "@components/tasks/TaskDetailsPanel"
2819
import TaskViewSwitcher from "@components/tasks/TaskViewSwitcher"
2920
import ListView from "@components/tasks/ListView"
3021
import CalendarView from "@components/tasks/CalendarView"
31-
import GCalEventDetailsPanel from "@components/tasks/GCalEventCardDetailsPanel"
3222
import WelcomePanel from "@components/tasks/WelcomePanel"
3323
import CreateTaskInput from "@components/tasks/CreateTaskInput"
3424
import InteractiveNetworkBackground from "@components/ui/InteractiveNetworkBackground"
@@ -153,9 +143,7 @@ function TasksPageContent() {
153143
type: "initial",
154144
data: null
155145
}) // { type: 'initial' | 'hidden' | 'welcome' | 'task' | 'day', data: any }
156-
const [gcalEvents, setGcalEvents] = useState([])
157-
const [isGcalConnected, setIsGcalConnected] = useState(false)
158-
const [currentCalendarDate, setCurrentCalendarDate] = useState(new Date()) // To track calendar view range
146+
const [currentCalendarDate, setCurrentCalendarDate] = useState(new Date())
159147
const [searchQuery, setSearchQuery] = useState("")
160148
const [createTaskPrompt, setCreateTaskPrompt] = useState("")
161149
const [isUpgradeModalOpen, setUpgradeModalOpen] = useState(false)
@@ -294,51 +282,6 @@ function TasksPageContent() {
294282
}
295283
}, [])
296284

297-
useEffect(() => {
298-
const gcal = integrations.find((i) => i.name === "gcalendar")
299-
setIsGcalConnected(gcal?.connected || false)
300-
}, [integrations])
301-
302-
// New useEffect for fetching GCal events
303-
const fetchGcalEvents = useCallback(
304-
async (date) => {
305-
if (!isGcalConnected || view !== "calendar") return
306-
307-
// Calculate the visible date range for the calendar view
308-
const monthStart = startOfMonth(date)
309-
const monthEnd = endOfMonth(date)
310-
const startDate = startOfWeek(monthStart)
311-
const endDate = endOfWeek(monthEnd)
312-
313-
try {
314-
const res = await fetch(
315-
`/api/integrations/gcalendar/events?start_date=${startDate.toISOString()}&end_date=${endDate.toISOString()}`
316-
)
317-
if (!res.ok)
318-
throw new Error("Failed to fetch Google Calendar events")
319-
const data = await res.json()
320-
321-
// Add a type and parse dates
322-
const formattedEvents = (data.events || []).map((event) => ({
323-
...event,
324-
type: "gcal",
325-
scheduled_date: parseISO(event.start), // Use 'start' from GCal event
326-
end_date: parseISO(event.end),
327-
instance_id: `gcal-${event.id}` // Unique ID for React key
328-
}))
329-
setGcalEvents(formattedEvents)
330-
} catch (error) {
331-
toast.error(error.message)
332-
setGcalEvents([]) // Clear on error
333-
}
334-
},
335-
[isGcalConnected, view]
336-
)
337-
338-
useEffect(() => {
339-
fetchGcalEvents(currentCalendarDate)
340-
}, [currentCalendarDate, fetchGcalEvents])
341-
342285
useEffect(() => {
343286
fetchTasks()
344287
}, [fetchTasks])
@@ -412,24 +355,16 @@ function TasksPageContent() {
412355
}
413356

414357
const handleSelectItem = (item) => {
415-
if (item.type === "gcal") {
416-
setRightPanelContent({ type: "gcal", data: item })
417-
} else {
418-
setRightPanelContent({ type: "task", data: item })
419-
}
358+
setRightPanelContent({ type: "task", data: item })
420359
}
421360

422361
const handleShowMoreClick = (date) => {
423362
const tasksForDay = filteredCalendarTasks.filter(
424363
(task) => isSameDay(task.scheduled_date, date) // prettier-ignore
425364
)
426-
const eventsForDay = gcalEvents.filter((event) =>
427-
isSameDay(event.scheduled_date, date)
428-
)
429-
const allItemsForDay = [...tasksForDay, ...eventsForDay]
430365
setRightPanelContent({
431366
type: "day",
432-
data: { date, tasks: allItemsForDay }
367+
data: { date, tasks: tasksForDay }
433368
})
434369
}
435370

@@ -585,7 +520,6 @@ Description: ${event.description || "No description."}`
585520
) : (
586521
<CalendarView
587522
tasks={filteredCalendarTasks} // prettier-ignore
588-
gcalEvents={gcalEvents}
589523
onSelectTask={handleSelectItem}
590524
onDayClick={handleDayClick}
591525
onShowMoreClick={
@@ -759,23 +693,6 @@ Description: ${event.description || "No description."}`
759693
}
760694
/>
761695
</motion.div>
762-
) : rightPanelContent.type === "gcal" &&
763-
rightPanelContent.data ? (
764-
<motion.div
765-
key={`gcal-${rightPanelContent.data.id}`}
766-
initial={{ opacity: 0 }}
767-
animate={{ opacity: 1 }}
768-
exit={{ opacity: 0 }}
769-
className="h-full"
770-
>
771-
<GCalEventDetailsPanel
772-
event={rightPanelContent.data}
773-
onClose={handleCloseRightPanel}
774-
onCreateTask={
775-
handleCreateTaskFromEvent
776-
}
777-
/>
778-
</motion.div>
779696
) : rightPanelContent.type === "day" &&
780697
rightPanelContent.data ? (
781698
<motion.div

src/client/components/tasks/CalendarView.js

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import {
2121
IconDots
2222
} from "@tabler/icons-react"
2323
import { cn } from "@utils/cn"
24-
import GCalEventCard from "./GCalEventCard"
2524
import TaskCardCalendar from "./TaskCardCalendar"
2625

2726
const cellVariants = {
@@ -91,18 +90,12 @@ const CalendarDayCell = ({
9190
className="space-y-1 flex-1 cursor-pointer"
9291
onClick={() => onShowMoreClick(day)}
9392
>
94-
{firstItem &&
95-
(firstItem.type === "gcal" ? (
96-
<GCalEventCard
97-
event={firstItem}
98-
onSelectTask={onSelectTask}
99-
/>
100-
) : (
101-
<TaskCardCalendar
102-
task={firstItem}
103-
onSelectTask={onSelectTask}
104-
/>
105-
))}
93+
{firstItem && (
94+
<TaskCardCalendar
95+
task={firstItem}
96+
onSelectTask={onSelectTask}
97+
/>
98+
)}
10699
{items.length > 0 && (
107100
<div className="w-1 h-1 bg-brand-yellow rounded-full mx-auto mt-1"></div>
108101
)}
@@ -118,7 +111,6 @@ const CalendarDayCell = ({
118111

119112
const CalendarView = ({
120113
tasks,
121-
gcalEvents,
122114
onSelectTask,
123115
onDayClick,
124116
onShowMoreClick,
@@ -197,15 +189,11 @@ const CalendarView = ({
197189
(task) =>
198190
isSameDay(task.scheduled_date, day) // prettier-ignore
199191
)
200-
const eventsForDay = (gcalEvents || []).filter((event) =>
201-
isSameDay(event.scheduled_date, day)
202-
)
203-
const allItemsForDay = [...tasksForDay, ...eventsForDay]
204192
return (
205193
<CalendarDayCell
206194
key={day.toString()}
207195
day={day}
208-
items={allItemsForDay}
196+
items={tasksForDay}
209197
isCurrentMonth={isSameMonth(day, currentMonth)}
210198
onSelectTask={onSelectTask}
211199
onDayClick={handleDayClickInternal}

src/client/components/tasks/DayDetailView.js

Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import React, { useState, useEffect, useRef } from "react"
33
import { format, getHours, getMinutes, parseISO, isToday } from "date-fns"
44
import { cn } from "@utils/cn"
5-
import GCalEventCardDayView from "./GCalEventCardDayView"
65
import TaskCardDayView from "./TaskCardDayView"
76
import { IconX } from "@tabler/icons-react"
87

@@ -17,23 +16,16 @@ const DayDetailView = ({ date, tasks: items, onSelectTask, onClose }) => {
1716

1817
const hours = Array.from({ length: 24 }, (_, i) => i)
1918

20-
const allDayItems = (items || []).filter((item) => {
21-
if (item.type === "gcal") {
22-
return item.start && !item.start.includes("T")
23-
}
24-
return !item.schedule?.run_at || !item.schedule.run_at.includes("T")
25-
})
26-
const timedItems = (items || []).filter((item) => {
27-
if (item.type === "gcal") {
28-
return item.start && item.start.includes("T")
29-
}
30-
return item.schedule?.run_at && item.schedule.run_at.includes("T")
31-
})
19+
const allDayItems = (items || []).filter(
20+
(item) => !item.schedule?.run_at || !item.schedule.run_at.includes("T")
21+
)
22+
const timedItems = (items || []).filter(
23+
(item) => item.schedule?.run_at && item.schedule.run_at.includes("T")
24+
)
3225

3326
const getTopPosition = (item) => {
3427
try {
35-
const isoString =
36-
item.type === "gcal" ? item.start : item.schedule?.run_at
28+
const isoString = item.schedule?.run_at
3729
if (!isoString) return 0
3830
const date = parseISO(isoString)
3931
const hours = getHours(date)
@@ -69,21 +61,13 @@ const DayDetailView = ({ date, tasks: items, onSelectTask, onClose }) => {
6961
<div className="p-4 border-b border-neutral-800">
7062
<div className="space-y-2">
7163
{allDayItems.length > 0 ? (
72-
allDayItems.map((item) =>
73-
item.type === "gcal" ? (
74-
<GCalEventCardDayView
75-
key={item.instance_id}
76-
event={item}
77-
onSelectTask={onSelectTask}
78-
/>
79-
) : (
80-
<TaskCardDayView
81-
key={item.instance_id}
82-
task={item}
83-
onSelectTask={onSelectTask}
84-
/>
85-
)
86-
)
64+
allDayItems.map((item) => (
65+
<TaskCardDayView
66+
key={item.instance_id}
67+
task={item}
68+
onSelectTask={onSelectTask}
69+
/>
70+
))
8771
) : (
8872
<p className="text-xs text-neutral-500">
8973
No all-day tasks or events.
@@ -121,17 +105,10 @@ const DayDetailView = ({ date, tasks: items, onSelectTask, onClose }) => {
121105
top: `${getTopPosition(item)}px`
122106
}}
123107
>
124-
{item.type === "gcal" ? (
125-
<GCalEventCardDayView
126-
event={item}
127-
onSelectTask={onSelectTask}
128-
/>
129-
) : (
130-
<TaskCardDayView
131-
task={item}
132-
onSelectTask={onSelectTask}
133-
/>
134-
)}
108+
<TaskCardDayView
109+
task={item}
110+
onSelectTask={onSelectTask}
111+
/>
135112
</div>
136113
))}
137114
</div>

0 commit comments

Comments
 (0)