Apply ktlinFormat

This commit is contained in:
ariskotsomitopoulos 2021-12-21 13:23:17 +02:00
parent cc7e3ea78c
commit ed48eb38c9
35 changed files with 28 additions and 75 deletions

View File

@ -21,7 +21,6 @@ import kotlinx.coroutines.flow.Flow
import org.matrix.android.sdk.api.query.QueryStringValue
import org.matrix.android.sdk.api.session.events.model.Event
import org.matrix.android.sdk.api.session.room.Room
import org.matrix.android.sdk.api.session.room.RoomSummaryQueryParams
import org.matrix.android.sdk.api.session.room.members.RoomMemberQueryParams
import org.matrix.android.sdk.api.session.room.model.EventAnnotationsSummary
import org.matrix.android.sdk.api.session.room.model.ReadReceipt

View File

@ -91,5 +91,4 @@ interface TimelineService {
* @param rootThreadEventId the eventId of the current thread
*/
suspend fun markThreadAsRead(rootThreadEventId: String)
}

View File

@ -30,5 +30,4 @@ enum class ThreadNotificationState {
// The is at least one new message that should bi highlighted
// ex. "Hello @aris.kotsomitopoulos"
NEW_HIGHLIGHTED_MESSAGE;
}

View File

@ -26,7 +26,6 @@ import org.matrix.android.sdk.api.session.room.model.VersioningState
import org.matrix.android.sdk.api.session.room.model.create.RoomCreateContent
import org.matrix.android.sdk.api.session.room.model.tag.RoomTag
import org.matrix.android.sdk.api.session.threads.ThreadNotificationState
import org.matrix.android.sdk.internal.database.model.ChunkEntityFields
import org.matrix.android.sdk.internal.database.model.CurrentStateEventEntityFields
import org.matrix.android.sdk.internal.database.model.EditAggregatedSummaryEntityFields
import org.matrix.android.sdk.internal.database.model.EditionOfEventFields
@ -89,7 +88,6 @@ internal class RealmSessionStoreMigration @Inject constructor(
if (oldVersion <= 17) migrateTo18(realm)
if (oldVersion <= 18) migrateTo19(realm)
if (oldVersion <= 19) migrateTo20(realm)
}
private fun migrateTo1(realm: DynamicRealm) {

View File

@ -37,13 +37,10 @@ import org.matrix.android.sdk.internal.database.query.whereRoomId
* of threads included. If there is no root thread event no action is done
*/
internal fun Map<String, EventEntity>.updateThreadSummaryIfNeeded(roomId: String, realm: Realm, currentUserId: String) {
if (!BuildConfig.THREADING_ENABLED) return
for ((rootThreadEventId, eventEntity) in this) {
eventEntity.findAllThreadsForRootEventId(eventEntity.realm, rootThreadEventId).let {
if (it.isNullOrEmpty()) return@let
val latestMessage = it.firstOrNull()
@ -55,7 +52,6 @@ internal fun Map<String, EventEntity>.updateThreadSummaryIfNeeded(roomId: String
threadsCounted = it.size,
latestMessageTimelineEventEntity = latestMessage
)
}
}
@ -175,7 +171,6 @@ internal fun isUserMentioned(currentUserId: String, timelineEventEntity: Timelin
* immediately so we should not display wrong notifications
*/
internal fun updateNotificationsNew(roomId: String, realm: Realm, currentUserId: String) {
val readReceipt = findMyReadReceipt(realm, roomId, currentUserId) ?: return
val readReceiptChunk = ChunkEntity
@ -190,7 +185,7 @@ internal fun updateNotificationsNew(roomId: String, realm: Realm, currentUserId:
val readReceiptChunkPosition = readReceiptChunkTimelineEvents.indexOfFirst { it.eventId == readReceipt }
if(readReceiptChunkPosition == -1) return
if (readReceiptChunkPosition == -1) return
if (readReceiptChunkPosition < readReceiptChunkTimelineEvents.lastIndex) {
// If the read receipt is found inside the chunk

View File

@ -44,7 +44,6 @@ internal open class ChunkEntity(@Index var prevToken: String? = null,
val room: RealmResults<RoomEntity>? = null
companion object
}
internal fun ChunkEntity.deleteOnCascade(deleteStateEvents: Boolean, canDeleteRoot: Boolean) {

View File

@ -95,5 +95,4 @@ internal open class EventEntity(@Index var eventId: String = "",
}
fun isThread(): Boolean = rootThreadEventId != null
}

View File

@ -46,9 +46,6 @@ internal fun ChunkEntity.Companion.findLastForwardChunkOfRoom(realm: Realm, room
.findFirst()
}
internal fun ChunkEntity.Companion.findAllIncludingEvents(realm: Realm, eventIds: List<String>): RealmResults<ChunkEntity> {
return realm.where<ChunkEntity>()
.`in`(ChunkEntityFields.TIMELINE_EVENTS.EVENT_ID, eventIds.toTypedArray())
@ -59,7 +56,6 @@ internal fun ChunkEntity.Companion.findIncludingEvent(realm: Realm, eventId: Str
return findAllIncludingEvents(realm, listOf(eventId)).firstOrNull()
}
internal fun ChunkEntity.Companion.create(
realm: Realm,
prevToken: String?,

View File

@ -49,13 +49,11 @@ internal fun EventEntity.Companion.where(realm: Realm, eventId: String): RealmQu
.equalTo(EventEntityFields.EVENT_ID, eventId)
}
internal fun EventEntity.Companion.whereRoomId(realm: Realm, roomId: String): RealmQuery<EventEntity> {
return realm.where<EventEntity>()
.equalTo(EventEntityFields.ROOM_ID, roomId)
}
internal fun EventEntity.Companion.where(realm: Realm, eventIds: List<String>): RealmQuery<EventEntity> {
return realm.where<EventEntity>()
.`in`(EventEntityFields.EVENT_ID, eventIds.toTypedArray())

View File

@ -25,11 +25,9 @@ import io.realm.kotlin.where
import org.matrix.android.sdk.api.session.room.send.SendState
import org.matrix.android.sdk.api.session.room.timeline.TimelineEventFilters
import org.matrix.android.sdk.internal.database.model.ChunkEntity
import org.matrix.android.sdk.internal.database.model.ChunkEntityFields
import org.matrix.android.sdk.internal.database.model.RoomEntity
import org.matrix.android.sdk.internal.database.model.TimelineEventEntity
import org.matrix.android.sdk.internal.database.model.TimelineEventEntityFields
import timber.log.Timber
internal fun TimelineEventEntity.Companion.where(realm: Realm, roomId: String, eventId: String): RealmQuery<TimelineEventEntity> {
return realm.where<TimelineEventEntity>()

View File

@ -169,7 +169,6 @@ internal class DefaultRelationService @AssistedInject constructor(
autoMarkdown: Boolean,
formattedText: String?,
eventReplied: TimelineEvent?): Cancelable? {
val event = if (eventReplied != null) {
eventFactory.createReplyTextEvent(
roomId = roomId,

View File

@ -258,7 +258,6 @@ internal class DefaultSendService @AssistedInject constructor(
roomIds: Set<String>,
rootThreadEventId: String?
): Cancelable {
// Ensure that the event will not be send in a thread if we are a different flow.
// Like sending files to multiple rooms
val rootThreadId = if (roomIds.isNotEmpty()) null else rootThreadEventId

View File

@ -397,7 +397,6 @@ internal class LocalEchoEventFactory @Inject constructor(
msgType: String,
autoMarkdown: Boolean,
formattedText: String?): Event {
val content = formattedText?.let { TextContent(text, it) } ?: createTextContent(text, autoMarkdown)
return createEvent(
roomId,

View File

@ -180,7 +180,6 @@ internal class DefaultTimeline(
.endGroup()
.sort(TimelineEventEntityFields.DISPLAY_INDEX, Sort.DESCENDING)
.findAll()
} ?: buildEventQuery(realm).sort(TimelineEventEntityFields.DISPLAY_INDEX, Sort.DESCENDING).findAll()
timelineEvents.addChangeListener(eventsChangeListener)
@ -332,7 +331,6 @@ internal class DefaultTimeline(
val firstCacheEvent = results.firstOrNull()
val chunkEntity = getLiveChunk()
updateState(Timeline.Direction.FORWARDS) {
it.copy(
hasMoreInCache = !builtEventsIdMap.containsKey(firstCacheEvent?.eventId), // what is in DB
@ -340,7 +338,6 @@ internal class DefaultTimeline(
)
}
updateState(Timeline.Direction.BACKWARDS) {
it.copy(
hasMoreInCache = !builtEventsIdMap.containsKey(lastCacheEvent?.eventId),
hasReachedEnd = if (isFromThreadTimeline) true else chunkEntity?.isLastBackward ?: false || lastCacheEvent?.root?.type == EventType.STATE_ROOM_CREATE
@ -497,7 +494,6 @@ internal class DefaultTimeline(
* This has to be called on TimelineThread as it accesses realm live results
*/
private fun executePaginationTask(direction: Timeline.Direction, limit: Int) {
val currentChunk = getLiveChunk()
val token = if (direction == Timeline.Direction.BACKWARDS) currentChunk?.prevToken else currentChunk?.nextToken
if (token == null) {
@ -604,8 +600,7 @@ internal class DefaultTimeline(
nextDisplayIndex = offsetIndex + 1
}
if(!BuildConfig.THREADING_ENABLED) {
if (!BuildConfig.THREADING_ENABLED) {
// Prerequisite to in order for the ThreadsAwarenessHandler to work properly
fetchRootThreadEventsIfNeeded(offsetResults)
}

View File

@ -21,7 +21,6 @@ import org.matrix.android.sdk.internal.network.executeRequest
import org.matrix.android.sdk.internal.session.filter.FilterRepository
import org.matrix.android.sdk.internal.session.room.RoomAPI
import org.matrix.android.sdk.internal.task.Task
import timber.log.Timber
import javax.inject.Inject
internal interface PaginationTask : Task<PaginationTask.Params, TokenChunkEventPersistor.Result> {

View File

@ -115,7 +115,6 @@ internal class TimelineEventDecryptor @Inject constructor(
.findFirst()
eventEntity?.apply {
val decryptedPayload =
if (!BuildConfig.THREADING_ENABLED) {
threadsAwarenessHandler.handleIfNeededDuringDecryption(

View File

@ -238,7 +238,6 @@ internal class TokenChunkEventPersistor @Inject constructor(
// This is a normal event or a root thread one
optimizedThreadSummaryMap[eventEntity.eventId] = eventEntity
}
}
// Find all the chunks which contain at least one event from the list of eventIds

View File

@ -102,7 +102,7 @@ internal class SyncResponseHandler @Inject constructor(
val aggregator = SyncResponsePostTreatmentAggregator()
// Prerequisite for thread events handling in RoomSyncHandler
if(!BuildConfig.THREADING_ENABLED) {
if (!BuildConfig.THREADING_ENABLED) {
threadsAwarenessHandler.fetchRootThreadEventsIfNeeded(syncResponse)
}

View File

@ -376,7 +376,7 @@ internal class RoomSyncHandler @Inject constructor(private val readReceiptHandle
decryptIfNeeded(event, roomId)
}
if(!BuildConfig.THREADING_ENABLED) {
if (!BuildConfig.THREADING_ENABLED) {
threadsAwarenessHandler.handleIfNeeded(
realm = realm,
roomId = roomId,

View File

@ -45,7 +45,6 @@ import org.matrix.android.sdk.internal.session.permalinks.PermalinkFactory
import org.matrix.android.sdk.internal.session.room.send.LocalEchoEventFactory
import org.matrix.android.sdk.internal.session.room.timeline.GetEventTask
import org.matrix.android.sdk.internal.util.awaitTransaction
import timber.log.Timber
import javax.inject.Inject
/**

View File

@ -25,10 +25,7 @@ import im.vector.app.BuildConfig
import im.vector.app.features.autocomplete.AutocompleteClickListener
import im.vector.app.features.autocomplete.RecyclerViewPresenter
import im.vector.app.features.command.Command
import im.vector.app.features.home.room.detail.AutoCompleter
import im.vector.app.features.settings.VectorPreferences
import timber.log.Timber
import javax.inject.Inject
class AutocompleteCommandPresenter @AssistedInject constructor(
@Assisted val isInThreadTimeline: Boolean,
@ -62,8 +59,9 @@ class AutocompleteCommandPresenter @AssistedInject constructor(
.filter {
if (BuildConfig.THREADING_ENABLED && isInThreadTimeline) {
it.isThreadCommand
} else
} else {
true
}
}
.filter {
if (query.isNullOrEmpty()) {

View File

@ -64,14 +64,14 @@ object CommandParser {
// If the command is not supported by threads return error
if(BuildConfig.THREADING_ENABLED && isInThreadTimeline){
if (BuildConfig.THREADING_ENABLED && isInThreadTimeline) {
val slashCommand = messageParts.first()
val notSupportedCommandsInThreads = Command.values().filter {
!it.isThreadCommand
}.map {
it.command
}
if(notSupportedCommandsInThreads.contains(slashCommand)){
if (notSupportedCommandsInThreads.contains(slashCommand)) {
return ParsedCommand.ErrorCommandNotSupportedInThreads(slashCommand)
}
}

View File

@ -37,8 +37,8 @@ import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivityRoomDetailBinding
import im.vector.app.features.home.room.breadcrumbs.BreadcrumbsFragment
import im.vector.app.features.home.room.detail.timeline.helper.VoiceMessagePlaybackTracker
import im.vector.app.features.home.room.detail.arguments.TimelineArgs
import im.vector.app.features.home.room.detail.timeline.helper.VoiceMessagePlaybackTracker
import im.vector.app.features.matrixto.MatrixToBottomSheet
import im.vector.app.features.navigation.Navigator
import im.vector.app.features.room.RequireActiveMembershipAction

View File

@ -89,5 +89,4 @@ data class RoomDetailViewState(
fun isDm() = asyncRoomSummary()?.isDirect == true
fun isThreadTimeline() = rootThreadEventId != null
}

View File

@ -63,8 +63,6 @@ import com.airbnb.epoxy.EpoxyModel
import com.airbnb.epoxy.OnModelBuildFinishedListener
import com.airbnb.epoxy.addGlidePreloader
import com.airbnb.epoxy.glidePreloader
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.activityViewModel
import com.airbnb.mvrx.args
import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState
@ -136,7 +134,6 @@ import im.vector.app.features.command.Command
import im.vector.app.features.crypto.keysbackup.restore.KeysBackupRestoreActivity
import im.vector.app.features.crypto.verification.VerificationBottomSheet
import im.vector.app.features.home.AvatarRenderer
import im.vector.app.features.home.UnreadMessagesSharedViewModel
import im.vector.app.features.home.room.detail.arguments.TimelineArgs
import im.vector.app.features.home.room.detail.composer.MessageComposerAction
import im.vector.app.features.home.room.detail.composer.MessageComposerView
@ -975,7 +972,6 @@ class TimelineFragment @Inject constructor(
}
override fun onPrepareOptionsMenu(menu: Menu) {
menu.forEach {
it.isVisible = roomDetailViewModel.isMenuItemVisible(it.itemId)
}
@ -1014,7 +1010,6 @@ class TimelineFragment @Inject constructor(
// Handle custom threads badge notification
updateMenuThreadNotificationBadge(menu, state)
}
}
@ -1057,7 +1052,6 @@ class TimelineFragment @Inject constructor(
val permalink = session.permalinkService().createPermalink(timelineArgs.roomId, it)
copyToClipboard(requireContext(), permalink, false)
showSnackWithMessage(getString(R.string.copied_to_clipboard))
}
true
}
@ -1109,7 +1103,6 @@ class TimelineFragment @Inject constructor(
val int = RoomDetailActivity.newIntent(con, newRoom)
int.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK
con.startActivity(int)
}
}
}
@ -1388,7 +1381,7 @@ class TimelineFragment @Inject constructor(
}
private fun updateJumpToReadMarkerViewVisibility() {
if(isThreadTimeLine()) return
if (isThreadTimeLine()) return
viewLifecycleOwner.lifecycleScope.launchWhenResumed {
withState(roomDetailViewModel) {
val showJumpToUnreadBanner = when (it.unreadState) {
@ -1488,7 +1481,7 @@ class TimelineFragment @Inject constructor(
}
private fun observerUserTyping() {
if(isThreadTimeLine()) return
if (isThreadTimeLine()) return
views.composerLayout.views.composerEditText.textChanges()
.skipInitialValue()
.debounce(300)
@ -1774,7 +1767,6 @@ class TimelineFragment @Inject constructor(
if (roomId != timelineArgs.roomId) return false
// Navigation to same room
if (!isThreadTimeLine()) {
if (rootThreadEventId != null) {
// Thread link, so PermalinkHandler will handle the navigation
return false

View File

@ -35,7 +35,7 @@ sealed class MessageComposerAction : VectorViewModelAction {
data class InitializeVoiceRecorder(val attachmentData: ContentAttachmentData) : MessageComposerAction()
data class OnVoiceRecordingUiStateChanged(val uiState: VoiceMessageRecorderView.RecordingUiState) : MessageComposerAction()
object StartRecordingVoiceMessage : MessageComposerAction()
data class EndRecordingVoiceMessage(val isCancelled: Boolean,val rootThreadEventId: String?) : MessageComposerAction()
data class EndRecordingVoiceMessage(val isCancelled: Boolean, val rootThreadEventId: String?) : MessageComposerAction()
object PauseRecordingVoiceMessage : MessageComposerAction()
data class PlayOrPauseVoicePlayback(val eventId: String, val messageAudioContent: MessageAudioContent) : MessageComposerAction()
object PlayOrPauseRecordingPlayback : MessageComposerAction()

View File

@ -30,7 +30,6 @@ import im.vector.app.features.attachments.toContentAttachmentData
import im.vector.app.features.command.CommandParser
import im.vector.app.features.command.ParsedCommand
import im.vector.app.features.home.room.detail.ChatEffect
import im.vector.app.features.home.room.detail.TimelineFragment
import im.vector.app.features.home.room.detail.composer.rainbow.RainbowGenerator
import im.vector.app.features.home.room.detail.composer.voice.VoiceMessageRecorderView
import im.vector.app.features.home.room.detail.toMessageType
@ -167,13 +166,14 @@ class MessageComposerViewModel @AssistedInject constructor(
when (val slashCommandResult = CommandParser.parseSplashCommand(action.text, state.isInThreadTimeline())) {
is ParsedCommand.ErrorNotACommand -> {
// Send the text message to the room
if (state.rootThreadEventId != null)
if (state.rootThreadEventId != null) {
room.replyInThread(
rootThreadEventId = state.rootThreadEventId,
replyInThreadText = action.text.toString(),
autoMarkdown = action.autoMarkdown)
else
} else {
room.sendTextMessage(action.text, autoMarkdown = action.autoMarkdown)
}
_viewEvents.post(MessageComposerViewEvents.MessageSent)
popDraft()
@ -192,13 +192,14 @@ class MessageComposerViewModel @AssistedInject constructor(
}
is ParsedCommand.SendPlainText -> {
// Send the text message to the room, without markdown
if (state.rootThreadEventId != null)
if (state.rootThreadEventId != null) {
room.replyInThread(
rootThreadEventId = state.rootThreadEventId,
replyInThreadText = action.text.toString(),
autoMarkdown = false)
else
} else {
room.sendTextMessage(slashCommandResult.message, autoMarkdown = false)
}
_viewEvents.post(MessageComposerViewEvents.MessageSent)
popDraft()
}
@ -258,7 +259,6 @@ class MessageComposerViewModel @AssistedInject constructor(
popDraft()
}
is ParsedCommand.SendRainbow -> {
val message = slashCommandResult.message.toString()
state.rootThreadEventId?.let {
room.replyInThread(
@ -283,7 +283,6 @@ class MessageComposerViewModel @AssistedInject constructor(
popDraft()
}
is ParsedCommand.SendSpoiler -> {
val text = "[${stringProvider.getString(R.string.spoiler)}](${slashCommandResult.message})"
val formattedText = "<span data-mx-spoiler>${slashCommandResult.message}</span>"
state.rootThreadEventId?.let {
@ -299,7 +298,6 @@ class MessageComposerViewModel @AssistedInject constructor(
popDraft()
}
is ParsedCommand.SendShrug -> {
sendPrefixedMessage("¯\\_(ツ)_/¯", slashCommandResult.message, state.rootThreadEventId)
_viewEvents.post(MessageComposerViewEvents.SlashCommandResultOk())
popDraft()

View File

@ -105,7 +105,7 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec
rootThreadEventId = state.rootThreadEventId
)
fun isFromThreadTimeline():Boolean = rootThreadEventId != null
fun isFromThreadTimeline(): Boolean = rootThreadEventId != null
}
interface Callback :
@ -200,7 +200,7 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec
// it's sent by the same user so we are sure we have up to date information.
val invalidatedSenderId: String? = currentSnapshot.getOrNull(position)?.senderInfo?.userId
val prevDisplayableEventIndex = currentSnapshot.subList(0, position).indexOfLast {
timelineEventVisibilityHelper.shouldShowEvent(it, partialState.highlightedEventId, partialState.isFromThreadTimeline() )
timelineEventVisibilityHelper.shouldShowEvent(it, partialState.highlightedEventId, partialState.isFromThreadTimeline())
}
if (prevDisplayableEventIndex != -1 && currentSnapshot[prevDisplayableEventIndex].senderInfo.userId == invalidatedSenderId) {
modelCache[prevDisplayableEventIndex] = null

View File

@ -128,7 +128,7 @@ class TimelineEventVisibilityHelper @Inject constructor(private val userPreferen
return true
}
if(BuildConfig.THREADING_ENABLED && !isFromThreadTimeline && root.isThread() && root.getRootThreadEventId() != null){
if (BuildConfig.THREADING_ENABLED && !isFromThreadTimeline && root.isThread() && root.getRootThreadEventId() != null) {
return true
}

View File

@ -127,6 +127,7 @@ abstract class AbsBaseMessageItem<H : AbsBaseMessageItem.Holder> : BaseEventItem
val messageColorProvider: MessageColorProvider
val itemLongClickListener: View.OnLongClickListener?
val itemClickListener: ClickListener?
// val memberClickListener: ClickListener?
val reactionPillCallback: TimelineEventController.ReactionPillCallback?

View File

@ -124,10 +124,10 @@ abstract class AbsMessageItem<H : AbsMessageItem.Holder> : AbsBaseMessageItem<H>
val displayName = threadDetails.threadSummarySenderInfo?.displayName
val avatarUrl = threadDetails.threadSummarySenderInfo?.avatarUrl
attributes.avatarRenderer.render(MatrixItem.UserItem(userId, displayName, avatarUrl), holder.threadSummaryAvatarImageView)
updateHighlightedMessageHeight(holder,true)
updateHighlightedMessageHeight(holder, true)
} ?: run {
holder.threadSummaryConstraintLayout.isVisible = false
updateHighlightedMessageHeight(holder,false)
updateHighlightedMessageHeight(holder, false)
}
}
}

View File

@ -29,8 +29,8 @@ import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivityThreadsBinding
import im.vector.app.features.home.AvatarRenderer
import im.vector.app.features.home.room.detail.arguments.TimelineArgs
import im.vector.app.features.home.room.detail.TimelineFragment
import im.vector.app.features.home.room.detail.arguments.TimelineArgs
import im.vector.app.features.home.room.threads.arguments.ThreadListArgs
import im.vector.app.features.home.room.threads.arguments.ThreadTimelineArgs
import im.vector.app.features.home.room.threads.list.views.ThreadListFragment
@ -152,7 +152,6 @@ class ThreadsActivity : VectorBaseActivity<ActivityThreadsBinding>(), ToolbarCon
putExtra(THREAD_TIMELINE_ARGS, threadTimelineArgs)
putExtra(THREAD_EVENT_ID_TO_NAVIGATE, eventIdToNavigate)
putExtra(THREAD_LIST_ARGS, threadListArgs)
}
}
}

View File

@ -77,15 +77,14 @@ abstract class ThreadListModel : VectorEpoxyModel<ThreadListModel.Holder>() {
}
private fun renderNotificationState(holder: Holder) {
when (threadNotificationState) {
ThreadNotificationState.NEW_MESSAGE -> {
holder.unreadImageView.isVisible = true
holder.unreadImageView.setColorFilter(ContextCompat.getColor(holder.view.context, R.color.palette_gray_200));
holder.unreadImageView.setColorFilter(ContextCompat.getColor(holder.view.context, R.color.palette_gray_200))
}
ThreadNotificationState.NEW_HIGHLIGHTED_MESSAGE -> {
holder.unreadImageView.isVisible = true
holder.unreadImageView.setColorFilter(ContextCompat.getColor(holder.view.context, R.color.palette_vermilion));
holder.unreadImageView.setColorFilter(ContextCompat.getColor(holder.view.context, R.color.palette_vermilion))
}
else -> {
holder.unreadImageView.isVisible = false

View File

@ -26,7 +26,7 @@ data class ThreadListViewState(
val rootThreadEventList: Async<List<ThreadTimelineEvent>> = Uninitialized,
val shouldFilterThreads: Boolean = false,
val roomId: String
) : MavericksState{
) : MavericksState {
constructor(args: ThreadListArgs) : this(roomId = args.roomId)
}

View File

@ -154,5 +154,4 @@ interface Navigator {
fun openThread(context: Context, threadTimelineArgs: ThreadTimelineArgs, eventIdToNavigate: String? = null)
fun openThreadList(context: Context, threadTimelineArgs: ThreadTimelineArgs)
}