mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-09 13:25:11 +00:00
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
This commit is contained in:
@@ -124,6 +124,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save Github config on server
|
||||||
const csrfToken = document.cookie.split('; ').find(row => row.startsWith('csrftoken'))?.split('=')[1];
|
const csrfToken = document.cookie.split('; ').find(row => row.startsWith('csrftoken'))?.split('=')[1];
|
||||||
fetch('/api/config/data/content-source/github', {
|
fetch('/api/config/data/content-source/github', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -137,15 +138,26 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
.then(response => response.json())
|
.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 => {
|
.then(data => {
|
||||||
if (data["status"] == "ok") {
|
document.getElementById("success").innerHTML = "✅ Successfully updated";
|
||||||
document.getElementById("success").innerHTML = "✅ Successfully updated. Go to your <a href='/config'>settings page</a> to complete setup.";
|
|
||||||
document.getElementById("success").style.display = "block";
|
document.getElementById("success").style.display = "block";
|
||||||
} else {
|
|
||||||
document.getElementById("success").innerHTML = "⚠️ Failed to update settings.";
|
|
||||||
document.getElementById("success").style.display = "block";
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
.catch(error => {
|
||||||
|
document.getElementById("success").innerHTML = "⚠️ Failed to update settings";
|
||||||
|
document.getElementById("success").style.display = "block";
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save Notion config on server
|
||||||
const csrfToken = document.cookie.split('; ').find(row => row.startsWith('csrftoken'))?.split('=')[1];
|
const csrfToken = document.cookie.split('; ').find(row => row.startsWith('csrftoken'))?.split('=')[1];
|
||||||
fetch('/api/config/data/content-source/notion', {
|
fetch('/api/config/data/content-source/notion', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -53,15 +54,25 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
.then(response => response.json())
|
.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 => {
|
.then(data => {
|
||||||
if (data["status"] == "ok") {
|
document.getElementById("success").innerHTML = "✅ Successfully updated";
|
||||||
document.getElementById("success").innerHTML = "✅ Successfully updated. Go to your <a href='/config'>settings page</a> to complete setup.";
|
|
||||||
document.getElementById("success").style.display = "block";
|
document.getElementById("success").style.display = "block";
|
||||||
} else {
|
|
||||||
document.getElementById("success").innerHTML = "⚠️ Failed to update settings.";
|
|
||||||
document.getElementById("success").style.display = "block";
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
.catch(error => {
|
||||||
|
document.getElementById("success").innerHTML = "⚠️ Failed to update settings";
|
||||||
|
document.getElementById("success").style.display = "block";
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -177,11 +177,15 @@ async def set_content_config_github_data(
|
|||||||
|
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
|
|
||||||
|
try:
|
||||||
await adapters.set_user_github_config(
|
await adapters.set_user_github_config(
|
||||||
user=user,
|
user=user,
|
||||||
pat_token=updated_config.pat_token,
|
pat_token=updated_config.pat_token,
|
||||||
repos=updated_config.repos,
|
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(
|
update_telemetry_state(
|
||||||
request=request,
|
request=request,
|
||||||
@@ -205,10 +209,14 @@ async def set_content_config_notion_data(
|
|||||||
|
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
|
|
||||||
|
try:
|
||||||
await adapters.set_notion_config(
|
await adapters.set_notion_config(
|
||||||
user=user,
|
user=user,
|
||||||
token=updated_config.token,
|
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(
|
update_telemetry_state(
|
||||||
request=request,
|
request=request,
|
||||||
|
|||||||
Reference in New Issue
Block a user