Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c96a4bb7 authored by yyalan's avatar yyalan
Browse files

Fix newlyConnectedKeyboard

Remove keyboardsChange since we don't need it anymore and the logic can therefore be simplified

Bug: 361057445
Flag: NONE bug fix, and newlyConnectedKeyboard is not in use
Test: KeyboardRepositoryTest.kt
Change-Id: Ib2739fd7e19007a21cdbde413672f6b73660410a
parent e72031df
Loading
Loading
Loading
Loading
+8 −17
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.inputdevice.data.repository.InputDeviceRepository
import com.android.systemui.inputdevice.data.repository.InputDeviceRepository.DeviceAdded
import com.android.systemui.inputdevice.data.repository.InputDeviceRepository.DeviceChange
import com.android.systemui.inputdevice.data.repository.InputDeviceRepository.DeviceRemoved
import com.android.systemui.inputdevice.data.repository.InputDeviceRepository.FreshStart
import com.android.systemui.keyboard.data.model.Keyboard
@@ -78,24 +77,16 @@ constructor(
    inputDeviceRepository: InputDeviceRepository
) : KeyboardRepository {

    private val keyboardsChange: Flow<Pair<Collection<Int>, DeviceChange>> =
        inputDeviceRepository.deviceChange
            .map { (ids, change) -> ids.filter { id -> isPhysicalFullKeyboard(id) } to change }
            .filter { (_, change) ->
                when (change) {
                    FreshStart -> true
                    is DeviceAdded -> isPhysicalFullKeyboard(change.deviceId)
                    is DeviceRemoved -> isPhysicalFullKeyboard(change.deviceId)
                }
            }

    @FlowPreview
    override val newlyConnectedKeyboard: Flow<Keyboard> =
        keyboardsChange
        inputDeviceRepository.deviceChange
            .flatMapConcat { (devices, operation) ->
                when (operation) {
                    FreshStart -> devices.asFlow()
                    is DeviceAdded -> flowOf(operation.deviceId)
                    FreshStart -> devices.filter { id -> isPhysicalFullKeyboard(id) }.asFlow()
                    is DeviceAdded -> {
                        if (isPhysicalFullKeyboard(operation.deviceId)) flowOf(operation.deviceId)
                        else emptyFlow()
                    }
                    is DeviceRemoved -> emptyFlow()
                }
            }
@@ -103,8 +94,8 @@ constructor(
            .flowOn(backgroundDispatcher)

    override val isAnyKeyboardConnected: Flow<Boolean> =
        keyboardsChange
            .map { (devices, _) -> devices.isNotEmpty() }
        inputDeviceRepository.deviceChange
            .map { (ids, _) -> ids.any { id -> isPhysicalFullKeyboard(id) } }
            .distinctUntilChanged()
            .flowOn(backgroundDispatcher)