mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-10-31 16:22:49 +00:00
Merge pull request #7591 from element-hq/bma/iterateOnClientCreation
Iterate on client creation
This commit is contained in:
+19
-2
@@ -13,6 +13,23 @@ import io.element.android.libraries.matrix.api.core.SessionId
|
||||
/**
|
||||
* A hook that can be used to customize the [MatrixClientBuilder] for enterprise features.
|
||||
*/
|
||||
fun interface ClientBuilderEnterpriseHook {
|
||||
suspend operator fun invoke(clientBuilder: MatrixClientBuilder, sessionId: SessionId): MatrixClientBuilder
|
||||
interface ClientBuilderEnterpriseHook {
|
||||
/**
|
||||
* Customize the [MatrixClientBuilder] for enterprise features.
|
||||
* This method is invoked everytime a new [MatrixClientBuilder] is created.
|
||||
*
|
||||
* @param clientBuilder The [MatrixClientBuilder] to customize.
|
||||
* @return The customized [MatrixClientBuilder].
|
||||
*/
|
||||
suspend fun beforeClientCreation(clientBuilder: MatrixClientBuilder): MatrixClientBuilder
|
||||
|
||||
/**
|
||||
* Customize the [MatrixClientBuilder] for enterprise features.
|
||||
* This method is invoked as well as the other method when a new [MatrixClientBuilder] is created to build a client for a specific session.
|
||||
*
|
||||
* @param clientBuilder The [MatrixClientBuilder] to customize.
|
||||
* @param sessionId The [SessionId] for which the [MatrixClientBuilder] is being created.
|
||||
* @return The customized [MatrixClientBuilder].
|
||||
*/
|
||||
suspend fun beforeClientCreationWithSession(clientBuilder: MatrixClientBuilder, sessionId: SessionId): MatrixClientBuilder
|
||||
}
|
||||
|
||||
+6
-1
@@ -18,7 +18,12 @@ import io.element.android.libraries.matrix.api.core.SessionId
|
||||
*/
|
||||
@ContributesBinding(AppScope::class)
|
||||
class DefaultClientBuilderEnterpriseHook : ClientBuilderEnterpriseHook {
|
||||
override suspend fun invoke(clientBuilder: MatrixClientBuilder, sessionId: SessionId): MatrixClientBuilder {
|
||||
override suspend fun beforeClientCreation(clientBuilder: MatrixClientBuilder): MatrixClientBuilder {
|
||||
// No modification
|
||||
return clientBuilder
|
||||
}
|
||||
|
||||
override suspend fun beforeClientCreationWithSession(clientBuilder: MatrixClientBuilder, sessionId: SessionId): MatrixClientBuilder {
|
||||
// No modification
|
||||
return clientBuilder
|
||||
}
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 2026 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.features.enterprise.test
|
||||
|
||||
import io.element.android.features.enterprise.api.ClientBuilderEnterpriseHook
|
||||
import io.element.android.libraries.matrix.api.MatrixClientBuilder
|
||||
import io.element.android.libraries.matrix.api.core.SessionId
|
||||
|
||||
class FakeClientBuilderEnterpriseHook(
|
||||
private val beforeClientCreationResult: (MatrixClientBuilder) -> MatrixClientBuilder = { it },
|
||||
private val beforeClientCreationWithSessionResult: (MatrixClientBuilder, SessionId) -> MatrixClientBuilder = { clientBuilder, _ -> clientBuilder },
|
||||
) : ClientBuilderEnterpriseHook {
|
||||
override suspend fun beforeClientCreation(clientBuilder: MatrixClientBuilder): MatrixClientBuilder {
|
||||
return beforeClientCreationResult(clientBuilder)
|
||||
}
|
||||
|
||||
override suspend fun beforeClientCreationWithSession(clientBuilder: MatrixClientBuilder, sessionId: SessionId): MatrixClientBuilder {
|
||||
return beforeClientCreationWithSessionResult(clientBuilder, sessionId)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user