A cheap attempt at a native Bluesky client for Android

*: tweak paddings and icon sizes, better contrast on text

+22 -22
+1 -1
app/src/main/java/industries/geesawra/monarch/MainView.kt
··· 305 305 AsyncImage( 306 306 model = timelineViewModel.uiState.feedAvatar, 307 307 modifier = Modifier 308 - .size(42.dp) 308 + .size(40.dp) 309 309 .shadow(10.dp, CircleShape) 310 310 .clip(CircleShape), 311 311 contentDescription = "Feed avatar",
+9 -3
app/src/main/java/industries/geesawra/monarch/PostImageGallery.kt
··· 77 77 78 78 2 -> { 79 79 Row( 80 - modifier = modifier.fillMaxWidth(), 80 + modifier = modifier 81 + .fillMaxWidth() 82 + .padding(8.dp), 81 83 horizontalArrangement = Arrangement.spacedBy(8.dp) 82 84 ) { 83 85 DeletableImageView( ··· 98 100 99 101 3 -> { 100 102 Column( 101 - modifier = modifier.fillMaxWidth(), 103 + modifier = modifier 104 + .fillMaxWidth() 105 + .padding(8.dp), 102 106 verticalArrangement = Arrangement.spacedBy(8.dp) 103 107 ) { 104 108 Row( ··· 141 145 142 146 else -> { // Handles 4 images 143 147 Column( 144 - modifier = modifier.fillMaxWidth(), 148 + modifier = modifier 149 + .fillMaxWidth() 150 + .padding(8.dp), 145 151 verticalArrangement = Arrangement.spacedBy(8.dp) 146 152 ) { 147 153 Row(
+2 -2
app/src/main/java/industries/geesawra/monarch/ShowSkeets.kt
··· 95 95 VerticalDivider( 96 96 thickness = 4.dp, 97 97 modifier = Modifier 98 - .height(50.dp) 99 - .padding(start = (16 + 25).dp) 98 + .height(48.dp) 99 + .padding(start = (16 + 24).dp) 100 100 .clip(RoundedCornerShape(12.dp)) 101 101 ) 102 102 }
+3 -5
app/src/main/java/industries/geesawra/monarch/SkeetView.kt
··· 133 133 TimelinePostActionsView( 134 134 onReplyTap = onReplyTap, 135 135 modifier = Modifier 136 - .height(50.dp) 136 + .height(48.dp) 137 137 .fillMaxWidth(), 138 138 timelineViewModel = viewModel, 139 139 skeet = skeet, ··· 157 157 if (skeet.content.isNotEmpty()) { 158 158 Text( 159 159 text = skeet.annotatedContent(), 160 - color = MaterialTheme.colorScheme.onSurfaceVariant, 160 + color = MaterialTheme.colorScheme.onSurface, 161 161 style = MaterialTheme.typography.bodyLarge, 162 162 ) 163 163 } ··· 236 236 ) { 237 237 PostImageGallery( 238 238 modifier = Modifier 239 - .fillMaxSize() 240 - .padding(8.dp), 239 + .fillMaxSize(), 241 240 images = img.map { 242 241 Image(url = it.thumb.uri, alt = it.alt) 243 242 }, ··· 283 282 repeatMode = RepeatMode.NONE, // or RepeatMode.ALL, RepeatMode.ONE 284 283 modifier = Modifier 285 284 .fillMaxSize() 286 - .padding(8.dp), 287 285 ) 288 286 } 289 287 }
+4 -4
app/src/main/java/industries/geesawra/monarch/TimelinePostActionsView.kt
··· 64 64 Icon( 65 65 imageVector, 66 66 contentDescription = contentDescription, 67 - modifier = Modifier.size(15.dp), 67 + modifier = Modifier.size(16.dp), 68 68 tint = tint 69 69 ) 70 70 Text( 71 - modifier = Modifier.padding(start = 2.dp), 71 + modifier = Modifier.padding(start = 4.dp), 72 72 text = number.longValue.toString(), 73 73 color = tint, 74 74 maxLines = 1, ··· 115 115 VerticalDivider( 116 116 thickness = 4.dp, 117 117 modifier = Modifier 118 - .padding(start = 25.dp, top = 4.dp) 118 + .padding(start = 24.dp, top = 4.dp) 119 119 .clip(RoundedCornerShape(12.dp)) 120 120 ) 121 121 ··· 135 135 } 136 136 ) { 137 137 Icon( 138 - modifier = Modifier.size(15.dp), 138 + modifier = Modifier.size(16.dp), 139 139 imageVector = Icons.Default.Share, 140 140 contentDescription = "Share", 141 141 tint = MaterialTheme.colorScheme.onSurfaceVariant
+3 -7
app/src/main/java/industries/geesawra/monarch/datalayer/Models.kt
··· 408 408 is FacetFeatureUnion.Link -> withLink( 409 409 LinkAnnotation.Url( 410 410 f.value.uri.uri, 411 - TextLinkStyles(style = SpanStyle(color = MaterialTheme.colorScheme.onSurface)) 411 + TextLinkStyles(style = SpanStyle(color = MaterialTheme.colorScheme.onSurfaceVariant)) 412 412 ) 413 413 ) { 414 414 append(content.content) ··· 417 417 is FacetFeatureUnion.Mention -> withLink( 418 418 LinkAnnotation.Url( 419 419 f.value.did.did, 420 - TextLinkStyles(style = SpanStyle(color = MaterialTheme.colorScheme.onSurface)) 420 + TextLinkStyles(style = SpanStyle(color = MaterialTheme.colorScheme.onSurfaceVariant)) 421 421 ) 422 422 ) { 423 423 append( ··· 623 623 var authors: List<RepeatedAuthor>, 624 624 var timestamp: Instant, 625 625 val new: Boolean, 626 - ) { 627 - fun sorted(): RepeatedNotification { 628 - return this.copy(kind, post, authors.sortedByDescending { it.timestamp }, timestamp) 629 - } 630 - } 626 + ) 631 627 632 628 data class RepeatedAuthor( 633 629 val author: ProfileView,