s/view/show/

This commit is contained in:
Chris Smith
2023-07-05 10:19:07 +01:00
parent 514bab48e8
commit 87853b467f
19 changed files with 51 additions and 51 deletions

View File

@@ -21,7 +21,7 @@ import com.bumble.appyx.core.node.Node
import io.element.android.libraries.architecture.FeatureEntryPoint
import io.element.android.libraries.architecture.NodeInputs
interface ViewLocationEntryPoint : FeatureEntryPoint {
interface ShowLocationEntryPoint : FeatureEntryPoint {
data class Inputs(val location: Location, val description: String?) : NodeInputs

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import android.content.Context
import android.content.Intent

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import androidx.compose.runtime.Composable
import io.element.android.features.location.api.Location

View File

@@ -14,19 +14,19 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import com.bumble.appyx.core.modality.BuildContext
import com.bumble.appyx.core.node.Node
import com.squareup.anvil.annotations.ContributesBinding
import io.element.android.features.location.api.ViewLocationEntryPoint
import io.element.android.features.location.api.ShowLocationEntryPoint
import io.element.android.libraries.architecture.createNode
import io.element.android.libraries.di.AppScope
import javax.inject.Inject
@ContributesBinding(AppScope::class)
class ViewLocationEntryPointImpl @Inject constructor() : ViewLocationEntryPoint {
override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: ViewLocationEntryPoint.Inputs): Node {
return parentNode.createNode<ViewLocationNode>(buildContext, listOf(inputs))
class ShowLocationEntryPointImpl @Inject constructor() : ShowLocationEntryPoint {
override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs): Node {
return parentNode.createNode<ShowLocationNode>(buildContext, listOf(inputs))
}
}

View File

@@ -14,8 +14,8 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
sealed interface ViewLocationEvents {
object Share : ViewLocationEvents
sealed interface ShowLocationEvents {
object Share : ShowLocationEvents
}

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@@ -26,14 +26,14 @@ import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import im.vector.app.features.analytics.plan.MobileScreen
import io.element.android.anvilannotations.ContributesNode
import io.element.android.features.location.api.ViewLocationEntryPoint
import io.element.android.features.location.api.ShowLocationEntryPoint
import io.element.android.libraries.architecture.inputs
import io.element.android.libraries.di.RoomScope
import io.element.android.services.analytics.api.AnalyticsService
@ContributesNode(RoomScope::class)
class ViewLocationNode @AssistedInject constructor(
presenterFactory: ViewLocationPresenter.Factory,
class ShowLocationNode @AssistedInject constructor(
presenterFactory: ShowLocationPresenter.Factory,
analyticsService: AnalyticsService,
@Assisted buildContext: BuildContext,
@Assisted plugins: List<Plugin>,
@@ -47,12 +47,12 @@ class ViewLocationNode @AssistedInject constructor(
)
}
private val inputs: ViewLocationEntryPoint.Inputs = inputs()
private val inputs: ShowLocationEntryPoint.Inputs = inputs()
private val presenter = presenterFactory.create(inputs.location, inputs.description)
@Composable
override fun View(modifier: Modifier) {
ViewLocationView(
ShowLocationView(
state = presenter.present(),
modifier = modifier,
onBackPressed = ::navigateUp

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
@@ -26,28 +26,28 @@ import io.element.android.libraries.architecture.Presenter
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
class ViewLocationPresenter @AssistedInject constructor(
class ShowLocationPresenter @AssistedInject constructor(
private val actions: LocationActions,
@Assisted private val location: Location,
@Assisted private val description: String?
) : Presenter<ViewLocationState> {
) : Presenter<ShowLocationState> {
@AssistedFactory
interface Factory {
fun create(location: Location, description: String?): ViewLocationPresenter
fun create(location: Location, description: String?): ShowLocationPresenter
}
@Composable
override fun present(): ViewLocationState {
override fun present(): ShowLocationState {
val coroutineScope = rememberCoroutineScope()
actions.Configure()
return ViewLocationState(
return ShowLocationState(
location = location,
description = description
) {
when (it) {
ViewLocationEvents.Share -> coroutineScope.share(location, description)
ShowLocationEvents.Share -> coroutineScope.share(location, description)
}
}
}

View File

@@ -14,12 +14,12 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import io.element.android.features.location.api.Location
data class ViewLocationState(
data class ShowLocationState(
val location: Location,
val description: String?,
val eventSink: (ViewLocationEvents) -> Unit,
val eventSink: (ShowLocationEvents) -> Unit,
)

View File

@@ -14,25 +14,25 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.location.api.Location
class ViewLocationStateProvider : PreviewParameterProvider<ViewLocationState> {
override val values: Sequence<ViewLocationState>
class ShowLocationStateProvider : PreviewParameterProvider<ShowLocationState> {
override val values: Sequence<ShowLocationState>
get() = sequenceOf(
ViewLocationState(
ShowLocationState(
Location(1.23, 2.34, 4f),
description = null,
eventSink = {},
),
ViewLocationState(
ShowLocationState(
Location(1.23, 2.34, 4f),
description = "My favourite place!",
eventSink = {},
),
ViewLocationState(
ShowLocationState(
Location(1.23, 2.34, 4f),
description = "For some reason I decided to write a small essay in the location description. " +
"It is so long that it will wrap onto more than two lines!",

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi
@@ -49,8 +49,8 @@ import io.element.android.libraries.ui.strings.CommonStrings
@OptIn(ExperimentalLayoutApi::class, ExperimentalMaterial3Api::class)
@Composable
fun ViewLocationView(
state: ViewLocationState,
fun ShowLocationView(
state: ShowLocationState,
modifier: Modifier = Modifier,
onBackPressed: () -> Unit = {},
) {
@@ -72,7 +72,7 @@ fun ViewLocationView(
BackButton(onClick = onBackPressed)
},
actions = {
IconButton(onClick = { state.eventSink(ViewLocationEvents.Share) }) {
IconButton(onClick = { state.eventSink(ShowLocationEvents.Share) }) {
Icon(imageVector = Icons.Outlined.Share, contentDescription = stringResource(CommonStrings.action_share))
}
}
@@ -108,17 +108,17 @@ fun ViewLocationView(
@Preview
@Composable
internal fun ViewLocationViewLightPreview(@PreviewParameter(ViewLocationStateProvider::class) state: ViewLocationState) =
internal fun ShowLocationViewLightPreview(@PreviewParameter(ShowLocationStateProvider::class) state: ShowLocationState) =
ElementPreviewLight { ContentToPreview(state) }
@Preview
@Composable
internal fun ViewLocationViewDarkPreview(@PreviewParameter(ViewLocationStateProvider::class) state: ViewLocationState) =
internal fun ShowLocationViewDarkPreview(@PreviewParameter(ShowLocationStateProvider::class) state: ShowLocationState) =
ElementPreviewDark { ContentToPreview(state) }
@Composable
private fun ContentToPreview(state: ViewLocationState) {
ViewLocationView(
private fun ContentToPreview(state: ShowLocationState) {
ShowLocationView(
state = state,
onBackPressed = {},
)

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import androidx.compose.runtime.Composable
import io.element.android.features.location.api.Location

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.features.location.impl.view
package io.element.android.features.location.impl.show
import app.cash.molecule.RecompositionClock
import app.cash.molecule.moleculeFlow
@@ -24,14 +24,14 @@ import io.element.android.features.location.api.Location
import kotlinx.coroutines.test.runTest
import org.junit.Test
class ViewLocationPresenterTest {
class ShowLocationPresenterTest {
private val actions = FakeLocationActions()
private val location = Location(1.23, 4.56, 7.8f)
@Test
fun `emits initial state`() = runTest {
val presenter = ViewLocationPresenter(
val presenter = ShowLocationPresenter(
actions,
location,
A_DESCRIPTION,
@@ -48,7 +48,7 @@ class ViewLocationPresenterTest {
@Test
fun `uses action to share location`() = runTest {
val presenter = ViewLocationPresenter(
val presenter = ShowLocationPresenter(
actions,
location,
A_DESCRIPTION,
@@ -58,7 +58,7 @@ class ViewLocationPresenterTest {
presenter.present()
}.test {
val initialState = awaitItem()
initialState.eventSink(ViewLocationEvents.Share)
initialState.eventSink(ShowLocationEvents.Share)
Truth.assertThat(actions.configured).isTrue()
Truth.assertThat(actions.sharedLocation).isEqualTo(location)

View File

@@ -31,7 +31,7 @@ import dagger.assisted.AssistedInject
import io.element.android.anvilannotations.ContributesNode
import io.element.android.features.location.api.Location
import io.element.android.features.location.api.SendLocationEntryPoint
import io.element.android.features.location.api.ViewLocationEntryPoint
import io.element.android.features.location.api.ShowLocationEntryPoint
import io.element.android.features.messages.api.MessagesEntryPoint
import io.element.android.features.messages.impl.attachments.Attachment
import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewNode
@@ -62,7 +62,7 @@ class MessagesFlowNode @AssistedInject constructor(
@Assisted buildContext: BuildContext,
@Assisted plugins: List<Plugin>,
private val sendLocationEntryPoint: SendLocationEntryPoint,
private val viewLocationEntryPoint: ViewLocationEntryPoint,
private val showLocationEntryPoint: ShowLocationEntryPoint,
) : BackstackNode<MessagesFlowNode.NavTarget>(
backstack = BackStack(
initialElement = NavTarget.Messages,
@@ -155,8 +155,8 @@ class MessagesFlowNode @AssistedInject constructor(
createNode<AttachmentsPreviewNode>(buildContext, listOf(inputs))
}
is NavTarget.LocationViewer -> {
val inputs = ViewLocationEntryPoint.Inputs(navTarget.location, navTarget.description)
viewLocationEntryPoint.createNode(this, buildContext, inputs)
val inputs = ShowLocationEntryPoint.Inputs(navTarget.location, navTarget.description)
showLocationEntryPoint.createNode(this, buildContext, inputs)
}
is NavTarget.EventDebugInfo -> {
val inputs = EventDebugInfoNode.Inputs(navTarget.eventId, navTarget.debugInfo)