Skip to content

Commit

Permalink
Updated chatgpt.isIdle() + chatgpt.code.isIdle() to work w/ new U…
Browse files Browse the repository at this point in the history
…I ↞ [auto-sync from `KudoAI/chatgpt.js`]
  • Loading branch information
adamlui authored and kudo-sync-bot committed Sep 12, 2024
1 parent 229be5b commit 0353a38
Showing 1 changed file with 26 additions and 12 deletions.
38 changes: 26 additions & 12 deletions starters/chrome/extension/lib/chatgpt.js
Original file line number Diff line number Diff line change
Expand Up @@ -423,25 +423,26 @@ const chatgpt = { // eslint-disable-line no-redeclare
});
await new Promise(resolve => { // when reply starts generating
new MutationObserver((_, obs) => {
if (!chatgpt.getRegenerateBtn()) { obs.disconnect(); resolve(); }
}).observe(document.body, obsConfig);
if (chatgpt.getStopBtn()) { obs.disconnect(); resolve(); }
}).observe(document.body, { childList: true, subtree: true });
});
const lastReplyDiv = await new Promise(resolve => { // when code starts generating
const replyDivs = document.querySelectorAll(selectors.replyDiv),
lastReplyDiv = replyDivs[replyDivs.length - 1];
await new Promise(resolve => { // when code starts generating
new MutationObserver((_, obs) => {
const replyDivs = document.querySelectorAll(selectors.replyDiv),
lastReplyDiv = replyDivs[replyDivs.length - 1];
if (lastReplyDiv?.querySelector('pre')) { obs.disconnect(); resolve(lastReplyDiv); }
if (lastReplyDiv?.querySelector('pre')) { obs.disconnect(); resolve(); }
}).observe(document.body, obsConfig);
});
await new Promise(resolve => { // when code stops generating
new MutationObserver((_, obs) => {
if (lastReplyDiv?.querySelector('pre').nextElementSibling // code block not last child of reply div
|| chatgpt.getRegenerateBtn() // ...or reply outright stopped generating
|| !chatgpt.getStopBtn() // ...or reply outright stopped generating
) { obs.disconnect(); resolve(); }
}).observe(document.body, obsConfig);
});
},


async minify(code) {
if (!code) return console.error('Code argument not supplied. Pass some code!');
if (typeof code !== 'string') return console.error('Code argument must be a string!');
Expand Down Expand Up @@ -1081,12 +1082,25 @@ const chatgpt = { // eslint-disable-line no-redeclare
isDarkMode() { return document.documentElement.classList.toString().includes('dark'); },
isFullScreen() { return chatgpt.browser.isFullScreen(); },

isIdle() {
return new Promise(resolve => {
if (chatgpt.getRegenerateBtn()) resolve(true);
async isIdle() {
const obsConfig = { childList: true, subtree: true },
msgDivSelector = 'div[data-message-author-role]';

await new Promise(resolve => { // when in conversation page
if (document.querySelector(msgDivSelector)) resolve();
else new MutationObserver((_, obs) => {
if (chatgpt.getRegenerateBtn()) { obs.disconnect(); resolve(true); }
}).observe(document.body, { childList: true, subtree: true });
if (document.querySelector(msgDivSelector)) { obs.disconnect(); resolve(); }
}).observe(document.body, obsConfig);
});
await new Promise(resolve => { // when reply starts generating
new MutationObserver((_, obs) => {
if (chatgpt.getStopBtn()) { obs.disconnect(); resolve(); }
}).observe(document.body, obsConfig);
});
return new Promise(resolve => { // when reply stops generating
new MutationObserver((_, obs) => {
if (!chatgpt.getStopBtn()) { obs.disconnect(); resolve(true); }
}).observe(document.body, obsConfig);
});
},

Expand Down

0 comments on commit 0353a38

Please sign in to comment.