A cheap attempt at a native Bluesky client for Android

MainView: better scroll to top fab

+13 -17
+13 -17
app/src/main/java/industries/geesawra/monarch/MainView.kt
··· 4 4 5 5 import android.widget.Toast 6 6 import androidx.annotation.StringRes 7 - import androidx.compose.foundation.clickable 7 + import androidx.compose.animation.AnimatedVisibility 8 + import androidx.compose.animation.slideInVertically 9 + import androidx.compose.animation.slideOutVertically 8 10 import androidx.compose.foundation.layout.Arrangement 9 11 import androidx.compose.foundation.layout.Column 10 12 import androidx.compose.foundation.layout.Row ··· 20 22 import androidx.compose.foundation.shape.CircleShape 21 23 import androidx.compose.material.icons.Icons 22 24 import androidx.compose.material.icons.filled.AirlineStops 25 + import androidx.compose.material.icons.filled.ArrowUpward 23 26 import androidx.compose.material.icons.filled.Create 24 27 import androidx.compose.material.icons.filled.Home 25 28 import androidx.compose.material.icons.filled.Notifications ··· 265 268 } 266 269 }, 267 270 scrollBehavior = scrollBehavior, 268 - modifier = Modifier.clickable { 269 - coroutineScope.launch { 270 - when (currentDestination) { 271 - TabBarDestinations.TIMELINE -> timelineState.animateScrollToItem( 272 - 0 273 - ) 274 - 275 - TabBarDestinations.NOTIFICATIONS -> notificationsState.animateScrollToItem( 276 - 0 277 - ) 278 - 279 - } 280 - } 281 - }, 282 271 navigationIcon = { 283 272 when (currentDestination) { 284 273 TabBarDestinations.TIMELINE -> IconButton(onClick = { ··· 299 288 TabBarDestinations.TIMELINE -> { 300 289 Column( 301 290 verticalArrangement = Arrangement.spacedBy(8.dp), 291 + horizontalAlignment = Alignment.CenterHorizontally, 302 292 ) { 303 - if (timelineState.canScrollBackward) { 293 + AnimatedVisibility( 294 + visible = timelineState.canScrollBackward, 295 + enter = slideInVertically(), 296 + exit = slideOutVertically() 297 + ) { 304 298 FloatingActionButton( 299 + modifier = Modifier 300 + .size(40.dp), 305 301 onClick = { 306 302 coroutineScope.launch { 307 303 timelineState.animateScrollToItem(0) ··· 309 305 }, 310 306 shape = FloatingActionButtonDefaults.smallShape, 311 307 ) { 312 - Icon(Icons.Default.AirlineStops, "Scroll to top") 308 + Icon(Icons.Default.ArrowUpward, "Scroll to top") 313 309 } 314 310 } 315 311