From 4f26aaa887a24efe09a6b422cd989ca55db7e6f7 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Sun, 1 Feb 2026 04:29:29 +0500 Subject: [PATCH] fix: refine connector visibility logic for avatar in ProfileMetaballOverlay --- .../components/metaball/ProfileMetaballOverlay.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/rosetta/messenger/ui/components/metaball/ProfileMetaballOverlay.kt b/app/src/main/java/com/rosetta/messenger/ui/components/metaball/ProfileMetaballOverlay.kt index 54fffb0..f2bf4de 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/components/metaball/ProfileMetaballOverlay.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/components/metaball/ProfileMetaballOverlay.kt @@ -257,8 +257,17 @@ fun ProfileMetaballOverlay( val c = (distance / maxDist).coerceIn(-1f, 1f) val v = ((1f - c / 1.3f) / 2f).coerceIn(0f, 0.8f) - // Should we draw the connector? (when avatar gets close enough) - val showConnector = collapseProgress > 0.3f && avatarState.showBlob && distance < maxDist * 2f + // Like Telegram: isDrawing = vr <= dp(40), isNear = vr <= dp(32) + // Avatar radius thresholds (in px) + val dp40 = with(density) { 40.dp.toPx() } + val dp32 = with(density) { 32.dp.toPx() } + + // Should we draw the metaball effect? (when avatar is small enough) + val isDrawing = avatarState.radius <= dp40 + val isNear = avatarState.radius <= dp32 + + // Show connector only when avatar is close enough AND small enough + val showConnector = isDrawing && avatarState.showBlob && distance < maxDist * 1.5f // Calculate blur intensity for avatar based on distance to notch (like Telegram) // When avatar is far - no blur, when close - more blur