fix(client): do not catch up channels if disabled

This commit is contained in:
teidesu 2021-05-23 14:02:44 +03:00
parent 78bdc5fb01
commit 4599272c7c
3 changed files with 15 additions and 4 deletions

View file

@ -2986,6 +2986,7 @@ export class TelegramClient extends BaseTelegramClient {
protected _oldDate: number
protected _oldSeq: number
protected _selfChanged: boolean
protected _catchUpChannels: boolean
protected _cpts: Record<number, number>
protected _cptsMod: Record<number, number>
constructor(opts: BaseTelegramClient.Options) {

View file

@ -133,6 +133,8 @@ export async function start(
// user is already authorized
if (!this._disableUpdates) {
this._catchUpChannels = !!params.catchUp
if (params.catchUp) {
await this.catchUp()
} else {

View file

@ -37,6 +37,10 @@ interface UpdatesState {
_oldSeq: number
_selfChanged: boolean
// whether to catch up channels from the locally stored pts
// usually set in start() method based on `catchUp` param
_catchUpChannels: boolean
_cpts: Record<number, number>
_cptsMod: Record<number, number>
}
@ -655,20 +659,24 @@ export function _handleUpdate(
'ptsCount' in upd ? upd.ptsCount : undefined
if (pts !== undefined && ptsCount !== undefined) {
let nextLocalPts
let nextLocalPts: number | null = null
if (channelId === undefined)
nextLocalPts = this._pts + ptsCount
else if (channelId in this._cpts)
nextLocalPts = this._cpts[channelId] + ptsCount
else {
else if (this._catchUpChannels) {
// only load stored channel pts in case
// the user has enabled catching up.
// not loading stored pts effectively disables
// catching up, but doesn't interfere with further
// update gaps
const saved = await this.storage.getChannelPts(
channelId
)
if (saved) {
this._cpts[channelId] = saved
nextLocalPts = saved + ptsCount
} else {
nextLocalPts = null
}
}