Read receipts: clean code after review

This commit is contained in:
ganfra 2019-08-19 14:08:15 +02:00
parent 501474b720
commit fd74e3dfb1
5 changed files with 25 additions and 13 deletions

View File

@ -2,7 +2,7 @@ Changes in RiotX 0.4.0 (2019-XX-XX)
=================================================== ===================================================


Features: Features:
- Display read receipts in timeline - Display read receipts in timeline (#81)


Improvements: Improvements:
- -

View File

@ -18,6 +18,6 @@ package im.vector.matrix.android.internal.database.query


internal object FilterContent { internal object FilterContent {


internal const val EDIT_TYPE = "{*\"m.relates_to\"*\"rel_type\":*\"m.replace\"*}" internal const val EDIT_TYPE = """{*"m.relates_to"*"rel_type":*"m.replace"*}"""


} }

View File

@ -31,6 +31,11 @@ import io.realm.Realm
import io.realm.RealmQuery import io.realm.RealmQuery
import io.realm.RealmResults import io.realm.RealmResults


/**
* This class is responsible for handling the read receipts for hidden events (check [TimelineSettings] to see filtering).
* When an hidden event has read receipts, we want to transfer these read receipts on the first older displayed event.
* It has to be used in [DefaultTimeline] and we should call the [start] and [dispose] methods to properly handle realm subscription.
*/
internal class TimelineHiddenReadReceipts constructor(private val readReceiptsSummaryMapper: ReadReceiptsSummaryMapper, internal class TimelineHiddenReadReceipts constructor(private val readReceiptsSummaryMapper: ReadReceiptsSummaryMapper,
private val roomId: String, private val roomId: String,
private val settings: TimelineSettings) { private val settings: TimelineSettings) {
@ -95,7 +100,9 @@ internal class TimelineHiddenReadReceipts constructor(private val readReceiptsSu
} }
} }



/**
* Start the realm query subscription. Has to be called on an HandlerThread
*/
fun start(realm: Realm, liveEvents: RealmResults<TimelineEventEntity>, delegate: Delegate) { fun start(realm: Realm, liveEvents: RealmResults<TimelineEventEntity>, delegate: Delegate) {
this.liveEvents = liveEvents this.liveEvents = liveEvents
this.delegate = delegate this.delegate = delegate
@ -109,10 +116,16 @@ internal class TimelineHiddenReadReceipts constructor(private val readReceiptsSu
.also { it.addChangeListener(hiddenReadReceiptsListener) } .also { it.addChangeListener(hiddenReadReceiptsListener) }
} }


/**
* Dispose the realm query subscription. Has to be called on an HandlerThread
*/
fun dispose() { fun dispose() {
this.hiddenReadReceipts?.removeAllChangeListeners() this.hiddenReadReceipts.removeAllChangeListeners()
} }


/**
* Return the current corrected [ReadReceipt] list for an event, or null
*/
fun correctedReadReceipts(eventId: String?): List<ReadReceipt>? { fun correctedReadReceipts(eventId: String?): List<ReadReceipt>? {
return correctedReadReceiptsByEvent[eventId] return correctedReadReceiptsByEvent[eventId]
} }

View File

@ -3,11 +3,10 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="44dp" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingEnd="8dp"> android:paddingEnd="8dp">


<ImageView <ImageView
@ -22,11 +21,12 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
android:layout_weight="1" android:layout_weight="1"
android:ellipsize="end" android:ellipsize="end"
android:lines="1" android:lines="1"
android:textColor="?android:textColorPrimary" android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textColor="?riotx_text_primary"
android:textSize="16sp" android:textSize="16sp"
tools:text="@sample/matrix.json/data/displayName" /> tools:text="@sample/matrix.json/data/displayName" />


@ -35,9 +35,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:lines="1" android:lines="1"
android:textColor="?android:textColorSecondary" android:textColor="?riotx_text_secondary"
android:textSize="12sp" android:textSize="12sp"
tools:text="10:44" /> tools:text="10:44" />



</LinearLayout> </LinearLayout>

View File

@ -2,11 +2,10 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="44dp" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingEnd="8dp"> android:paddingEnd="8dp">


<TextView <TextView
@ -26,7 +25,8 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginLeft="4dp" android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_weight="1" android:layout_weight="1"
android:ellipsize="end" android:ellipsize="end"
android:lines="1" android:lines="1"