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

Commit a9803044 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Add more information to removed controls

Removed controls should have as much cached information as possible.
This adds structure name and subtitle.
Also, if the structure is not set it would cause issues (as empty
structure is a valid structure).

Fixes: 151089232
Test: atest ControlsControllerImplTest
Test: manual
Change-Id: I6cf5f285fe85ddc78ae59133dcf406793293a3f7
parent 5cb264d9
Loading
Loading
Loading
Loading
+22 −14
Original line number Diff line number Diff line
@@ -252,10 +252,17 @@ class ControlsControllerImpl @Inject constructor (
                                    it.controlId in favoritesForComponentKeys
                                )
                            }
                            val removedControls = mutableListOf<ControlStatus>()
                            Favorites.getStructuresForComponent(componentName).forEach { st ->
                                st.controls.forEach {
                                    if (it.controlId in removed) {
                                        val r = createRemovedStatus(componentName, it, st.structure)
                                        removedControls.add(r)
                                    }
                                }
                            }
                            val loadData = createLoadDataObject(
                                Favorites.getControlsForComponent(componentName)
                                    .filter { it.controlId in removed }
                                    .map { createRemovedStatus(componentName, it) } +
                                removedControls +
                                controlsWithFavorite,
                                favoritesForComponentKeys
                            )
@@ -266,17 +273,15 @@ class ControlsControllerImpl @Inject constructor (
                    override fun error(message: String) {
                        loadCanceller = null
                        executor.execute {
                            val loadData = Favorites.getControlsForComponent(componentName)
                                .let { controls ->
                                val keys = controls.map { it.controlId }
                                createLoadDataObject(
                                        controls.map {
                                            createRemovedStatus(componentName, it, false)
                                        },
                                        keys,
                                        true
                                )
                            val controls = Favorites.getStructuresForComponent(componentName)
                                    .flatMap { st ->
                                        st.controls.map {
                                            createRemovedStatus(componentName, it, st.structure,
                                                    false)
                                        }
                                    }
                            val keys = controls.map { it.control.controlId }
                            val loadData = createLoadDataObject(controls, keys, true)
                            dataCallback.accept(loadData)
                        }
                    }
@@ -372,6 +377,7 @@ class ControlsControllerImpl @Inject constructor (
    private fun createRemovedStatus(
        componentName: ComponentName,
        controlInfo: ControlInfo,
        structure: CharSequence,
        setRemoved: Boolean = true
    ): ControlStatus {
        val intent = Intent(Intent.ACTION_MAIN).apply {
@@ -384,6 +390,8 @@ class ControlsControllerImpl @Inject constructor (
                0)
        val control = Control.StatelessBuilder(controlInfo.controlId, pendingIntent)
                .setTitle(controlInfo.controlTitle)
                .setSubtitle(controlInfo.controlSubtitle)
                .setStructure(structure)
                .setDeviceType(controlInfo.deviceType)
                .build()
        return ControlStatus(control, componentName, true, setRemoved)
+2 −0
Original line number Diff line number Diff line
@@ -307,6 +307,7 @@ class ControlsControllerImplTest : SysuiTestCase() {
            assertEquals(1, controls.size)
            val controlStatus = controls[0]
            assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId)
            assertEquals(TEST_STRUCTURE_INFO.structure, controlStatus.control.structure)
            assertTrue(controlStatus.favorite)
            assertTrue(controlStatus.removed)

@@ -337,6 +338,7 @@ class ControlsControllerImplTest : SysuiTestCase() {
            assertEquals(1, controls.size)
            val controlStatus = controls[0]
            assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId)
            assertEquals(TEST_STRUCTURE_INFO.structure, controlStatus.control.structure)
            assertTrue(controlStatus.favorite)
            assertFalse(controlStatus.removed)