diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 055346d..12788ed 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -392,8 +392,26 @@ async function switchCamera() { return } - const targetType: 'front' | 'back' = currentCameraType.value === 'front' ? 'back' : 'front' - await changeCamera(targetType) + const frontCameras = availableCameras.value.filter((device: any) => + identifyCameraType(device.label || '') === 'front' + ) + const backCameras = availableCameras.value.filter((device: any) => + identifyCameraType(device.label || '') === 'back' + ) + + let targetDevice + if (currentCameraType.value === 'front' && backCameras.length > 0) { + targetDevice = backCameras[0] + } else if (frontCameras.length > 0) { + targetDevice = frontCameras[0] + } else { + const nextIndex = (currentCameraIndex.value + 1) % availableCameras.value.length + targetDevice = availableCameras.value[nextIndex] + } + + await camera.value?.changeCamera(targetDevice.deviceId) + currentCameraIndex.value = availableCameras.value.indexOf(targetDevice) + currentCameraType.value = identifyCameraType(targetDevice.label || '') } /** function ถ่ายรูป*/