Skip to content

Commit c4017e1

Browse files
committed
fix: use preferred device in default mode
1 parent c500a51 commit c4017e1

File tree

2 files changed

+21
-25
lines changed

2 files changed

+21
-25
lines changed

packages/cli-platform-apple/src/commands/runCommand/createRun.ts

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -149,14 +149,32 @@ const createRun =
149149
return;
150150
}
151151

152-
const devices = await listDevices(sdkNames);
152+
let devices = await listDevices(sdkNames);
153153

154154
if (devices.length === 0) {
155155
return logger.error(
156156
`${platformReadableName} devices or simulators not detected. Install simulators via Xcode or connect a physical ${platformReadableName} device`,
157157
);
158158
}
159159

160+
const packageJson = getPackageJson(ctx.root);
161+
162+
const preferredDevice = cacheManager.get(
163+
packageJson.name,
164+
'lastUsedIOSDeviceId',
165+
);
166+
167+
if (preferredDevice) {
168+
const preferredDeviceIndex = devices.findIndex(
169+
({udid}) => udid === preferredDevice,
170+
);
171+
172+
if (preferredDeviceIndex > -1) {
173+
const [device] = devices.splice(preferredDeviceIndex, 1);
174+
devices.unshift(device);
175+
}
176+
}
177+
160178
const fallbackSimulator =
161179
platformName === 'ios' ? getFallbackSimulator(args) : devices[0];
162180

@@ -169,16 +187,7 @@ const createRun =
169187
);
170188
}
171189

172-
const packageJson = getPackageJson(ctx.root);
173-
const preferredDevice = cacheManager.get(
174-
packageJson.name,
175-
'lastUsedIOSDeviceId',
176-
);
177-
178-
const selectedDevice = await promptForDeviceSelection(
179-
devices,
180-
preferredDevice,
181-
);
190+
const selectedDevice = await promptForDeviceSelection(devices);
182191

183192
if (!selectedDevice) {
184193
throw new CLIError(

packages/cli-platform-apple/src/tools/prompts.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,25 +40,12 @@ export async function promptForConfigurationSelection(
4040

4141
export async function promptForDeviceSelection(
4242
devices: Device[],
43-
lastUsedIOSDeviceId?: string,
4443
): Promise<Device | undefined> {
45-
const sortedDevices = [...devices];
46-
const devicesIds = sortedDevices.map(({udid}) => udid);
47-
48-
if (lastUsedIOSDeviceId) {
49-
const preferredDeviceIndex = devicesIds.indexOf(lastUsedIOSDeviceId);
50-
51-
if (preferredDeviceIndex > -1) {
52-
const [preferredDevice] = sortedDevices.splice(preferredDeviceIndex, 1);
53-
sortedDevices.unshift(preferredDevice);
54-
}
55-
}
56-
5744
const {device} = await prompt({
5845
type: 'select',
5946
name: 'device',
6047
message: 'Select the device you want to use',
61-
choices: sortedDevices
48+
choices: devices
6249
.filter(({type}) => type === 'device' || type === 'simulator')
6350
.map((d) => {
6451
const availability =

0 commit comments

Comments
 (0)