@@ -2,7 +2,16 @@ import React, { useEffect, useMemo, useState } from 'react'
2
2
3
3
import { formatDistanceToNow } from 'date-fns'
4
4
5
- import { API_BASE_URLS , DrawerType , useCalendarStore , useHighlightStore , useLayoutStore } from '@mexit/core'
5
+ import {
6
+ API_BASE_URLS ,
7
+ CalendarEventFilterType ,
8
+ DrawerType ,
9
+ getMenuItem ,
10
+ MenuListItemType ,
11
+ useCalendarStore ,
12
+ useHighlightStore ,
13
+ useLayoutStore
14
+ } from '@mexit/core'
6
15
import {
7
16
CenteredFlex ,
8
17
DefaultMIcons ,
@@ -12,16 +21,17 @@ import {
12
21
Group ,
13
22
IconDisplay ,
14
23
List ,
24
+ Select ,
15
25
SidebarListFilter ,
16
26
SnippetCards ,
17
27
SpaceBetweenHorizontalFlex ,
18
28
StyledButton ,
19
- Toggle ,
20
29
useCalendar ,
21
30
useInterval
22
31
} from '@mexit/shared'
23
32
24
33
import { useSaveChanges } from '../../Hooks/useSaveChanges'
34
+ import { getElementById } from '../../Utils/cs-utils'
25
35
26
36
import { GenericCard } from './GenericCard'
27
37
import { HighlightGroups } from './HighlightGroup'
@@ -78,7 +88,9 @@ const CalendarEvent = ({ event }) => {
78
88
}
79
89
80
90
const openMeetLink = ( url ?: string ) => {
81
- window . open ( url ?? event . links . meet , '_blank' )
91
+ const webLink = url ?? event . links . meet ?? event . links . event
92
+
93
+ window . open ( webLink , '_blank' )
82
94
}
83
95
84
96
return (
@@ -91,7 +103,7 @@ const CalendarEvent = ({ event }) => {
91
103
< FadeContainer flex = { false } fade >
92
104
< Group >
93
105
< IconDisplay icon = { DefaultMIcons . NOTE } onClick = { openMeetingNote } />
94
- < IconDisplay icon = { DefaultMIcons . WEB_LINK } onClick = { openMeetLink } />
106
+ < IconDisplay icon = { DefaultMIcons . WEB_LINK } onClick = { ( ) => openMeetLink ( ) } />
95
107
</ Group >
96
108
</ FadeContainer >
97
109
) : (
@@ -107,6 +119,7 @@ const UpcomingEvents = () => {
107
119
const [ isFetching , setIsFetching ] = useState ( false )
108
120
109
121
const { getUpcomingEvents, getCalenderEvents, getCalendarAuth } = useCalendar ( )
122
+ const [ calendarEventFilter , setCalendarEventFilter ] = useState < CalendarEventFilterType > ( 'Upcoming' )
110
123
const calendarEvents = useCalendarStore ( ( state ) => state . events )
111
124
const calendarToken = useCalendarStore ( ( store ) => store . tokens [ 'GOOGLE_CAL' ] )
112
125
@@ -141,18 +154,34 @@ const UpcomingEvents = () => {
141
154
useInterval ( fetchEvents , 30 * 60 * 1000 )
142
155
143
156
const upcomingEvents = useMemo ( ( ) => {
144
- return getUpcomingEvents ( )
145
- } , [ calendarEvents ] )
157
+ return getUpcomingEvents ( calendarEventFilter )
158
+ } , [ calendarEvents , calendarEventFilter ] )
146
159
147
160
const hasUpcomingEvents = upcomingEvents ?. length > 0
148
161
162
+ const onClick = ( event : MenuListItemType ) => {
163
+ setCalendarEventFilter ( event . label as CalendarEventFilterType )
164
+ }
165
+
149
166
return (
150
- < SidebarSection label = "Upcoming Events" isLoading = { isFetching } icon = { DefaultMIcons . NOTIFICATION } >
167
+ < SidebarSection
168
+ label = "Events"
169
+ isLoading = { isFetching }
170
+ icon = { DefaultMIcons . NOTIFICATION }
171
+ rightComponent = {
172
+ < Select
173
+ root = { getElementById ( 'ext-side-nav' ) }
174
+ items = { [
175
+ getMenuItem ( 'Upcoming' , onClick , false ) ,
176
+ getMenuItem ( 'Past' , onClick , false ) ,
177
+ getMenuItem ( 'All' , onClick , false )
178
+ ] }
179
+ />
180
+ }
181
+ >
151
182
{ calendarToken && hasUpcomingEvents ? (
152
183
< List $noMargin scrollable $maxHeight = "140px" >
153
184
{ upcomingEvents . map ( ( event ) => {
154
- const desc = event . description ? `: ${ event . description } ` : ''
155
-
156
185
return < CalendarEvent event = { event } />
157
186
} ) }
158
187
</ List >
@@ -198,7 +227,15 @@ const Highlights = () => {
198
227
scrollable
199
228
label = "Captures"
200
229
icon = { DefaultMIcons . HIGHLIGHT }
201
- rightComponent = { < Toggle size = "small" onChange = { setShowAll } text = "All" /> }
230
+ rightComponent = {
231
+ < Select
232
+ root = { getElementById ( 'ext-side-nav' ) }
233
+ items = { [
234
+ getMenuItem ( 'Page' , ( ) => setShowAll ( false ) , false ) ,
235
+ getMenuItem ( 'All' , ( ) => setShowAll ( true ) , false )
236
+ ] }
237
+ />
238
+ }
202
239
>
203
240
{ pageHighlights ?. length > 0 ? (
204
241
< List $noMargin scrollable >
0 commit comments