mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-16 12:00:03 +03:00
Start adding javadoc on public api of the SDK and move some files.
This commit is contained in:
parent
9914939045
commit
57db4086cb
42 changed files with 264 additions and 35 deletions
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
package im.vector.riotredesign.features.home.room.detail.timeline
|
package im.vector.riotredesign.features.home.room.detail.timeline
|
||||||
|
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
|
|
||||||
class DefaultItemFactory {
|
class DefaultItemFactory {
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ import android.text.util.Linkify
|
||||||
import im.vector.matrix.android.api.permalinks.MatrixLinkify
|
import im.vector.matrix.android.api.permalinks.MatrixLinkify
|
||||||
import im.vector.matrix.android.api.permalinks.MatrixPermalinkSpan
|
import im.vector.matrix.android.api.permalinks.MatrixPermalinkSpan
|
||||||
import im.vector.matrix.android.api.session.events.model.EventType
|
import im.vector.matrix.android.api.session.events.model.EventType
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.matrix.android.api.session.events.model.toModel
|
import im.vector.matrix.android.api.session.events.model.toModel
|
||||||
import im.vector.matrix.android.api.session.room.model.MessageContent
|
import im.vector.matrix.android.api.session.room.model.MessageContent
|
||||||
import im.vector.riotredesign.core.extensions.localDateTime
|
import im.vector.riotredesign.core.extensions.localDateTime
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
package im.vector.riotredesign.features.home.room.detail.timeline
|
package im.vector.riotredesign.features.home.room.detail.timeline
|
||||||
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.matrix.android.api.session.events.model.toModel
|
import im.vector.matrix.android.api.session.events.model.toModel
|
||||||
import im.vector.matrix.android.api.session.room.model.Membership
|
import im.vector.matrix.android.api.session.room.model.Membership
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomMember
|
import im.vector.matrix.android.api.session.room.model.RoomMember
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
package im.vector.riotredesign.features.home.room.detail.timeline
|
package im.vector.riotredesign.features.home.room.detail.timeline
|
||||||
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.matrix.android.api.session.events.model.toModel
|
import im.vector.matrix.android.api.session.events.model.toModel
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomNameContent
|
import im.vector.matrix.android.api.session.room.model.RoomNameContent
|
||||||
import im.vector.riotredesign.R
|
import im.vector.riotredesign.R
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
package im.vector.riotredesign.features.home.room.detail.timeline
|
package im.vector.riotredesign.features.home.room.detail.timeline
|
||||||
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.matrix.android.api.session.events.model.toModel
|
import im.vector.matrix.android.api.session.events.model.toModel
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomTopicContent
|
import im.vector.matrix.android.api.session.room.model.RoomTopicContent
|
||||||
import im.vector.riotredesign.R
|
import im.vector.riotredesign.R
|
||||||
|
|
|
@ -21,7 +21,7 @@ package im.vector.riotredesign.features.home.room.detail.timeline
|
||||||
import com.airbnb.epoxy.EpoxyAsyncUtil
|
import com.airbnb.epoxy.EpoxyAsyncUtil
|
||||||
import com.airbnb.epoxy.EpoxyModel
|
import com.airbnb.epoxy.EpoxyModel
|
||||||
import im.vector.matrix.android.api.session.events.model.EventType
|
import im.vector.matrix.android.api.session.events.model.EventType
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.matrix.android.api.session.room.timeline.TimelineData
|
import im.vector.matrix.android.api.session.room.timeline.TimelineData
|
||||||
import im.vector.riotredesign.core.extensions.localDateTime
|
import im.vector.riotredesign.core.extensions.localDateTime
|
||||||
import im.vector.riotredesign.features.home.LoadingItemModel_
|
import im.vector.riotredesign.features.home.LoadingItemModel_
|
||||||
|
|
|
@ -20,7 +20,7 @@ package im.vector.riotredesign.features.home.room.detail.timeline
|
||||||
|
|
||||||
import com.airbnb.epoxy.EpoxyModel
|
import com.airbnb.epoxy.EpoxyModel
|
||||||
import im.vector.matrix.android.api.session.events.model.EventType
|
import im.vector.matrix.android.api.session.events.model.EventType
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
|
|
||||||
class TimelineItemFactory(private val messageItemFactory: MessageItemFactory,
|
class TimelineItemFactory(private val messageItemFactory: MessageItemFactory,
|
||||||
private val roomNameItemFactory: RoomNameItemFactory,
|
private val roomNameItemFactory: RoomNameItemFactory,
|
||||||
|
@ -37,7 +37,7 @@ class TimelineItemFactory(private val messageItemFactory: MessageItemFactory,
|
||||||
EventType.STATE_ROOM_NAME -> roomNameItemFactory.create(event)
|
EventType.STATE_ROOM_NAME -> roomNameItemFactory.create(event)
|
||||||
EventType.STATE_ROOM_TOPIC -> roomTopicItemFactory.create(event)
|
EventType.STATE_ROOM_TOPIC -> roomTopicItemFactory.create(event)
|
||||||
EventType.STATE_ROOM_MEMBER -> roomMemberItemFactory.create(event)
|
EventType.STATE_ROOM_MEMBER -> roomMemberItemFactory.create(event)
|
||||||
else -> defaultItemFactory.create(event)
|
else -> defaultItemFactory.create(event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.api.thread;
|
package im.vector.matrix.android;
|
||||||
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
|
@ -23,7 +23,7 @@ import androidx.test.annotation.UiThreadTest
|
||||||
import com.zhuinden.monarchy.Monarchy
|
import com.zhuinden.monarchy.Monarchy
|
||||||
import im.vector.matrix.android.InstrumentedTest
|
import im.vector.matrix.android.InstrumentedTest
|
||||||
import im.vector.matrix.android.LiveDataTestObserver
|
import im.vector.matrix.android.LiveDataTestObserver
|
||||||
import im.vector.matrix.android.api.thread.MainThreadExecutor
|
import im.vector.matrix.android.MainThreadExecutor
|
||||||
import im.vector.matrix.android.internal.session.room.members.RoomMemberExtractor
|
import im.vector.matrix.android.internal.session.room.members.RoomMemberExtractor
|
||||||
import im.vector.matrix.android.internal.session.room.timeline.DefaultTimelineService
|
import im.vector.matrix.android.internal.session.room.timeline.DefaultTimelineService
|
||||||
import im.vector.matrix.android.internal.session.room.timeline.TimelineBoundaryCallback
|
import im.vector.matrix.android.internal.session.room.timeline.TimelineBoundaryCallback
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
|
|
||||||
package im.vector.matrix.android.api
|
package im.vector.matrix.android.api
|
||||||
|
|
||||||
import androidx.lifecycle.ProcessLifecycleOwner
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.lifecycle.ProcessLifecycleOwner
|
||||||
import com.zhuinden.monarchy.Monarchy
|
import com.zhuinden.monarchy.Monarchy
|
||||||
import im.vector.matrix.android.api.auth.Authenticator
|
import im.vector.matrix.android.api.auth.Authenticator
|
||||||
import im.vector.matrix.android.api.session.Session
|
import im.vector.matrix.android.api.session.Session
|
||||||
|
@ -32,7 +32,11 @@ import im.vector.matrix.android.internal.util.BackgroundDetectionObserver
|
||||||
import org.koin.standalone.inject
|
import org.koin.standalone.inject
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the main entry point to the matrix sdk.
|
||||||
|
* This class is automatically init by a provider.
|
||||||
|
* To get the singleton instance, use getInstance static method.
|
||||||
|
*/
|
||||||
class Matrix private constructor(context: Context) : MatrixKoinComponent {
|
class Matrix private constructor(context: Context) : MatrixKoinComponent {
|
||||||
|
|
||||||
private val authenticator by inject<Authenticator>()
|
private val authenticator by inject<Authenticator>()
|
||||||
|
|
|
@ -18,12 +18,24 @@
|
||||||
|
|
||||||
package im.vector.matrix.android.api
|
package im.vector.matrix.android.api
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generic callback interface for asynchronously.
|
||||||
|
* @param <T> the type of data to return on success
|
||||||
|
*/
|
||||||
interface MatrixCallback<in T> {
|
interface MatrixCallback<in T> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On success method, default to no-op
|
||||||
|
* @param data the data successfuly returned from the async function
|
||||||
|
*/
|
||||||
fun onSuccess(data: T) {
|
fun onSuccess(data: T) {
|
||||||
//no-op
|
//no-op
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On failure method, default to no-op
|
||||||
|
* @param failure the failure data returned from the async function
|
||||||
|
*/
|
||||||
fun onFailure(failure: Throwable) {
|
fun onFailure(failure: Throwable) {
|
||||||
//no-op
|
//no-op
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,12 +23,32 @@ import im.vector.matrix.android.api.auth.data.HomeServerConnectionConfig
|
||||||
import im.vector.matrix.android.api.session.Session
|
import im.vector.matrix.android.api.session.Session
|
||||||
import im.vector.matrix.android.api.util.Cancelable
|
import im.vector.matrix.android.api.util.Cancelable
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines methods to authenticate to a matrix server.
|
||||||
|
*/
|
||||||
interface Authenticator {
|
interface Authenticator {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param homeServerConnectionConfig this param is used to configure the Homeserver
|
||||||
|
* @param login the login field
|
||||||
|
* @param password the password field
|
||||||
|
* @param callback the matrix callback on which you'll receive the result of authentication.
|
||||||
|
* @return return a [Cancelable]
|
||||||
|
*/
|
||||||
fun authenticate(homeServerConnectionConfig: HomeServerConnectionConfig, login: String, password: String, callback: MatrixCallback<Session>): Cancelable
|
fun authenticate(homeServerConnectionConfig: HomeServerConnectionConfig, login: String, password: String, callback: MatrixCallback<Session>): Cancelable
|
||||||
|
|
||||||
|
//TODO remove this method. Shouldn't be managed like that.
|
||||||
|
/**
|
||||||
|
* Check if there is an active [Session].
|
||||||
|
* @return true if there is at least one active session.
|
||||||
|
*/
|
||||||
fun hasActiveSessions(): Boolean
|
fun hasActiveSessions(): Boolean
|
||||||
|
|
||||||
|
//TODO remove this method. Shouldn't be managed like that.
|
||||||
|
/**
|
||||||
|
* Get the last active [Session], if there is an active session.
|
||||||
|
* @return the lastActive session if any, or null
|
||||||
|
*/
|
||||||
fun getLastActiveSession(): Session?
|
fun getLastActiveSession(): Session?
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,11 @@ package im.vector.matrix.android.api.auth.data
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This data class hold credentials user data.
|
||||||
|
* You shouldn't have to instantiate it.
|
||||||
|
* The access token should be use to authenticate user in all server requests.
|
||||||
|
*/
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class Credentials(
|
data class Credentials(
|
||||||
@Json(name = "user_id") val userId: String,
|
@Json(name = "user_id") val userId: String,
|
||||||
|
|
|
@ -20,10 +20,16 @@ package im.vector.matrix.android.api.auth.data
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
|
import im.vector.matrix.android.api.auth.data.HomeServerConnectionConfig.Builder
|
||||||
import im.vector.matrix.android.internal.network.ssl.Fingerprint
|
import im.vector.matrix.android.internal.network.ssl.Fingerprint
|
||||||
import okhttp3.CipherSuite
|
import okhttp3.CipherSuite
|
||||||
import okhttp3.TlsVersion
|
import okhttp3.TlsVersion
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This data class holds how to connect to a specific Homeserver.
|
||||||
|
* It's used with [im.vector.matrix.android.api.auth.Authenticator] class.
|
||||||
|
* You should use the [Builder] to create one.
|
||||||
|
*/
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class HomeServerConnectionConfig(
|
data class HomeServerConnectionConfig(
|
||||||
val homeServerUri: Uri,
|
val homeServerUri: Uri,
|
||||||
|
@ -38,6 +44,9 @@ data class HomeServerConnectionConfig(
|
||||||
val forceUsageTlsVersions: Boolean = false
|
val forceUsageTlsVersions: Boolean = false
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This builder should be use to create a [HomeServerConnectionConfig] instance.
|
||||||
|
*/
|
||||||
class Builder {
|
class Builder {
|
||||||
|
|
||||||
private lateinit var homeServerUri: Uri
|
private lateinit var homeServerUri: Uri
|
||||||
|
|
|
@ -18,6 +18,10 @@
|
||||||
|
|
||||||
package im.vector.matrix.android.api.auth.data
|
package im.vector.matrix.android.api.auth.data
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This data class holds necessary data to open a session.
|
||||||
|
* You don't have to manually instantiate it.
|
||||||
|
*/
|
||||||
data class SessionParams(
|
data class SessionParams(
|
||||||
val credentials: Credentials,
|
val credentials: Credentials,
|
||||||
val homeServerConnectionConfig: HomeServerConnectionConfig
|
val homeServerConnectionConfig: HomeServerConnectionConfig
|
||||||
|
|
|
@ -20,8 +20,16 @@ package im.vector.matrix.android.api.failure
|
||||||
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class allows to expose differents kind of error to be then handled by the application.
|
||||||
|
* As it is a sealed class, you typically use it like that :
|
||||||
|
* when(failure) {
|
||||||
|
* is NetworkConnection -> Unit
|
||||||
|
* is ServerError -> Unit
|
||||||
|
* is Unknown -> Unit
|
||||||
|
* }
|
||||||
|
*/
|
||||||
sealed class Failure(cause: Throwable? = null) : Throwable(cause = cause) {
|
sealed class Failure(cause: Throwable? = null) : Throwable(cause = cause) {
|
||||||
|
|
||||||
data class Unknown(val throwable: Throwable? = null) : Failure(throwable)
|
data class Unknown(val throwable: Throwable? = null) : Failure(throwable)
|
||||||
data class NetworkConnection(val ioException: IOException? = null) : Failure(ioException)
|
data class NetworkConnection(val ioException: IOException? = null) : Failure(ioException)
|
||||||
data class ServerError(val error: MatrixError) : Failure(RuntimeException(error.toString()))
|
data class ServerError(val error: MatrixError) : Failure(RuntimeException(error.toString()))
|
||||||
|
|
|
@ -21,6 +21,10 @@ package im.vector.matrix.android.api.failure
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This data class holds the error defined by the matrix specifications.
|
||||||
|
* You shouldn't have to instantiate it.
|
||||||
|
*/
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class MatrixError(
|
data class MatrixError(
|
||||||
@Json(name = "errcode") val code: String,
|
@Json(name = "errcode") val code: String,
|
||||||
|
|
|
@ -24,6 +24,10 @@ import android.text.method.LinkMovementMethod
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import im.vector.matrix.android.api.MatrixPatterns
|
import im.vector.matrix.android.api.MatrixPatterns
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MatrixLinkify take a piece of text and turns all of the
|
||||||
|
* matrix patterns matches in the text into clickable links.
|
||||||
|
*/
|
||||||
object MatrixLinkify {
|
object MatrixLinkify {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -75,7 +79,10 @@ object MatrixLinkify {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add linkMovementMethod on textview if not already set
|
||||||
|
* @param textView the textView on which the movementMethod is set
|
||||||
|
*/
|
||||||
fun addLinkMovementMethod(textView: TextView) {
|
fun addLinkMovementMethod(textView: TextView) {
|
||||||
val movementMethod = textView.movementMethod
|
val movementMethod = textView.movementMethod
|
||||||
if (movementMethod == null || movementMethod !is LinkMovementMethod) {
|
if (movementMethod == null || movementMethod !is LinkMovementMethod) {
|
||||||
|
|
|
@ -21,6 +21,11 @@ package im.vector.matrix.android.api.permalinks
|
||||||
import android.text.style.ClickableSpan
|
import android.text.style.ClickableSpan
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This MatrixPermalinkSpan is a clickable span which use a [Callback] to communicate back.
|
||||||
|
* @param url the permalink url tied to the span
|
||||||
|
* @param callback the callback to use.
|
||||||
|
*/
|
||||||
class MatrixPermalinkSpan(private val url: String,
|
class MatrixPermalinkSpan(private val url: String,
|
||||||
private val callback: Callback? = null) : ClickableSpan() {
|
private val callback: Callback? = null) : ClickableSpan() {
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,10 @@ package im.vector.matrix.android.api.permalinks
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This sealed class represents all the permalink cases.
|
||||||
|
* You don't have to instantiate yourself but should use [PermalinkParser] instead.
|
||||||
|
*/
|
||||||
sealed class PermalinkData {
|
sealed class PermalinkData {
|
||||||
|
|
||||||
data class EventLink(val roomIdOrAlias: String, val eventId: String) : PermalinkData()
|
data class EventLink(val roomIdOrAlias: String, val eventId: String) : PermalinkData()
|
||||||
|
|
|
@ -22,7 +22,7 @@ import android.text.TextUtils
|
||||||
import im.vector.matrix.android.api.session.events.model.Event
|
import im.vector.matrix.android.api.session.events.model.Event
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Useful methods to deals with Matrix permalink
|
* Useful methods to create Matrix permalink.
|
||||||
*/
|
*/
|
||||||
object PermalinkFactory {
|
object PermalinkFactory {
|
||||||
|
|
||||||
|
|
|
@ -21,13 +21,22 @@ package im.vector.matrix.android.api.permalinks
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import im.vector.matrix.android.api.MatrixPatterns
|
import im.vector.matrix.android.api.MatrixPatterns
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class turns an uri to a [PermalinkData]
|
||||||
|
*/
|
||||||
object PermalinkParser {
|
object PermalinkParser {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns an uri string to a [PermalinkData]
|
||||||
|
*/
|
||||||
fun parse(uriString: String): PermalinkData {
|
fun parse(uriString: String): PermalinkData {
|
||||||
val uri = Uri.parse(uriString)
|
val uri = Uri.parse(uriString)
|
||||||
return parse(uri)
|
return parse(uri)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns an uri to a [PermalinkData]
|
||||||
|
*/
|
||||||
fun parse(uri: Uri): PermalinkData {
|
fun parse(uri: Uri): PermalinkData {
|
||||||
val fragment = uri.fragment
|
val fragment = uri.fragment
|
||||||
if (fragment.isNullOrEmpty()) {
|
if (fragment.isNullOrEmpty()) {
|
||||||
|
@ -45,16 +54,16 @@ object PermalinkParser {
|
||||||
return PermalinkData.FallbackLink(uri)
|
return PermalinkData.FallbackLink(uri)
|
||||||
}
|
}
|
||||||
return when {
|
return when {
|
||||||
MatrixPatterns.isUserId(identifier) -> PermalinkData.UserLink(userId = identifier)
|
MatrixPatterns.isUserId(identifier) -> PermalinkData.UserLink(userId = identifier)
|
||||||
MatrixPatterns.isGroupId(identifier) -> PermalinkData.GroupLink(groupId = identifier)
|
MatrixPatterns.isGroupId(identifier) -> PermalinkData.GroupLink(groupId = identifier)
|
||||||
MatrixPatterns.isRoomId(identifier) -> {
|
MatrixPatterns.isRoomId(identifier) -> {
|
||||||
if (!extraParameter.isNullOrEmpty() && MatrixPatterns.isEventId(extraParameter)) {
|
if (!extraParameter.isNullOrEmpty() && MatrixPatterns.isEventId(extraParameter)) {
|
||||||
PermalinkData.EventLink(roomIdOrAlias = identifier, eventId = extraParameter)
|
PermalinkData.EventLink(roomIdOrAlias = identifier, eventId = extraParameter)
|
||||||
} else {
|
} else {
|
||||||
PermalinkData.RoomLink(roomIdOrAlias = identifier)
|
PermalinkData.RoomLink(roomIdOrAlias = identifier)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> PermalinkData.FallbackLink(uri)
|
else -> PermalinkData.FallbackLink(uri)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,20 +23,44 @@ import im.vector.matrix.android.api.auth.data.SessionParams
|
||||||
import im.vector.matrix.android.api.session.group.GroupService
|
import im.vector.matrix.android.api.session.group.GroupService
|
||||||
import im.vector.matrix.android.api.session.room.RoomService
|
import im.vector.matrix.android.api.session.room.RoomService
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines interactions with a session.
|
||||||
|
* An instance of a session will be provided by the SDK.
|
||||||
|
*/
|
||||||
interface Session : RoomService, GroupService {
|
interface Session : RoomService, GroupService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The params associated to the session
|
||||||
|
*/
|
||||||
val sessionParams: SessionParams
|
val sessionParams: SessionParams
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method allow to open a session. It does start some service on the background.
|
||||||
|
*/
|
||||||
@MainThread
|
@MainThread
|
||||||
fun open()
|
fun open()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method allow to close a session. It does stop some services.
|
||||||
|
*/
|
||||||
@MainThread
|
@MainThread
|
||||||
fun close()
|
fun close()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a listener to the session.
|
||||||
|
* @param listener the listener to add.
|
||||||
|
*/
|
||||||
fun addListener(listener: Listener)
|
fun addListener(listener: Listener)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a listener from the session.
|
||||||
|
* @param listener the listener to remove.
|
||||||
|
*/
|
||||||
fun removeListener(listener: Listener)
|
fun removeListener(listener: Listener)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A global session listener to get notified for some events.
|
||||||
|
*/
|
||||||
// Not used at the moment
|
// Not used at the moment
|
||||||
interface Listener
|
interface Listener
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,9 @@ import java.lang.reflect.ParameterizedType
|
||||||
|
|
||||||
typealias Content = Map<String, @JvmSuppressWildcards Any>
|
typealias Content = Map<String, @JvmSuppressWildcards Any>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This methods is a facility method to map a json content to a model.
|
||||||
|
*/
|
||||||
inline fun <reified T> Content?.toModel(): T? {
|
inline fun <reified T> Content?.toModel(): T? {
|
||||||
return this?.let {
|
return this?.let {
|
||||||
val moshi = MoshiProvider.providesMoshi()
|
val moshi = MoshiProvider.providesMoshi()
|
||||||
|
@ -34,6 +37,10 @@ inline fun <reified T> Content?.toModel(): T? {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generic event class with all possible fields for events.
|
||||||
|
* The content and prevContent json fields can easily be mapped to a model with [toModel] method.
|
||||||
|
*/
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class Event(
|
data class Event(
|
||||||
@Json(name = "type") val type: String,
|
@Json(name = "type") val type: String,
|
||||||
|
@ -49,6 +56,10 @@ data class Event(
|
||||||
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if event is a state event.
|
||||||
|
* @return true if event is state event.
|
||||||
|
*/
|
||||||
fun isStateEvent(): Boolean {
|
fun isStateEvent(): Boolean {
|
||||||
return EventType.isStateEvent(type)
|
return EventType.isStateEvent(type)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,9 @@
|
||||||
package im.vector.matrix.android.api.session.events.model
|
package im.vector.matrix.android.api.session.events.model
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constants defining known event types from Matrix specifications.
|
||||||
|
*/
|
||||||
object EventType {
|
object EventType {
|
||||||
|
|
||||||
const val PRESENCE = "m.presence"
|
const val PRESENCE = "m.presence"
|
||||||
|
|
|
@ -18,6 +18,9 @@
|
||||||
|
|
||||||
package im.vector.matrix.android.api.session.group
|
package im.vector.matrix.android.api.session.group
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines methods to interact within a group.
|
||||||
|
*/
|
||||||
interface Group {
|
interface Group {
|
||||||
val groupId: String
|
val groupId: String
|
||||||
}
|
}
|
|
@ -21,9 +21,22 @@ package im.vector.matrix.android.api.session.group
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines methods to get groups. It's implemented at the session level.
|
||||||
|
*/
|
||||||
interface GroupService {
|
interface GroupService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a group from a groupId
|
||||||
|
* @param groupId the groupId to look for.
|
||||||
|
* @return the group with groupId or null
|
||||||
|
*/
|
||||||
fun getGroup(groupId: String): Group?
|
fun getGroup(groupId: String): Group?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a live list of group summaries. This list is refreshed as soon as the data changes.
|
||||||
|
* @return the [LiveData] of [GroupSummary]
|
||||||
|
*/
|
||||||
fun liveGroupSummaries(): LiveData<List<GroupSummary>>
|
fun liveGroupSummaries(): LiveData<List<GroupSummary>>
|
||||||
}
|
}
|
|
@ -21,17 +21,34 @@ package im.vector.matrix.android.api.session.room
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import im.vector.matrix.android.api.session.room.model.MyMembership
|
import im.vector.matrix.android.api.session.room.model.MyMembership
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
|
import im.vector.matrix.android.api.session.room.send.SendService
|
||||||
import im.vector.matrix.android.api.session.room.timeline.TimelineService
|
import im.vector.matrix.android.api.session.room.timeline.TimelineService
|
||||||
import im.vector.matrix.android.api.util.Cancelable
|
import im.vector.matrix.android.api.util.Cancelable
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines methods to interact within a room.
|
||||||
|
*/
|
||||||
interface Room : TimelineService, SendService {
|
interface Room : TimelineService, SendService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The roomId of this room
|
||||||
|
*/
|
||||||
val roomId: String
|
val roomId: String
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The membership of this room for the current user
|
||||||
|
*/
|
||||||
val myMembership: MyMembership
|
val myMembership: MyMembership
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A live [RoomSummary] associated with the room
|
||||||
|
*/
|
||||||
val roomSummary: LiveData<RoomSummary>
|
val roomSummary: LiveData<RoomSummary>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This methods load all room members if it was done yet.
|
||||||
|
* @return a [Cancelable]
|
||||||
|
*/
|
||||||
fun loadRoomMembersIfNeeded(): Cancelable
|
fun loadRoomMembersIfNeeded(): Cancelable
|
||||||
|
|
||||||
}
|
}
|
|
@ -21,10 +21,22 @@ package im.vector.matrix.android.api.session.room
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines methods to get rooms. It's implemented at the session level.
|
||||||
|
*/
|
||||||
interface RoomService {
|
interface RoomService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a room from a roomId
|
||||||
|
* @param roomId the roomId to look for.
|
||||||
|
* @return the room with roomId or null
|
||||||
|
*/
|
||||||
fun getRoom(roomId: String): Room?
|
fun getRoom(roomId: String): Room?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a live list of room summaries. This list is refreshed as soon as the data changes.
|
||||||
|
* @return the [LiveData] of [RoomSummary]
|
||||||
|
*/
|
||||||
fun liveRoomSummaries(): LiveData<List<RoomSummary>>
|
fun liveRoomSummaries(): LiveData<List<RoomSummary>>
|
||||||
|
|
||||||
}
|
}
|
|
@ -16,14 +16,23 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.api.session.room
|
package im.vector.matrix.android.api.session.room.send
|
||||||
|
|
||||||
import im.vector.matrix.android.api.MatrixCallback
|
import im.vector.matrix.android.api.MatrixCallback
|
||||||
import im.vector.matrix.android.api.session.events.model.Event
|
import im.vector.matrix.android.api.session.events.model.Event
|
||||||
import im.vector.matrix.android.api.util.Cancelable
|
import im.vector.matrix.android.api.util.Cancelable
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines methods to send events in a room. It's implemented at the room level.
|
||||||
|
*/
|
||||||
interface SendService {
|
interface SendService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to send a text message asynchronously.
|
||||||
|
* @param text the text message to send
|
||||||
|
* @param callback the callback to be notified.
|
||||||
|
* @return a [Cancelable]
|
||||||
|
*/
|
||||||
fun sendTextMessage(text: String, callback: MatrixCallback<Event>): Cancelable
|
fun sendTextMessage(text: String, callback: MatrixCallback<Event>): Cancelable
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,25 @@
|
||||||
package im.vector.matrix.android.api.session.room.timeline
|
package im.vector.matrix.android.api.session.room.timeline
|
||||||
|
|
||||||
import androidx.paging.PagedList
|
import androidx.paging.PagedList
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This data class is a holder for timeline data.
|
||||||
|
* It's returned by [TimelineService]
|
||||||
|
*/
|
||||||
data class TimelineData(
|
data class TimelineData(
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The [PagedList] of [TimelineEvent] to usually be render in a RecyclerView.
|
||||||
|
*/
|
||||||
val events: PagedList<TimelineEvent>,
|
val events: PagedList<TimelineEvent>,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if Timeline is currently paginating forward on server
|
||||||
|
*/
|
||||||
val isLoadingForward: Boolean = false,
|
val isLoadingForward: Boolean = false,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if Timeline is currently paginating backward on server
|
||||||
|
*/
|
||||||
val isLoadingBackward: Boolean = false
|
val isLoadingBackward: Boolean = false
|
||||||
)
|
)
|
||||||
|
|
|
@ -16,10 +16,16 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.api.session.events.model
|
package im.vector.matrix.android.api.session.room.timeline
|
||||||
|
|
||||||
|
import im.vector.matrix.android.api.session.events.model.Event
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomMember
|
import im.vector.matrix.android.api.session.room.model.RoomMember
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This data class is a wrapper around an Event. It allows to get useful data in the context of a timeline.
|
||||||
|
* This class is used by [TimelineService] through [TimelineData]
|
||||||
|
* Users can also enrich it with metadata.
|
||||||
|
*/
|
||||||
data class TimelineEvent(
|
data class TimelineEvent(
|
||||||
val root: Event,
|
val root: Event,
|
||||||
val localId: String,
|
val localId: String,
|
||||||
|
@ -28,6 +34,12 @@ data class TimelineEvent(
|
||||||
|
|
||||||
val metadata = HashMap<String, Any>()
|
val metadata = HashMap<String, Any>()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method to enrich this timeline event.
|
||||||
|
* If you provides multiple data with the same key, only first one will be kept.
|
||||||
|
* @param key the key to associate data with.
|
||||||
|
* @param data the data to enrich with.
|
||||||
|
*/
|
||||||
fun enrichWith(key: String?, data: Any?) {
|
fun enrichWith(key: String?, data: Any?) {
|
||||||
if (key == null || data == null) {
|
if (key == null || data == null) {
|
||||||
return
|
return
|
||||||
|
@ -37,6 +49,11 @@ data class TimelineEvent(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the metadata associated with a key.
|
||||||
|
* @param key the key to get the metadata
|
||||||
|
* @return the metadata
|
||||||
|
*/
|
||||||
inline fun <reified T> getMetadata(key: String): T? {
|
inline fun <reified T> getMetadata(key: String): T? {
|
||||||
return metadata[key] as T?
|
return metadata[key] as T?
|
||||||
}
|
}
|
|
@ -16,9 +16,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.api.session.events.interceptor
|
package im.vector.matrix.android.api.session.room.timeline
|
||||||
|
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
|
||||||
|
|
||||||
interface TimelineEventInterceptor {
|
interface TimelineEventInterceptor {
|
||||||
|
|
|
@ -20,8 +20,18 @@ package im.vector.matrix.android.api.session.room.timeline
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines methods to interact with the timeline. It's implemented at the room level.
|
||||||
|
*/
|
||||||
interface TimelineService {
|
interface TimelineService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the main method of the service. It allows to listen for live [TimelineData].
|
||||||
|
* It's automatically refreshed as soon as timeline data gets updated, through sync or pagination.
|
||||||
|
*
|
||||||
|
* @param eventId: an optional eventId to start loading timeline around.
|
||||||
|
* @return the [LiveData] of [TimelineData]
|
||||||
|
*/
|
||||||
fun timeline(eventId: String? = null): LiveData<TimelineData>
|
fun timeline(eventId: String? = null): LiveData<TimelineData>
|
||||||
|
|
||||||
}
|
}
|
|
@ -18,7 +18,15 @@
|
||||||
|
|
||||||
package im.vector.matrix.android.api.util
|
package im.vector.matrix.android.api.util
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An interface defining a unique cancel method.
|
||||||
|
* It should be used with methods you want to be able to cancel, such as ones interacting with Web Services.
|
||||||
|
*/
|
||||||
interface Cancelable {
|
interface Cancelable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The cancel method, it does nothing by default.
|
||||||
|
*/
|
||||||
fun cancel() {
|
fun cancel() {
|
||||||
//no-op
|
//no-op
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ import com.zhuinden.monarchy.Monarchy
|
||||||
import im.vector.matrix.android.api.MatrixCallback
|
import im.vector.matrix.android.api.MatrixCallback
|
||||||
import im.vector.matrix.android.api.session.events.model.Event
|
import im.vector.matrix.android.api.session.events.model.Event
|
||||||
import im.vector.matrix.android.api.session.room.Room
|
import im.vector.matrix.android.api.session.room.Room
|
||||||
import im.vector.matrix.android.api.session.room.SendService
|
import im.vector.matrix.android.api.session.room.send.SendService
|
||||||
import im.vector.matrix.android.api.session.room.model.Membership
|
import im.vector.matrix.android.api.session.room.model.Membership
|
||||||
import im.vector.matrix.android.api.session.room.model.MyMembership
|
import im.vector.matrix.android.api.session.room.model.MyMembership
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
|
@ -36,7 +36,6 @@ import im.vector.matrix.android.internal.database.model.RoomSummaryEntity
|
||||||
import im.vector.matrix.android.internal.database.model.RoomSummaryEntityFields
|
import im.vector.matrix.android.internal.database.model.RoomSummaryEntityFields
|
||||||
import im.vector.matrix.android.internal.database.query.where
|
import im.vector.matrix.android.internal.database.query.where
|
||||||
import im.vector.matrix.android.internal.di.MatrixKoinComponent
|
import im.vector.matrix.android.internal.di.MatrixKoinComponent
|
||||||
import im.vector.matrix.android.internal.session.SessionListeners
|
|
||||||
import im.vector.matrix.android.internal.session.room.members.LoadRoomMembersTask
|
import im.vector.matrix.android.internal.session.room.members.LoadRoomMembersTask
|
||||||
import im.vector.matrix.android.internal.task.TaskExecutor
|
import im.vector.matrix.android.internal.task.TaskExecutor
|
||||||
import im.vector.matrix.android.internal.task.configureWith
|
import im.vector.matrix.android.internal.task.configureWith
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
package im.vector.matrix.android.internal.session.room
|
package im.vector.matrix.android.internal.session.room
|
||||||
|
|
||||||
import im.vector.matrix.android.api.auth.data.SessionParams
|
import im.vector.matrix.android.api.auth.data.SessionParams
|
||||||
import im.vector.matrix.android.api.session.room.SendService
|
import im.vector.matrix.android.api.session.room.send.SendService
|
||||||
import im.vector.matrix.android.api.session.room.send.EventFactory
|
import im.vector.matrix.android.internal.session.room.send.EventFactory
|
||||||
import im.vector.matrix.android.api.session.room.timeline.TimelineService
|
import im.vector.matrix.android.api.session.room.timeline.TimelineService
|
||||||
import im.vector.matrix.android.internal.session.DefaultSession
|
import im.vector.matrix.android.internal.session.DefaultSession
|
||||||
import im.vector.matrix.android.internal.session.room.members.DefaultLoadRoomMembersTask
|
import im.vector.matrix.android.internal.session.room.members.DefaultLoadRoomMembersTask
|
||||||
|
|
|
@ -30,7 +30,6 @@ import im.vector.matrix.android.internal.database.model.EventEntity
|
||||||
import im.vector.matrix.android.internal.database.query.where
|
import im.vector.matrix.android.internal.database.query.where
|
||||||
import im.vector.matrix.android.internal.di.MatrixKoinComponent
|
import im.vector.matrix.android.internal.di.MatrixKoinComponent
|
||||||
import im.vector.matrix.android.internal.util.WorkerParamsFactory
|
import im.vector.matrix.android.internal.util.WorkerParamsFactory
|
||||||
import im.vector.matrix.android.internal.util.tryTransactionAsync
|
|
||||||
import im.vector.matrix.android.internal.util.tryTransactionSync
|
import im.vector.matrix.android.internal.util.tryTransactionSync
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
import org.koin.standalone.inject
|
import org.koin.standalone.inject
|
||||||
|
@ -90,7 +89,7 @@ internal class PruneEventWorker(context: Context,
|
||||||
EventType.STATE_ROOM_ALIASES -> listOf("aliases")
|
EventType.STATE_ROOM_ALIASES -> listOf("aliases")
|
||||||
EventType.STATE_CANONICAL_ALIAS -> listOf("alias")
|
EventType.STATE_CANONICAL_ALIAS -> listOf("alias")
|
||||||
EventType.FEEDBACK -> listOf("type", "target_event_id")
|
EventType.FEEDBACK -> listOf("type", "target_event_id")
|
||||||
else -> emptyList()
|
else -> emptyList()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,7 @@ import androidx.work.*
|
||||||
import com.zhuinden.monarchy.Monarchy
|
import com.zhuinden.monarchy.Monarchy
|
||||||
import im.vector.matrix.android.api.MatrixCallback
|
import im.vector.matrix.android.api.MatrixCallback
|
||||||
import im.vector.matrix.android.api.session.events.model.Event
|
import im.vector.matrix.android.api.session.events.model.Event
|
||||||
import im.vector.matrix.android.api.session.room.SendService
|
import im.vector.matrix.android.api.session.room.send.SendService
|
||||||
import im.vector.matrix.android.api.session.room.send.EventFactory
|
|
||||||
import im.vector.matrix.android.api.util.Cancelable
|
import im.vector.matrix.android.api.util.Cancelable
|
||||||
import im.vector.matrix.android.internal.database.helper.add
|
import im.vector.matrix.android.internal.database.helper.add
|
||||||
import im.vector.matrix.android.internal.database.helper.updateDisplayIndexes
|
import im.vector.matrix.android.internal.database.helper.updateDisplayIndexes
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.matrix.android.api.session.room.send
|
package im.vector.matrix.android.internal.session.room.send
|
||||||
|
|
||||||
import im.vector.matrix.android.api.auth.data.Credentials
|
import im.vector.matrix.android.api.auth.data.Credentials
|
||||||
import im.vector.matrix.android.api.session.events.model.Content
|
import im.vector.matrix.android.api.session.events.model.Content
|
|
@ -22,8 +22,8 @@ import androidx.lifecycle.LiveData
|
||||||
import androidx.paging.LivePagedListBuilder
|
import androidx.paging.LivePagedListBuilder
|
||||||
import androidx.paging.PagedList
|
import androidx.paging.PagedList
|
||||||
import com.zhuinden.monarchy.Monarchy
|
import com.zhuinden.monarchy.Monarchy
|
||||||
import im.vector.matrix.android.api.session.events.interceptor.TimelineEventInterceptor
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEventInterceptor
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.matrix.android.api.session.room.timeline.TimelineData
|
import im.vector.matrix.android.api.session.room.timeline.TimelineData
|
||||||
import im.vector.matrix.android.api.session.room.timeline.TimelineService
|
import im.vector.matrix.android.api.session.room.timeline.TimelineService
|
||||||
import im.vector.matrix.android.internal.database.mapper.asDomain
|
import im.vector.matrix.android.internal.database.mapper.asDomain
|
||||||
|
|
|
@ -22,7 +22,7 @@ import androidx.lifecycle.LiveData
|
||||||
import androidx.paging.PagedList
|
import androidx.paging.PagedList
|
||||||
import com.zhuinden.monarchy.Monarchy
|
import com.zhuinden.monarchy.Monarchy
|
||||||
import im.vector.matrix.android.api.MatrixCallback
|
import im.vector.matrix.android.api.MatrixCallback
|
||||||
import im.vector.matrix.android.api.session.events.model.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.matrix.android.internal.database.model.ChunkEntity
|
import im.vector.matrix.android.internal.database.model.ChunkEntity
|
||||||
import im.vector.matrix.android.internal.database.query.findIncludingEvent
|
import im.vector.matrix.android.internal.database.query.findIncludingEvent
|
||||||
import im.vector.matrix.android.internal.task.TaskExecutor
|
import im.vector.matrix.android.internal.task.TaskExecutor
|
||||||
|
|
Loading…
Add table
Reference in a new issue