diff --git a/src/reducers/connections.tsx b/src/reducers/connections.tsx index 4378acff8..d6eec980f 100644 --- a/src/reducers/connections.tsx +++ b/src/reducers/connections.tsx @@ -40,7 +40,7 @@ export type State = { androidEmulators: Array; selectedDevice: null | BaseDevice; selectedPlugin: null | string; - selectedApp: null | string | undefined; + selectedApp: null | string; userPreferredDevice: null | string; userPreferredPlugin: null | string; userPreferredApp: null | string; @@ -229,7 +229,7 @@ const reducer = (state: State = INITAL_STATE, action: Actions): State => { return updateSelection({ ...state, staticView: null, - selectedApp, + selectedApp: selectedApp || null, selectedPlugin, userPreferredPlugin: selectedPlugin || state.userPreferredPlugin, }); diff --git a/src/utils/clientUtils.tsx b/src/utils/clientUtils.tsx index f4b4247d2..04b7b85d6 100644 --- a/src/utils/clientUtils.tsx +++ b/src/utils/clientUtils.tsx @@ -10,44 +10,30 @@ import Client from '../Client'; import BaseDevice from '../devices/BaseDevice'; +type ClientIdConstituents = { + app: string; + os: string; + device: string; + device_id: string; +}; + export function currentActiveApps( clients: Array, selectedDevice: null | BaseDevice, ): Array { const currentActiveApps: Array = clients .map(({id}: {id: string}) => { - const appName = appNameFromClienID(id) || ''; - const device = deviceFromClienID(id) || ''; - return {appName, device}; + const appName = deconstructClientId(id).app || ''; + const os = deconstructClientId(id).os || ''; + return {appName, os}; }) .filter( - ({device}: {device: string}) => - device && selectedDevice && device == selectedDevice.os, + ({os}: {os: string}) => os && selectedDevice && os == selectedDevice.os, ) .map(client => client.appName); return currentActiveApps; } -export function appNameFromClienID(id: string): string | undefined { - const arr = id.split('#'); - const appName = arr[0]; - return appName; -} - -export function deviceFromClienID(id: string): string | undefined { - const arr = id.split('#'); - const device = arr[1]; - return device; -} - -export function getCurrentAppName(client: string | undefined | null): string { - if (client) { - return appNameFromClienID(client) || ''; - } else { - return ''; - } -} - export function buildClientId(clientInfo: { app: string; os: string; @@ -56,3 +42,16 @@ export function buildClientId(clientInfo: { }): string { return `${clientInfo.app}#${clientInfo.os}#${clientInfo.device}#${clientInfo.device_id}`; } + +export function deconstructClientId(clientId: string): ClientIdConstituents { + if (!clientId || clientId.split('#').length !== 4) { + console.error(`Attempted to deconstruct invalid clientId: "${clientId}"`); + } + const [app, os, device, device_id] = clientId.split('#'); + return { + app, + os, + device, + device_id, + }; +} diff --git a/src/utils/exportData.tsx b/src/utils/exportData.tsx index 86c553b08..9de51b517 100644 --- a/src/utils/exportData.tsx +++ b/src/utils/exportData.tsx @@ -41,7 +41,7 @@ import { SupportFormRequestDetailsState, } from '../reducers/supportForm'; import {setSelectPluginsToExportActiveSheet} from '../reducers/application'; -import {getCurrentAppName} from '../utils/clientUtils'; +import {deconstructClientId} from '../utils/clientUtils'; export const IMPORT_FLIPPER_TRACE_EVENT = 'import-flipper-trace'; export const EXPORT_FLIPPER_TRACE_EVENT = 'export-flipper-trace'; @@ -547,7 +547,10 @@ export function exportStore( if (exportData != null) { exportData.supportRequestDetails = { ...state.supportForm?.supportFormV2, - appName: getCurrentAppName(state.connections.selectedApp), + appName: + state.connections.selectedApp == null + ? '' + : deconstructClientId(state.connections.selectedApp).app, }; statusUpdate && statusUpdate('Serializing Flipper data...');