Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
66 lines
2.2 KiB
/* |
|
* https://github.com/morethanwords/tweb |
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE |
|
* |
|
* Originally from: |
|
* https://github.com/zhukov/webogram |
|
* Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com> |
|
* https://github.com/zhukov/webogram/blob/master/LICENSE |
|
*/ |
|
|
|
import MTPNetworker from "./networker"; |
|
import { ConnectionStatusChange, InvokeApiOptions } from "../../types"; |
|
import MTTransport from "./transports/transport"; |
|
import App from "../../config/app"; |
|
import { MOUNT_CLASS_TO } from "../../config/debug"; |
|
|
|
export class NetworkerFactory { |
|
private networkers: MTPNetworker[] = []; |
|
public language = navigator.language || App.langPackCode; |
|
public updatesProcessor: (obj: any) => void = null; |
|
public onConnectionStatusChange: (info: ConnectionStatusChange) => void = null; |
|
public akStopped = false; |
|
public userAgent = navigator.userAgent; |
|
|
|
public setUpdatesProcessor(callback: (obj: any) => void) { |
|
this.updatesProcessor = callback; |
|
} |
|
|
|
public getNetworker(dcId: number, authKey: number[], authKeyID: Uint8Array, serverSalt: number[], transport: MTTransport, options: InvokeApiOptions) { |
|
//console.log('NetworkerFactory: creating new instance of MTPNetworker:', dcId, options); |
|
const networker = new MTPNetworker(dcId, authKey, authKeyID, serverSalt, transport, options); |
|
this.networkers.push(networker); |
|
return networker; |
|
} |
|
|
|
public startAll() { |
|
if(this.akStopped) { |
|
const stoppedNetworkers = this.networkers.filter(networker => networker.isStopped()); |
|
|
|
this.akStopped = false; |
|
this.updatesProcessor && this.updatesProcessor({_: 'new_session_created'}); |
|
|
|
for(const networker of stoppedNetworkers) { |
|
networker.scheduleRequest(); |
|
} |
|
} |
|
} |
|
|
|
public stopAll() { |
|
this.akStopped = true; |
|
} |
|
|
|
public setLanguage(langCode: string) { |
|
this.language = langCode; |
|
for(const networker of this.networkers) { |
|
if(!networker.isFileNetworker) { |
|
networker.connectionInited = false; |
|
} |
|
} |
|
} |
|
} |
|
|
|
const networkerFactory = new NetworkerFactory(); |
|
MOUNT_CLASS_TO && (MOUNT_CLASS_TO.networkerFactory = networkerFactory); |
|
export default networkerFactory;
|
|
|