-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmain.ts
122 lines (110 loc) · 4.34 KB
/
main.ts
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import { Notice, Plugin } from "obsidian";
import { updateFileFromServer } from "./src/updateFileContent";
import { DEFAULT_SETTINGS, TodoistSettings } from "./src/DefaultSettings";
import { migrateSettings } from "./src/settingsMigrations";
import { ExampleModal } from "./src/modal";
import { getTimeframesForLastNHoursWithoutOffset } from "./src/utils";
import { TodoistPluginSettingTab } from "./src/settingsTabs";
import { FETCH_STRATEGIES } from "./src/constants";
export default class TodoistCompletedTasks extends Plugin {
settings: TodoistSettings;
async onload() {
await this.loadSettings();
this.addRibbonIcon(
"sync",
"Fetch today's completed tasks",
(evt: MouseEvent) => {
new Notice("Fetching completed tasks..");
updateFileFromServer(
this.settings,
this.app,
0,
FETCH_STRATEGIES.today
);
}
);
this.addCommand({
id: "todoist-fetch-completed-tasks",
name: "Fetch today's completed tasks",
callback: async () => {
new Notice("Fetching completed tasks..");
updateFileFromServer(
this.settings,
this.app,
0,
FETCH_STRATEGIES.today
);
},
});
this.addCommand({
id: "todoist-fetch-completed-tasks",
name: "Fetch completed tasks using dates in segments",
callback: async () => {
new Notice("Fetching completed tasks..");
updateFileFromServer(
this.settings,
this.app,
0,
FETCH_STRATEGIES.fromFile
);
},
});
this.addCommand({
id: "todoist-fetch-completed-tasks-for-last-n-hours",
name: "Fetch completed tasks for last N hours",
callback: async () => {
new ExampleModal(this.app, (result) => {
if (
result == null ||
result == "" ||
isNaN(Number(result)) ||
Number(result) < 0
) {
new Notice("Please enter a valid number of hours");
return;
}
let times = getTimeframesForLastNHoursWithoutOffset(
Number(result)
);
const {
timeStartFormattedDate,
timeStartFormattedTime,
timeEndFormattedDate,
timeEndFormattedTime,
} = times;
if (this.settings.renderSubtasks) {
new Notice(
`You are fetching completed tasks with "Render subtasks" enabled. ` +
`\nThis will limit the number of tasks fetched to 30.` +
`\nMessage will be removed after 30 sec.`,
30000
);
}
new Notice(
`Fetching completed tasks for last ${result} hours.. ` +
`\nTimerange, from: \n${timeStartFormattedDate} ${timeStartFormattedTime} ` +
`\nto: ` +
`\n${timeEndFormattedDate} ${timeEndFormattedTime}. ` +
`\nMessage will be removed after 30 sec.`,
30000
);
updateFileFromServer(
this.settings,
this.app,
Number(result),
FETCH_STRATEGIES.lastNHours
);
}).open();
},
});
this.addSettingTab(new TodoistPluginSettingTab(this.app, this));
}
async loadSettings() {
let storedSettings = (await this.loadData()) ?? DEFAULT_SETTINGS;
this.settings = migrateSettings(storedSettings);
await this.saveSettings();
}
async saveSettings() {
await this.saveData(this.settings);
}
}