Cleanup constructor and avoid creating many mapper instances
This commit is contained in:
parent
285ccf3ec0
commit
215015c0a4
6 changed files with 16 additions and 9 deletions
|
|
@ -19,9 +19,8 @@ import org.matrix.rustcomponents.sdk.StateEventContent
|
||||||
import org.matrix.rustcomponents.sdk.TimelineEvent
|
import org.matrix.rustcomponents.sdk.TimelineEvent
|
||||||
import org.matrix.rustcomponents.sdk.TimelineEventType
|
import org.matrix.rustcomponents.sdk.TimelineEventType
|
||||||
import org.matrix.rustcomponents.sdk.use
|
import org.matrix.rustcomponents.sdk.use
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
class TimelineEventToNotificationContentMapper @Inject constructor() {
|
class TimelineEventToNotificationContentMapper {
|
||||||
fun map(timelineEvent: TimelineEvent): NotificationContent {
|
fun map(timelineEvent: TimelineEvent): NotificationContent {
|
||||||
return timelineEvent.use {
|
return timelineEvent.use {
|
||||||
timelineEvent.eventType().use { eventType ->
|
timelineEvent.eventType().use { eventType ->
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,12 @@ import io.element.android.libraries.matrix.api.room.message.RoomMessage
|
||||||
import io.element.android.libraries.matrix.impl.timeline.item.event.EventTimelineItemMapper
|
import io.element.android.libraries.matrix.impl.timeline.item.event.EventTimelineItemMapper
|
||||||
import org.matrix.rustcomponents.sdk.EventTimelineItem as RustEventTimelineItem
|
import org.matrix.rustcomponents.sdk.EventTimelineItem as RustEventTimelineItem
|
||||||
|
|
||||||
class RoomMessageFactory {
|
class RoomMessageFactory(
|
||||||
|
private val eventTimelineItemMapper: EventTimelineItemMapper = EventTimelineItemMapper(),
|
||||||
|
) {
|
||||||
fun create(eventTimelineItem: RustEventTimelineItem?): RoomMessage? {
|
fun create(eventTimelineItem: RustEventTimelineItem?): RoomMessage? {
|
||||||
eventTimelineItem ?: return null
|
eventTimelineItem ?: return null
|
||||||
val mappedTimelineItem = EventTimelineItemMapper().map(eventTimelineItem)
|
val mappedTimelineItem = eventTimelineItemMapper.map(eventTimelineItem)
|
||||||
return RoomMessage(
|
return RoomMessage(
|
||||||
eventId = mappedTimelineItem.eventId ?: return null,
|
eventId = mappedTimelineItem.eventId ?: return null,
|
||||||
event = mappedTimelineItem,
|
event = mappedTimelineItem,
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,9 @@ import io.element.android.libraries.matrix.impl.room.message.RoomMessageFactory
|
||||||
import org.matrix.rustcomponents.sdk.RoomListItem
|
import org.matrix.rustcomponents.sdk.RoomListItem
|
||||||
import org.matrix.rustcomponents.sdk.use
|
import org.matrix.rustcomponents.sdk.use
|
||||||
|
|
||||||
class RoomSummaryDetailsFactory(private val roomMessageFactory: RoomMessageFactory = RoomMessageFactory()) {
|
class RoomSummaryDetailsFactory(
|
||||||
|
private val roomMessageFactory: RoomMessageFactory = RoomMessageFactory(),
|
||||||
|
) {
|
||||||
suspend fun create(roomListItem: RoomListItem): RoomSummary {
|
suspend fun create(roomListItem: RoomListItem): RoomSummary {
|
||||||
val roomInfo = roomListItem.roomInfo()
|
val roomInfo = roomListItem.roomInfo()
|
||||||
val latestRoomMessage = roomListItem.latestEvent().use { event ->
|
val latestRoomMessage = roomListItem.latestEvent().use { event ->
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ import org.matrix.rustcomponents.sdk.TimelineItem
|
||||||
class MatrixTimelineItemMapper(
|
class MatrixTimelineItemMapper(
|
||||||
private val fetchDetailsForEvent: suspend (EventId) -> Result<Unit>,
|
private val fetchDetailsForEvent: suspend (EventId) -> Result<Unit>,
|
||||||
private val coroutineScope: CoroutineScope,
|
private val coroutineScope: CoroutineScope,
|
||||||
private val virtualTimelineItemMapper: VirtualTimelineItemMapper = VirtualTimelineItemMapper(),
|
private val virtualTimelineItemMapper: VirtualTimelineItemMapper,
|
||||||
private val eventTimelineItemMapper: EventTimelineItemMapper = EventTimelineItemMapper(),
|
private val eventTimelineItemMapper: EventTimelineItemMapper,
|
||||||
) {
|
) {
|
||||||
fun map(timelineItem: TimelineItem): MatrixTimelineItem = timelineItem.use {
|
fun map(timelineItem: TimelineItem): MatrixTimelineItem = timelineItem.use {
|
||||||
val uniqueId = UniqueId(timelineItem.uniqueId())
|
val uniqueId = UniqueId(timelineItem.uniqueId())
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,9 @@ import org.matrix.rustcomponents.sdk.ProfileDetails as RustProfileDetails
|
||||||
import org.matrix.rustcomponents.sdk.Receipt as RustReceipt
|
import org.matrix.rustcomponents.sdk.Receipt as RustReceipt
|
||||||
import uniffi.matrix_sdk_ui.EventItemOrigin as RustEventItemOrigin
|
import uniffi.matrix_sdk_ui.EventItemOrigin as RustEventItemOrigin
|
||||||
|
|
||||||
class EventTimelineItemMapper(private val contentMapper: TimelineEventContentMapper = TimelineEventContentMapper()) {
|
class EventTimelineItemMapper(
|
||||||
|
private val contentMapper: TimelineEventContentMapper = TimelineEventContentMapper(),
|
||||||
|
) {
|
||||||
fun map(eventTimelineItem: RustEventTimelineItem): EventTimelineItem = eventTimelineItem.use {
|
fun map(eventTimelineItem: RustEventTimelineItem): EventTimelineItem = eventTimelineItem.use {
|
||||||
EventTimelineItem(
|
EventTimelineItem(
|
||||||
eventId = it.eventId()?.let(::EventId),
|
eventId = it.eventId()?.let(::EventId),
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,9 @@ import org.matrix.rustcomponents.sdk.MembershipChange as RustMembershipChange
|
||||||
import org.matrix.rustcomponents.sdk.OtherState as RustOtherState
|
import org.matrix.rustcomponents.sdk.OtherState as RustOtherState
|
||||||
import uniffi.matrix_sdk_crypto.UtdCause as RustUtdCause
|
import uniffi.matrix_sdk_crypto.UtdCause as RustUtdCause
|
||||||
|
|
||||||
class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMapper = EventMessageMapper()) {
|
class TimelineEventContentMapper(
|
||||||
|
private val eventMessageMapper: EventMessageMapper = EventMessageMapper(),
|
||||||
|
) {
|
||||||
fun map(content: TimelineItemContent): EventContent {
|
fun map(content: TimelineItemContent): EventContent {
|
||||||
return content.use {
|
return content.use {
|
||||||
content.kind().use { kind ->
|
content.kind().use { kind ->
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue