A cheap attempt at a native Bluesky client for Android

*: fix like view, put divider in the lists rather than in the post view

+22 -20
+9 -12
app/src/main/java/industries/geesawra/monarch/LikeRowView.kt
··· 1 1 package industries.geesawra.monarch 2 2 3 + import androidx.compose.foundation.layout.Arrangement 3 4 import androidx.compose.foundation.layout.Column 4 5 import androidx.compose.foundation.layout.Row 5 6 import androidx.compose.foundation.layout.fillMaxWidth 6 7 import androidx.compose.foundation.layout.padding 7 8 import androidx.compose.foundation.layout.size 8 9 import androidx.compose.foundation.shape.CircleShape 9 - import androidx.compose.material3.HorizontalDivider 10 10 import androidx.compose.material3.MaterialTheme 11 11 import androidx.compose.material3.Surface 12 12 import androidx.compose.material3.Text ··· 38 38 Surface( 39 39 color = color, 40 40 modifier = modifier 41 - .padding(horizontal = 16.dp, vertical = 8.dp) 41 + .padding(start = 16.dp, end = 16.dp) 42 42 .fillMaxWidth() 43 - 44 43 ) { 45 44 Column { 46 45 Row( 47 - verticalAlignment = Alignment.CenterVertically, 46 + verticalAlignment = Alignment.Top, 47 + horizontalArrangement = Arrangement.Start, 48 + modifier = Modifier.fillMaxWidth() 48 49 ) { 49 50 AsyncImage( 50 51 model = ImageRequest.Builder(LocalContext.current) ··· 69 70 70 71 Column( 71 72 modifier = Modifier 73 + .weight(1f) 72 74 .padding(start = 16.dp) 73 - .fillMaxWidth() 74 75 ) { 75 76 Text( 76 77 modifier = Modifier.fillMaxWidth(), 77 78 text = text, 78 79 style = MaterialTheme.typography.bodyMedium, 79 80 fontWeight = FontWeight.Bold, 80 - maxLines = 1 81 81 ) 82 82 83 83 Text( ··· 94 94 color = MaterialTheme.colorScheme.secondary, 95 95 style = MaterialTheme.typography.bodySmall, 96 96 ) 97 + 97 98 } 99 + 98 100 } 99 - 100 - HorizontalDivider( 101 - color = MaterialTheme.colorScheme.outlineVariant 102 - ) 103 101 } 104 102 105 103 106 104 } 107 - 108 - } 105 + }
+7 -1
app/src/main/java/industries/geesawra/monarch/NotificationsView.kt
··· 10 10 import androidx.compose.foundation.lazy.LazyColumn 11 11 import androidx.compose.foundation.lazy.LazyListState 12 12 import androidx.compose.material3.CircularProgressIndicator 13 + import androidx.compose.material3.HorizontalDivider 14 + import androidx.compose.material3.MaterialTheme 13 15 import androidx.compose.runtime.Composable 14 16 import androidx.compose.runtime.LaunchedEffect 15 17 import androidx.compose.runtime.derivedStateOf ··· 39 41 verticalArrangement = Arrangement.spacedBy(8.dp), 40 42 ) { 41 43 viewModel.uiState.notifications.list.forEach { notif -> 42 - item() { 44 + item(notif.createdAt()) { 43 45 RenderNotification( 44 46 viewModel = viewModel, 45 47 notification = notif, 46 48 onReplyTap = onReplyTap 49 + ) 50 + 51 + HorizontalDivider( 52 + color = MaterialTheme.colorScheme.outlineVariant 47 53 ) 48 54 } 49 55 }
+6
app/src/main/java/industries/geesawra/monarch/ShowSkeets.kt
··· 12 12 import androidx.compose.foundation.lazy.rememberLazyListState 13 13 import androidx.compose.foundation.shape.RoundedCornerShape 14 14 import androidx.compose.material3.CircularProgressIndicator 15 + import androidx.compose.material3.HorizontalDivider 16 + import androidx.compose.material3.MaterialTheme 15 17 import androidx.compose.material3.VerticalDivider 16 18 import androidx.compose.runtime.Composable 17 19 import androidx.compose.runtime.LaunchedEffect ··· 77 79 78 80 79 81 SkeetView(viewModel = viewModel, skeet = skeet, onReplyTap = onReplyTap) 82 + 83 + HorizontalDivider( 84 + color = MaterialTheme.colorScheme.outlineVariant 85 + ) 80 86 } 81 87 } 82 88
-7
app/src/main/java/industries/geesawra/monarch/TimelinePostActionsView.kt
··· 17 17 import androidx.compose.material.icons.filled.Share 18 18 import androidx.compose.material.icons.filled.ThumbUp 19 19 import androidx.compose.material.icons.filled.ThumbUpOffAlt 20 - import androidx.compose.material3.HorizontalDivider 21 20 import androidx.compose.material3.Icon 22 21 import androidx.compose.material3.IconButton 23 22 import androidx.compose.material3.MaterialTheme ··· 220 219 if (isReposted) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant 221 220 ) 222 221 } 223 - } 224 - 225 - if (!inThread) { 226 - HorizontalDivider( 227 - color = MaterialTheme.colorScheme.outlineVariant 228 - ) 229 222 } 230 223 } 231 224