Extracting utility methods

Summary:
Extract the following utility functions from ServerController:

transformCertificateExchangeMediumToType
appNameWithUpdateHint

The functions are not tied to the ServerController and will be used outside of it.

Reviewed By: passy

Differential Revision: D29938355

fbshipit-source-id: ea489f54a3a6bf46ae4e108579d48ede1f891093
This commit is contained in:
Lorenzo Blasa
2021-07-27 12:19:59 -07:00
committed by Facebook GitHub Bot
parent 27eaf4f03d
commit 554f8146d7
2 changed files with 50 additions and 23 deletions

View File

@@ -46,6 +46,10 @@ import DummyDevice from '../devices/DummyDevice';
import BaseDevice from '../devices/BaseDevice'; import BaseDevice from '../devices/BaseDevice';
import {sideEffect} from '../utils/sideEffect'; import {sideEffect} from '../utils/sideEffect';
import {destroyDevice} from '../reducers/connections'; import {destroyDevice} from '../reducers/connections';
import {
appNameWithUpdateHint,
transformCertificateExchangeMediumToType,
} from './Utilities';
type ClientInfo = { type ClientInfo = {
connection: ClientConnection | null | undefined; connection: ClientConnection | null | undefined;
@@ -57,35 +61,12 @@ type ClientCsrQuery = {
csr_path?: string | undefined; csr_path?: string | undefined;
}; };
function transformCertificateExchangeMediumToType(
medium: number | undefined,
): CertificateExchangeMedium {
if (medium == 1) {
return 'FS_ACCESS';
} else if (medium == 2) {
return 'WWW';
} else {
return 'FS_ACCESS';
}
}
declare interface ServerController { declare interface ServerController {
on(event: 'new-client', callback: (client: Client) => void): this; on(event: 'new-client', callback: (client: Client) => void): this;
on(event: 'error', callback: (err: Error) => void): this; on(event: 'error', callback: (err: Error) => void): this;
on(event: 'clients-change', callback: () => void): this; on(event: 'clients-change', callback: () => void): this;
} }
function appNameWithUpdateHint(query: ClientQuery): string {
// in previous version (before 3), app may not appear in correct device
// section because it refers to the name given by client which is not fixed
// for android emulators, so it is indicated as outdated so that developers
// might want to update SDK to get rid of this connection swap problem
if (query.os === 'Android' && (!query.sdk_version || query.sdk_version < 3)) {
return query.app + ' (Outdated SDK)';
}
return query.app;
}
class ServerController extends EventEmitter { class ServerController extends EventEmitter {
connections: Map<string, ClientInfo>; connections: Map<string, ClientInfo>;
secureServer: Promise<RSocketServer<any, any>> | null; secureServer: Promise<RSocketServer<any, any>> | null;

View File

@@ -0,0 +1,46 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {CertificateExchangeMedium} from '../utils/CertificateProvider';
import {ClientQuery} from '../Client';
/**
* Transforms the certificate exchange medium type as number to the
* CertificateExchangeMedium type.
* @param medium A number representing the certificate exchange medium type.
*/
export function transformCertificateExchangeMediumToType(
medium: number | undefined,
): CertificateExchangeMedium {
if (medium == 1) {
return 'FS_ACCESS';
} else if (medium == 2) {
return 'WWW';
} else {
return 'FS_ACCESS';
}
}
/**
* Returns the app name from a ClientQuery instance. In most cases it should be
* the app name as given in the query. On Android, and for old SDK versions (<3) it
* will returned the app name suffixed by '(Outdated SDK)'.
*
* Reason is, in previous version (<3), app may not appear in correct device
* section because it refers to the name given by client which is not fixed
* for android emulators, so it is indicated as outdated so that developers
* might want to update SDK to get rid of this connection swap problem
* @param query A ClientQuery object.
*/
export function appNameWithUpdateHint(query: ClientQuery): string {
if (query.os === 'Android' && (!query.sdk_version || query.sdk_version < 3)) {
return query.app + ' (Outdated SDK)';
}
return query.app;
}