Post

Telegram研究:群列表同步

TelegramCore/Account.swift accountWithId(accountManager:…) init(accountManager:…)

TelegramCore/ManagedServiceViews.swift managedServiceViews(accountPeerId:…)

TelegramCore/ManagedChatListHoles.swift managedChatListHoles(network:…)

TelegramCore/Holes.swift fetchChatListHole(postbox:…)

TelegramCore/FetchChatList.swift fetchChatList(accountPeerId:…)

TelegramCore/FetchChatList.swift let requestChats = network.request(Api.functions.messages.getDialogs(flags: flags, folderId: requestFolderId, offsetDate: timestamp, offsetId: id, offsetPeer: peer, limit: limit, hash: hash))

TelegramApi/Api38.swift getDialogs -> FunctionDescription(name: “messages.getDialogs”,…)

let requestFeed = network.request(Api.functions.messages.getDialogs(flags: flags, folderId: groupId.rawValue, offsetDate: 0, offsetId: 0, offsetPeer: .inputPeerEmpty, limit: 32, hash: 0))


func firstHole() -> (PeerGroupId, ChatListHole)? { return self.sampledState.hole // 返回检测到的空洞 } updateTrackedChatListHoles

let request = network.request(Api.functions.updates.getDifference(flags…))

return network.request(Api.functions.updates.getState())

let request = network.request(Api.functions.updates.getDifference..)

// 1. 从本地数据库读取当前state let currentState = transaction.getState() as? AuthorizedAccountState // 得到:pts=100, qts=50, date=1640995200, seq=10

// 2. 调用updates.getState()获取服务器最新state let serverState = network.request(Api.functions.updates.getState()) // 服务器返回:pts=150, qts=60, date=1640995800, seq=15

// 3. 使用本地state调用updates.getDifference() let difference = network.request(Api.functions.updates.getDifference( pts: 100, // 本地pts date: 1640995200, // 本地date qts: 50 // 本地qts )) // 服务器返回:pts=100到150之间的所有更新

This post is licensed under CC BY 4.0 by the author.