Skip to content

Commit 4e5bbaf

Browse files
committed
Split module deeplink to api and impl.
1 parent 1682fd4 commit 4e5bbaf

File tree

25 files changed

+150
-85
lines changed

25 files changed

+150
-85
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ dependencies {
301301
testImplementation(libs.test.turbine)
302302
testImplementation(projects.libraries.matrix.test)
303303
testImplementation(projects.services.toolbox.test)
304+
testImplementation(projects.tests.testutils)
304305

305306
koverDependencies()
306307
}

app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import android.content.Context
1111
import android.content.Intent
1212
import androidx.core.net.toUri
1313
import com.squareup.anvil.annotations.ContributesBinding
14-
import io.element.android.libraries.deeplink.DeepLinkCreator
14+
import io.element.android.libraries.deeplink.api.DeepLinkCreator
1515
import io.element.android.libraries.di.AppScope
1616
import io.element.android.libraries.di.ApplicationContext
1717
import io.element.android.libraries.matrix.api.core.RoomId

app/src/test/kotlin/io/element/android/x/intent/DefaultIntentProviderTest.kt

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,22 @@
55
* Please see LICENSE files in the repository root for full details.
66
*/
77

8+
@file:Suppress("SameParameterValue")
9+
810
package io.element.android.x.intent
911

1012
import android.content.Context
1113
import android.content.Intent
1214
import com.google.common.truth.Truth.assertThat
13-
import io.element.android.libraries.deeplink.DeepLinkCreator
15+
import io.element.android.libraries.deeplink.api.DeepLinkCreator
16+
import io.element.android.libraries.matrix.api.core.RoomId
17+
import io.element.android.libraries.matrix.api.core.SessionId
18+
import io.element.android.libraries.matrix.api.core.ThreadId
1419
import io.element.android.libraries.matrix.test.A_ROOM_ID
1520
import io.element.android.libraries.matrix.test.A_SESSION_ID
1621
import io.element.android.libraries.matrix.test.A_THREAD_ID
22+
import io.element.android.tests.testutils.lambda.lambdaRecorder
23+
import io.element.android.tests.testutils.lambda.value
1724
import io.element.android.x.MainActivity
1825
import org.junit.Test
1926
import org.junit.runner.RunWith
@@ -23,45 +30,31 @@ import org.robolectric.RuntimeEnvironment
2330
@RunWith(RobolectricTestRunner::class)
2431
class DefaultIntentProviderTest {
2532
@Test
26-
fun `test getViewRoomIntent with Session`() {
27-
val sut = createDefaultIntentProvider()
28-
val result = sut.getViewRoomIntent(
29-
sessionId = A_SESSION_ID,
30-
roomId = null,
31-
threadId = null,
32-
)
33-
result.commonAssertions()
34-
assertThat(result.data.toString()).isEqualTo("elementx://open/@alice:server.org")
35-
}
36-
37-
@Test
38-
fun `test getViewRoomIntent with Session and Room`() {
39-
val sut = createDefaultIntentProvider()
40-
val result = sut.getViewRoomIntent(
41-
sessionId = A_SESSION_ID,
42-
roomId = A_ROOM_ID,
43-
threadId = null,
33+
fun `test getViewRoomIntent with data`() {
34+
val deepLinkCreator = lambdaRecorder<SessionId, RoomId?, ThreadId?, String> { _, _, _ -> "deepLinkCreatorResult" }
35+
val sut = createDefaultIntentProvider(
36+
deepLinkCreator = { sessionId, roomId, threadId -> deepLinkCreator.invoke(sessionId, roomId, threadId) },
4437
)
45-
result.commonAssertions()
46-
assertThat(result.data.toString()).isEqualTo("elementx://open/@alice:server.org/!aRoomId:domain")
47-
}
48-
49-
@Test
50-
fun `test getViewRoomIntent with Session, Room and Thread`() {
51-
val sut = createDefaultIntentProvider()
5238
val result = sut.getViewRoomIntent(
5339
sessionId = A_SESSION_ID,
5440
roomId = A_ROOM_ID,
5541
threadId = A_THREAD_ID,
5642
)
5743
result.commonAssertions()
58-
assertThat(result.data.toString()).isEqualTo("elementx://open/@alice:server.org/!aRoomId:domain/\$aThreadId")
44+
assertThat(result.data.toString()).isEqualTo("deepLinkCreatorResult")
45+
deepLinkCreator.assertions().isCalledOnce().with(
46+
value(A_SESSION_ID),
47+
value(A_ROOM_ID),
48+
value(A_THREAD_ID),
49+
)
5950
}
6051

61-
private fun createDefaultIntentProvider(): DefaultIntentProvider {
52+
private fun createDefaultIntentProvider(
53+
deepLinkCreator: DeepLinkCreator = DeepLinkCreator { _, _, _ -> "" },
54+
): DefaultIntentProvider {
6255
return DefaultIntentProvider(
6356
context = RuntimeEnvironment.getApplication() as Context,
64-
deepLinkCreator = DeepLinkCreator(),
57+
deepLinkCreator = deepLinkCreator,
6558
)
6659
}
6760

appnav/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ dependencies {
2727
implementation(projects.libraries.core)
2828
implementation(projects.libraries.androidutils)
2929
implementation(projects.libraries.architecture)
30-
implementation(projects.libraries.deeplink)
30+
implementation(projects.libraries.deeplink.api)
3131
implementation(projects.libraries.matrix.api)
3232
implementation(projects.libraries.oidc.api)
3333
implementation(projects.libraries.preferences.api)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import io.element.android.libraries.architecture.BaseFlowNode
4444
import io.element.android.libraries.architecture.createNode
4545
import io.element.android.libraries.architecture.waitForChildAttached
4646
import io.element.android.libraries.core.uri.ensureProtocol
47-
import io.element.android.libraries.deeplink.DeeplinkData
47+
import io.element.android.libraries.deeplink.api.DeeplinkData
4848
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
4949
import io.element.android.libraries.di.AppScope
5050
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService

appnav/src/main/kotlin/io/element/android/appnav/intent/IntentResolver.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ package io.element.android.appnav.intent
1010
import android.content.Intent
1111
import io.element.android.features.login.api.LoginIntentResolver
1212
import io.element.android.features.login.api.LoginParams
13-
import io.element.android.libraries.deeplink.DeeplinkData
14-
import io.element.android.libraries.deeplink.DeeplinkParser
13+
import io.element.android.libraries.deeplink.api.DeeplinkData
14+
import io.element.android.libraries.deeplink.api.DeeplinkParser
1515
import io.element.android.libraries.matrix.api.permalink.PermalinkData
1616
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
1717
import io.element.android.libraries.oidc.api.OidcAction

appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ import androidx.core.net.toUri
1414
import com.google.common.truth.Truth.assertThat
1515
import io.element.android.features.login.api.LoginParams
1616
import io.element.android.features.login.test.FakeLoginIntentResolver
17-
import io.element.android.libraries.deeplink.DeepLinkCreator
18-
import io.element.android.libraries.deeplink.DeeplinkData
19-
import io.element.android.libraries.deeplink.DeeplinkParser
17+
import io.element.android.libraries.deeplink.api.DeeplinkData
2018
import io.element.android.libraries.matrix.api.core.UserId
2119
import io.element.android.libraries.matrix.api.permalink.PermalinkData
2220
import io.element.android.libraries.matrix.test.A_ROOM_ID
@@ -46,15 +44,11 @@ class IntentResolverTest {
4644

4745
@Test
4846
fun `test resolve navigation intent root`() {
49-
val sut = createIntentResolver()
47+
val sut = createIntentResolver(
48+
deeplinkParserResult = DeeplinkData.Root(A_SESSION_ID)
49+
)
5050
val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply {
5151
action = Intent.ACTION_VIEW
52-
data = DeepLinkCreator().room(
53-
sessionId = A_SESSION_ID,
54-
roomId = null,
55-
threadId = null,
56-
)
57-
.toUri()
5852
}
5953
val result = sut.resolve(intent)
6054
assertThat(result).isEqualTo(
@@ -68,15 +62,15 @@ class IntentResolverTest {
6862

6963
@Test
7064
fun `test resolve navigation intent room`() {
71-
val sut = createIntentResolver()
72-
val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply {
73-
action = Intent.ACTION_VIEW
74-
data = DeepLinkCreator().room(
65+
val sut = createIntentResolver(
66+
deeplinkParserResult = DeeplinkData.Room(
7567
sessionId = A_SESSION_ID,
7668
roomId = A_ROOM_ID,
7769
threadId = null,
7870
)
79-
.toUri()
71+
)
72+
val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply {
73+
action = Intent.ACTION_VIEW
8074
}
8175
val result = sut.resolve(intent)
8276
assertThat(result).isEqualTo(
@@ -92,15 +86,15 @@ class IntentResolverTest {
9286

9387
@Test
9488
fun `test resolve navigation intent thread`() {
95-
val sut = createIntentResolver()
96-
val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply {
97-
action = Intent.ACTION_VIEW
98-
data = DeepLinkCreator().room(
89+
val sut = createIntentResolver(
90+
deeplinkParserResult = DeeplinkData.Room(
9991
sessionId = A_SESSION_ID,
10092
roomId = A_ROOM_ID,
10193
threadId = A_THREAD_ID,
10294
)
103-
.toUri()
95+
)
96+
val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply {
97+
action = Intent.ACTION_VIEW
10498
}
10599
val result = sut.resolve(intent)
106100
assertThat(result).isEqualTo(
@@ -240,12 +234,13 @@ class IntentResolverTest {
240234
}
241235

242236
private fun createIntentResolver(
237+
deeplinkParserResult: DeeplinkData? = null,
243238
permalinkParserResult: (String) -> PermalinkData = { lambdaError() },
244239
loginIntentResolverResult: (String) -> LoginParams? = { lambdaError() },
245240
oidcIntentResolverResult: (Intent) -> OidcAction? = { lambdaError() },
246241
): IntentResolver {
247242
return IntentResolver(
248-
deeplinkParser = DeeplinkParser(),
243+
deeplinkParser = { deeplinkParserResult },
249244
loginIntentResolver = FakeLoginIntentResolver(
250245
parseResult = loginIntentResolverResult,
251246
),

features/createroom/impl/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ dependencies {
3232
implementation(projects.libraries.designsystem)
3333
implementation(projects.libraries.uiStrings)
3434
implementation(projects.libraries.androidutils)
35-
implementation(projects.libraries.deeplink)
35+
implementation(projects.libraries.deeplink.api)
3636
implementation(projects.libraries.mediapickers.api)
3737
implementation(projects.libraries.mediaupload.api)
3838
implementation(projects.libraries.permissions.api)

features/home/impl/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ dependencies {
3838
implementation(projects.libraries.dateformatter.api)
3939
implementation(projects.libraries.eventformatter.api)
4040
implementation(projects.libraries.indicator.api)
41-
implementation(projects.libraries.deeplink)
41+
implementation(projects.libraries.deeplink.api)
4242
implementation(projects.libraries.fullscreenintent.api)
4343
implementation(projects.libraries.permissions.api)
4444
implementation(projects.libraries.permissions.noop)

features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeFlowNode.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import io.element.android.features.reportroom.api.ReportRoomEntryPoint
4444
import io.element.android.libraries.architecture.BackstackView
4545
import io.element.android.libraries.architecture.BaseFlowNode
4646
import io.element.android.libraries.architecture.appyx.launchMolecule
47-
import io.element.android.libraries.deeplink.usecase.InviteFriendsUseCase
47+
import io.element.android.libraries.deeplink.api.usecase.InviteFriendsUseCase
4848
import io.element.android.libraries.di.SessionScope
4949
import io.element.android.libraries.matrix.api.MatrixClient
5050
import io.element.android.libraries.matrix.api.core.RoomId

0 commit comments

Comments
 (0)