forked from fair/matrix-puppeteer-line
Better checks for chat messages to appear
- Re-click on a chat item if one click didn't work for some reason - Wait long for a single message to appear, but stop early when found - After single message found, wait less for more changes
This commit is contained in:
parent
40a48d12a2
commit
f05a91e95d
|
@ -691,7 +691,7 @@ class MautrixController {
|
||||||
waitForMessageListStability() {
|
waitForMessageListStability() {
|
||||||
// Increase this if messages get missed on sync / chat change.
|
// Increase this if messages get missed on sync / chat change.
|
||||||
// Decrease it if response times are too slow.
|
// Decrease it if response times are too slow.
|
||||||
const delayMillis = 2000
|
const delayMillis = 500
|
||||||
|
|
||||||
let myResolve
|
let myResolve
|
||||||
const promise = new Promise(resolve => {myResolve = resolve})
|
const promise = new Promise(resolve => {myResolve = resolve})
|
||||||
|
|
|
@ -539,13 +539,25 @@ export default class MessagesPuppeteer {
|
||||||
this.log(hadMsgListObserver ? "Observer was already removed" : "Removed observer")
|
this.log(hadMsgListObserver ? "Observer was already removed" : "Removed observer")
|
||||||
|
|
||||||
await this._interactWithPage(async () => {
|
await this._interactWithPage(async () => {
|
||||||
this.log(`Clicking chat list item`)
|
let numTries = 3
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
this.log("Clicking chat list item")
|
||||||
chatListItem.click()
|
chatListItem.click()
|
||||||
this.log(`Waiting for chat header title to be "${chatName}"`)
|
this.log(`Waiting for chat header title to be "${chatName}"`)
|
||||||
await this.page.waitForFunction(
|
await this.page.waitForFunction(
|
||||||
isCorrectChatVisible,
|
isCorrectChatVisible,
|
||||||
{polling: "mutation"},
|
{polling: "mutation", timeout: 1000},
|
||||||
chatName)
|
chatName)
|
||||||
|
break
|
||||||
|
} catch (e) {
|
||||||
|
if (--numTries == 0) {
|
||||||
|
throw e
|
||||||
|
} else {
|
||||||
|
this.log("Clicking chat list item didn't work...try again")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Always show the chat details sidebar, as this makes life easier
|
// Always show the chat details sidebar, as this makes life easier
|
||||||
this.log("Waiting for detail area to be auto-hidden upon entering chat")
|
this.log("Waiting for detail area to be auto-hidden upon entering chat")
|
||||||
|
@ -560,8 +572,15 @@ export default class MessagesPuppeteer {
|
||||||
await this.page.waitForSelector("#_chat_detail_area > .mdRGT02Info")
|
await this.page.waitForSelector("#_chat_detail_area > .mdRGT02Info")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
this.log("Waiting for any item to appear in chat")
|
||||||
|
try {
|
||||||
|
await this.page.waitForSelector("#_chat_room_msg_list div", {timeout: 2000})
|
||||||
|
|
||||||
this.log("Waiting for chat to stabilize")
|
this.log("Waiting for chat to stabilize")
|
||||||
await this.page.evaluate(() => window.__mautrixController.waitForMessageListStability())
|
await this.page.evaluate(() => window.__mautrixController.waitForMessageListStability())
|
||||||
|
} catch (e) {
|
||||||
|
this.log("No messages in chat found. Maybe no messages were ever sent yet?")
|
||||||
|
}
|
||||||
|
|
||||||
if (hadMsgListObserver) {
|
if (hadMsgListObserver) {
|
||||||
this.log("Restoring msg list observer")
|
this.log("Restoring msg list observer")
|
||||||
|
|
Loading…
Reference in New Issue