Skip to content

Commit c8bf49d

Browse files
committed
Improve rendering of title of the folder view
1 parent 88f38a0 commit c8bf49d

File tree

5 files changed

+39
-8
lines changed

5 files changed

+39
-8
lines changed

features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderPresenter.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ import dev.zacsweers.metro.AssistedFactory
1818
import dev.zacsweers.metro.Inject
1919
import io.element.android.features.viewfolder.impl.model.Item
2020
import io.element.android.libraries.architecture.Presenter
21+
import io.element.android.libraries.core.meta.BuildMeta
2122
import kotlinx.collections.immutable.toImmutableList
2223

2324
@Inject
2425
class ViewFolderPresenter(
2526
@Assisted val canGoUp: Boolean,
2627
@Assisted val path: String,
2728
private val folderExplorer: FolderExplorer,
29+
private val buildMeta: BuildMeta,
2830
) : Presenter<ViewFolderState> {
2931
@AssistedFactory
3032
interface Factory {
@@ -34,14 +36,22 @@ class ViewFolderPresenter(
3436
@Composable
3537
override fun present(): ViewFolderState {
3638
var content by remember { mutableStateOf(emptyList<Item>()) }
39+
val title = remember {
40+
buildString {
41+
if (path.contains(buildMeta.applicationId)) {
42+
append("")
43+
}
44+
append(path.substringAfter(buildMeta.applicationId))
45+
}
46+
}
3747
LaunchedEffect(Unit) {
3848
content = buildList {
3949
if (canGoUp) add(Item.Parent)
4050
addAll(folderExplorer.getItems(path))
4151
}
4252
}
4353
return ViewFolderState(
44-
path = path,
54+
title = title,
4555
content = content.toImmutableList(),
4656
)
4757
}

features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ import io.element.android.features.viewfolder.impl.model.Item
1111
import kotlinx.collections.immutable.ImmutableList
1212

1313
data class ViewFolderState(
14-
val path: String,
14+
val title: String,
1515
val content: ImmutableList<Item>,
1616
)

features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderStateProvider.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ open class ViewFolderStateProvider : PreviewParameterProvider<ViewFolderState> {
2626
}
2727

2828
fun aViewFolderState(
29-
path: String = "aPath",
29+
title: String = "aPath",
3030
content: List<Item> = emptyList(),
3131
) = ViewFolderState(
32-
path = path,
32+
title = title,
3333
content = content.toImmutableList(),
3434
)

features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ fun ViewFolderView(
5353
navigationIcon = {
5454
BackButton(onClick = onBackClick)
5555
},
56-
titleStr = state.path,
56+
titleStr = state.title,
5757
)
5858
},
5959
content = { padding ->

features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/folder/ViewFolderPresenterTest.kt

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ import com.google.common.truth.Truth.assertThat
1414
import io.element.android.features.viewfolder.impl.folder.FolderExplorer
1515
import io.element.android.features.viewfolder.impl.folder.ViewFolderPresenter
1616
import io.element.android.features.viewfolder.impl.model.Item
17+
import io.element.android.libraries.core.meta.BuildMeta
18+
import io.element.android.libraries.matrix.test.core.aBuildMeta
1719
import io.element.android.tests.testutils.WarmUpRule
20+
import io.element.android.tests.testutils.test
1821
import kotlinx.coroutines.test.runTest
1922
import org.junit.Rule
2023
import org.junit.Test
@@ -30,11 +33,25 @@ class ViewFolderPresenterTest {
3033
presenter.present()
3134
}.test {
3235
val initialState = awaitItem()
33-
assertThat(initialState.path).isEqualTo("aPath")
36+
assertThat(initialState.title).isEqualTo("aPath")
3437
assertThat(initialState.content).isEmpty()
3538
}
3639
}
3740

41+
@Test
42+
fun `present - title is built regarding the applicationId`() = runTest {
43+
val presenter = createPresenter(
44+
path = "/data/user/O/appId/cache/logs",
45+
buildMeta = aBuildMeta(
46+
applicationId = "appId",
47+
)
48+
)
49+
presenter.test {
50+
val initialState = awaitItem()
51+
assertThat(initialState.title).isEqualTo("…/cache/logs")
52+
}
53+
}
54+
3855
@Test
3956
fun `present - list items from root`() = runTest {
4057
val items = listOf(
@@ -50,7 +67,7 @@ class ViewFolderPresenterTest {
5067
}.test {
5168
skipItems(1)
5269
val initialState = awaitItem()
53-
assertThat(initialState.path).isEqualTo("aPath")
70+
assertThat(initialState.title).isEqualTo("aPath")
5471
assertThat(initialState.content.toList()).isEqualTo(items)
5572
}
5673
}
@@ -73,7 +90,7 @@ class ViewFolderPresenterTest {
7390
}.test {
7491
skipItems(1)
7592
val initialState = awaitItem()
76-
assertThat(initialState.path).isEqualTo("aPath")
93+
assertThat(initialState.title).isEqualTo("aPath")
7794
assertThat(initialState.content.toList()).isEqualTo(listOf(Item.Parent) + items)
7895
}
7996
}
@@ -82,9 +99,13 @@ class ViewFolderPresenterTest {
8299
canGoUp: Boolean = false,
83100
path: String = "aPath",
84101
folderExplorer: FolderExplorer = FakeFolderExplorer(),
102+
buildMeta: BuildMeta = aBuildMeta(
103+
applicationId = "appId",
104+
),
85105
) = ViewFolderPresenter(
86106
path = path,
87107
canGoUp = canGoUp,
88108
folderExplorer = folderExplorer,
109+
buildMeta = buildMeta,
89110
)
90111
}

0 commit comments

Comments
 (0)