Improve API and fix theme glitch when switching between accounts.
This commit is contained in:
parent
8b88ca20b1
commit
49c23a922e
13 changed files with 120 additions and 61 deletions
|
|
@ -13,7 +13,12 @@ import dev.zacsweers.metro.Inject
|
|||
import io.element.android.appconfig.RageshakeConfig
|
||||
import io.element.android.features.enterprise.api.BugReportUrl
|
||||
import io.element.android.features.enterprise.api.EnterpriseService
|
||||
import io.element.android.libraries.matrix.api.core.SessionId
|
||||
import io.element.android.libraries.sessionstorage.api.SessionStore
|
||||
import io.element.android.libraries.sessionstorage.api.sessionIdFlow
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flatMapLatest
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.flow.map
|
||||
import okhttp3.HttpUrl
|
||||
|
|
@ -24,17 +29,21 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
|
|||
class DefaultBugReporterUrlProvider(
|
||||
private val bugReportAppNameProvider: BugReportAppNameProvider,
|
||||
private val enterpriseService: EnterpriseService,
|
||||
private val sessionStore: SessionStore,
|
||||
) : BugReporterUrlProvider {
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
override fun provide(): Flow<HttpUrl?> {
|
||||
if (bugReportAppNameProvider.provide().isEmpty()) return flowOf(null)
|
||||
return enterpriseService.bugReportUrlFlow
|
||||
.map { bugReportUrl ->
|
||||
when (bugReportUrl) {
|
||||
is BugReportUrl.Custom -> bugReportUrl.url
|
||||
BugReportUrl.Disabled -> null
|
||||
BugReportUrl.UseDefault -> RageshakeConfig.BUG_REPORT_URL.takeIf { it.isNotEmpty() }
|
||||
return sessionStore.sessionIdFlow().flatMapLatest { sessionId ->
|
||||
enterpriseService.bugReportUrlFlow(sessionId?.let(::SessionId))
|
||||
.map { bugReportUrl ->
|
||||
when (bugReportUrl) {
|
||||
is BugReportUrl.Custom -> bugReportUrl.url
|
||||
BugReportUrl.Disabled -> null
|
||||
BugReportUrl.UseDefault -> RageshakeConfig.BUG_REPORT_URL.takeIf { it.isNotEmpty() }
|
||||
}
|
||||
}
|
||||
}
|
||||
.map { it?.toHttpUrl() }
|
||||
.map { it?.toHttpUrl() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue