Skip to content
Snippets Groups Projects
Commit 4a9e3811 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Hide avatar and nick if the same user is sending consecutive messages

parent 4bed28c9
Branches
Tags
No related merge requests found
......@@ -12,12 +12,13 @@ data class DisplayMessage(
) {
data class Tag(
val id: MsgId,
val isFollowUp: Boolean,
val isSelected: Boolean,
val isExpanded: Boolean,
val isMarkerLine: Boolean
)
val tag = Tag(content.messageId, isSelected, isExpanded, isMarkerLine)
val tag = Tag(content.messageId, content.followUp, isSelected, isExpanded, isMarkerLine)
val avatarUrl = content.sender.let {
Regex("[us]id(\\d+)").matchEntire(HostmaskHelper.user(it))?.groupValues?.lastOrNull()?.let {
"https://www.irccloud.com/avatar-redirect/$it"
......
......@@ -184,6 +184,11 @@ class MessageAdapter(
this.itemView.isSelected = message.isSelected
if (message.isFollowUp) {
name?.visibility = View.GONE
avatar?.visibility = View.GONE
}
avatar?.let { avatarView ->
GlideApp.with(itemView)
.load(message.avatarUrl)
......
......@@ -161,6 +161,7 @@ class QuasselMessageRenderer @Inject constructor(
combined = SpanFormatter.format("%s: %s", nick, content),
avatarUrl = message.avatarUrl,
fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor),
isFollowUp = message.content.followUp,
isMarkerLine = message.isMarkerLine,
isExpanded = message.isExpanded,
isSelected = message.isSelected
......
......@@ -29,15 +29,20 @@
android:typeface="monospace"
tools:text="@sample/messages.json/data/time" />
<ImageView
android:id="@+id/avatar"
android:layout_width="40dp"
android:layout_height="40dp"
<FrameLayout
android:layout_width="@dimen/avatar_size"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/message_vertical"
android:layout_marginEnd="@dimen/message_horizontal"
android:layout_marginRight="@dimen/message_horizontal"
android:layout_marginTop="@dimen/message_vertical"
android:layout_marginTop="@dimen/message_vertical">
<ImageView
android:id="@+id/avatar"
android:layout_width="@dimen/avatar_size"
android:layout_height="@dimen/avatar_size"
android:visibility="gone" />
</FrameLayout>
<LinearLayout
android:layout_width="0dip"
......
......@@ -29,7 +29,8 @@ class QuasselBacklogStorage(private val db: QuasselDatabase) : BacklogStorage {
bufferId = message.bufferInfo.bufferId,
sender = message.sender,
senderPrefixes = message.senderPrefixes,
content = message.content
content = message.content,
followUp = false
)
)
}
......
......@@ -17,7 +17,7 @@ import de.kuschku.quasseldroid.persistence.QuasselDatabase.Filtered
import io.reactivex.Flowable
import org.threeten.bp.Instant
@Database(entities = [DatabaseMessage::class, Filtered::class], version = 3)
@Database(entities = [DatabaseMessage::class, Filtered::class], version = 4)
@TypeConverters(DatabaseMessage.MessageTypeConverters::class)
abstract class QuasselDatabase : RoomDatabase() {
abstract fun message(): MessageDao
......@@ -32,7 +32,8 @@ abstract class QuasselDatabase : RoomDatabase() {
var bufferId: Int,
var sender: String,
var senderPrefixes: String,
var content: String
var content: String,
var followUp: Boolean
) {
class MessageTypeConverters {
@TypeConverter
......@@ -169,7 +170,15 @@ abstract class QuasselDatabase : RoomDatabase() {
"CREATE TABLE filtered(bufferId INTEGER, accountId INTEGER, filtered INTEGER, PRIMARY KEY(accountId, bufferId));"
)
}
}).build()
},
object : Migration(3, 4) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL(
"ALTER TABLE message ADD followUp INT DEFAULT 0 NOT NULL;"
)
}
}
).build()
}
}
}
......@@ -202,7 +211,17 @@ FROM
bufferId,
sender,
senderPrefixes,
content
content,
sender = coalesce((SELECT sender
FROM message m
WHERE m.messageId < message.messageId
AND bufferId = ?
AND type & ~? > 0
AND date(datetime(m.time / 1000, 'unixepoch', 'localtime')) =
date(datetime(message.time / 1000, 'unixepoch', 'localtime'))
ORDER BY m.messageId
DESC
LIMIT 1), 0) AS followUp
FROM message
WHERE bufferId = ?
AND type & ~? > 0
......@@ -215,10 +234,13 @@ FROM
? AS bufferId,
'' AS sender,
'' AS senderPrefixes,
'' AS content
'' AS content,
0 AS followUp
FROM message
WHERE bufferId = ?
AND type & ~? > 0
) t
ORDER BY time DESC, messageId DESC
""", arrayOf(bufferId, type, bufferId, bufferId, type)))
\ No newline at end of file
ORDER BY TIME
DESC, messageId
DESC
""", arrayOf(bufferId, type, bufferId, type, bufferId, bufferId, type)))
\ No newline at end of file
......@@ -10,6 +10,7 @@ class FormattedMessage(
val combined: CharSequence,
val fallbackDrawable: Drawable? = null,
val avatarUrl: String? = null,
val isFollowUp: Boolean = false,
val isSelected: Boolean,
val isExpanded: Boolean,
val isMarkerLine: Boolean
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment