Skip to content

Commit 79c90e9

Browse files
committed
Move Claude's message input and send logic to its dedicated chatbot implementation
1 parent 0305559 commit 79c90e9

3 files changed

Lines changed: 32 additions & 26 deletions

File tree

packages/browser/src/content-scripts/send-prompt-content-script/chatbots/claude.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,28 @@ export const claude: Chatbot = {
5252
}
5353
await new Promise((r) => requestAnimationFrame(r))
5454
},
55+
enter_message_and_send: async (message: string) => {
56+
const input_element = document.querySelector(
57+
'div[contenteditable=true]'
58+
) as HTMLElement
59+
60+
if (input_element) {
61+
input_element.innerText = message
62+
input_element.dispatchEvent(new Event('input', { bubbles: true }))
63+
input_element.dispatchEvent(new Event('change', { bubbles: true }))
64+
await new Promise((r) => setTimeout(r, 500))
65+
const submit_button = Array.from(
66+
document.querySelectorAll('fieldset button')
67+
).find((button) =>
68+
button.querySelector(
69+
'path[d="M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z"]'
70+
)
71+
) as HTMLButtonElement
72+
if (submit_button) {
73+
submit_button.click()
74+
}
75+
}
76+
},
5577
inject_apply_response_button: (client_id: number) => {
5678
const add_buttons = (params: { footer: Element }) => {
5779
// Check if buttons already exist by text content to avoid duplicates

packages/browser/src/content-scripts/send-prompt-content-script/chatbots/kimi.ts

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,17 @@ export const kimi: Chatbot = {
2727
},
2828
enter_message_and_send: async (message: string) => {
2929
const input_element = document.querySelector(
30-
'.chat-input-editor[data-lexical-editor="true"]'
30+
'div[contenteditable=true]'
3131
) as HTMLElement
3232

33-
if (!input_element) {
34-
throw new Error('Kimi input element not found')
35-
}
36-
37-
// Focus the element first
38-
input_element.focus()
39-
40-
// Insert the new text using execCommand which works better with Lexical
41-
document.execCommand('insertText', false, message)
42-
43-
// Dispatch input event to trigger Lexical's change detection
44-
input_element.dispatchEvent(new Event('input', { bubbles: true }))
45-
input_element.dispatchEvent(new Event('change', { bubbles: true }))
33+
input_element.dispatchEvent(
34+
new InputEvent('input', {
35+
bubbles: true,
36+
cancelable: true,
37+
inputType: 'insertText',
38+
data: message
39+
})
40+
)
4641

4742
new Promise<void>((resolve) => {
4843
const check_button_state = () => {

packages/browser/src/content-scripts/send-prompt-content-script/send-prompt-content-script.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ export const get_textarea_element = () => {
119119
[gemini_url]: 'div[contenteditable="true"]',
120120
[openrouter_url]: 'textarea',
121121
[chatgpt_url]: 'div#prompt-textarea',
122-
[claude_url]: 'div[contenteditable=true]',
123122
[deepseek_url]: 'textarea',
124123
[mistral_url]: 'div[contenteditable="true"]',
125124
[yuanbao_url]: 'div[contenteditable="true"]',
@@ -153,17 +152,7 @@ const enter_message_and_send = async (params: {
153152
params.input_element.dispatchEvent(new Event('change', { bubbles: true }))
154153
await new Promise((r) => requestAnimationFrame(r))
155154
const form = params.input_element.closest('form')
156-
if (is_claude) {
157-
await new Promise((r) => setTimeout(r, 500))
158-
const submit_button = Array.from(
159-
document.querySelectorAll('fieldset button')
160-
).find((button) =>
161-
button.querySelector(
162-
'path[d="M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z"]'
163-
)
164-
) as HTMLButtonElement
165-
submit_button.click()
166-
} else if (form) {
155+
if (form) {
167156
form.requestSubmit()
168157
} else {
169158
const enter_event = new KeyboardEvent('keydown', {

0 commit comments

Comments
 (0)