From 6f60b3ccf18c35c3faada44ef7187f4ae9d50ab1 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 13 Feb 2025 23:50:03 -0500 Subject: from last --- src/client/views/global/globalScripts.ts | 2 +- .../views/nodes/formattedText/FormattedTextBox.tsx | 3 +- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 119 ++++++++++----------- 3 files changed, 59 insertions(+), 65 deletions(-) (limited to 'src') diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 029c4dbc7..790ebeabe 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -230,7 +230,7 @@ ScriptingGlobals.add(function showFreeform( GPTPopup.Instance.setVisible(false); } else { GPTPopup.Instance.setVisible(true); - GPTPopup.Instance.setMode(GPTPopupMode.CARD); + GPTPopup.Instance.setMode(GPTPopupMode.GPT_MENU); } }, }], diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx index 17b9bce47..2e14fb1d9 100644 --- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx +++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx @@ -1065,8 +1065,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 691c24792..4457bde91 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -21,14 +21,12 @@ import { AnchorMenu } from '../AnchorMenu'; import './GPTPopup.scss'; export enum GPTPopupMode { - SUMMARY, - EDIT, - IMAGE, - FLASHCARD, + SUMMARY, // summary of seleted document text + IMAGE, // generate image from image description DATA, - CARD, - SORT, - QUIZ, + GPT_MENU, // menu for choosing type of prompts user will provide + USER_PROMPT, // user prompts for sorting,filtering and asking about docs + QUIZ_RESPONSE, // user definitions or explanations to be evaluated by GPT } export enum GPTQuizType { @@ -50,10 +48,9 @@ export class GPTPopup extends ObservableReactComponent { private _dataJson: string = ''; private _sortDesc: string = ''; private _sidebarFieldKey: string = ''; - private _imgDesc: string = ''; private _selectedText: string = ''; + private _imgDesc: string = ''; - public setImgDesc = (text: string) => (this._imgDesc = text); public setSidebarFieldKey = (id: string) => (this._sidebarFieldKey = id); public setSortDesc = (t: string) => (this._sortDesc = t); public setImgTargetDoc = (anchor: Doc) => (this._imgTargetDoc = anchor); @@ -89,8 +86,8 @@ export class GPTPopup extends ObservableReactComponent { @action public setMode = (mode: GPTPopupMode) => (this._mode = mode); @observable private _collectionContext: Doc | undefined = undefined; @action setCollectionContext = (doc: Doc | undefined) => (this._collectionContext = doc); - @observable private _sortPrompt: string = ''; - @action setSortPrompt = (e: React.ChangeEvent) => (this._sortPrompt = e.target.value); + @observable private _userPrompt: string = ''; + @action setUserPrompt = (e: React.ChangeEvent) => (this._userPrompt = e.target.value); @observable private _quizAnswer: string = ''; @action setQuizAnswer = (e: React.ChangeEvent) => (this._quizAnswer = e.target.value); @observable private _stopAnimatingResponse: boolean = false; @@ -149,7 +146,7 @@ export class GPTPopup extends ObservableReactComponent { * Generates a response to the user's question depending on the type of their question * @param userPrompt the user's input that chat will respond to */ - generateQueryResponse = (userPrompt: string) => + generateUserPromptResponse = (userPrompt: string) => (this._regenerateCallback ?? Promise.resolve)().then(() => gptAPICall(userPrompt, GPTCallType.TYPE).then(questionType => (() => { @@ -176,26 +173,24 @@ export class GPTPopup extends ObservableReactComponent { /** * Generates a Dalle image and uploads it to the server. */ - generateImage = () => { - if (this._imgDesc !== '') { - this.setImgUrls([]); - this.setMode(GPTPopupMode.IMAGE); - this.setVisible(true); - this.setGptProcessing(true); - - return gptImageCall(this._imgDesc) - .then(imageUrls => - imageUrls?.[0] - ? Networking.PostToServer('/uploadRemoteImage', { sources: [imageUrls[0]] }).then(res => { - const source = ClientUtils.prepend(res[0].accessPaths.agnostic.client); - return this.setImgUrls([[imageUrls[0]!, source]]); - }) - : undefined - ) - .catch(err => console.error(err)) - .finally(() => this.setGptProcessing(false)); - } - return undefined; + generateImage = (imgDesc: string) => { + this.setImgUrls([]); + this.setMode(GPTPopupMode.IMAGE); + this.setVisible(true); + this.setGptProcessing(true); + this._imgDesc = imgDesc; + + return gptImageCall(imgDesc) + .then(imageUrls => + imageUrls?.[0] + ? Networking.PostToServer('/uploadRemoteImage', { sources: [imageUrls[0]] }).then(res => { + const source = ClientUtils.prepend(res[0].accessPaths.agnostic.client); + return this.setImgUrls([[imageUrls[0]!, source]]); + }) + : undefined + ) + .catch(err => console.error(err)) + .finally(() => this.setGptProcessing(false)); }; /** @@ -203,12 +198,12 @@ export class GPTPopup extends ObservableReactComponent { * * @param text the text to summarizz */ - generateSummary = (text?: string) => { - this._selectedText = text ?? this._selectedText; + generateSummary = (text: string) => { + this._selectedText = text; this.setVisible(true); this.setMode(GPTPopupMode.SUMMARY); this.setGptProcessing(true); - return gptAPICall(this._selectedText, GPTCallType.SUMMARY) + return gptAPICall(text, GPTCallType.SUMMARY) .then(res => this.setResponseText(res || 'Something went wrong.')) .catch(err => console.error(err)) .finally(() => this.setGptProcessing(false)); @@ -286,12 +281,12 @@ export class GPTPopup extends ObservableReactComponent { scrollToBottom = () => setTimeout(() => this._messagesEndRef.current?.scrollIntoView({ behavior: 'smooth', block: 'end' }), 50); - cardMenu = () => ( + gptMenu = () => (