mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-03-18 20:29:10 +03:00
Apply ktlinFormat
This commit is contained in:
parent
cc7e3ea78c
commit
ed48eb38c9
35 changed files with 28 additions and 75 deletions
|
@ -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
|
||||
|
|
|
@ -91,5 +91,4 @@ interface TimelineService {
|
|||
* @param rootThreadEventId the eventId of the current thread
|
||||
*/
|
||||
suspend fun markThreadAsRead(rootThreadEventId: String)
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -95,5 +95,4 @@ internal open class EventEntity(@Index var eventId: String = "",
|
|||
}
|
||||
|
||||
fun isThread(): Boolean = rootThreadEventId != null
|
||||
|
||||
}
|
||||
|
|
|
@ -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?,
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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>()
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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> {
|
||||
|
|
|
@ -115,7 +115,6 @@ internal class TimelineEventDecryptor @Inject constructor(
|
|||
.findFirst()
|
||||
|
||||
eventEntity?.apply {
|
||||
|
||||
val decryptedPayload =
|
||||
if (!BuildConfig.THREADING_ENABLED) {
|
||||
threadsAwarenessHandler.handleIfNeededDuringDecryption(
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
||||
/**
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -89,5 +89,4 @@ data class RoomDetailViewState(
|
|||
fun isDm() = asyncRoomSummary()?.isDirect == true
|
||||
|
||||
fun isThreadTimeline() = rootThreadEventId != null
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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?
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -154,5 +154,4 @@ interface Navigator {
|
|||
fun openThread(context: Context, threadTimelineArgs: ThreadTimelineArgs, eventIdToNavigate: String? = null)
|
||||
|
||||
fun openThreadList(context: Context, threadTimelineArgs: ThreadTimelineArgs)
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue