Enhancing for getting contact results, which avoiding an error from the chat history deleted in Line app, then sent someone messages from matrix client.

This commit is contained in:
DESKTOP-O1U24RQ\Kevin_Yu 2022-06-16 23:00:31 +08:00
parent 800f51958d
commit 5a57342446
1 changed files with 56 additions and 1 deletions

View File

@ -82,7 +82,7 @@ export default class MessagesPuppeteer {
`--window-size=${MessagesPuppeteer.viewport.width},${MessagesPuppeteer.viewport.height+120}`, `--window-size=${MessagesPuppeteer.viewport.width},${MessagesPuppeteer.viewport.height+120}`,
] ]
if (MessagesPuppeteer.noSandbox) { if (MessagesPuppeteer.noSandbox) {
args.push(`--no-sandbox`) args = args.concat(`--no-sandbox`)
} }
this.browser = await puppeteer.launch({ this.browser = await puppeteer.launch({
@ -729,6 +729,38 @@ export default class MessagesPuppeteer {
return `#joined_group_list_body > li[data-chatid="${id}"]` return `#joined_group_list_body > li[data-chatid="${id}"]`
} }
async _getWholeContactResults(page, distance) {
await page.bringToFront()
await page.waitForSelector("#contact_wrap_friends > ul.MdCMN03List")
const contactTotalCount =0
this.log(` distance is ${distance}`)
let incred = 0
const element = await page.$(this._contactCountSelector())
const foundContactCount = await element.evaluate(
element => {
return Number.parseInt(element?.innerText) || 0
})
this.log(` contact_friend_count is ${foundContactCount}`)
//infiniting contact list scrolling
while (incred <= distance) {
if (foundContactCount <= contactTotalCount) {
return
}
incred += 100
this.log(`scrollPosition at ${incred}/${distance}`)
await page.evaluate(d => {
const scrollableSection = document.querySelector("#contact_mode_contact_list");
scrollableSection.scrollTop = 300 + scrollableSection.offsetHeight + d;
}, incred);
}
const $lis = await page.$$("#contact_wrap_friends > ul.MdCMN03List >li")
//lookup lazy loading count
const lis = $lis.slice(contactTotalCount, Math.Infinity)
contactTotalCount=$lis.length
}
async _switchChat(chatID, forceView = false) { async _switchChat(chatID, forceView = false) {
// TODO Allow passing in an element directly // TODO Allow passing in an element directly
this.log(`Switching to chat ${chatID}`) this.log(`Switching to chat ${chatID}`)
@ -777,7 +809,30 @@ export default class MessagesPuppeteer {
} }
chatItem = await this.page.$(this._groupItemSelector(chatID)) chatItem = await this.page.$(this._groupItemSelector(chatID))
} else { } else {
needRealClick = true
const unselectedTabButton = await this.page.$(`#leftSide li[data-type=friends_list] > button:not(.ExSelected)`)
if (unselectedTabButton) {
switchedTabs = true
await unselectedTabButton.evaluate(e => e.click())
await this.page.waitForSelector("#wrap_contact_list > div.MdScroll")
let ulstyleheight = await this.page.evaluate(() => {
const ulList = document.querySelector('#contact_wrap_friends > ul.MdCMN03List')
return getComputedStyle(ulList).getPropertyValue("height")
})
const leg = parseInt(ulstyleheight, 10)
this.log(`found contact_wrap_friends height is ${leg}px`)
this.log(`starting to scroll to buttom`)
await this._getWholeContactResults(this.page, leg)
this.log(`finished to scroll to buttom`)
}
await this.page.waitForTimeout(300)
chatItem = await this.page.$(this._friendItemSelector(chatID)) chatItem = await this.page.$(this._friendItemSelector(chatID))
this.log(`Chat ${chatID} not in recents list, so bot is creating a new chat`)
await this._interactWithPage(async () => {
await chatItem.click()
})
} }
if (!chatItem) { if (!chatItem) {