From b34d4fa741082b842a3408721203e40df6f6c249 Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Sat, 11 Nov 2023 00:33:49 -0800 Subject: [PATCH] Save config, update index on save of Github, Notion config in web app Reduce user confusion by joining config update with index updation for each content type. So only a single click required to configure any content type instead of two clicks on two separate pages --- .../web/content_source_github_input.html | 26 ++++++++++++++----- .../web/content_source_notion_input.html | 25 +++++++++++++----- src/khoj/routers/api.py | 26 ++++++++++++------- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/src/khoj/interface/web/content_source_github_input.html b/src/khoj/interface/web/content_source_github_input.html index ff82b1f2..705e5672 100644 --- a/src/khoj/interface/web/content_source_github_input.html +++ b/src/khoj/interface/web/content_source_github_input.html @@ -124,6 +124,7 @@ return; } + // Save Github config on server const csrfToken = document.cookie.split('; ').find(row => row.startsWith('csrftoken'))?.split('=')[1]; fetch('/api/config/data/content-source/github', { method: 'POST', @@ -137,15 +138,26 @@ }) }) .then(response => response.json()) + .then(data => { data["status"] === "ok" ? data : Promise.reject(data) }) + .catch(error => { + document.getElementById("success").innerHTML = "⚠️ Failed to update settings"; + document.getElementById("success").style.display = "block"; + return; + }); + + // Index Github content on server + fetch('/api/update?t=github') + .then(response => response.json()) + .then(data => { data["status"] == "ok" ? data : Promise.reject(data) }) .then(data => { - if (data["status"] == "ok") { - document.getElementById("success").innerHTML = "✅ Successfully updated. Go to your settings page to complete setup."; - document.getElementById("success").style.display = "block"; - } else { - document.getElementById("success").innerHTML = "⚠️ Failed to update settings."; - document.getElementById("success").style.display = "block"; - } + document.getElementById("success").innerHTML = "✅ Successfully updated"; + document.getElementById("success").style.display = "block"; }) + .catch(error => { + document.getElementById("success").innerHTML = "⚠️ Failed to update settings"; + document.getElementById("success").style.display = "block"; + }); + }); {% endblock %} diff --git a/src/khoj/interface/web/content_source_notion_input.html b/src/khoj/interface/web/content_source_notion_input.html index 18eb5a7f..4bc4a20d 100644 --- a/src/khoj/interface/web/content_source_notion_input.html +++ b/src/khoj/interface/web/content_source_notion_input.html @@ -41,6 +41,7 @@ return; } + // Save Notion config on server const csrfToken = document.cookie.split('; ').find(row => row.startsWith('csrftoken'))?.split('=')[1]; fetch('/api/config/data/content-source/notion', { method: 'POST', @@ -53,15 +54,25 @@ }) }) .then(response => response.json()) + .then(data => { data["status"] === "ok" ? data : Promise.reject(data) }) + .catch(error => { + document.getElementById("success").innerHTML = "⚠️ Failed to update settings"; + document.getElementById("success").style.display = "block"; + return; + }); + + // Index Notion content on server + fetch('/api/update?t=notion') + .then(response => response.json()) + .then(data => { data["status"] == "ok" ? data : Promise.reject(data) }) .then(data => { - if (data["status"] == "ok") { - document.getElementById("success").innerHTML = "✅ Successfully updated. Go to your settings page to complete setup."; - document.getElementById("success").style.display = "block"; - } else { - document.getElementById("success").innerHTML = "⚠️ Failed to update settings."; - document.getElementById("success").style.display = "block"; - } + document.getElementById("success").innerHTML = "✅ Successfully updated"; + document.getElementById("success").style.display = "block"; }) + .catch(error => { + document.getElementById("success").innerHTML = "⚠️ Failed to update settings"; + document.getElementById("success").style.display = "block"; + }); }); {% endblock %} diff --git a/src/khoj/routers/api.py b/src/khoj/routers/api.py index ddfe9bc1..4e050eee 100644 --- a/src/khoj/routers/api.py +++ b/src/khoj/routers/api.py @@ -177,11 +177,15 @@ async def set_content_config_github_data( user = request.user.object - await adapters.set_user_github_config( - user=user, - pat_token=updated_config.pat_token, - repos=updated_config.repos, - ) + try: + await adapters.set_user_github_config( + user=user, + pat_token=updated_config.pat_token, + repos=updated_config.repos, + ) + except Exception as e: + logger.error(e, exc_info=True) + raise HTTPException(status_code=500, detail="Failed to set Github config") update_telemetry_state( request=request, @@ -205,10 +209,14 @@ async def set_content_config_notion_data( user = request.user.object - await adapters.set_notion_config( - user=user, - token=updated_config.token, - ) + try: + await adapters.set_notion_config( + user=user, + token=updated_config.token, + ) + except Exception as e: + logger.error(e, exc_info=True) + raise HTTPException(status_code=500, detail="Failed to set Github config") update_telemetry_state( request=request,