Files
intelaide/doclink/app/static/js/app-api.js
2026-01-20 04:54:10 +00:00

553 lines
14 KiB
JavaScript

window.fetchUserInfo = async function(userID) {
try {
const response = await fetch('/api/v1/db/get_user_info', {
method: 'POST',
body: JSON.stringify({ user_id: userID }),
headers: {
'Content-Type': 'application/json'
},
});
if (!response.ok) {
throw new Error('Failed to fetch initial user data');
}
const data = await response.json();
if (!data) {
console.error('User could not be found!');
return null;
}
return data;
} catch (error) {
console.error('Error fetching initial user data:', error);
return null;
}
};
window.handleLogoutRequest = async function handleLogoutRequest(userId, sessionId) {
try {
const response = await fetch('/api/v1/auth/logout', {
method: 'POST',
body: JSON.stringify({
user_id: userId,
session_id: sessionId
}),
credentials: 'include',
headers: {
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error('Logout failed');
}
return {
success: true
};
} catch (error) {
console.error('Logout request failed:', error);
return {
success: false,
error: error.message
};
}
};
window.selectDomain = async function selectDomain(domainId, userID) {
try {
const url = `/api/v1/qa/select_domain?userID=${encodeURIComponent(userID)}`;
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain_id: domainId
})
});
if (!response.ok) {
return 0;
}
const data = await response.json();
if (data["message"] !== "success") {
return 0;
}
return 1;
} catch (error) {
console.error('Error selecting domain', error);
return 0;
}
}
window.renameDomain = async function renameDomain(domainId, newName) {
try {
const response = await fetch('/api/v1/db/rename_domain', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain_id: domainId,
new_name: newName
})
});
if (!response.ok) {
return 0;
}
const data = await response.json();
if (data.message !== "success") {
return 0;
}
return 1;
} catch (error) {
console.error('Error renaming domain:', error);
return 0;
}
};
window.createDomain = async function createDomain(userId, domainName) {
try {
const url = `/api/v1/db/create_domain?userID=${encodeURIComponent(userId)}`;
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain_name: domainName
})
});
const data = await response.json();
if (!response.ok) {
return { success: 0, message: data.message || 'Failed to create domain' };
}
if (data.message !== "success") {
return { success: 0, message: data.message };
}
return { success: 1, id: data.domain_id };
} catch (error) {
console.error('Error creating domain:', error);
return { success: 0, id: null };
}
};
window.deleteDomain = async function deleteDomain(domainId) {
try {
const response = await fetch('/api/v1/db/delete_domain', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain_id: domainId
})
});
const data = await response.json();
if (!response.ok) {
return {
success: false,
message: data.message
};
}
if (data.message !== "success") {
return {
success: false,
message: data.message
};
}
return {
success: true,
message: "Folder deleted"
};
} catch (error) {
console.error('Error deleting domain:', error);
return {
success: false,
message: "An unexpected error occurred"
};
}
};
window.storeFile = async function(userID, formData) {
try {
const response = await fetch(`/api/v1/io/store_file?userID=${encodeURIComponent(userID)}`, {
method: 'POST',
body: formData
});
if (!response.ok) {
throw new Error('Failed to store file');
}
const data = await response.json();
if (data.message !== "success") {
return 0;
}
return 1;
} catch (error) {
console.error('Error storing file:', error);
return {
success: false,
error: error.message
};
}
};
window.storedriveFile = async function(userID, formData) {
try {
const response = await fetch(`/api/v1/io/store_drive_file?userID=${encodeURIComponent(userID)}`, {
method: 'POST',
body: formData
});
if (!response.ok) {
throw new Error('Failed to store drive file');
}
const data = await response.json();
if (data.message !== "success") {
return 0;
}
return 1;
} catch (error) {
console.error('Error storing file:', error);
return {
success: false,
error: error.message
};
}
};
window.storeURL = async function(userID, url) {
try {
const formData = new FormData();
formData.append('url', url);
const response = await fetch(`/api/v1/io/store_url?userID=${encodeURIComponent(userID)}`, {
method: 'POST',
body: formData
});
if (!response.ok) {
throw new Error('Failed to store url');
}
const data = await response.json();
if (data.message !== "success") {
return 0;
}
return 1;
} catch (error) {
console.error('Error storing URL:', error);
return {
success: false,
error: error.message
};
}
};
window.uploadFiles = async function(userID) {
try {
const response = await fetch(`/api/v1/io/upload_files?userID=${userID}`, {
method: 'POST'
});
const data = await response.json();
if (data.message.includes("can only have 20 total files")) {
return {
success: false,
error: data.message || 'Upload process failed'
};
} else if (data.message !== "success") {
return {
success: false,
error: data.message
};
}
if (!response.ok) {
throw new Error('Failed to process uploads');
}
return {
success: true,
data: {
file_names: data.file_names,
file_ids: data.file_ids,
message: data.message
}
};
} catch (error) {
console.error('Error uploading files:', error);
return {
success: false,
error: error.message
};
}
};
window.removeFile = async function(fileId, domainId, userId) {
try {
const url = `/api/v1/db/remove_file_upload?userID=${encodeURIComponent(userId)}`;
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
file_id: fileId,
domain_id: domainId
})
});
if (!response.ok) {
throw new Error('Failed to remove files');
}
const data = await response.json();
if (data.message !== "success") {
return 0;
}
return 1;
} catch (error) {
console.error('Error removing files:', error);
return {
success: false,
error: error.message
};
}
};
window.exportResponse = async function(contents) {
try {
const response = await fetch('/api/v1/io/export_response', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({contents})
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.detail || 'Failed to generate PDF');
}
const blob = await response.blob();
if (blob.size === 0) {
throw new Error('Received empty PDF');
}
const url = window.URL.createObjectURL(
new Blob([blob], { type: 'application/pdf' })
);
const link = document.createElement('a');
link.href = url;
link.download = 'DoclinkExport.pdf';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
setTimeout(() => {
window.URL.revokeObjectURL(url);
}, 100);
return {
success: true
};
}
catch (error) {
console.error('Error uploading files:', error);
return {
success: false,
error: error.message
};
}
};
window.sendMessage = async function(message, userId, sessionId, fileIds) {
if (!message) {
return {
message: "Please enter your sentence!",
status: 400
};
}
try {
const url = `/api/v1/qa/generate_answer?userID=${encodeURIComponent(userId)}&sessionID=${encodeURIComponent(sessionId)}`;
const response = await fetch(url, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
user_message: message,
file_ids: fileIds
})
});
const data = await response.json();
if (data.message && data.message.includes("Daily question limit reached")) {
return {
message: data.message || 'Daily question limit reached!',
status: 400
};
}
if (!response.ok) {
return {
message: data.message || 'Server error!',
status: response.status
};
}
return {
...data,
status: 200
};
} catch (error) {
console.error('Error:', error);
return {
message: 'Error generating message!',
status: 500
};
}
};
window.sendFeedback = async function(formData, userId) {
try {
const url = `/api/v1/db/insert_feedback?userID=${encodeURIComponent(userId)}`;
const response = await fetch(url, {
method: 'POST',
body: formData
});
if (!response.ok) {
throw new Error('Failed to submit feedback');
}
const data = await response.json();
return {
success: true,
message: data.message || 'Thank you for your feedback!'
};
} catch (error) {
console.error('Error submitting feedback:', error);
return {
success: false,
message: 'Failed to submit feedback. Please try again.'
};
}
}
window.sendRating = async function(ratingData, userNote, userId) {
try {
const url = `/api/v1/db/insert_rating?userID=${encodeURIComponent(userId)}`;
const formData = new FormData();
formData.append('rating', ratingData);
if (userNote){
formData.append('user_note', userNote);
}
const response = await fetch(url, {
method: 'POST',
body: formData
});
if (!response.ok) {
throw new Error('Failed to submit rating');
}
const data = await response.json();
return {
success: true,
message: data.message || 'Thank you for your feedback!'
};
} catch (error) {
console.error('Error submitting feedback:', error);
return {
success: false,
message: 'Failed to submit feedback. Please try again.'
};
}
}
window.googleSignIn = async function googleSignIn() {
try {
const url = `/api/v1/qa/select_domain?userID=${encodeURIComponent(userID)}`;
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain_id: domainId
})
});
if (!response.ok) {
return 0;
}
const data = await response.json();
if (data["message"] !== "success") {
return 0;
}
return 1;
} catch (error) {
console.error('Error selecting domain', error);
return 0;
}
}