LinkEvents -> LinkEvent
This commit is contained in:
@@ -57,7 +57,7 @@ import io.element.android.features.messages.impl.actionlist.ActionListView
|
||||
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
|
||||
import io.element.android.features.messages.impl.crypto.historyvisible.HistoryVisibleStateView
|
||||
import io.element.android.features.messages.impl.crypto.identity.IdentityChangeStateView
|
||||
import io.element.android.features.messages.impl.link.LinkEvents
|
||||
import io.element.android.features.messages.impl.link.LinkEvent
|
||||
import io.element.android.features.messages.impl.link.LinkView
|
||||
import io.element.android.features.messages.impl.messagecomposer.AttachmentsBottomSheet
|
||||
import io.element.android.features.messages.impl.messagecomposer.DisabledComposerView
|
||||
@@ -252,7 +252,7 @@ fun MessagesView(
|
||||
onLinkClick(link.url, true)
|
||||
// Do not check those links, they are internal link only
|
||||
} else {
|
||||
state.linkState.eventSink(LinkEvents.OnLinkClick(link))
|
||||
state.linkState.eventSink(LinkEvent.OnLinkClick(link))
|
||||
}
|
||||
},
|
||||
onReactionClick = ::onEmojiReactionClick,
|
||||
|
||||
@@ -10,8 +10,8 @@ package io.element.android.features.messages.impl.link
|
||||
|
||||
import io.element.android.wysiwyg.link.Link
|
||||
|
||||
sealed interface LinkEvents {
|
||||
data class OnLinkClick(val link: Link) : LinkEvents
|
||||
data object Confirm : LinkEvents
|
||||
data object Cancel : LinkEvents
|
||||
sealed interface LinkEvent {
|
||||
data class OnLinkClick(val link: Link) : LinkEvent
|
||||
data object Confirm : LinkEvent
|
||||
data object Cancel : LinkEvent
|
||||
}
|
||||
@@ -25,9 +25,9 @@ class LinkPresenter(
|
||||
override fun present(): LinkState {
|
||||
val linkClick: MutableState<AsyncAction<Link>> = remember { mutableStateOf(AsyncAction.Uninitialized) }
|
||||
|
||||
fun handleEvent(event: LinkEvents) {
|
||||
fun handleEvent(event: LinkEvent) {
|
||||
when (event) {
|
||||
is LinkEvents.OnLinkClick -> {
|
||||
is LinkEvent.OnLinkClick -> {
|
||||
linkClick.value = AsyncAction.Loading
|
||||
val result = linkChecker.isSafe(event.link)
|
||||
if (result) {
|
||||
@@ -37,12 +37,12 @@ class LinkPresenter(
|
||||
linkClick.value = ConfirmingLinkClick(event.link)
|
||||
}
|
||||
}
|
||||
LinkEvents.Confirm -> {
|
||||
LinkEvent.Confirm -> {
|
||||
linkClick.value = (linkClick.value as? ConfirmingLinkClick)
|
||||
?.let { AsyncAction.Success(it.link) }
|
||||
?: AsyncAction.Uninitialized
|
||||
}
|
||||
LinkEvents.Cancel -> {
|
||||
LinkEvent.Cancel -> {
|
||||
linkClick.value = AsyncAction.Uninitialized
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,5 +13,5 @@ import io.element.android.wysiwyg.link.Link
|
||||
|
||||
data class LinkState(
|
||||
val linkClick: AsyncAction<Link>,
|
||||
val eventSink: (LinkEvents) -> Unit,
|
||||
val eventSink: (LinkEvent) -> Unit,
|
||||
)
|
||||
|
||||
@@ -29,7 +29,7 @@ open class LinkStateProvider : PreviewParameterProvider<LinkState> {
|
||||
|
||||
fun aLinkState(
|
||||
linkClick: AsyncAction<Link> = AsyncAction.Uninitialized,
|
||||
eventSink: (LinkEvents) -> Unit = {},
|
||||
eventSink: (LinkEvent) -> Unit = {},
|
||||
) = LinkState(
|
||||
linkClick = linkClick,
|
||||
eventSink = eventSink,
|
||||
|
||||
@@ -46,10 +46,10 @@ fun LinkView(
|
||||
),
|
||||
submitText = stringResource(CommonStrings.action_continue),
|
||||
onSubmitClick = {
|
||||
state.eventSink(LinkEvents.Confirm)
|
||||
state.eventSink(LinkEvent.Confirm)
|
||||
},
|
||||
onDismiss = {
|
||||
state.eventSink(LinkEvents.Cancel)
|
||||
state.eventSink(LinkEvent.Cancel)
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -58,7 +58,7 @@ fun LinkView(
|
||||
val latestOnLinkValid by rememberUpdatedState(onLinkValid)
|
||||
LaunchedEffect(state.linkClick.data) {
|
||||
latestOnLinkValid(state.linkClick.data)
|
||||
state.eventSink(LinkEvents.Cancel)
|
||||
state.eventSink(LinkEvent.Cancel)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import io.element.android.compound.tokens.generated.CompoundIcons
|
||||
import io.element.android.features.messages.impl.actionlist.ActionListEvent
|
||||
import io.element.android.features.messages.impl.actionlist.ActionListView
|
||||
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
|
||||
import io.element.android.features.messages.impl.link.LinkEvents
|
||||
import io.element.android.features.messages.impl.link.LinkEvent
|
||||
import io.element.android.features.messages.impl.link.LinkView
|
||||
import io.element.android.features.messages.impl.timeline.components.TimelineItemRow
|
||||
import io.element.android.features.messages.impl.timeline.components.event.TimelineItemEventContentView
|
||||
@@ -222,7 +222,7 @@ private fun PinnedMessagesListLoaded(
|
||||
focusedEventId = null,
|
||||
onUserDataClick = onUserDataClick,
|
||||
onLinkClick = { link ->
|
||||
state.linkState.eventSink(LinkEvents.OnLinkClick(link))
|
||||
state.linkState.eventSink(LinkEvent.OnLinkClick(link))
|
||||
},
|
||||
onLinkLongClick = onLinkLongClick,
|
||||
onContentClick = onEventClick,
|
||||
@@ -243,7 +243,7 @@ private fun PinnedMessagesListLoaded(
|
||||
onContentClick = { onEventClick(event) },
|
||||
onLongClick = { onMessageLongClick(event) },
|
||||
onLinkClick = { link ->
|
||||
state.linkState.eventSink(LinkEvents.OnLinkClick(link))
|
||||
state.linkState.eventSink(LinkEvent.OnLinkClick(link))
|
||||
},
|
||||
onLinkLongClick = onLinkLongClick,
|
||||
modifier = contentModifier,
|
||||
|
||||
@@ -45,7 +45,7 @@ class LinkPresenterTest {
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.linkClick).isEqualTo(AsyncAction.Uninitialized)
|
||||
initialState.eventSink(LinkEvents.OnLinkClick(aLink))
|
||||
initialState.eventSink(LinkEvent.OnLinkClick(aLink))
|
||||
assertThat(awaitItem().linkClick).isEqualTo(AsyncAction.Loading)
|
||||
val state = awaitItem()
|
||||
assertThat(state.linkClick).isEqualTo(AsyncAction.Success(aLink))
|
||||
@@ -61,11 +61,11 @@ class LinkPresenterTest {
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.linkClick).isEqualTo(AsyncAction.Uninitialized)
|
||||
initialState.eventSink(LinkEvents.OnLinkClick(aLink))
|
||||
initialState.eventSink(LinkEvent.OnLinkClick(aLink))
|
||||
assertThat(awaitItem().linkClick).isEqualTo(AsyncAction.Loading)
|
||||
val state = awaitItem()
|
||||
assertThat(state.linkClick).isEqualTo(ConfirmingLinkClick(aLink))
|
||||
state.eventSink(LinkEvents.Cancel)
|
||||
state.eventSink(LinkEvent.Cancel)
|
||||
val finalState = awaitItem()
|
||||
assertThat(finalState.linkClick).isEqualTo(AsyncAction.Uninitialized)
|
||||
}
|
||||
@@ -79,11 +79,11 @@ class LinkPresenterTest {
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.linkClick).isEqualTo(AsyncAction.Uninitialized)
|
||||
initialState.eventSink(LinkEvents.OnLinkClick(aLink))
|
||||
initialState.eventSink(LinkEvent.OnLinkClick(aLink))
|
||||
assertThat(awaitItem().linkClick).isEqualTo(AsyncAction.Loading)
|
||||
val state = awaitItem()
|
||||
assertThat(state.linkClick).isEqualTo(ConfirmingLinkClick(aLink))
|
||||
state.eventSink(LinkEvents.Confirm)
|
||||
state.eventSink(LinkEvent.Confirm)
|
||||
val finalState = awaitItem()
|
||||
assertThat(finalState.linkClick).isEqualTo(AsyncAction.Success(aLink))
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class LinkViewTest {
|
||||
|
||||
@Test
|
||||
fun `clicking on cancel emits the expected event`() {
|
||||
val eventsRecorder = EventsRecorder<LinkEvents>()
|
||||
val eventsRecorder = EventsRecorder<LinkEvent>()
|
||||
rule.setLinkView(
|
||||
aLinkState(
|
||||
linkClick = ConfirmingLinkClick(aLink),
|
||||
@@ -40,13 +40,13 @@ class LinkViewTest {
|
||||
)
|
||||
rule.clickOn(CommonStrings.action_cancel)
|
||||
eventsRecorder.assertSingle(
|
||||
LinkEvents.Cancel
|
||||
LinkEvent.Cancel
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `clicking on continue emits the expected event`() {
|
||||
val eventsRecorder = EventsRecorder<LinkEvents>()
|
||||
val eventsRecorder = EventsRecorder<LinkEvent>()
|
||||
rule.setLinkView(
|
||||
aLinkState(
|
||||
linkClick = ConfirmingLinkClick(aLink),
|
||||
@@ -55,13 +55,13 @@ class LinkViewTest {
|
||||
)
|
||||
rule.clickOn(CommonStrings.action_continue)
|
||||
eventsRecorder.assertSingle(
|
||||
LinkEvents.Confirm
|
||||
LinkEvent.Confirm
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `success state invokes the callback and emits the expected event`() {
|
||||
val eventsRecorder = EventsRecorder<LinkEvents>()
|
||||
val eventsRecorder = EventsRecorder<LinkEvent>()
|
||||
ensureCalledOnceWithParam(aLink) { callback ->
|
||||
rule.setLinkView(
|
||||
aLinkState(
|
||||
@@ -72,7 +72,7 @@ class LinkViewTest {
|
||||
)
|
||||
}
|
||||
eventsRecorder.assertSingle(
|
||||
LinkEvents.Cancel
|
||||
LinkEvent.Cancel
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user