refactor: update clipboard mode for JSON and remove question-to-answer mode

This commit is contained in:
2026-04-28 19:53:39 +02:00
parent 46c5b756a5
commit 03bc4e64e4
10 changed files with 8 additions and 51 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-3
View File
@@ -89,9 +89,6 @@
<li>
<button value="clipboard" class="not-selected">clipboard</button>
</li>
<li>
<button value="question-to-answer" class="not-selected">question to answer</button>
</li>
</ul>
</div>
<div class="line mt center-y">
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,32 +0,0 @@
import type GPTAnswer from '../../types/gpt-answer';
type Props = {
questionElement: HTMLElement;
gptAnswer: GPTAnswer;
removeListener: () => void;
};
/**
* Question to answer mode:
* Simply turn the question into the answer by clicking on it
* @param props
*/
function questionToAnswerMode(props: Props) {
const questionElement = props.questionElement;
props.removeListener();
const questionBackup = questionElement.innerHTML ?? '';
questionElement.innerHTML = props.gptAnswer.response;
questionElement.style.whiteSpace = 'pre-wrap';
// To go back to the question / answer
questionElement.addEventListener('click', function () {
const contentIsResponse = questionElement.innerHTML === props.gptAnswer.response;
questionElement.style.whiteSpace = contentIsResponse ? 'initial' : 'pre-wrap';
questionElement.innerHTML = contentIsResponse ? questionBackup : props.gptAnswer.response;
});
}
export default questionToAnswerMode;
+2 -1
View File
@@ -9,7 +9,8 @@ import titleIndications from 'background/utils/title-indications';
*/
function handleClipboard(config: Config, gptAnswer: GPTAnswer) {
if (config.title) titleIndications('Copied to clipboard');
navigator.clipboard.writeText(gptAnswer.response);
const textToCopy = gptAnswer.rawResponse || JSON.stringify(gptAnswer.response) || '';
navigator.clipboard.writeText(textToCopy);
}
export default handleClipboard;
-8
View File
@@ -3,7 +3,6 @@ import Logs from 'background/utils/logs';
import getChatGPTResponse from './get-response';
import createAndNormalizeQuestion from './create-question';
import clipboardMode from './modes/clipboard';
import questionToAnswerMode from './modes/question-to-answer';
import autoCompleteMode from './modes/autocomplete';
type Props = {
@@ -56,13 +55,6 @@ async function reply(props: Props): Promise<void> {
removeListener: props.removeListener
});
break;
case 'question-to-answer':
questionToAnswerMode({
gptAnswer,
questionElement: props.questionElement,
removeListener: props.removeListener
});
break;
case 'autocomplete':
autoCompleteMode({
config: props.config,
+1 -1
View File
@@ -11,7 +11,7 @@ type Config = {
timeout?: boolean;
history?: boolean;
includeImages?: boolean;
mode?: 'autocomplete' | 'question-to-answer' | 'clipboard';
mode?: 'autocomplete' | 'clipboard';
baseURL?: string;
projectId?: string;
maxTokens?: number;
+1 -2
View File
@@ -6,8 +6,7 @@ const toExcludes = ['includeImages'];
// inputs id that need to be disabled for a specific mode
const disabledForThisMode: Record<string, string[]> = {
autocomplete: [],
clipboard: ['typing', 'mouseover'],
'question-to-answer': ['typing', 'infinite', 'mouseover']
clipboard: ['typing', 'mouseover']
};
/**