forked from chhoumann/quickadd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtogglManager.js
80 lines (67 loc) · 2.4 KB
/
togglManager.js
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
let togglApi;
let quickAddApi;
let projects;
const back = "<- Back";
const menu = {
"🧠 Learning & Skill Development": {
togglProjectName: "Learning & Skill Development",
menuOptions: {
"✍ Note Making": "Note Making",
"🃏 Spaced Repetition": "Spaced Repetition",
"📖 Read Later Processing": "Read Later Processing",
"👨💻 Computer Science & Software Engineering": "Computer Science & Software Engineering",
}
},
"🤴 Personal": {
togglProjectName: "Personal",
menuOptions: {
"🏋️♂️ Exercise": "Exercise",
"🧹 Chores": "Chores",
"👨🔬 Systems Work": "Systems Work",
"🌀 Weekly Review": "Weekly Review",
"📆 Monthly Review": "Monthly Review",
"✔ Planning": "Planning",
}
},
"👨🎓 School": {
togglProjectName: "School",
menuOptions: {
"🧠 Machine Intelligence (MI)": "Machine Intelligence (MI)",
"💾 Database Systems (DBS)": "Database Systems (DBS)",
"🏃♂ Agile Software Engineering (ASE)": "Agile Software Engineering (ASE)",
"💻 P5": "P5",
}
}
};
module.exports = async function togglManager(params) {
togglApi = params.app.plugins.plugins["obsidian-toggl-integration"].toggl._apiManager;
quickAddApi = params.quickAddApi;
projects = await togglApi.getProjects();
openMainMenu(menu);
}
const dateInSeconds = (date) => {
return Math.floor(date / 1000);
}
async function startTimer(entryName, projectID) {
await togglApi.startTimer({description: entryName, pid: projectID});
}
async function openMainMenu(menu) {
const {suggester} = quickAddApi;
const options = Object.keys(menu);
const choice = await suggester(options, options);
if (!choice) return;
const project = menu[choice];
await openSubMenu(project);
}
async function openSubMenu(project) {
const {suggester} = quickAddApi;
const options = [...Object.keys(project.menuOptions), back];
const choice = await suggester(options, options);
if (!choice) return;
if (choice === back) {
return await openMainMenu(menu);
}
const entryName = project.menuOptions[choice];
const projectID = projects.find(p => p.name === project.togglProjectName).id;
startTimer(entryName, projectID);
}