mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 03:29:02 +01:00 
			
		
		
		
	refactor(react/collections/calendar): refactor into API
This commit is contained in:
		
							parent
							
								
									b93d9a6b6e
								
							
						
					
					
						commit
						f0b5954c54
					
				
							
								
								
									
										33
									
								
								apps/client/src/widgets/collections/calendar/api.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								apps/client/src/widgets/collections/calendar/api.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | |||||||
|  | import { CreateChildrenResponse } from "@triliumnext/commons"; | ||||||
|  | import server from "../../../services/server"; | ||||||
|  | import FNote from "../../../entities/fnote"; | ||||||
|  | import { setLabel } from "../../../services/attributes"; | ||||||
|  | 
 | ||||||
|  | interface NewEventOpts { | ||||||
|  |     title: string; | ||||||
|  |     startDate: string; | ||||||
|  |     endDate?: string | null; | ||||||
|  |     startTime?: string | null; | ||||||
|  |     endTime?: string | null; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export async function newEvent(parentNote: FNote, { title, startDate, endDate, startTime, endTime }: NewEventOpts) { | ||||||
|  |     // Create the note.
 | ||||||
|  |     const { note } = await server.post<CreateChildrenResponse>(`notes/${parentNote.noteId}/children?target=into`, { | ||||||
|  |         title, | ||||||
|  |         content: "", | ||||||
|  |         type: "text" | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     // Set the attributes.
 | ||||||
|  |     setLabel(note.noteId, "startDate", startDate); | ||||||
|  |     if (endDate) { | ||||||
|  |         setLabel(note.noteId, "endDate", endDate); | ||||||
|  |     } | ||||||
|  |     if (startTime) { | ||||||
|  |         setLabel(note.noteId, "startTime", startTime); | ||||||
|  |     } | ||||||
|  |     if (endTime) { | ||||||
|  |         setLabel(note.noteId, "endTime", endTime); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -6,13 +6,14 @@ import "./index.css"; | |||||||
| import { useNoteLabel, useNoteLabelBoolean, useResizeObserver, useSpacedUpdate, useTriliumOption, useTriliumOptionInt } from "../../react/hooks"; | import { useNoteLabel, useNoteLabelBoolean, useResizeObserver, useSpacedUpdate, useTriliumOption, useTriliumOptionInt } from "../../react/hooks"; | ||||||
| import { CreateChildrenResponse, LOCALE_IDS } from "@triliumnext/commons"; | import { CreateChildrenResponse, LOCALE_IDS } from "@triliumnext/commons"; | ||||||
| import { Calendar as FullCalendar } from "@fullcalendar/core"; | import { Calendar as FullCalendar } from "@fullcalendar/core"; | ||||||
| import { setLabel } from "../../../services/attributes"; | import { removeOwnedAttributesByNameOrType, setLabel } from "../../../services/attributes"; | ||||||
| import { circle } from "leaflet"; | import { circle } from "leaflet"; | ||||||
| import server from "../../../services/server"; | import server from "../../../services/server"; | ||||||
| import { parseStartEndDateFromEvent, parseStartEndTimeFromEvent } from "./utils"; | import { parseStartEndDateFromEvent, parseStartEndTimeFromEvent } from "./utils"; | ||||||
| import dialog from "../../../services/dialog"; | import dialog from "../../../services/dialog"; | ||||||
| import { t } from "../../../services/i18n"; | import { t } from "../../../services/i18n"; | ||||||
| import { buildEvents, buildEventsForCalendar } from "./event_builder"; | import { buildEvents, buildEventsForCalendar } from "./event_builder"; | ||||||
|  | import { newEvent } from "./api"; | ||||||
| 
 | 
 | ||||||
| interface CalendarViewData { | interface CalendarViewData { | ||||||
| 
 | 
 | ||||||
| @ -67,13 +68,8 @@ export default function CalendarView({ note, noteIds }: ViewModeProps<CalendarVi | |||||||
|     const locale = useLocale(); |     const locale = useLocale(); | ||||||
| 
 | 
 | ||||||
|     const onCalendarSelection = useCallback(async (e: DateSelectArg) => { |     const onCalendarSelection = useCallback(async (e: DateSelectArg) => { | ||||||
|         // Handle start and end date
 |  | ||||||
|         const { startDate, endDate } = parseStartEndDateFromEvent(e); |         const { startDate, endDate } = parseStartEndDateFromEvent(e); | ||||||
|         if (!startDate) { |         if (!startDate) return; | ||||||
|             return; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         // Handle start and end time.
 |  | ||||||
|         const { startTime, endTime } = parseStartEndTimeFromEvent(e); |         const { startTime, endTime } = parseStartEndTimeFromEvent(e); | ||||||
| 
 | 
 | ||||||
|         // Ask for the title
 |         // Ask for the title
 | ||||||
| @ -82,25 +78,8 @@ export default function CalendarView({ note, noteIds }: ViewModeProps<CalendarVi | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // Create the note.
 |         newEvent(note, { title, startDate, endDate, startTime, endTime }); | ||||||
|         const { note: eventNote } = await server.post<CreateChildrenResponse>(`notes/${note.noteId}/children?target=into`, { |     }, [ note ]); | ||||||
|             title, |  | ||||||
|             content: "", |  | ||||||
|             type: "text" |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|         // Set the attributes.
 |  | ||||||
|         setLabel(eventNote.noteId, "startDate", startDate); |  | ||||||
|         if (endDate) { |  | ||||||
|             setLabel(eventNote.noteId, "endDate", endDate); |  | ||||||
|         } |  | ||||||
|         if (startTime) { |  | ||||||
|             setLabel(eventNote.noteId, "startTime", startTime); |  | ||||||
|         } |  | ||||||
|         if (endTime) { |  | ||||||
|             setLabel(eventNote.noteId, "endTime", endTime); |  | ||||||
|         } |  | ||||||
|     }, []); |  | ||||||
| 
 | 
 | ||||||
|     return (plugins && |     return (plugins && | ||||||
|         <div className="calendar-view" ref={containerRef}> |         <div className="calendar-view" ref={containerRef}> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran