Pass user agent to worker
This commit is contained in:
parent
8d80c41c95
commit
dfd3b522cf
@ -5,7 +5,11 @@ import { Logger as GramJsLogger } from '../../../lib/gramjs/extensions/index';
|
||||
import { TwoFaParams } from '../../../lib/gramjs/client/2fa';
|
||||
|
||||
import {
|
||||
ApiMediaFormat, ApiOnProgress, ApiSessionData, OnApiUpdate,
|
||||
ApiInitialArgs,
|
||||
ApiMediaFormat,
|
||||
ApiOnProgress,
|
||||
ApiSessionData,
|
||||
OnApiUpdate,
|
||||
} from '../../types';
|
||||
|
||||
import {
|
||||
@ -32,7 +36,7 @@ let onUpdate: OnApiUpdate;
|
||||
let client: TelegramClient;
|
||||
let isConnected = false;
|
||||
|
||||
export async function init(_onUpdate: OnApiUpdate, sessionData?: ApiSessionData) {
|
||||
export async function init(_onUpdate: OnApiUpdate, initialArgs: ApiInitialArgs) {
|
||||
onUpdate = _onUpdate;
|
||||
|
||||
if (DEBUG) {
|
||||
@ -40,12 +44,14 @@ export async function init(_onUpdate: OnApiUpdate, sessionData?: ApiSessionData)
|
||||
console.log('>>> START INIT API');
|
||||
}
|
||||
|
||||
const { sessionData, userAgent } = initialArgs;
|
||||
|
||||
client = new TelegramClient(
|
||||
new sessions.CallbackSession(sessionData, onSessionUpdate),
|
||||
process.env.TELEGRAM_T_API_ID,
|
||||
process.env.TELEGRAM_T_API_HASH,
|
||||
{
|
||||
deviceModel: navigator.userAgent || DEFAULT_USER_AGENT,
|
||||
deviceModel: navigator.userAgent || userAgent || DEFAULT_USER_AGENT,
|
||||
appVersion: `${APP_VERSION} ${APP_CODE_NAME}`,
|
||||
useWSS: true,
|
||||
additionalDcsDisabled: IS_TEST,
|
||||
@ -153,7 +159,9 @@ export async function invokeRequest<T extends GramJs.AnyRequest>(
|
||||
}
|
||||
|
||||
if (shouldHandleUpdates) {
|
||||
type ResultWithUpdates = typeof result & { updates?: GramJs.Updates | GramJs.UpdatesCombined };
|
||||
type ResultWithUpdates =
|
||||
typeof result
|
||||
& { updates?: GramJs.Updates | GramJs.UpdatesCombined };
|
||||
|
||||
let updatesContainer;
|
||||
if (result instanceof GramJs.Updates || result instanceof GramJs.UpdatesCombined) {
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
import {
|
||||
ApiOnProgress, ApiSessionData, ApiUpdate, OnApiUpdate,
|
||||
OnApiUpdate,
|
||||
ApiInitialArgs,
|
||||
ApiUpdate,
|
||||
ApiOnProgress,
|
||||
} from '../types';
|
||||
import { Methods, MethodArgs, MethodResponse } from './methods/types';
|
||||
|
||||
@ -18,7 +21,7 @@ import * as methods from './methods';
|
||||
|
||||
let onUpdate: OnApiUpdate;
|
||||
|
||||
export async function initApi(_onUpdate: OnApiUpdate, sessionData?: ApiSessionData) {
|
||||
export async function initApi(_onUpdate: OnApiUpdate, initialArgs: ApiInitialArgs) {
|
||||
onUpdate = _onUpdate;
|
||||
|
||||
initUpdater(handleUpdate);
|
||||
@ -30,7 +33,7 @@ export async function initApi(_onUpdate: OnApiUpdate, sessionData?: ApiSessionDa
|
||||
initManagement(handleUpdate);
|
||||
initTwoFaSettings(handleUpdate);
|
||||
|
||||
await initClient(handleUpdate, sessionData);
|
||||
await initClient(handleUpdate, initialArgs);
|
||||
}
|
||||
|
||||
export function callApi<T extends keyof Methods>(fnName: T, ...args: MethodArgs<T>): MethodResponse<T> {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import Worker from 'worker-loader!./worker';
|
||||
|
||||
import { ApiOnProgress, ApiSessionData, OnApiUpdate } from '../../types';
|
||||
import { ApiInitialArgs, ApiOnProgress, OnApiUpdate } from '../../types';
|
||||
import { Methods, MethodArgs, MethodResponse } from '../methods/types';
|
||||
import { WorkerMessageEvent, ThenArg, OriginRequest } from './types';
|
||||
|
||||
@ -20,7 +20,7 @@ const requestStatesByCallback = new Map<AnyToVoidFunction, RequestStates>();
|
||||
|
||||
// TODO Re-use `util/WorkerConnector.ts`
|
||||
|
||||
export function initApi(onUpdate: OnApiUpdate, sessionData?: ApiSessionData) {
|
||||
export function initApi(onUpdate: OnApiUpdate, initialArgs: ApiInitialArgs) {
|
||||
if (!worker) {
|
||||
if (DEBUG) {
|
||||
// eslint-disable-next-line no-console
|
||||
@ -33,7 +33,7 @@ export function initApi(onUpdate: OnApiUpdate, sessionData?: ApiSessionData) {
|
||||
|
||||
return makeRequest({
|
||||
type: 'initApi',
|
||||
args: [sessionData],
|
||||
args: [initialArgs],
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { ApiSessionData, ApiUpdate } from '../../types';
|
||||
import { ApiInitialArgs, ApiUpdate } from '../../types';
|
||||
import { Methods, MethodArgs, MethodResponse } from '../methods/types';
|
||||
|
||||
export type ThenArg<T> = T extends Promise<infer U> ? U : T;
|
||||
@ -27,7 +27,7 @@ export interface WorkerMessageEvent {
|
||||
export type OriginRequest = {
|
||||
type: 'initApi';
|
||||
messageId?: string;
|
||||
args: [ApiSessionData | undefined];
|
||||
args: [ApiInitialArgs];
|
||||
} | {
|
||||
type: 'callMethod';
|
||||
messageId?: string;
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
import { ApiDocument } from './messages';
|
||||
|
||||
export interface ApiInitialArgs {
|
||||
userAgent: string;
|
||||
sessionData?: ApiSessionData;
|
||||
}
|
||||
|
||||
export interface ApiOnProgress {
|
||||
(
|
||||
progress: number, // Float between 0 and 1.
|
||||
|
||||
@ -34,7 +34,10 @@ addReducer('initApi', (global: GlobalState, actions) => {
|
||||
importTestSession();
|
||||
}
|
||||
|
||||
void initApi(actions.apiUpdate, loadStoredSession());
|
||||
void initApi(actions.apiUpdate, {
|
||||
userAgent: navigator.userAgent,
|
||||
sessionData: loadStoredSession(),
|
||||
});
|
||||
})();
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user