Skip to content

Commit

Permalink
Merge pull request #9 from Ledaryy/7-failed-to-render-tasks-in-versio…
Browse files Browse the repository at this point in the history
…n-112

7 failed to render tasks in version 112
  • Loading branch information
Ledaryy committed Sep 22, 2022
2 parents 8e34011 + 8b527b1 commit 0643df9
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 7 deletions.
3 changes: 3 additions & 0 deletions docs/KNOWN_BUGS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### Known Bugs
- [x] Subtask fetched without completed parent task produces an error
- [x] If 0 tasks are found, the plugin will continue processing the rest of the code and will display the empty list
2 changes: 1 addition & 1 deletion main.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Notice, Plugin } from "obsidian";
import { updateFileFromServer } from "./src/updateFileContent";
import { DEFAULT_SETTINGS, TodoistSettings } from "./src/defaultSettings";
import { DEFAULT_SETTINGS, TodoistSettings } from "./src/DefaultSettings";
import { migrateSettings } from "./src/settingsMigrations";
import { ExampleModal } from "./src/modal";
import { getTimeframesForLastNHoursWithoutOffset } from "./src/utils";
Expand Down
6 changes: 6 additions & 0 deletions src/fetchTasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ export async function fetchTasks(
}).then(function (response) {
return response.json();
});

if (completedTasksMetadata.items.length === 0) {
new Notice("No completed tasks found for the given timeframe");
return "";
}

new Notice(
completedTasksMetadata.items.length +
" completed tasks found. Processing..."
Expand Down
26 changes: 23 additions & 3 deletions src/formatTasks.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
import { Notice } from "obsidian";
import { TodoistSettings } from "./defaultSettings";
import { TodoistSettings } from "./DefaultSettings";

export function formatTasks(tasks: any, settings: TodoistSettings) {
try {
const taskPrefix = settings.taskPrefix;

let childTasks = tasks.filter((task: any) => task.parentId !== null);
let makeSubtaskErrorNotice = false;

if (childTasks.length > 0) {
tasks.forEach((task: any) => {
if (task.parentId !== null) {
const parentTask = tasks.find(
(t: any) => t.taskId === task.parentId
);
parentTask.childTasks.push(task);
if (parentTask) {
parentTask.childTasks.push(task);
} else {
console.log("Parent task not found for: ", task);
makeSubtaskErrorNotice = true;
}
}
});

Expand Down Expand Up @@ -46,11 +52,25 @@ export function formatTasks(tasks: any, settings: TodoistSettings) {
return returnString;
});

if (makeSubtaskErrorNotice) {
new Notice(
"Some subtasks were not rendered because parent tasks were not found." +
"\nPlease check the console for more information." +
"\nMessage will be removed after 10 sec.",
10000
);
console.log(
"Please note that to render completed subtasks, the parent task must also be completed."
);
}

return formattedTasks.join("\n");
} catch (error) {
console.log(error);
new Notice(
"There was a problem formatting your tasks. Check the console for more details."
"There was a problem formatting your tasks. Check the console for more details.",
10000
);
return "";
}
}
2 changes: 1 addition & 1 deletion src/settingsMigrations.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { TodoistSettings, DEFAULT_SETTINGS } from "./defaultSettings";
import { TodoistSettings, DEFAULT_SETTINGS } from "./DefaultSettings";

export function migrateSettings(settings: any): TodoistSettings {
let newSettings: any = settings;
Expand Down
3 changes: 2 additions & 1 deletion src/settingsTabs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,8 @@ export class TodoistPluginSettingTab extends PluginSettingTab {
"You should disable it if you want to load more than 30 (up to 200) tasks. " +
"This is due to a limitation of the Todoist API." +
"\nIf enabled, subtasks will be rendered as subtasks. " +
"\nIf disabled, subtasks will be rendered as normal tasks.";
"\nIf disabled, subtasks will be rendered as normal tasks." +
"\nDramatically increases loading time if enabled.";
});
new Setting(containerEl)
.setName("Render subtasks")
Expand Down
6 changes: 5 additions & 1 deletion src/updateFileContent.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { App, Notice, MarkdownView } from "obsidian";
import { TodoistSettings } from "./defaultSettings";
import { TodoistSettings } from "./DefaultSettings";
import { fetchTasks } from "./fetchTasks";
import { formatTasks } from "./formatTasks";
import {
Expand Down Expand Up @@ -56,6 +56,10 @@ export async function updateFileFromServer(
settings.renderSubtasks
);

if (rawTasks.length === 0) {
return;
}

let formattedTasks = formatTasks(rawTasks, settings);

formattedTasks = `\n` + formattedTasks + `\n`;
Expand Down

0 comments on commit 0643df9

Please sign in to comment.