@mtcute/core 0.13.2 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/highlevel/client.d.ts +15 -1
- package/cjs/highlevel/client.js.map +1 -1
- package/cjs/highlevel/methods/auth/log-out.d.ts +8 -1
- package/cjs/highlevel/methods/auth/log-out.js +4 -2
- package/cjs/highlevel/methods/auth/log-out.js.map +1 -1
- package/cjs/highlevel/methods/auth/send-code.d.ts +5 -0
- package/cjs/highlevel/methods/auth/send-code.js +5 -1
- package/cjs/highlevel/methods/auth/send-code.js.map +1 -1
- package/cjs/highlevel/methods/auth/start.d.ts +5 -0
- package/cjs/highlevel/methods/auth/start.js +81 -53
- package/cjs/highlevel/methods/auth/start.js.map +1 -1
- package/cjs/highlevel/methods/chats/open-chat.d.ts +4 -3
- package/cjs/highlevel/methods/chats/open-chat.js +4 -3
- package/cjs/highlevel/methods/chats/open-chat.js.map +1 -1
- package/cjs/highlevel/methods.d.ts +1 -0
- package/cjs/highlevel/methods.js.map +1 -1
- package/cjs/highlevel/updates/manager.d.ts +1 -0
- package/cjs/highlevel/updates/manager.js +38 -10
- package/cjs/highlevel/updates/manager.js.map +1 -1
- package/cjs/highlevel/updates/types.d.ts +36 -1
- package/cjs/highlevel/updates/types.js.map +1 -1
- package/cjs/network/client.js +1 -1
- package/cjs/network/client.js.map +1 -1
- package/cjs/network/network-manager.js +2 -1
- package/cjs/network/network-manager.js.map +1 -1
- package/esm/highlevel/client.d.ts +15 -1
- package/esm/highlevel/client.js.map +1 -1
- package/esm/highlevel/methods/auth/log-out.d.ts +8 -1
- package/esm/highlevel/methods/auth/log-out.js +4 -2
- package/esm/highlevel/methods/auth/log-out.js.map +1 -1
- package/esm/highlevel/methods/auth/send-code.d.ts +5 -0
- package/esm/highlevel/methods/auth/send-code.js +5 -1
- package/esm/highlevel/methods/auth/send-code.js.map +1 -1
- package/esm/highlevel/methods/auth/start.d.ts +5 -0
- package/esm/highlevel/methods/auth/start.js +82 -54
- package/esm/highlevel/methods/auth/start.js.map +1 -1
- package/esm/highlevel/methods/chats/open-chat.d.ts +4 -3
- package/esm/highlevel/methods/chats/open-chat.js +4 -3
- package/esm/highlevel/methods/chats/open-chat.js.map +1 -1
- package/esm/highlevel/methods.d.ts +1 -0
- package/esm/highlevel/methods.js.map +1 -1
- package/esm/highlevel/updates/manager.d.ts +1 -0
- package/esm/highlevel/updates/manager.js +38 -10
- package/esm/highlevel/updates/manager.js.map +1 -1
- package/esm/highlevel/updates/types.d.ts +36 -1
- package/esm/highlevel/updates/types.js.map +1 -1
- package/esm/network/client.js +1 -1
- package/esm/network/client.js.map +1 -1
- package/esm/network/network-manager.js +2 -1
- package/esm/network/network-manager.js.map +1 -1
- package/package.json +1 -1
|
@@ -100,6 +100,8 @@ export class UpdatesManager {
|
|
|
100
100
|
log;
|
|
101
101
|
_handler = () => { };
|
|
102
102
|
_onCatchingUp = () => { };
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
104
|
+
_channelPtsLimit;
|
|
103
105
|
auth; // todo: do we need a local copy?
|
|
104
106
|
keepAliveInterval;
|
|
105
107
|
constructor(client, params = {}) {
|
|
@@ -116,6 +118,18 @@ export class UpdatesManager {
|
|
|
116
118
|
this.log = client.log.create('updates');
|
|
117
119
|
this.catchUpOnStart = params.catchUp ?? false;
|
|
118
120
|
this.noDispatchEnabled = !params.disableNoDispatch;
|
|
121
|
+
if (params.channelPtsLimit) {
|
|
122
|
+
if (typeof params.channelPtsLimit === 'function') {
|
|
123
|
+
this._channelPtsLimit = params.channelPtsLimit;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
const limit = params.channelPtsLimit;
|
|
127
|
+
this._channelPtsLimit = () => limit;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
this._channelPtsLimit = () => (this.auth?.isBot ? 100000 : 100);
|
|
132
|
+
}
|
|
119
133
|
}
|
|
120
134
|
setHandler(handler) {
|
|
121
135
|
this._handler = handler;
|
|
@@ -335,6 +349,12 @@ export class UpdatesManager {
|
|
|
335
349
|
log.debug('loaded initial state: pts=%d, qts=%d, date=%d, seq=%d', this.pts, this.qts, this.date, this.seq);
|
|
336
350
|
}
|
|
337
351
|
catch (e) {
|
|
352
|
+
if (tl.RpcError.is(e, 'AUTH_KEY_UNREGISTERED')) {
|
|
353
|
+
// we are logged out, stop updates loop
|
|
354
|
+
lock.release();
|
|
355
|
+
this.stopLoop();
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
338
358
|
if (this.client.isConnected) {
|
|
339
359
|
log.error('failed to fetch updates state: %s', e);
|
|
340
360
|
}
|
|
@@ -666,7 +686,7 @@ export class UpdatesManager {
|
|
|
666
686
|
const channel = toInputChannel(channelPeer);
|
|
667
687
|
// to make TS happy
|
|
668
688
|
let pts = _pts;
|
|
669
|
-
let limit = this.
|
|
689
|
+
let limit = this._channelPtsLimit(channelId);
|
|
670
690
|
if (pts <= 0) {
|
|
671
691
|
pts = 1;
|
|
672
692
|
limit = 1;
|
|
@@ -681,8 +701,11 @@ export class UpdatesManager {
|
|
|
681
701
|
limit,
|
|
682
702
|
filter: { _: 'channelMessagesFilterEmpty' },
|
|
683
703
|
});
|
|
684
|
-
if (diff.timeout)
|
|
685
|
-
lastTimeout =
|
|
704
|
+
if (diff.timeout) {
|
|
705
|
+
lastTimeout = this.params.overrideOpenChatTimeout ?
|
|
706
|
+
this.params.overrideOpenChatTimeout(diff) :
|
|
707
|
+
diff.timeout;
|
|
708
|
+
}
|
|
686
709
|
if (diff._ === 'updates.channelDifferenceEmpty') {
|
|
687
710
|
log.debug('getChannelDifference (cid = %d) returned channelDifferenceEmpty', channelId);
|
|
688
711
|
break;
|
|
@@ -692,13 +715,18 @@ export class UpdatesManager {
|
|
|
692
715
|
if (diff.dialog._ === 'dialog') {
|
|
693
716
|
pts = diff.dialog.pts;
|
|
694
717
|
}
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
718
|
+
if (this.params.onChannelTooLong) {
|
|
719
|
+
this.params.onChannelTooLong(channelId, diff);
|
|
720
|
+
}
|
|
721
|
+
else {
|
|
722
|
+
log.warn('getChannelDifference (cid = %d) returned channelDifferenceTooLong. new pts: %d, recent msgs: %d', channelId, pts, diff.messages.length);
|
|
723
|
+
diff.messages.forEach((message) => {
|
|
724
|
+
log.debug('processing message %d (%s) from TooLong diff for channel %d', message.id, message._, channelId);
|
|
725
|
+
if (message._ === 'messageEmpty')
|
|
726
|
+
return;
|
|
727
|
+
pendingUnorderedUpdates.pushBack(toPendingUpdate(messageToUpdate(message), peers, true));
|
|
728
|
+
});
|
|
729
|
+
}
|
|
702
730
|
break;
|
|
703
731
|
}
|
|
704
732
|
log.debug('getChannelDifference (cid = %d) returned %d messages, %d updates. new pts: %d, final: %b', channelId, diff.newMessages.length, diff.otherUpdates.length, diff.pts, diff.final);
|