More code

This commit is contained in:
Tulir Asokan
2017-11-21 00:09:39 +02:00
parent 217017099a
commit 5ef0a202a2
9 changed files with 145 additions and 116 deletions
+30 -3
View File
@@ -112,18 +112,45 @@ class MatrixUser {
return true
}
async syncDialogs() {
async syncDialogs({createRooms=true} = {}) {
const dialogs = await this.telegramPuppet.client("messages.getDialogs", {})
let changed = false
for (const dialog of dialogs.chats) {
for (const dialog of dialogs.chats.concat(dialogs.users)) {
if (dialog._ === "chatForbidden" || dialog.deactivated) {
continue
}
const peer = new TelegramPeer(dialog._, dialog.id)
const peer = new TelegramPeer(dialog._, dialog.id, {
receiverID: dialog._ === "user"
? this.telegramPuppet.userID
: undefined
})
const portal = await this.app.getPortalByPeer(peer)
if (await portal.updateInfo(this.telegramPuppet, dialog)) {
changed = true
}
if (createRooms) {
try {
const {roomID, created} = await portal.createMatrixRoom(this.telegramPuppet, {
invite: [this.userID],
})
if (!created) {
// Make sure the user is invited, since the room already exists.
const intent = await (dialog._ === "user"
? this.app.getTelegramUser(peer.id)
: this.app.botIntent)
// FIXME check membership before re-inviting
//const membership = intent.getClient().getRoom(roomID).getMember(this.userID).membership
//if (membership !== "join") {
try {
await intent.invite(roomID, this.userID)
} catch (_) {}
//}
}
} catch (err) {
console.error(err)
console.error(err.stack)
}
}
}
return changed
}