Skip to content

Commit f10582c

Browse files
authored
Merge pull request #5139 from element-hq/feature/bma/rageshakeConfigStep2
Let enterprise build be able to override (or disable) the bug report URL.
2 parents 80bdaf3 + c83c863 commit f10582c

File tree

67 files changed

+1028
-280
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1028
-280
lines changed

app/src/main/kotlin/io/element/android/x/ElementXApplication.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ package io.element.android.x
99

1010
import android.app.Application
1111
import androidx.startup.AppInitializer
12-
import io.element.android.appconfig.RageshakeConfig
13-
import io.element.android.appconfig.isEnabled
1412
import io.element.android.features.cachecleaner.api.CacheCleanerInitializer
1513
import io.element.android.libraries.di.DaggerComponentOwner
1614
import io.element.android.x.di.AppComponent
@@ -25,9 +23,7 @@ class ElementXApplication : Application(), DaggerComponentOwner {
2523
override fun onCreate() {
2624
super.onCreate()
2725
AppInitializer.getInstance(this).apply {
28-
if (RageshakeConfig.isEnabled) {
29-
initializeComponent(CrashInitializer::class.java)
30-
}
26+
initializeComponent(CrashInitializer::class.java)
3127
initializeComponent(PlatformInitializer::class.java)
3228
initializeComponent(CacheCleanerInitializer::class.java)
3329
}

appconfig/src/main/kotlin/io/element/android/appconfig/RageshakeConfig.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,3 @@ object RageshakeConfig {
2525
*/
2626
const val MAX_LOG_UPLOAD_SIZE = 50 * 1024 * 1024L
2727
}
28-
29-
/**
30-
* Whether the rageshake feature is enabled.
31-
*/
32-
val RageshakeConfig.isEnabled: Boolean
33-
get() = BUG_REPORT_URL.isNotEmpty() && BUG_REPORT_APP_NAME.isNotEmpty()

appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import io.element.android.appnav.room.RoomFlowNode
4747
import io.element.android.appnav.room.RoomNavigationTarget
4848
import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode
4949
import io.element.android.features.createroom.api.CreateRoomEntryPoint
50+
import io.element.android.features.enterprise.api.SessionEnterpriseService
5051
import io.element.android.features.ftue.api.FtueEntryPoint
5152
import io.element.android.features.ftue.api.state.FtueService
5253
import io.element.android.features.ftue.api.state.FtueState
@@ -127,6 +128,7 @@ class LoggedInFlowNode @AssistedInject constructor(
127128
private val logoutEntryPoint: LogoutEntryPoint,
128129
private val incomingVerificationEntryPoint: IncomingVerificationEntryPoint,
129130
private val mediaPreviewConfigMigration: MediaPreviewConfigMigration,
131+
private val sessionEnterpriseService: SessionEnterpriseService,
130132
private val networkMonitor: NetworkMonitor,
131133
snackbarDispatcher: SnackbarDispatcher,
132134
) : BaseFlowNode<LoggedInFlowNode.NavTarget>(
@@ -185,7 +187,9 @@ class LoggedInFlowNode @AssistedInject constructor(
185187

186188
override fun onBuilt() {
187189
super.onBuilt()
188-
190+
lifecycleScope.launch {
191+
sessionEnterpriseService.init()
192+
}
189193
lifecycle.subscribe(
190194
onCreate = {
191195
appNavigationStateService.onNavigateToSession(id, matrixClient.sessionId)

enterprise

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* Copyright 2025 New Vector Ltd.
3+
*
4+
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
5+
* Please see LICENSE files in the repository root for full details.
6+
*/
7+
8+
package io.element.android.features.enterprise.api
9+
10+
sealed interface BugReportUrl {
11+
data object UseDefault : BugReportUrl
12+
data object Disabled : BugReportUrl
13+
data class Custom(
14+
val url: String,
15+
) : BugReportUrl
16+
}

features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package io.element.android.features.enterprise.api
99

1010
import io.element.android.compound.tokens.generated.SemanticColors
1111
import io.element.android.libraries.matrix.api.core.SessionId
12+
import kotlinx.coroutines.flow.Flow
1213

1314
interface EnterpriseService {
1415
val isEnterpriseBuild: Boolean
@@ -22,6 +23,8 @@ interface EnterpriseService {
2223
fun firebasePushGateway(): String?
2324
fun unifiedPushDefaultPushGateway(): String?
2425

26+
val bugReportUrlFlow: Flow<BugReportUrl>
27+
2528
companion object {
2629
const val ANY_ACCOUNT_PROVIDER = "*"
2730
}

features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/SessionEnterpriseService.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ package io.element.android.features.enterprise.api
99

1010
interface SessionEnterpriseService {
1111
suspend fun isElementCallAvailable(): Boolean
12+
13+
suspend fun init()
1214
}

features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ import com.squareup.anvil.annotations.ContributesBinding
1111
import io.element.android.compound.tokens.generated.SemanticColors
1212
import io.element.android.compound.tokens.generated.compoundColorsDark
1313
import io.element.android.compound.tokens.generated.compoundColorsLight
14+
import io.element.android.features.enterprise.api.BugReportUrl
1415
import io.element.android.features.enterprise.api.EnterpriseService
1516
import io.element.android.libraries.di.AppScope
1617
import io.element.android.libraries.matrix.api.core.SessionId
18+
import kotlinx.coroutines.flow.flowOf
1719
import javax.inject.Inject
1820

1921
@ContributesBinding(AppScope::class)
@@ -31,4 +33,6 @@ class DefaultEnterpriseService @Inject constructor() : EnterpriseService {
3133

3234
override fun firebasePushGateway(): String? = null
3335
override fun unifiedPushDefaultPushGateway(): String? = null
36+
37+
override val bugReportUrlFlow = flowOf(BugReportUrl.UseDefault)
3438
}

features/enterprise/impl/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ import javax.inject.Inject
1414

1515
@ContributesBinding(SessionScope::class)
1616
class DefaultSessionEnterpriseService @Inject constructor() : SessionEnterpriseService {
17+
override suspend fun init() = Unit
1718
override suspend fun isElementCallAvailable(): Boolean = true
1819
}

features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@
88
package io.element.android.features.enterprise.test
99

1010
import io.element.android.compound.tokens.generated.SemanticColors
11+
import io.element.android.features.enterprise.api.BugReportUrl
1112
import io.element.android.features.enterprise.api.EnterpriseService
1213
import io.element.android.libraries.matrix.api.core.SessionId
1314
import io.element.android.tests.testutils.lambda.lambdaError
1415
import io.element.android.tests.testutils.simulateLongTask
16+
import kotlinx.coroutines.flow.Flow
17+
import kotlinx.coroutines.flow.MutableStateFlow
18+
import kotlinx.coroutines.flow.asStateFlow
1519

1620
class FakeEnterpriseService(
1721
override val isEnterpriseBuild: Boolean = false,
@@ -51,7 +55,6 @@ class FakeEnterpriseService(
5155
return unifiedPushDefaultPushGatewayResult()
5256
}
5357

54-
companion object {
55-
const val A_FAKE_HOMESERVER = "a_fake_homeserver"
56-
}
58+
val bugReportUrlMutableFlow = MutableStateFlow<BugReportUrl>(BugReportUrl.UseDefault)
59+
override val bugReportUrlFlow: Flow<BugReportUrl> = bugReportUrlMutableFlow.asStateFlow()
5760
}

0 commit comments

Comments
 (0)