diff --git a/.github/workflows/triage-move-labelled.yml b/.github/workflows/triage-move-labelled.yml
index 39f7a5de09..124233c5e3 100644
--- a/.github/workflows/triage-move-labelled.yml
+++ b/.github/workflows/triage-move-labelled.yml
@@ -47,45 +47,30 @@ jobs:
PROJECT_ID: "PN_kwDOAM0swc0sUA"
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
- spaces_issues_to_old_board:
- name: Spaces issues to old Delight project board
- runs-on: ubuntu-latest
- if: >
- contains(github.event.issue.labels.*.name, 'A-Spaces') ||
- contains(github.event.issue.labels.*.name, 'A-Space-Settings') ||
- contains(github.event.issue.labels.*.name, 'A-Subspaces')
- steps:
- - uses: konradpabjan/move-labeled-or-milestoned-issue@219d384e03fa4b6460cd24f9f37d19eb033a4338
- with:
- action-token: "${{ secrets.ELEMENT_BOT_TOKEN }}"
- project-url: "https://github.com/orgs/vector-im/projects/6"
- column-name: "š„ Inbox"
- label-name: "A-Spaces"
-
- spaces_issues_to_new_board:
- name: Spaces issues to new Delight project board
- runs-on: ubuntu-latest
- if: >
- contains(github.event.issue.labels.*.name, 'A-Spaces') ||
- contains(github.event.issue.labels.*.name, 'A-Space-Settings') ||
- contains(github.event.issue.labels.*.name, 'A-Subspaces')
- steps:
- - uses: octokit/graphql-action@v2.x
- with:
- headers: '{"GraphQL-Features": "projects_next_graphql"}'
- query: |
- mutation add_to_project($projectid:String!,$contentid:String!) {
- addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
- projectNextItem {
- id
- }
- }
- }
- projectid: ${{ env.PROJECT_ID }}
- contentid: ${{ github.event.issue.node_id }}
- env:
- PROJECT_ID: "PN_kwDOAM0swc1HvQ"
- GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
+# delight_issues_to_board:
+# name: Spaces issues to new Delight project board
+# runs-on: ubuntu-latest
+# if: >
+# contains(github.event.issue.labels.*.name, 'A-Spaces') ||
+# contains(github.event.issue.labels.*.name, 'A-Space-Settings') ||
+# contains(github.event.issue.labels.*.name, 'A-Subspaces')
+# steps:
+# - uses: octokit/graphql-action@v2.x
+# with:
+# headers: '{"GraphQL-Features": "projects_next_graphql"}'
+# query: |
+# mutation add_to_project($projectid:String!,$contentid:String!) {
+# addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
+# projectNextItem {
+# id
+# }
+# }
+# }
+# projectid: ${{ env.PROJECT_ID }}
+# contentid: ${{ github.event.issue.node_id }}
+# env:
+# PROJECT_ID: "PN_kwDOAM0swc1HvQ"
+# GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
move_voice-message_issues:
name: A-Voice Messages to voice message board
diff --git a/build.gradle b/build.gradle
index 4c3734892d..89825428fb 100644
--- a/build.gradle
+++ b/build.gradle
@@ -38,12 +38,12 @@ allprojects {
repositories {
// For olm library. This has to be declared first, to ensure that Olm library is not downloaded from another repo
+ maven { url 'https://gitlab.matrix.org/api/v4/projects/27/packages/maven' }
+
maven {
url 'https://jitpack.io'
content {
- // Use this repo only for olm library
- includeGroupByRegex "org\\.matrix\\.gitlab\\.matrix-org"
- // And also for FilePicker
+ // Use this repo only for FilePicker
includeGroupByRegex "com\\.github\\.jaiselrahman"
// And monarchy
includeGroupByRegex "com\\.github\\.Zhuinden"
diff --git a/changelog.d/4278.feature b/changelog.d/4278.feature
new file mode 100644
index 0000000000..fe82755186
--- /dev/null
+++ b/changelog.d/4278.feature
@@ -0,0 +1 @@
+Updates URL previews to match latest designs
\ No newline at end of file
diff --git a/changelog.d/4647.misc b/changelog.d/4647.misc
new file mode 100644
index 0000000000..a33afba138
--- /dev/null
+++ b/changelog.d/4647.misc
@@ -0,0 +1 @@
+ Upgrade OLM to v3.2.7 and get it from our maven repository.
\ No newline at end of file
diff --git a/dependencies.gradle b/dependencies.gradle
index aa57546de0..4a076a23bd 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -7,7 +7,7 @@ ext.versions = [
'targetCompat' : JavaVersion.VERSION_11,
]
-def gradle = "7.0.3"
+def gradle = "7.0.4"
// Ref: https://kotlinlang.org/releases.html
def kotlin = "1.5.31"
def kotlinCoroutines = "1.5.2"
@@ -19,7 +19,7 @@ def moshi = "1.12.0"
def lifecycle = "2.4.0"
def flowBinding = "1.2.0"
def epoxy = "4.6.2"
-def mavericks = "2.4.0"
+def mavericks = "2.5.0"
def glide = "4.12.0"
def bigImageViewer = "1.8.1"
def jjwt = "0.11.2"
diff --git a/library/ui-styles/src/main/res/values/dimens.xml b/library/ui-styles/src/main/res/values/dimens.xml
index 519920786c..864f3d3d7f 100644
--- a/library/ui-styles/src/main/res/values/dimens.xml
+++ b/library/ui-styles/src/main/res/values/dimens.xml
@@ -39,4 +39,7 @@
320dp
+
+
+ 8dp
\ No newline at end of file
diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle
index e37231097d..477f971e04 100644
--- a/matrix-sdk-android/build.gradle
+++ b/matrix-sdk-android/build.gradle
@@ -9,7 +9,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath "io.realm:realm-gradle-plugin:10.8.1"
+ classpath "io.realm:realm-gradle-plugin:10.9.0"
}
}
@@ -140,8 +140,8 @@ dependencies {
implementation libs.arrow.core
implementation libs.arrow.instances
- // olm lib is now hosted by jitpack: https://jitpack.io/#org.matrix.gitlab.matrix-org/olm
- implementation 'org.matrix.gitlab.matrix-org:olm:3.2.4'
+ // olm lib is now hosted by maven at https://gitlab.matrix.org/api/v4/projects/27/packages/maven
+ implementation 'org.matrix.android:olm:3.2.7'
// DI
implementation libs.dagger.dagger
@@ -158,7 +158,7 @@ dependencies {
implementation libs.apache.commonsImaging
// Phone number https://github.com/google/libphonenumber
- implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.38'
+ implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.39'
testImplementation libs.tests.junit
testImplementation 'org.robolectric:robolectric:4.7.3'
diff --git a/vector/build.gradle b/vector/build.gradle
index d29f36c877..26bfd3badf 100644
--- a/vector/build.gradle
+++ b/vector/build.gradle
@@ -141,7 +141,6 @@ android {
resValue "string", "build_number", "\"${buildNumber}\""
buildConfigField "im.vector.app.features.VectorFeatures.LoginVersion", "LOGIN_VERSION", "im.vector.app.features.VectorFeatures.LoginVersion.V1"
- buildConfigField "im.vector.app.features.VectorFeatures.NotificationSettingsVersion", "NOTIFICATION_SETTINGS_VERSION", "im.vector.app.features.VectorFeatures.NotificationSettingsVersion.V2"
buildConfigField "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy", "outboundSessionKeySharingStrategy", "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy.WhenTyping"
@@ -365,7 +364,7 @@ dependencies {
implementation 'com.facebook.stetho:stetho:1.6.0'
// Phone number https://github.com/google/libphonenumber
- implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.38'
+ implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.39'
// FlowBinding
implementation libs.github.flowBinding
diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsNotificationsRobot.kt b/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsNotificationsRobot.kt
index 4dddc4c9cc..433a70b5e3 100644
--- a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsNotificationsRobot.kt
+++ b/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsNotificationsRobot.kt
@@ -18,29 +18,19 @@ package im.vector.app.ui.robot.settings
import androidx.test.espresso.Espresso.pressBack
import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn
-import im.vector.app.BuildConfig
import im.vector.app.R
import im.vector.app.espresso.tools.clickOnPreference
-import im.vector.app.features.VectorFeatures
class SettingsNotificationsRobot {
fun crawl() {
- when (BuildConfig.NOTIFICATION_SETTINGS_VERSION!!) {
- VectorFeatures.NotificationSettingsVersion.V1 -> {
- clickOn(R.string.settings_notification_advanced)
- pressBack()
- }
- VectorFeatures.NotificationSettingsVersion.V2 -> {
- clickOn(R.string.settings_notification_default)
- pressBack()
- clickOn(R.string.settings_notification_mentions_and_keywords)
- // TODO Test adding a keyword?
- pressBack()
- clickOn(R.string.settings_notification_other)
- pressBack()
- }
- }
+ clickOn(R.string.settings_notification_default)
+ pressBack()
+ clickOn(R.string.settings_notification_mentions_and_keywords)
+ // TODO Test adding a keyword?
+ pressBack()
+ clickOn(R.string.settings_notification_other)
+ pressBack()
/*
clickOn(R.string.settings_noisy_notifications_preferences)
diff --git a/vector/src/main/java/im/vector/app/core/ui/views/SendStateImageView.kt b/vector/src/main/java/im/vector/app/core/ui/views/SendStateImageView.kt
index cb1d08d2e5..3d710e2b24 100644
--- a/vector/src/main/java/im/vector/app/core/ui/views/SendStateImageView.kt
+++ b/vector/src/main/java/im/vector/app/core/ui/views/SendStateImageView.kt
@@ -20,7 +20,7 @@ import android.content.Context
import android.content.res.ColorStateList
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatImageView
-import androidx.core.view.isVisible
+import androidx.core.view.isInvisible
import im.vector.app.R
import im.vector.app.features.home.room.detail.timeline.item.SendStateDecoration
import im.vector.app.features.themes.ThemeUtils
@@ -38,28 +38,28 @@ class SendStateImageView @JvmOverloads constructor(
}
fun render(sendState: SendStateDecoration) {
- isVisible = when (sendState) {
+ isInvisible = when (sendState) {
SendStateDecoration.SENDING_NON_MEDIA -> {
setImageResource(R.drawable.ic_sending_message)
imageTintList = ColorStateList.valueOf(ThemeUtils.getColor(context, R.attr.vctr_content_tertiary))
contentDescription = context.getString(R.string.event_status_a11y_sending)
- true
+ false
}
SendStateDecoration.SENT -> {
setImageResource(R.drawable.ic_message_sent)
imageTintList = ColorStateList.valueOf(ThemeUtils.getColor(context, R.attr.vctr_content_tertiary))
contentDescription = context.getString(R.string.event_status_a11y_sent)
- true
+ false
}
SendStateDecoration.FAILED -> {
setImageResource(R.drawable.ic_sending_message_failed)
imageTintList = null
contentDescription = context.getString(R.string.event_status_a11y_failed)
- true
+ false
}
SendStateDecoration.SENDING_MEDIA,
SendStateDecoration.NONE -> {
- false
+ true
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/VectorFeatures.kt b/vector/src/main/java/im/vector/app/features/VectorFeatures.kt
index b40d2d02f2..e106f7f75f 100644
--- a/vector/src/main/java/im/vector/app/features/VectorFeatures.kt
+++ b/vector/src/main/java/im/vector/app/features/VectorFeatures.kt
@@ -21,7 +21,6 @@ import im.vector.app.BuildConfig
interface VectorFeatures {
fun loginVersion(): LoginVersion
- fun notificationSettingsVersion(): NotificationSettingsVersion
enum class LoginVersion {
V1,
@@ -36,5 +35,4 @@ interface VectorFeatures {
class DefaultVectorFeatures : VectorFeatures {
override fun loginVersion(): VectorFeatures.LoginVersion = BuildConfig.LOGIN_VERSION
- override fun notificationSettingsVersion(): VectorFeatures.NotificationSettingsVersion = BuildConfig.NOTIFICATION_SETTINGS_VERSION
}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/BaseEventItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/BaseEventItem.kt
index 6aeb1519a9..5dfbf5d8f6 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/BaseEventItem.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/BaseEventItem.kt
@@ -43,22 +43,12 @@ abstract class BaseEventItem : VectorEpoxyModel
@EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
lateinit var dimensionConverter: DimensionConverter
- protected var ignoreSendStatusVisibility = false
-
@CallSuper
override fun bind(holder: H) {
super.bind(holder)
holder.leftGuideline.updateLayoutParams {
this.marginStart = leftGuideline
}
- // Ignore visibility of the send status icon?
- holder.contentContainer.updateLayoutParams {
- if (ignoreSendStatusVisibility) {
- addRule(RelativeLayout.ALIGN_PARENT_END)
- } else {
- removeRule(RelativeLayout.ALIGN_PARENT_END)
- }
- }
holder.checkableBackground.isChecked = highlighted
}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt
index fb7d0cabd5..f006c2aa35 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt
@@ -33,10 +33,6 @@ import im.vector.app.features.home.room.detail.timeline.helper.VoiceMessagePlayb
@EpoxyModelClass(layout = R.layout.item_timeline_event_base)
abstract class MessageVoiceItem : AbsMessageItem() {
- init {
- ignoreSendStatusVisibility = true
- }
-
@EpoxyAttribute
var mxcUrl: String = ""
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/url/PreviewUrlView.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/url/PreviewUrlView.kt
index 3e08ce5589..631f00819c 100755
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/url/PreviewUrlView.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/url/PreviewUrlView.kt
@@ -19,13 +19,14 @@ package im.vector.app.features.home.room.detail.timeline.url
import android.content.Context
import android.util.AttributeSet
import android.view.View
-import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
+import com.google.android.material.card.MaterialCardView
import im.vector.app.R
import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.databinding.ViewUrlPreviewBinding
import im.vector.app.features.home.room.detail.timeline.TimelineEventController
import im.vector.app.features.media.ImageContentRenderer
+import im.vector.app.features.themes.ThemeUtils
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.session.media.PreviewUrlData
@@ -36,7 +37,7 @@ class PreviewUrlView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
-) : ConstraintLayout(context, attrs, defStyleAttr), View.OnClickListener {
+) : MaterialCardView(context, attrs, defStyleAttr), View.OnClickListener {
private lateinit var views: ViewUrlPreviewBinding
@@ -44,6 +45,9 @@ class PreviewUrlView @JvmOverloads constructor(
init {
setupView()
+ radius = resources.getDimensionPixelSize(R.dimen.preview_url_view_corner_radius).toFloat()
+ cardElevation = 0f
+ setCardBackgroundColor(ThemeUtils.getColor(context, R.attr.vctr_system))
}
private var state: PreviewUrlUiState = PreviewUrlUiState.Unknown
@@ -121,9 +125,15 @@ class PreviewUrlView @JvmOverloads constructor(
private fun renderData(previewUrlData: PreviewUrlData, imageContentRenderer: ImageContentRenderer) {
isVisible = true
+
views.urlPreviewTitle.setTextOrHide(previewUrlData.title)
views.urlPreviewImage.isVisible = previewUrlData.mxcUrl?.let { imageContentRenderer.render(it, views.urlPreviewImage) }.orFalse()
views.urlPreviewDescription.setTextOrHide(previewUrlData.description)
+ views.urlPreviewDescription.maxLines = when {
+ previewUrlData.mxcUrl != null -> 2
+ previewUrlData.title != null -> 3
+ else -> 5
+ }
views.urlPreviewSite.setTextOrHide(previewUrlData.siteName.takeIf { it != previewUrlData.title })
}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt
index 6543cc8795..f67abfbc88 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt
@@ -44,7 +44,6 @@ import im.vector.app.core.resources.UserPreferencesProvider
import im.vector.app.databinding.FragmentRoomListBinding
import im.vector.app.features.home.RoomListDisplayMode
import im.vector.app.features.home.room.filtered.FilteredRoomFooterItem
-import im.vector.app.features.home.room.list.actions.RoomListActionsArgs
import im.vector.app.features.home.room.list.actions.RoomListQuickActionsBottomSheet
import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedAction
import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedActionViewModel
@@ -476,7 +475,7 @@ class RoomListFragment @Inject constructor(
footerController.setData(it)
}
RoomListQuickActionsBottomSheet
- .newInstance(room.roomId, RoomListActionsArgs.Mode.FULL)
+ .newInstance(room.roomId)
.show(childFragmentManager, "ROOM_LIST_QUICK_ACTIONS")
return true
}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt
index 014ce14c95..5d8cda94ae 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt
@@ -43,15 +43,8 @@ import javax.inject.Inject
@Parcelize
data class RoomListActionsArgs(
- val roomId: String,
- val mode: Mode
-) : Parcelable {
-
- enum class Mode {
- FULL,
- NOTIFICATIONS
- }
-}
+ val roomId: String
+) : Parcelable
/**
* Bottom sheet fragment that shows room information with list of contextual actions
@@ -124,9 +117,9 @@ class RoomListQuickActionsBottomSheet :
}
companion object {
- fun newInstance(roomId: String, mode: RoomListActionsArgs.Mode): RoomListQuickActionsBottomSheet {
+ fun newInstance(roomId: String): RoomListQuickActionsBottomSheet {
return RoomListQuickActionsBottomSheet().apply {
- setArguments(RoomListActionsArgs(roomId, mode))
+ setArguments(RoomListActionsArgs(roomId))
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt
index a2d10cf818..b343013408 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsEpoxyController.kt
@@ -24,7 +24,6 @@ import im.vector.app.core.epoxy.bottomsheet.bottomSheetRoomPreviewItem
import im.vector.app.core.epoxy.profiles.notifications.radioButtonItem
import im.vector.app.core.resources.ColorProvider
import im.vector.app.core.resources.StringProvider
-import im.vector.app.features.VectorFeatures
import im.vector.app.features.home.AvatarRenderer
import im.vector.app.features.roomprofile.notifications.notificationOptions
import im.vector.app.features.roomprofile.notifications.notificationStateMapped
@@ -39,7 +38,6 @@ class RoomListQuickActionsEpoxyController @Inject constructor(
private val avatarRenderer: AvatarRenderer,
private val colorProvider: ColorProvider,
private val stringProvider: StringProvider,
- private val features: VectorFeatures
) : TypedEpoxyController() {
var listener: Listener? = null
@@ -48,54 +46,38 @@ class RoomListQuickActionsEpoxyController @Inject constructor(
val notificationViewState = state.notificationSettingsViewState
val roomSummary = notificationViewState.roomSummary() ?: return
val host = this
- val isV2 = features.notificationSettingsVersion() == VectorFeatures.NotificationSettingsVersion.V2
- // V2 always shows full details as we no longer display the sheet from RoomProfile > Notifications
- val showFull = state.roomListActionsArgs.mode == RoomListActionsArgs.Mode.FULL || isV2
-
- if (showFull) {
- // Preview, favorite, settings
- bottomSheetRoomPreviewItem {
- id("room_preview")
- avatarRenderer(host.avatarRenderer)
- matrixItem(roomSummary.toMatrixItem())
- stringProvider(host.stringProvider)
- colorProvider(host.colorProvider)
- izLowPriority(roomSummary.isLowPriority)
- izFavorite(roomSummary.isFavorite)
- settingsClickListener { host.listener?.didSelectMenuAction(RoomListQuickActionsSharedAction.Settings(roomSummary.roomId)) }
- favoriteClickListener { host.listener?.didSelectMenuAction(RoomListQuickActionsSharedAction.Favorite(roomSummary.roomId)) }
- lowPriorityClickListener { host.listener?.didSelectMenuAction(RoomListQuickActionsSharedAction.LowPriority(roomSummary.roomId)) }
- }
-
- // Notifications
- bottomSheetDividerItem {
- id("notifications_separator")
- }
+ // Preview, favorite, settings
+ bottomSheetRoomPreviewItem {
+ id("room_preview")
+ avatarRenderer(host.avatarRenderer)
+ matrixItem(roomSummary.toMatrixItem())
+ stringProvider(host.stringProvider)
+ colorProvider(host.colorProvider)
+ izLowPriority(roomSummary.isLowPriority)
+ izFavorite(roomSummary.isFavorite)
+ settingsClickListener { host.listener?.didSelectMenuAction(RoomListQuickActionsSharedAction.Settings(roomSummary.roomId)) }
+ favoriteClickListener { host.listener?.didSelectMenuAction(RoomListQuickActionsSharedAction.Favorite(roomSummary.roomId)) }
+ lowPriorityClickListener { host.listener?.didSelectMenuAction(RoomListQuickActionsSharedAction.LowPriority(roomSummary.roomId)) }
}
- if (isV2) {
- notificationViewState.notificationOptions.forEach { notificationState ->
- val title = titleForNotificationState(notificationState)
- radioButtonItem {
- id(notificationState.name)
- titleRes(title)
- selected(notificationViewState.notificationStateMapped() == notificationState)
- listener {
- host.listener?.didSelectRoomNotificationState(notificationState)
- }
+ // Notifications
+ bottomSheetDividerItem {
+ id("notifications_separator")
+ }
+
+ notificationViewState.notificationOptions.forEach { notificationState ->
+ val title = titleForNotificationState(notificationState)
+ radioButtonItem {
+ id(notificationState.name)
+ titleRes(title)
+ selected(notificationViewState.notificationStateMapped() == notificationState)
+ listener {
+ host.listener?.didSelectRoomNotificationState(notificationState)
}
}
- } else {
- val selectedRoomState = notificationViewState.notificationState()
- RoomListQuickActionsSharedAction.NotificationsAllNoisy(roomSummary.roomId).toBottomSheetItem(0, selectedRoomState)
- RoomListQuickActionsSharedAction.NotificationsAll(roomSummary.roomId).toBottomSheetItem(1, selectedRoomState)
- RoomListQuickActionsSharedAction.NotificationsMentionsOnly(roomSummary.roomId).toBottomSheetItem(2, selectedRoomState)
- RoomListQuickActionsSharedAction.NotificationsMute(roomSummary.roomId).toBottomSheetItem(3, selectedRoomState)
}
- if (showFull) {
- RoomListQuickActionsSharedAction.Leave(roomSummary.roomId, showIcon = !isV2).toBottomSheetItem(5)
- }
+ RoomListQuickActionsSharedAction.Leave(roomSummary.roomId, showIcon = !true).toBottomSheetItem()
}
@StringRes
@@ -106,18 +88,11 @@ class RoomListQuickActionsEpoxyController @Inject constructor(
else -> null
}
- private fun RoomListQuickActionsSharedAction.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) {
+ private fun RoomListQuickActionsSharedAction.Leave.toBottomSheetItem() {
val host = this@RoomListQuickActionsEpoxyController
- val selected = when (this) {
- is RoomListQuickActionsSharedAction.NotificationsAllNoisy -> roomNotificationState == RoomNotificationState.ALL_MESSAGES_NOISY
- is RoomListQuickActionsSharedAction.NotificationsAll -> roomNotificationState == RoomNotificationState.ALL_MESSAGES
- is RoomListQuickActionsSharedAction.NotificationsMentionsOnly -> roomNotificationState == RoomNotificationState.MENTIONS_ONLY
- is RoomListQuickActionsSharedAction.NotificationsMute -> roomNotificationState == RoomNotificationState.MUTE
- else -> false
- }
return bottomSheetActionItem {
- id("action_$index")
- selected(selected)
+ id("action_leave")
+ selected(false)
if (iconResId != null) {
iconRes(iconResId)
} else {
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
index 2091fe04a1..5a8519ecb4 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
@@ -44,13 +44,10 @@ import im.vector.app.core.utils.copyToClipboard
import im.vector.app.core.utils.startSharePlainTextIntent
import im.vector.app.databinding.FragmentMatrixProfileBinding
import im.vector.app.databinding.ViewStubRoomProfileHeaderBinding
-import im.vector.app.features.VectorFeatures
import im.vector.app.features.home.AvatarRenderer
import im.vector.app.features.home.room.detail.RoomDetailPendingAction
import im.vector.app.features.home.room.detail.RoomDetailPendingActionStore
import im.vector.app.features.home.room.detail.upgrade.MigrateRoomBottomSheet
-import im.vector.app.features.home.room.list.actions.RoomListActionsArgs
-import im.vector.app.features.home.room.list.actions.RoomListQuickActionsBottomSheet
import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedAction
import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedActionViewModel
import kotlinx.coroutines.flow.launchIn
@@ -69,8 +66,7 @@ data class RoomProfileArgs(
class RoomProfileFragment @Inject constructor(
private val roomProfileController: RoomProfileController,
private val avatarRenderer: AvatarRenderer,
- private val roomDetailPendingActionStore: RoomDetailPendingActionStore,
- private val features: VectorFeatures
+ private val roomDetailPendingActionStore: RoomDetailPendingActionStore
) :
VectorBaseFragment(),
RoomProfileController.Callback {
@@ -259,16 +255,7 @@ class RoomProfileFragment @Inject constructor(
}
override fun onNotificationsClicked() {
- when (features.notificationSettingsVersion()) {
- VectorFeatures.NotificationSettingsVersion.V1 -> {
- RoomListQuickActionsBottomSheet
- .newInstance(roomProfileArgs.roomId, RoomListActionsArgs.Mode.NOTIFICATIONS)
- .show(childFragmentManager, "ROOM_PROFILE_NOTIFICATIONS")
- }
- VectorFeatures.NotificationSettingsVersion.V2 -> {
- roomProfileSharedActionViewModel.post(RoomProfileSharedAction.OpenRoomNotificationSettings)
- }
- }
+ roomProfileSharedActionViewModel.post(RoomProfileSharedAction.OpenRoomNotificationSettings)
}
override fun onUploadsClicked() {
diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
index 4599d924b1..aded4ed1a9 100755
--- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
@@ -46,10 +46,6 @@ class VectorPreferences @Inject constructor(private val context: Context) {
const val SETTINGS_PRIVACY_POLICY_PREFERENCE_KEY = "SETTINGS_PRIVACY_POLICY_PREFERENCE_KEY"
const val SETTINGS_DISCOVERY_PREFERENCE_KEY = "SETTINGS_DISCOVERY_PREFERENCE_KEY"
- const val SETTINGS_NOTIFICATION_ADVANCED_PREFERENCE_KEY = "SETTINGS_NOTIFICATION_ADVANCED_PREFERENCE_KEY"
- const val SETTINGS_NOTIFICATION_DEFAULT_PREFERENCE_KEY = "SETTINGS_NOTIFICATION_DEFAULT_PREFERENCE_KEY"
- const val SETTINGS_NOTIFICATION_KEYWORD_AND_MENTIONS_PREFERENCE_KEY = "SETTINGS_NOTIFICATION_KEYWORD_AND_MENTIONS_PREFERENCE_KEY"
- const val SETTINGS_NOTIFICATION_OTHER_PREFERENCE_KEY = "SETTINGS_NOTIFICATION_OTHER_PREFERENCE_KEY"
const val SETTINGS_THIRD_PARTY_NOTICES_PREFERENCE_KEY = "SETTINGS_THIRD_PARTY_NOTICES_PREFERENCE_KEY"
const val SETTINGS_OTHER_THIRD_PARTY_NOTICES_PREFERENCE_KEY = "SETTINGS_OTHER_THIRD_PARTY_NOTICES_PREFERENCE_KEY"
const val SETTINGS_COPYRIGHT_PREFERENCE_KEY = "SETTINGS_COPYRIGHT_PREFERENCE_KEY"
diff --git a/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationPreferenceFragment.kt b/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationPreferenceFragment.kt
index 3004d30913..4199bd1753 100644
--- a/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationPreferenceFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationPreferenceFragment.kt
@@ -40,7 +40,6 @@ import im.vector.app.core.pushers.PushersManager
import im.vector.app.core.services.GuardServiceStarter
import im.vector.app.core.utils.isIgnoringBatteryOptimizations
import im.vector.app.core.utils.requestDisablingBatteryOptimization
-import im.vector.app.features.VectorFeatures
import im.vector.app.features.notifications.NotificationUtils
import im.vector.app.features.settings.BackgroundSyncMode
import im.vector.app.features.settings.BackgroundSyncModeChooserDialog
@@ -64,8 +63,7 @@ class VectorSettingsNotificationPreferenceFragment @Inject constructor(
private val pushManager: PushersManager,
private val activeSessionHolder: ActiveSessionHolder,
private val vectorPreferences: VectorPreferences,
- private val guardServiceStarter: GuardServiceStarter,
- private val features: VectorFeatures
+ private val guardServiceStarter: GuardServiceStarter
) : VectorSettingsBaseFragment(),
BackgroundSyncModeChooserDialog.InteractionListener {
@@ -147,7 +145,6 @@ class VectorSettingsNotificationPreferenceFragment @Inject constructor(
refreshBackgroundSyncPrefs()
handleSystemPreference()
- handleVersionedSettings()
}
private fun bindEmailNotifications() {
@@ -312,15 +309,6 @@ class VectorSettingsNotificationPreferenceFragment @Inject constructor(
}
}
- private fun handleVersionedSettings() {
- val isNotificationSettingsV2Enabled = features.notificationSettingsVersion() == VectorFeatures.NotificationSettingsVersion.V2
-
- findPreference(VectorPreferences.SETTINGS_NOTIFICATION_ADVANCED_PREFERENCE_KEY)?.isVisible = !isNotificationSettingsV2Enabled
- findPreference(VectorPreferences.SETTINGS_NOTIFICATION_DEFAULT_PREFERENCE_KEY)?.isVisible = isNotificationSettingsV2Enabled
- findPreference(VectorPreferences.SETTINGS_NOTIFICATION_KEYWORD_AND_MENTIONS_PREFERENCE_KEY)?.isVisible = isNotificationSettingsV2Enabled
- findPreference(VectorPreferences.SETTINGS_NOTIFICATION_OTHER_PREFERENCE_KEY)?.isVisible = isNotificationSettingsV2Enabled
- }
-
override fun onResume() {
super.onResume()
activeSessionHolder.getSafeActiveSession()?.refreshPushers()
diff --git a/vector/src/main/res/drawable/ic_close_with_circular_bg.xml b/vector/src/main/res/drawable/ic_close_with_circular_bg.xml
new file mode 100644
index 0000000000..5e54b638a0
--- /dev/null
+++ b/vector/src/main/res/drawable/ic_close_with_circular_bg.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
diff --git a/vector/src/main/res/layout/item_timeline_event_base.xml b/vector/src/main/res/layout/item_timeline_event_base.xml
index cc6ee46a10..b507017bb3 100644
--- a/vector/src/main/res/layout/item_timeline_event_base.xml
+++ b/vector/src/main/res/layout/item_timeline_event_base.xml
@@ -80,6 +80,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/messageMemberNameView"
+ android:layout_marginEnd="8dp"
android:layout_toStartOf="@id/messageSendStateImageView"
android:layout_toEndOf="@id/messageStartGuideline"
android:addStatesFromChildren="true">
@@ -115,21 +116,18 @@
android:id="@+id/messageContentRedactedStub"
style="@style/TimelineContentStubBaseParams"
android:layout_height="wrap_content"
- android:layout_marginEnd="56dp"
android:layout="@layout/item_timeline_event_redacted_stub" />
+ android:layout="@layout/item_timeline_event_poll"/>
@@ -144,7 +142,7 @@
android:layout_marginBottom="4dp"
android:contentDescription="@string/event_status_a11y_sending"
android:src="@drawable/ic_sending_message"
- android:visibility="gone"
+ android:visibility="invisible"
tools:tint="?vctr_content_tertiary"
tools:visibility="visible" />
diff --git a/vector/src/main/res/layout/item_timeline_event_text_message_stub.xml b/vector/src/main/res/layout/item_timeline_event_text_message_stub.xml
index 39df45989c..8d4bfcf14e 100644
--- a/vector/src/main/res/layout/item_timeline_event_text_message_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_text_message_stub.xml
@@ -16,7 +16,7 @@
+ tools:parentTag="com.google.android.material.card.MaterialCardView">
-
-
-
+ android:orientation="vertical">
-
+
-
+
-
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/xml/vector_settings_notifications.xml b/vector/src/main/res/xml/vector_settings_notifications.xml
index 154e7cca0d..66ac93a4f9 100644
--- a/vector/src/main/res/xml/vector_settings_notifications.xml
+++ b/vector/src/main/res/xml/vector_settings_notifications.xml
@@ -20,14 +20,6 @@
-
-