diff --git a/packages/cli-platform-apple/src/commands/runCommand/createRun.ts b/packages/cli-platform-apple/src/commands/runCommand/createRun.ts index 758a55d1d..19b15c31b 100644 --- a/packages/cli-platform-apple/src/commands/runCommand/createRun.ts +++ b/packages/cli-platform-apple/src/commands/runCommand/createRun.ts @@ -149,7 +149,7 @@ const createRun = return; } - const devices = await listDevices(sdkNames); + let devices = await listDevices(sdkNames); if (devices.length === 0) { return logger.error( @@ -157,6 +157,24 @@ const createRun = ); } + const packageJson = getPackageJson(ctx.root); + + const preferredDevice = cacheManager.get( + packageJson.name, + 'lastUsedIOSDeviceId', + ); + + if (preferredDevice) { + const preferredDeviceIndex = devices.findIndex( + ({udid}) => udid === preferredDevice, + ); + + if (preferredDeviceIndex > -1) { + const [device] = devices.splice(preferredDeviceIndex, 1); + devices.unshift(device); + } + } + const fallbackSimulator = platformName === 'ios' ? getFallbackSimulator(args) : devices[0]; @@ -169,16 +187,7 @@ const createRun = ); } - const packageJson = getPackageJson(ctx.root); - const preferredDevice = cacheManager.get( - packageJson.name, - 'lastUsedIOSDeviceId', - ); - - const selectedDevice = await promptForDeviceSelection( - devices, - preferredDevice, - ); + const selectedDevice = await promptForDeviceSelection(devices); if (!selectedDevice) { throw new CLIError( diff --git a/packages/cli-platform-apple/src/tools/prompts.ts b/packages/cli-platform-apple/src/tools/prompts.ts index bfe6f53d9..b0dbf477c 100644 --- a/packages/cli-platform-apple/src/tools/prompts.ts +++ b/packages/cli-platform-apple/src/tools/prompts.ts @@ -40,25 +40,12 @@ export async function promptForConfigurationSelection( export async function promptForDeviceSelection( devices: Device[], - lastUsedIOSDeviceId?: string, ): Promise { - const sortedDevices = [...devices]; - const devicesIds = sortedDevices.map(({udid}) => udid); - - if (lastUsedIOSDeviceId) { - const preferredDeviceIndex = devicesIds.indexOf(lastUsedIOSDeviceId); - - if (preferredDeviceIndex > -1) { - const [preferredDevice] = sortedDevices.splice(preferredDeviceIndex, 1); - sortedDevices.unshift(preferredDevice); - } - } - const {device} = await prompt({ type: 'select', name: 'device', message: 'Select the device you want to use', - choices: sortedDevices + choices: devices .filter(({type}) => type === 'device' || type === 'simulator') .map((d) => { const availability =