Skip to content

Commit 7073b16

Browse files
authored
Merge pull request #8607 from vector-im/dependabot/gradle/io.element.android-wysiwyg-2.5.0
Bump io.element.android:wysiwyg from 2.2.2 to 2.6.0
2 parents b14338d + dd64107 commit 7073b16

File tree

7 files changed

+41
-60
lines changed

7 files changed

+41
-60
lines changed

dependencies.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def lifecycle = "2.5.1"
2020
def flowBinding = "1.2.0"
2121
def flipper = "0.190.0"
2222
def epoxy = "5.0.0"
23-
def mavericks = "3.0.2"
23+
def mavericks = "3.0.7"
2424
def glide = "4.15.1"
2525
def bigImageViewer = "1.8.1"
2626
def jjwt = "0.11.5"
@@ -101,7 +101,7 @@ ext.libs = [
101101
],
102102
element : [
103103
'opusencoder' : "io.element.android:opusencoder:1.1.0",
104-
'wysiwyg' : "io.element.android:wysiwyg:2.2.2"
104+
'wysiwyg' : "io.element.android:wysiwyg:2.14.1"
105105
],
106106
squareup : [
107107
'moshi' : "com.squareup.moshi:moshi:$moshi",

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@ signing.element.nightly.keyPassword=Secret
4242

4343
# Customise the Lint version to use a more recent version than the one bundled with AGP
4444
# https://googlesamples.github.io/android-custom-lint-rules/usage/newer-lint.md.html
45-
android.experimental.lint.version=8.0.0-alpha10
45+
android.experimental.lint.version=8.3.0-alpha12

vector/src/main/java/im/vector/app/features/home/room/detail/composer/RichTextComposerLayout.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ import im.vector.app.databinding.ViewRichTextMenuButtonBinding
5151
import im.vector.app.features.home.room.detail.composer.images.UriContentListener
5252
import im.vector.app.features.home.room.detail.composer.mentions.PillDisplayHandler
5353
import io.element.android.wysiwyg.EditorEditText
54-
import io.element.android.wysiwyg.display.KeywordDisplayHandler
55-
import io.element.android.wysiwyg.display.LinkDisplayHandler
54+
import io.element.android.wysiwyg.display.MentionDisplayHandler
5655
import io.element.android.wysiwyg.display.TextDisplay
5756
import io.element.android.wysiwyg.utils.RustErrorCollector
5857
import io.element.android.wysiwyg.view.models.InlineFormat
@@ -238,15 +237,12 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
238237
views.composerEditTextOuterBorder.background = borderShapeDrawable
239238

240239
setupRichTextMenu()
241-
views.richTextComposerEditText.linkDisplayHandler = LinkDisplayHandler { text, url ->
242-
pillDisplayHandler?.resolveLinkDisplay(text, url) ?: TextDisplay.Plain
243-
}
244-
views.richTextComposerEditText.keywordDisplayHandler = object : KeywordDisplayHandler {
245-
override val keywords: List<String>
246-
get() = pillDisplayHandler?.keywords.orEmpty()
240+
views.richTextComposerEditText.mentionDisplayHandler = object : MentionDisplayHandler {
241+
override fun resolveMentionDisplay(text: String, url: String): TextDisplay =
242+
pillDisplayHandler?.resolveMentionDisplay(text, url) ?: TextDisplay.Plain
247243

248-
override fun resolveKeywordDisplay(text: String): TextDisplay =
249-
pillDisplayHandler?.resolveKeywordDisplay(text) ?: TextDisplay.Plain
244+
override fun resolveAtRoomMentionDisplay(): TextDisplay =
245+
pillDisplayHandler?.resolveAtRoomMentionDisplay() ?: TextDisplay.Plain
250246
}
251247

252248
updateTextFieldBorder(isFullScreen)

vector/src/main/java/im/vector/app/features/home/room/detail/composer/mentions/PillDisplayHandler.kt

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
package im.vector.app.features.home.room.detail.composer.mentions
1818

1919
import android.text.style.ReplacementSpan
20-
import io.element.android.wysiwyg.display.KeywordDisplayHandler
21-
import io.element.android.wysiwyg.display.LinkDisplayHandler
20+
import io.element.android.wysiwyg.display.MentionDisplayHandler
2221
import io.element.android.wysiwyg.display.TextDisplay
2322
import org.matrix.android.sdk.api.session.permalinks.PermalinkData
2423
import org.matrix.android.sdk.api.session.permalinks.PermalinkParser
@@ -30,16 +29,15 @@ import org.matrix.android.sdk.api.util.toMatrixItem
3029
import org.matrix.android.sdk.api.util.toRoomAliasMatrixItem
3130

3231
/**
33-
* A rich text editor [LinkDisplayHandler] and [KeywordDisplayHandler]
34-
* that helps with replacing user and room links with pills.
32+
* A rich text editor [MentionDisplayHandler] that helps with replacing user and room links with pills.
3533
*/
3634
internal class PillDisplayHandler(
3735
private val roomId: String,
3836
private val getRoom: (roomId: String) -> RoomSummary?,
3937
private val getMember: (userId: String) -> RoomMemberSummary?,
4038
private val replacementSpanFactory: (matrixItem: MatrixItem) -> ReplacementSpan,
41-
) : LinkDisplayHandler, KeywordDisplayHandler {
42-
override fun resolveLinkDisplay(text: String, url: String): TextDisplay {
39+
) : MentionDisplayHandler {
40+
override fun resolveMentionDisplay(text: String, url: String): TextDisplay {
4341
val matrixItem = when (val permalink = PermalinkParser.parse(url)) {
4442
is PermalinkData.UserLink -> {
4543
val userId = permalink.userId
@@ -65,16 +63,9 @@ internal class PillDisplayHandler(
6563
return TextDisplay.Custom(customSpan = replacement)
6664
}
6765

68-
override val keywords: List<String>
69-
get() = listOf(MatrixItem.NOTIFY_EVERYONE)
70-
71-
override fun resolveKeywordDisplay(text: String): TextDisplay =
72-
when (text) {
73-
MatrixItem.NOTIFY_EVERYONE -> {
74-
val matrixItem = getRoom(roomId)?.toEveryoneInRoomMatrixItem()
75-
?: MatrixItem.EveryoneInRoomItem(roomId)
76-
TextDisplay.Custom(replacementSpanFactory.invoke(matrixItem))
77-
}
78-
else -> TextDisplay.Plain
79-
}
66+
override fun resolveAtRoomMentionDisplay(): TextDisplay {
67+
val matrixItem = getRoom(roomId)?.toEveryoneInRoomMatrixItem()
68+
?: MatrixItem.EveryoneInRoomItem(roomId)
69+
return TextDisplay.Custom(replacementSpanFactory.invoke(matrixItem))
70+
}
8071
}

vector/src/main/java/im/vector/app/features/pin/lockscreen/biometrics/BiometricHelper.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import im.vector.app.features.pin.lockscreen.ui.fallbackprompt.FallbackBiometric
4141
import im.vector.app.features.pin.lockscreen.utils.DevicePromptCheck
4242
import im.vector.app.features.pin.lockscreen.utils.hasFlag
4343
import kotlinx.coroutines.CoroutineScope
44-
import kotlinx.coroutines.ExperimentalCoroutinesApi
44+
import kotlinx.coroutines.DelicateCoroutinesApi
4545
import kotlinx.coroutines.asCoroutineDispatcher
4646
import kotlinx.coroutines.cancel
4747
import kotlinx.coroutines.channels.BufferOverflow
@@ -155,11 +155,11 @@ class BiometricHelper @AssistedInject constructor(
155155
return authenticate(activity)
156156
}
157157

158-
@OptIn(ExperimentalCoroutinesApi::class)
158+
@OptIn(DelicateCoroutinesApi::class)
159159
private fun authenticateInternal(
160-
activity: FragmentActivity,
161-
checkSystemKeyExists: Boolean,
162-
cryptoObject: BiometricPrompt.CryptoObject,
160+
activity: FragmentActivity,
161+
checkSystemKeyExists: Boolean,
162+
cryptoObject: BiometricPrompt.CryptoObject,
163163
): Flow<Boolean> {
164164
if (checkSystemKeyExists && !isSystemAuthEnabledAndValid) return flowOf(false)
165165

@@ -195,9 +195,9 @@ class BiometricHelper @AssistedInject constructor(
195195

196196
@VisibleForTesting(otherwise = PRIVATE)
197197
internal fun authenticateWithPromptInternal(
198-
activity: FragmentActivity,
199-
cryptoObject: BiometricPrompt.CryptoObject,
200-
channel: Channel<Boolean>,
198+
activity: FragmentActivity,
199+
cryptoObject: BiometricPrompt.CryptoObject,
200+
channel: Channel<Boolean>,
201201
): BiometricPrompt {
202202
val executor = ContextCompat.getMainExecutor(context)
203203
val callback = createSuspendingAuthCallback(channel, executor.asCoroutineDispatcher())
@@ -314,9 +314,9 @@ class BiometricHelper @AssistedInject constructor(
314314
fallbackFragment.onDismiss = { cancelPrompt() }
315315
fallbackFragment.authenticationFlow = authenticationFLow
316316

317-
activity.supportFragmentManager.beginTransaction()
317+
val transaction = activity.supportFragmentManager.beginTransaction()
318318
.runOnCommit { scope.launch { showPrompt() } }
319-
.apply { fallbackFragment.show(this, FALLBACK_BIOMETRIC_FRAGMENT_TAG) }
319+
fallbackFragment.show(transaction, FALLBACK_BIOMETRIC_FRAGMENT_TAG)
320320
} else {
321321
scope.launch { showPrompt() }
322322
}

vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionsListHeaderView.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class SessionsListHeaderView @JvmOverloads constructor(
9797
}
9898
}
9999

100+
@Suppress("RestrictedApi")
100101
private fun setMenu(typedArray: TypedArray) {
101102
val menuResId = typedArray.getResourceId(R.styleable.SessionsListHeaderView_sessionsListHeaderMenu, -1)
102103
if (menuResId == -1) {

vector/src/test/java/im/vector/app/features/home/room/detail/composer/mentions/PillDisplayHandlerTest.kt

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ internal class PillDisplayHandlerTest {
8080
fun `when resolve non-matrix link, then it returns plain text`() {
8181
val subject = createSubject()
8282

83-
val result = subject.resolveLinkDisplay("text", NON_MATRIX_URL)
83+
val result = subject.resolveMentionDisplay("text", NON_MATRIX_URL)
8484

8585
assertEquals(TextDisplay.Plain, result)
8686
}
@@ -89,7 +89,7 @@ internal class PillDisplayHandlerTest {
8989
fun `when resolve unknown user link, then it returns generic custom pill`() {
9090
val subject = createSubject()
9191

92-
val matrixItem = subject.resolveLinkDisplay("text", UNKNOWN_MATRIX_USER_URL)
92+
val matrixItem = subject.resolveMentionDisplay("text", UNKNOWN_MATRIX_USER_URL)
9393
.getMatrixItem()
9494

9595
assertEquals(MatrixItem.UserItem(UNKNOWN_MATRIX_USER_ID, UNKNOWN_MATRIX_USER_ID, null), matrixItem)
@@ -99,7 +99,7 @@ internal class PillDisplayHandlerTest {
9999
fun `when resolve known user link, then it returns named custom pill`() {
100100
val subject = createSubject()
101101

102-
val matrixItem = subject.resolveLinkDisplay("text", KNOWN_MATRIX_USER_URL)
102+
val matrixItem = subject.resolveMentionDisplay("text", KNOWN_MATRIX_USER_URL)
103103
.getMatrixItem()
104104

105105
assertEquals(MatrixItem.UserItem(KNOWN_MATRIX_USER_ID, KNOWN_MATRIX_USER_NAME, KNOWN_MATRIX_USER_AVATAR), matrixItem)
@@ -109,7 +109,7 @@ internal class PillDisplayHandlerTest {
109109
fun `when resolve unknown room link, then it returns generic custom pill`() {
110110
val subject = createSubject()
111111

112-
val matrixItem = subject.resolveLinkDisplay("text", UNKNOWN_MATRIX_ROOM_URL)
112+
val matrixItem = subject.resolveMentionDisplay("text", UNKNOWN_MATRIX_ROOM_URL)
113113
.getMatrixItem()
114114

115115
assertEquals(MatrixItem.RoomItem(UNKNOWN_MATRIX_ROOM_ID, UNKNOWN_MATRIX_ROOM_ID, null), matrixItem)
@@ -119,7 +119,7 @@ internal class PillDisplayHandlerTest {
119119
fun `when resolve known room link, then it returns named custom pill`() {
120120
val subject = createSubject()
121121

122-
val matrixItem = subject.resolveLinkDisplay("text", KNOWN_MATRIX_ROOM_URL)
122+
val matrixItem = subject.resolveMentionDisplay("text", KNOWN_MATRIX_ROOM_URL)
123123
.getMatrixItem()
124124

125125
assertEquals(MatrixItem.RoomItem(KNOWN_MATRIX_ROOM_ID, KNOWN_MATRIX_ROOM_NAME, KNOWN_MATRIX_ROOM_AVATAR), matrixItem)
@@ -129,7 +129,7 @@ internal class PillDisplayHandlerTest {
129129
fun `when resolve @room link, then it returns room notification custom pill`() {
130130
val subject = createSubject()
131131

132-
val matrixItem = subject.resolveLinkDisplay("@room", KNOWN_MATRIX_ROOM_URL)
132+
val matrixItem = subject.resolveMentionDisplay("@room", KNOWN_MATRIX_ROOM_URL)
133133
.getMatrixItem()
134134

135135
assertEquals(MatrixItem.EveryoneInRoomItem(KNOWN_MATRIX_ROOM_ID, NOTIFY_EVERYONE, KNOWN_MATRIX_ROOM_AVATAR, KNOWN_MATRIX_ROOM_NAME), matrixItem)
@@ -139,7 +139,7 @@ internal class PillDisplayHandlerTest {
139139
fun `when resolve @room keyword, then it returns room notification custom pill`() {
140140
val subject = createSubject()
141141

142-
val matrixItem = subject.resolveKeywordDisplay("@room")
142+
val matrixItem = subject.resolveAtRoomMentionDisplay()
143143
.getMatrixItem()
144144

145145
assertEquals(MatrixItem.EveryoneInRoomItem(ROOM_ID, NOTIFY_EVERYONE, KNOWN_MATRIX_ROOM_AVATAR, KNOWN_MATRIX_ROOM_NAME), matrixItem)
@@ -150,24 +150,17 @@ internal class PillDisplayHandlerTest {
150150
val subject = createSubject()
151151
every { mockGetRoom(ROOM_ID) } returns null
152152

153-
val matrixItem = subject.resolveKeywordDisplay("@room")
153+
val matrixItem = subject.resolveAtRoomMentionDisplay()
154154
.getMatrixItem()
155155

156156
assertEquals(MatrixItem.EveryoneInRoomItem(ROOM_ID, NOTIFY_EVERYONE, null, null), matrixItem)
157157
}
158158

159-
@Test
160-
fun `when get keywords, then it returns @room`() {
161-
val subject = createSubject()
162-
163-
assertEquals(listOf("@room"), subject.keywords)
164-
}
165-
166159
@Test
167160
fun `when resolve known user for custom domain link, then it returns named custom pill`() {
168161
val subject = createSubject()
169162

170-
val matrixItem = subject.resolveLinkDisplay("text", CUSTOM_DOMAIN_MATRIX_USER_URL)
163+
val matrixItem = subject.resolveMentionDisplay("text", CUSTOM_DOMAIN_MATRIX_USER_URL)
171164
.getMatrixItem()
172165

173166
assertEquals(MatrixItem.UserItem(KNOWN_MATRIX_USER_ID, KNOWN_MATRIX_USER_NAME, KNOWN_MATRIX_USER_AVATAR), matrixItem)
@@ -177,7 +170,7 @@ internal class PillDisplayHandlerTest {
177170
fun `when resolve known room for custom domain link, then it returns named custom pill`() {
178171
val subject = createSubject()
179172

180-
val matrixItem = subject.resolveLinkDisplay("text", CUSTOM_DOMAIN_MATRIX_ROOM_URL)
173+
val matrixItem = subject.resolveMentionDisplay("text", CUSTOM_DOMAIN_MATRIX_ROOM_URL)
181174
.getMatrixItem()
182175

183176
assertEquals(MatrixItem.RoomItem(KNOWN_MATRIX_ROOM_ID, KNOWN_MATRIX_ROOM_NAME, KNOWN_MATRIX_ROOM_AVATAR), matrixItem)
@@ -187,13 +180,13 @@ internal class PillDisplayHandlerTest {
187180
fun `when resolve known room with alias link, then it returns named custom pill`() {
188181
val subject = createSubject()
189182

190-
val matrixItem = subject.resolveLinkDisplay("text", KNOWN_MATRIX_ROOM_ALIAS_URL)
183+
val matrixItem = subject.resolveMentionDisplay("text", KNOWN_MATRIX_ROOM_ALIAS_URL)
191184
.getMatrixItem()
192185

193186
assertEquals(MatrixItem.RoomAliasItem(KNOWN_MATRIX_ROOM_ALIAS, KNOWN_MATRIX_ROOM_NAME, KNOWN_MATRIX_ROOM_AVATAR), matrixItem)
194187
}
195188

196-
private fun TextDisplay.getMatrixItem(): MatrixItem? {
189+
private fun TextDisplay.getMatrixItem(): MatrixItem {
197190
val customSpan = this as? TextDisplay.Custom
198191
assertNotNull("The URL did not resolve to a custom link display method", customSpan)
199192

0 commit comments

Comments
 (0)