improvement: If Keyguard is already open when you click on a custom filter home icon, apply the custom filter anyway
This commit is contained in:
parent
4651a45216
commit
a24d7470b4
@ -141,7 +141,11 @@ data class Rail(
|
|||||||
|
|
||||||
private const val ROUTE_NAME = "home"
|
private const val ROUTE_NAME = "home"
|
||||||
|
|
||||||
private val vaultRoute = VaultRoute()
|
private val vaultRoute = VaultRoute(
|
||||||
|
args = VaultRoute.Args(
|
||||||
|
main = true,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
private val sendsRoute = SendRoute()
|
private val sendsRoute = SendRoute()
|
||||||
|
|
||||||
|
@ -63,7 +63,9 @@ import kotlinx.coroutines.flow.distinctUntilChanged
|
|||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.flow.flowOf
|
import kotlinx.coroutines.flow.flowOf
|
||||||
import kotlinx.coroutines.flow.flowOn
|
import kotlinx.coroutines.flow.flowOn
|
||||||
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
import org.kodein.di.DirectDI
|
import org.kodein.di.DirectDI
|
||||||
@ -216,7 +218,7 @@ data class OurFilterResult(
|
|||||||
)
|
)
|
||||||
|
|
||||||
data class FilterParams(
|
data class FilterParams(
|
||||||
val deeplinkCustomFilter: String? = null,
|
val deeplinkCustomFilterFlow: Flow<String>? = null,
|
||||||
val section: Section = Section(),
|
val section: Section = Section(),
|
||||||
) {
|
) {
|
||||||
data class Section(
|
data class Section(
|
||||||
@ -834,15 +836,19 @@ suspend fun <
|
|||||||
)
|
)
|
||||||
.filterSection(params.section.misc)
|
.filterSection(params.section.misc)
|
||||||
|
|
||||||
if (params.deeplinkCustomFilter != null) {
|
if (params.deeplinkCustomFilterFlow != null) {
|
||||||
val customFilter = kotlin.run {
|
params.deeplinkCustomFilterFlow
|
||||||
val customFilters = getCipherFilters()
|
.onEach { customFilterId ->
|
||||||
.first()
|
val customFilter = kotlin.run {
|
||||||
customFilters.firstOrNull { it.id == params.deeplinkCustomFilter }
|
val customFilters = getCipherFilters()
|
||||||
}
|
.first()
|
||||||
if (customFilter != null) {
|
customFilters.firstOrNull { it.id == customFilterId }
|
||||||
input.onApply(customFilter.filter)
|
}
|
||||||
}
|
if (customFilter != null) {
|
||||||
|
input.onApply(customFilter.filter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.launchIn(screenScope)
|
||||||
}
|
}
|
||||||
|
|
||||||
val filterCustomListFlow = getCipherFilters()
|
val filterCustomListFlow = getCipherFilters()
|
||||||
|
@ -124,6 +124,7 @@ import kotlinx.coroutines.flow.SharingStarted
|
|||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
import kotlinx.coroutines.flow.debounce
|
import kotlinx.coroutines.flow.debounce
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
|
import kotlinx.coroutines.flow.filterNotNull
|
||||||
import kotlinx.coroutines.flow.flowOf
|
import kotlinx.coroutines.flow.flowOf
|
||||||
import kotlinx.coroutines.flow.flowOn
|
import kotlinx.coroutines.flow.flowOn
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
@ -1277,8 +1278,17 @@ fun vaultListScreenState(
|
|||||||
.flowOn(Dispatchers.Default)
|
.flowOn(Dispatchers.Default)
|
||||||
.shareIn(this, SharingStarted.WhileSubscribed(), replay = 1)
|
.shareIn(this, SharingStarted.WhileSubscribed(), replay = 1)
|
||||||
|
|
||||||
val dl = deeplinkService.get("customFilter")
|
val deeplinkCustomFilterFlow = if (args.main) {
|
||||||
deeplinkService.clear("customFilter")
|
val customFilterKey = "customFilter"
|
||||||
|
deeplinkService
|
||||||
|
.getFlow(customFilterKey)
|
||||||
|
.filterNotNull()
|
||||||
|
.onEach {
|
||||||
|
deeplinkService.clear(customFilterKey)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
val filterListFlow = ah(
|
val filterListFlow = ah(
|
||||||
directDI = directDI,
|
directDI = directDI,
|
||||||
outputGetter = { it.source },
|
outputGetter = { it.source },
|
||||||
@ -1301,7 +1311,7 @@ fun vaultListScreenState(
|
|||||||
organizationFlow = getOrganizations(),
|
organizationFlow = getOrganizations(),
|
||||||
input = filterResult,
|
input = filterResult,
|
||||||
params = FilterParams(
|
params = FilterParams(
|
||||||
deeplinkCustomFilter = dl,
|
deeplinkCustomFilterFlow = deeplinkCustomFilterFlow,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.stateIn(this, SharingStarted.WhileSubscribed(), OurFilterResult())
|
.stateIn(this, SharingStarted.WhileSubscribed(), OurFilterResult())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user