diff --git a/app/src/main/java/com/rosetta/messenger/ui/settings/ProfileScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/settings/ProfileScreen.kt index 52576da..e757bc6 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/settings/ProfileScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/settings/ProfileScreen.kt @@ -31,6 +31,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.input.nestedscroll.NestedScrollSource import androidx.compose.ui.input.nestedscroll.nestedScroll @@ -38,6 +39,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -793,16 +795,29 @@ private fun CollapsingProfileHeader( ) } - // Закругление: круг по умолчанию, при overscroll становится квадратом + // Закругление: круг по умолчанию, при overscroll становится квадратом БЕЗ скругления val cornerRadius = if (collapseProgress < 0.1f && expansionProgress > 0f) { - // Overscroll: круг -> квадрат с небольшим скруглением - androidx.compose.ui.unit.lerp(avatarSize / 2, 12.dp, expansionProgress) + // Overscroll: круг -> квадрат без скругления + androidx.compose.ui.unit.lerp(avatarSize / 2, 0.dp, expansionProgress) } else { // Всегда круг avatarSize / 2 } + // Haptic feedback при достижении полного квадрата + val hapticFeedback = LocalHapticFeedback.current + var hasTriggeredHaptic by remember { mutableStateOf(false) } + + LaunchedEffect(expansionProgress) { + if (expansionProgress >= 0.95f && !hasTriggeredHaptic) { + hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) + hasTriggeredHaptic = true + } else if (expansionProgress < 0.5f) { + hasTriggeredHaptic = false + } + } + val avatarFontSize = androidx.compose.ui.unit.lerp(40.sp, 0.sp, collapseProgress) // ═══════════════════════════════════════════════════════════