diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreenController.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreenController.kt
index aa2252b96f..18bcd8ac5a 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreenController.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreenController.kt
@@ -25,6 +25,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.dp
import org.thoughtcrime.securesms.components.webrtc.ToggleButtonOutputState
import org.thoughtcrime.securesms.components.webrtc.WebRtcAudioDevice
@@ -173,9 +174,10 @@ private fun rememberCallScreenSheetState(
) {
SheetState(
skipPartiallyExpanded = false,
- density = density,
initialValue = initialValue,
confirmValueChange = confirmValueChange,
+ positionalThreshold = { with(density) { 56.dp.toPx() } },
+ velocityThreshold = { with(density) { 125.dp.toPx() } },
skipHiddenState = skipHiddenState
)
}
@@ -202,7 +204,8 @@ private fun saveSheetState(
SheetState(
skipPartiallyExpanded = false,
- density = density,
+ positionalThreshold = { with(density) { 56.dp.toPx() } },
+ velocityThreshold = { with(density) { 125.dp.toPx() } },
initialValue = value,
confirmValueChange = confirmValueChange,
skipHiddenState = skipHiddenState
diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreenTooltipBox.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreenTooltipBox.kt
index a36a5c8b80..0194458977 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreenTooltipBox.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreenTooltipBox.kt
@@ -7,6 +7,7 @@ package org.thoughtcrime.securesms.components.webrtc.v2
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.material3.DefaultTooltipCaretShape
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.PlainTooltip
import androidx.compose.material3.Text
@@ -42,7 +43,7 @@ fun CallScreenTooltipBox(
state = state,
tooltip = {
PlainTooltip(
- caretSize = TooltipDefaults.caretSize,
+ caretShape = DefaultTooltipCaretShape(),
shape = TooltipDefaults.plainTooltipContainerShape,
containerColor = colorResource(R.color.signal_light_colorPrimary),
contentColor = colorResource(R.color.signal_light_colorOnPrimary)
diff --git a/core-ui/build.gradle.kts b/core-ui/build.gradle.kts
index 3aee2cfda5..daafbe2409 100644
--- a/core-ui/build.gradle.kts
+++ b/core-ui/build.gradle.kts
@@ -23,6 +23,7 @@ dependencies {
androidTestApi(composeBom)
}
+ api(libs.androidx.compose.material.icons.core)
api(libs.androidx.compose.material3)
api(libs.androidx.compose.material3.adaptive)
api(libs.androidx.compose.material3.adaptive.layout)
diff --git a/core-ui/src/main/java/org/signal/core/ui/compose/Icons.kt b/core-ui/src/main/java/org/signal/core/ui/compose/Icons.kt
index 452e789292..ed6d0bf96a 100644
--- a/core-ui/src/main/java/org/signal/core/ui/compose/Icons.kt
+++ b/core-ui/src/main/java/org/signal/core/ui/compose/Icons.kt
@@ -5,7 +5,6 @@
package org.signal.core.ui.compose
-import android.R
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@@ -50,7 +49,7 @@ object Icons {
private fun BrushedForegroundPreview() {
Previews.Preview {
Icons.BrushedForeground(
- painter = painterResource(id = R.drawable.ic_menu_camera),
+ painter = painterResource(id = android.R.drawable.ic_menu_camera),
contentDescription = null,
foregroundBrush = Brush.linearGradient(listOf(Color.Red, Color.Blue))
)
diff --git a/core-ui/src/main/java/org/signal/core/ui/compose/Tooltips.kt b/core-ui/src/main/java/org/signal/core/ui/compose/Tooltips.kt
index 45893859a1..034c718a55 100644
--- a/core-ui/src/main/java/org/signal/core/ui/compose/Tooltips.kt
+++ b/core-ui/src/main/java/org/signal/core/ui/compose/Tooltips.kt
@@ -8,23 +8,14 @@ package org.signal.core.ui.compose
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.PlainTooltip
+import androidx.compose.material3.TooltipAnchorPosition
import androidx.compose.material3.TooltipBox
import androidx.compose.material3.TooltipDefaults
import androidx.compose.material3.rememberTooltipState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.snapshotFlow
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.Path
-import androidx.compose.ui.layout.boundsInWindow
-import androidx.compose.ui.platform.LocalDensity
-import androidx.compose.ui.unit.IntOffset
-import androidx.compose.ui.unit.IntRect
-import androidx.compose.ui.unit.IntSize
-import androidx.compose.ui.unit.LayoutDirection
-import androidx.compose.ui.window.PopupPositionProvider
import kotlinx.coroutines.flow.drop
import kotlinx.coroutines.flow.filterNot
@@ -48,41 +39,15 @@ object Tooltips {
isPersistent = true
)
- val caretSize = with(LocalDensity.current) {
- TooltipDefaults.caretSize.toSize()
- }
-
TooltipBox(
- positionProvider = PositionBelowAnchor,
+ positionProvider = TooltipDefaults.rememberTooltipPositionProvider(TooltipAnchorPosition.Below),
state = tooltipState,
tooltip = {
PlainTooltip(
shape = TooltipDefaults.plainTooltipContainerShape,
+ caretShape = TooltipDefaults.caretShape(),
containerColor = containerColor,
- contentColor = contentColor,
- modifier = Modifier.drawCaret { anchorLayoutCoordinates ->
-
- val path = if (anchorLayoutCoordinates != null) {
- val anchorBounds = anchorLayoutCoordinates.boundsInWindow()
- val anchorMid = (anchorBounds.right - anchorBounds.left) / 2
- val position = Offset(size.width - anchorMid, 0f)
-
- Path().apply {
- moveTo(x = position.x, y = position.y)
- lineTo(x = position.x + caretSize.width / 2, y = position.y)
- lineTo(x = position.x, y = position.y - caretSize.height)
- lineTo(x = position.x - caretSize.width / 2, y = position.y)
- close()
- }
- } else {
- Path()
- }
-
- onDrawWithContent {
- drawContent()
- drawPath(path = path, color = containerColor)
- }
- }
+ contentColor = contentColor
) {
tooltipContent()
}
@@ -106,16 +71,4 @@ object Tooltips {
.collect { onDismiss() }
}
}
-
- private object PositionBelowAnchor : PopupPositionProvider {
- override fun calculatePosition(anchorBounds: IntRect, windowSize: IntSize, layoutDirection: LayoutDirection, popupContentSize: IntSize): IntOffset {
- val x = if (layoutDirection == LayoutDirection.Ltr) {
- anchorBounds.right - popupContentSize.width
- } else {
- anchorBounds.left
- }
-
- return IntOffset(x, anchorBounds.bottom)
- }
- }
}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 853e48dd24..2d333b5cc5 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -40,7 +40,8 @@ android-application = { module = "com.android.application:com.android.applicatio
androidx-benchmark-gradle-plugin = "androidx.benchmark:benchmark-gradle-plugin:1.3.3"
# Compose
-androidx-compose-bom = "androidx.compose:compose-bom:2025.08.00"
+androidx-compose-bom = "androidx.compose:compose-bom:2025.09.01"
+androidx-compose-material-icons-core = { module = "androidx.compose.material:material-icons-core" }
androidx-compose-material3 = { module = "androidx.compose.material3:material3" }
androidx-compose-material3-adaptive = { module = "androidx.compose.material3.adaptive:adaptive"}
androidx-compose-material3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout"}
@@ -50,7 +51,7 @@ androidx-compose-ui-tooling-core = { module = "androidx.compose.ui:ui-tooling" }
androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" }
androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" }
androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" }
-androidx-compose-rxjava3 = "androidx.compose.runtime:runtime-rxjava3:1.7.8"
+androidx-compose-rxjava3 = "androidx.compose.runtime:runtime-rxjava3:1.9.2"
# Accompanist
accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" }
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index de64c2b1e6..560a43c84b 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -417,6 +417,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
@@ -433,6 +438,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
@@ -464,6 +474,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
@@ -488,6 +503,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -496,6 +519,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -512,6 +543,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -520,6 +559,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -528,6 +575,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -536,6 +591,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -549,6 +612,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -557,6 +628,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -565,6 +644,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -581,6 +668,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -589,6 +684,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -597,11 +700,24 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -610,6 +726,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -642,6 +766,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -650,6 +782,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -658,6 +798,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -666,6 +814,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -674,6 +830,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -682,6 +846,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -780,6 +952,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -788,6 +968,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -796,6 +984,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -804,6 +1000,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -812,6 +1016,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -820,6 +1032,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -836,6 +1056,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -852,6 +1080,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -873,6 +1109,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -881,6 +1125,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -915,6 +1175,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -923,6 +1191,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -939,6 +1215,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -947,6 +1231,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -955,6 +1247,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -971,6 +1271,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -979,6 +1287,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -987,6 +1303,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -995,6 +1319,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1003,6 +1335,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1011,6 +1351,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1019,6 +1367,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1027,6 +1383,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1035,6 +1399,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1051,6 +1423,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1059,6 +1439,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1067,6 +1455,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1075,6 +1471,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1083,6 +1487,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1091,6 +1503,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1099,6 +1519,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1107,6 +1535,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1115,6 +1551,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1123,6 +1567,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1131,6 +1583,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1139,6 +1599,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1155,6 +1623,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1163,6 +1639,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1171,6 +1655,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1187,6 +1679,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1195,6 +1695,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1203,6 +1711,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1644,6 +2160,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1675,6 +2204,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1696,6 +2241,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -1738,6 +2291,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1780,6 +2349,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1817,6 +2402,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1833,6 +2434,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1867,6 +2484,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1883,6 +2516,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1899,6 +2548,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1954,6 +2619,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1986,6 +2664,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2007,10 +2693,26 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2020,6 +2722,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2046,6 +2764,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2091,6 +2817,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2123,6 +2862,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2144,6 +2891,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2211,6 +2966,25 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2243,6 +3017,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2272,6 +3054,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2296,6 +3091,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2312,6 +3115,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2338,6 +3149,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2386,6 +3205,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2434,6 +3269,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2442,6 +3290,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2450,6 +3306,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2783,6 +3647,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2791,6 +3668,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2799,6 +3684,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2807,6 +3700,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2823,6 +3732,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+
@@ -2839,6 +3756,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
+
+
+
+
+
+
+
+