diff --git a/changelog.d/5128.bugfix b/changelog.d/5128.bugfix new file mode 100644 index 0000000000..d26d0047a5 --- /dev/null +++ b/changelog.d/5128.bugfix @@ -0,0 +1 @@ +Fix fallback permalink when threads are disabled \ No newline at end of file diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt index 1deed976bb..93af33fd4a 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt @@ -88,6 +88,7 @@ import im.vector.app.core.platform.VectorBaseFragment import im.vector.app.core.platform.lifecycleAwareLazy import im.vector.app.core.platform.showOptimizedSnackbar import im.vector.app.core.resources.ColorProvider +import im.vector.app.core.resources.UserPreferencesProvider import im.vector.app.core.time.Clock import im.vector.app.core.ui.views.CurrentCallsView import im.vector.app.core.ui.views.CurrentCallsViewPresenter @@ -253,6 +254,7 @@ class TimelineFragment @Inject constructor( private val vectorPreferences: VectorPreferences, private val colorProvider: ColorProvider, private val dimensionConverter: DimensionConverter, + private val userPreferencesProvider: UserPreferencesProvider, private val notificationUtils: NotificationUtils, private val matrixItemColorProvider: MatrixItemColorProvider, private val imageContentRenderer: ImageContentRenderer, @@ -1804,7 +1806,7 @@ class TimelineFragment @Inject constructor( if (roomId != timelineArgs.roomId) return false // Navigation to same room if (!isThreadTimeLine()) { - if (rootThreadEventId != null) { + if (rootThreadEventId != null && userPreferencesProvider.areThreadMessagesEnabled()) { // Thread link, so PermalinkHandler will handle the navigation return false } diff --git a/vector/src/main/java/im/vector/app/features/permalink/PermalinkHandler.kt b/vector/src/main/java/im/vector/app/features/permalink/PermalinkHandler.kt index 87cbf44f04..b67e779a33 100644 --- a/vector/src/main/java/im/vector/app/features/permalink/PermalinkHandler.kt +++ b/vector/src/main/java/im/vector/app/features/permalink/PermalinkHandler.kt @@ -22,6 +22,7 @@ import androidx.core.net.toUri import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.extensions.isIgnored +import im.vector.app.core.resources.UserPreferencesProvider import im.vector.app.core.utils.toast import im.vector.app.features.home.room.threads.arguments.ThreadTimelineArgs import im.vector.app.features.navigation.Navigator @@ -40,6 +41,7 @@ import org.matrix.android.sdk.api.session.room.model.RoomType import javax.inject.Inject class PermalinkHandler @Inject constructor(private val activeSessionHolder: ActiveSessionHolder, + private val userPreferencesProvider: UserPreferencesProvider, private val navigator: Navigator) { suspend fun launch( @@ -200,15 +202,17 @@ class PermalinkHandler @Inject constructor(private val activeSessionHolder: Acti roomSummary: RoomSummary ) { if (this?.navToRoom(roomId, eventId, rawLink, rootThreadEventId) != true) { - rootThreadEventId?.let { + if (rootThreadEventId != null && userPreferencesProvider.areThreadMessagesEnabled()) { val threadTimelineArgs = ThreadTimelineArgs( roomId = roomId, displayName = roomSummary.displayName, avatarUrl = roomSummary.avatarUrl, roomEncryptionTrustLevel = roomSummary.roomEncryptionTrustLevel, - rootThreadEventId = it) + rootThreadEventId = rootThreadEventId) navigator.openThread(context, threadTimelineArgs, eventId) - } ?: navigator.openRoom(context, roomId, eventId, buildTask) + } else { + navigator.openRoom(context, roomId, eventId, buildTask) + } } }