1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# Phase 6: Main Plugin Wiring (`src/main.ts`)
**Status:** Not started
**Depends on:** Phase 4 (calendar-view.ts), Phase 5 (settings)
**Modifies:** `src/main.ts`
---
## Overview
Wire the calendar view into the main plugin class: register the view, add ribbon icon, register commands, handle lifecycle.
---
## Changes to `src/main.ts`
```
In onload():
- registerView(VIEW_TYPE_CALENDAR, (leaf) => new CalendarView(leaf, this))
- addRibbonIcon("calendar", "Open Calendar", () => activateCalendarView())
- addCommand("open-calendar", "Open Calendar View", ...)
- addCommand("reveal-active-note", "Reveal active note in calendar", ...)
- addCommand("open-today", "Open today's daily note", ...)
In onunload():
- detachLeavesOfType(VIEW_TYPE_CALENDAR)
activateCalendarView():
- Same pattern as activateView() for the chat — check for existing leaf first
```
---
## Notes
- Follow the existing pattern in `main.ts` for registering views (look at how the chat view is registered).
- The `activateCalendarView()` helper should check if a calendar leaf already exists before creating a new one.
- Calendar settings must be included in `loadData()`/`saveData()` — merge with defaults.
- The "Open today's daily note" command uses `openDailyNote()` from Phase 1 with `window.moment()` as the date.
|