diff --git a/src/khoj/interface/web/config.html b/src/khoj/interface/web/config.html
index 8c48cb7a..2a05ef12 100644
--- a/src/khoj/interface/web/config.html
+++ b/src/khoj/interface/web/config.html
@@ -272,6 +272,34 @@
{% endif %}
{% endif %}
+
Billing
@@ -616,7 +644,6 @@
`;
-
}
function listApiKeys() {
@@ -624,7 +651,51 @@
fetch('/auth/token')
.then(response => response.json())
.then(tokens => {
- apiKeyList.innerHTML = tokens.map(generateTokenRow).join("");
+ if (!tokens?.length > 0) return;
+ apiKeyList.innerHTML = tokens?.map(generateTokenRow).join("");
+ });
+ }
+
+ // List user's API keys on page load
+ listApiKeys();
+
+ function deleteTask(taskId) {
+ const scheduledTaskList = document.getElementById("scheduled-tasks-list");
+ // url encode the task id
+ taskId = encodeURIComponent(taskId);
+ fetch(`/api/task?task_id=${taskId}`, {
+ method: 'DELETE',
+ })
+ .then(response => {
+ if (response.status == 200) {
+ const scheduledTaskItem = document.getElementById(`scheduled-task-item-${taskId}`);
+ scheduledTaskList.removeChild(scheduledTaskItem);
+ }
+ });
+ }
+
+ function generateTaskRow(taskObj) {
+ let taskId = taskObj.id;
+ let taskName = taskObj.name;
+ let taskNextRun = taskObj.next;
+ return `
+
+ | ${taskName} |
+ ${taskNextRun} |
+
+
+ |
+
+ `;
+ }
+
+ function listScheduledTasks() {
+ const scheduledTasksList = document.getElementById("scheduled-tasks-list");
+ fetch('/api/tasks')
+ .then(response => response.json())
+ .then(tasks => {
+ if (!tasks?.length > 0) return;
+ scheduledTasksList.innerHTML = tasks.map(generateTaskRow).join("");
});
}
@@ -637,8 +708,8 @@
});
}
- // List user's API keys on page load
- listApiKeys();
+ // List user's scheduled tasks on page load
+ listScheduledTasks();
function removeFile(path) {
fetch('/api/config/data/file?filename=' + path, {