feat(scan): 기기 저장/표시 clinical flow 조건 제거 — 일반 모드에서도 활성

증상:
Clinical mode 로 진입해서 pair 한 기기만 KnownDeviceStore 에 저장되고
DeviceScan 화면 상단의 '저장된 기기' 목록에 표시됨. 일반 모드로 앱을
쓸 때는 매번 fresh scan → 이름 확인 → 연결 반복해야 함.

수정:
- BleManager onConnectionStateChange (STATE_CONNECTED) 안 KnownDeviceStore
  .add() 를 감싸던 `if (inClinicalFlow)` 조건 제거. 연결 성공한 모든
  기기를 영속화.
- DeviceScanView 의 초기 knownDevices 로드도 clinical 조건 제거. 저장된
  기기가 있으면 진입 경로 무관하게 상단에 표시.

효과:
- 일반 사용자도 한 번 연결한 기기를 다음 세션에 목록에서 바로 선택.
- 재연결 대상 자동 감지 (lastConnectedAddress 흐름) 도 clinical 밖에서
  정상 동작.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 11:03:14 +09:00
parent db6e7e1a5c
commit b822b49fc6
2 changed files with 9 additions and 14 deletions
@@ -980,15 +980,13 @@ class BleManager private constructor(private val context: Context) {
cancelReconnectTimer() cancelReconnectTimer()
debugLogger.connected(connectedDeviceName.value, gatt.device.address) debugLogger.connected(connectedDeviceName.value, gatt.device.address)
// Clinical 흐름에서만 KnownDeviceStore 영속화. 일반 사용자는 // 2026-07-10: clinical 흐름 조건 제거 — 어떤 진입 경로든 연결 성공 시
// 매 세션 fresh scan + pair — 저장 0개. // KnownDeviceStore 에 영속화. 재사용 편의 (재연결 대상 자동 감지 등).
if (com.medithings.vesiscan.services.ClinicalSessionStore.inClinicalFlow) {
try { try {
com.medithings.vesiscan.services.KnownDeviceStore.add( com.medithings.vesiscan.services.KnownDeviceStore.add(
context, gatt.device.address, connectedDeviceName.value context, gatt.device.address, connectedDeviceName.value
) )
} catch (_: Exception) {} } catch (_: Exception) {}
}
// MTU 247 요청 (reb: 208B 패킷 드롭 방지) // MTU 247 요청 (reb: 208B 패킷 드롭 방지)
// onMtuChanged 콜백에서 discoverServices 호출 // onMtuChanged 콜백에서 discoverServices 호출
@@ -54,11 +54,8 @@ fun DeviceScanView(appState: AppState) {
var connectingDeviceAddress by remember { mutableStateOf<String?>(null) } var connectingDeviceAddress by remember { mutableStateOf<String?>(null) }
var permissionsGranted by remember { mutableStateOf(false) } var permissionsGranted by remember { mutableStateOf(false) }
// Clinical 흐름에서만 다중 기기 저장/표시 — 일반 사용자는 fresh scan & pair. // 2026-07-10: clinical 흐름 조건 제거 — 일반 사용자도 저장된 기기 목록 표시.
val isClinicalFlow = com.medithings.vesiscan.services.ClinicalSessionStore.inClinicalFlow var knownDevices by remember { mutableStateOf(KnownDeviceStore.getAll(context)) }
var knownDevices by remember {
mutableStateOf(if (isClinicalFlow) KnownDeviceStore.getAll(context) else emptyList())
}
var pendingDelete by remember { mutableStateOf<KnownDevice?>(null) } var pendingDelete by remember { mutableStateOf<KnownDevice?>(null) }
val knownAddresses = knownDevices.map { it.address }.toSet() val knownAddresses = knownDevices.map { it.address }.toSet()
val newDevices = bleManager.discoveredDevices val newDevices = bleManager.discoveredDevices