aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/views/nodes/ChatBox/ChatBox.tsx28
-rw-r--r--src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts34
2 files changed, 32 insertions, 30 deletions
diff --git a/src/client/views/nodes/ChatBox/ChatBox.tsx b/src/client/views/nodes/ChatBox/ChatBox.tsx
index 7e238e28b..fdc0e3a17 100644
--- a/src/client/views/nodes/ChatBox/ChatBox.tsx
+++ b/src/client/views/nodes/ChatBox/ChatBox.tsx
@@ -33,13 +33,13 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
@observable.deep current_message: AssistantMessage | undefined = undefined;
@observable isLoading: boolean = false;
- @observable isUploadingDocs: boolean = false;
@observable uploadProgress: number = 0; // Track progress percentage
@observable currentStep: string = ''; // Track current step name
@observable expandedScratchpadIndex: number | null = null;
@observable inputValue: string = '';
@observable private linked_docs_to_add: ObservableSet<Doc> = observable.set();
@observable private linked_csv_files: { filename: string; id: string; text: string }[] = [];
+ @observable private isUploadingDocs: boolean = false;
private openai: OpenAI;
private vectorstore_id: string;
private vectorstore: Vectorstore;
@@ -76,21 +76,25 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
@action
addDocToVectorstore = async (newLinkedDoc: Doc) => {
- this.isUploadingDocs = true;
this.uploadProgress = 0;
this.currentStep = 'Initializing...';
+ this.isUploadingDocs = true;
- await this.vectorstore.addAIDoc(newLinkedDoc, this.updateProgress);
-
- runInAction(() => {
+ try {
+ await this.vectorstore.addAIDoc(newLinkedDoc, this.updateProgress);
+ } catch (error) {
+ console.error('Error uploading document:', error);
+ this.currentStep = 'Error during upload';
+ } finally {
this.isUploadingDocs = false;
this.uploadProgress = 0;
this.currentStep = '';
- });
+ }
};
@action
updateProgress = (progress: number, step: string) => {
+ console.log('Progress:', progress, step);
this.uploadProgress = progress;
this.currentStep = step;
};
@@ -394,17 +398,11 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
observe(this.linked_docs_to_add, change => {
if (change.type === 'add') {
- runInAction(() => {
- this.isUploadingDocs = true;
- });
if (PDFCast(change.newValue.data)) {
this.addDocToVectorstore(change.newValue);
} else if (CsvCast(change.newValue.data)) {
this.addCSVForAnalysis(change.newValue);
}
- runInAction(() => {
- this.isUploadingDocs = false;
- });
} else if (change.type === 'delete') {
console.log('Deleted docs: ', change.oldValue);
}
@@ -495,6 +493,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
console.log('Follow-up question clicked:', question);
this.inputValue = question;
};
+
render() {
return (
<div className="chat-box">
@@ -506,11 +505,6 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
</div>
</div>
)}
- {this.isUploadingDocs && (
- <div className="uploading-overlay">
- <div className="spinner"></div>
- </div>
- )}
<div className="chat-header">
<h2>{this.userName()}'s AI Assistant</h2>
</div>
diff --git a/src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts b/src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts
index 388574bff..408274703 100644
--- a/src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts
+++ b/src/client/views/nodes/ChatBox/vectorstore/Vectorstore.ts
@@ -77,27 +77,35 @@ export class Vectorstore {
console.log('Local File Path:', local_file_path);
if (local_file_path) {
+ console.log('Creating AI Document...');
// Start the document creation process
- const response = await Networking.PostToServer('/createDocument', { file_path: local_file_path });
- const jobId = response.job_id;
+ const { jobId } = await Networking.PostToServer('/createDocument', { file_path: local_file_path });
// Poll the server for progress updates
+ let inProgress: boolean = true;
let result: any = null;
+ while (inProgress) {
+ await new Promise(resolve => setTimeout(resolve, 2000)); // Polling interval
+
+ const resultResponse = await Networking.FetchFromServer(`/getResult/${jobId}`);
+ const resultResponseJson = JSON.parse(resultResponse);
+ //console.log('Result Response:', resultResponseJson);
+ if (resultResponseJson.status === 'completed') {
+ console.log('Result here:', resultResponseJson);
+ result = resultResponseJson;
+ break;
+ }
- while (!result) {
- await new Promise(resolve => setTimeout(resolve, 5000)); // Polling interval
+ const progressResponse = await Networking.FetchFromServer(`/getProgress/${jobId}`);
+ const progressResponseJson = JSON.parse(progressResponse);
+ //console.log('Progress Response:', progressResponseJson);
- const progressResponse = JSON.parse(await Networking.FetchFromServer(`/getProgress/${jobId}`));
- if (progressResponse) {
- const progress = progressResponse.progress;
- const step = progressResponse.step;
+ if (progressResponseJson) {
+ console.log('Progress:', progressResponseJson);
+ const progress = progressResponseJson.progress;
+ const step = progressResponseJson.step;
progressCallback(progress, step);
}
-
- const resultResponse = JSON.parse(await Networking.FetchFromServer(`/getResult/${jobId}`));
- if (resultResponse.status === 200) {
- result = resultResponse.data;
- }
}
// Process the final document result