@@ -2,6 +2,7 @@ import {CustomBrandingOptions, DataTransferResponse, AsperaSdkSpec, AsperaSdkTra
22import { hiddenStyleList , installerUrl , protocol } from '../constants/constants' ;
33import { messages } from '../constants/messages' ;
44import { safariClient } from '../helpers/client/safari-client' ;
5+ import { client } from '../helpers/client/client' ;
56import { errorLog , isSafari } from '../helpers/helpers' ;
67import { websocketService } from '../helpers/ws' ;
78import { asperaSdk } from '../index' ;
@@ -228,15 +229,53 @@ export class ActivityTracking {
228229 this . registerDesktopAppSession ( ) ;
229230 }
230231
231- if ( isSafari ( ) ) {
232- return safariClient . monitorTransferActivity ( ) ;
233- }
232+ const finalCall = ( ) : Promise < unknown > => {
233+ if ( isSafari ( ) ) {
234+ return safariClient . monitorTransferActivity ( ) ;
235+ }
234236
235- return websocketService . init ( )
236- . then ( ( ) => {
237- websocketService . registerMessage ( 'transfer_activity' , ( data : ActivityMessage ) => this . handleTransferActivity ( data ) ) ;
238- websocketService . registerEvent ( ( status : 'CLOSED' | 'RECONNECT' ) => this . handleWebSocketEvents ( status ) ) ;
239- } ) ;
237+ return websocketService . init ( )
238+ . then ( ( ) => {
239+ websocketService . registerMessage ( 'transfer_activity' , ( data : ActivityMessage ) => this . handleTransferActivity ( data ) ) ;
240+ websocketService . registerEvent ( ( status : 'CLOSED' | 'RECONNECT' ) => this . handleWebSocketEvents ( status ) ) ;
241+ } ) ;
242+ } ;
243+
244+ if ( asperaSdk . globals . supportMultipleUsers ) {
245+ let retryCount = 0 ;
246+ const makeVerifyCall = ( incrementIt : boolean ) : Promise < unknown > => {
247+ if ( incrementIt ) {
248+ asperaSdk . globals . rpcPort = asperaSdk . globals . rpcPort + 1 ;
249+ }
250+
251+ if ( asperaSdk . globals . rpcPort > 33029 ) {
252+ retryCount ++ ;
253+ asperaSdk . globals . rpcPort = 33024 ;
254+
255+ return new Promise ( resolve => setTimeout ( resolve , retryCount * 1050 ) ) . then ( ( ) => makeVerifyCall ( false ) ) ;
256+ }
257+
258+ return client . request ( 'verify_session' , { app_id : asperaSdk . globals . appId , session_id : asperaSdk . globals . sessionId } )
259+ . then ( data => {
260+ if ( data . result ) {
261+ return finalCall ( ) ;
262+ }
263+
264+ return makeVerifyCall ( true ) ;
265+ } ) . catch ( ( ) => {
266+ if ( retryCount > 5 ) {
267+ asperaSdk . globals . rpcPort = 33024 ;
268+ return Promise . reject ( 'Unable to find port running for session' ) ;
269+ }
270+
271+ return makeVerifyCall ( true ) ;
272+ } ) ;
273+ } ;
274+
275+ return makeVerifyCall ( false ) ;
276+ } else {
277+ return finalCall ( ) ;
278+ }
240279 }
241280
242281 /**
0 commit comments