From dfd3b522cf51c66fdda4c657f22cc1f3d47b7186 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Mon, 21 Jun 2021 01:57:54 +0300 Subject: [PATCH] Pass user agent to worker --- src/api/gramjs/methods/client.ts | 16 ++++++++++++---- src/api/gramjs/provider.ts | 9 ++++++--- src/api/gramjs/worker/provider.ts | 6 +++--- src/api/gramjs/worker/types.ts | 4 ++-- src/api/types/misc.ts | 5 +++++ src/modules/actions/api/initial.ts | 5 ++++- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/api/gramjs/methods/client.ts b/src/api/gramjs/methods/client.ts index fbb139afb..cb5320ef6 100644 --- a/src/api/gramjs/methods/client.ts +++ b/src/api/gramjs/methods/client.ts @@ -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( } 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) { diff --git a/src/api/gramjs/provider.ts b/src/api/gramjs/provider.ts index 8d27761e8..07eedacf3 100644 --- a/src/api/gramjs/provider.ts +++ b/src/api/gramjs/provider.ts @@ -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(fnName: T, ...args: MethodArgs): MethodResponse { diff --git a/src/api/gramjs/worker/provider.ts b/src/api/gramjs/worker/provider.ts index a02057169..c3a15f672 100644 --- a/src/api/gramjs/worker/provider.ts +++ b/src/api/gramjs/worker/provider.ts @@ -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(); // 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], }); } diff --git a/src/api/gramjs/worker/types.ts b/src/api/gramjs/worker/types.ts index 5d440b584..b7d897ab3 100644 --- a/src/api/gramjs/worker/types.ts +++ b/src/api/gramjs/worker/types.ts @@ -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 extends Promise ? 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; diff --git a/src/api/types/misc.ts b/src/api/types/misc.ts index d482025e2..3648799e6 100644 --- a/src/api/types/misc.ts +++ b/src/api/types/misc.ts @@ -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. diff --git a/src/modules/actions/api/initial.ts b/src/modules/actions/api/initial.ts index af3a101f8..2876d81bf 100644 --- a/src/modules/actions/api/initial.ts +++ b/src/modules/actions/api/initial.ts @@ -34,7 +34,10 @@ addReducer('initApi', (global: GlobalState, actions) => { importTestSession(); } - void initApi(actions.apiUpdate, loadStoredSession()); + void initApi(actions.apiUpdate, { + userAgent: navigator.userAgent, + sessionData: loadStoredSession(), + }); })(); });