From 2a82b9e6ca633206635e7b34bcabf5d4cd07e780 Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Mon, 6 Mar 2023 18:09:41 +0200 Subject: [PATCH 1/6] Fix word wrapping in terms checkbox on the login screen --- .../ui/screen/loggedOff/LoginScreen.kt | 72 +++++++++---------- 1 file changed, 33 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt index 10c7563ca..b4f948321 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt @@ -1,39 +1,18 @@ package com.vitorpamplona.amethyst.ui.screen import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.ClickableText import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.Button -import androidx.compose.material.ButtonDefaults -import androidx.compose.material.Checkbox -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.LocalTextStyle -import androidx.compose.material.MaterialTheme -import androidx.compose.material.OutlinedTextField -import androidx.compose.material.Text +import androidx.compose.material.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Visibility import androidx.compose.material.icons.outlined.VisibilityOff -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier @@ -50,18 +29,14 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.text.input.TextFieldValue -import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.text.* +import androidx.compose.ui.text.input.* import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import java.util.* @OptIn(ExperimentalComposeUiApi::class) @Composable @@ -143,7 +118,8 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { Icon( imageVector = if (showPassword) Icons.Outlined.VisibilityOff else Icons.Outlined.Visibility, contentDescription = if (showPassword) stringResource(R.string.show_password) else stringResource( - R.string.hide_password) + R.string.hide_password + ) ) } }, @@ -174,13 +150,29 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { onCheckedChange = { acceptedTerms.value = it } ) - Text(text = stringResource(R.string.i_accept_the)) + val clickableTextStyle = + SpanStyle(color = MaterialTheme.colors.primary.copy(alpha = 0.52f)) + + val annotatedTermsString = buildAnnotatedString { + append(stringResource(R.string.i_accept_the)) + + withStyle(clickableTextStyle) { + pushStringAnnotation("openTerms", "") + append(stringResource(R.string.terms_of_use)) + } + } ClickableText( - text = AnnotatedString(stringResource(R.string.terms_of_use)), - onClick = { runCatching { uri.openUri("https://github.com/vitorpamplona/amethyst/blob/main/PRIVACY.md") } }, - style = LocalTextStyle.current.copy(color = MaterialTheme.colors.primary), - ) + text = annotatedTermsString, + ) { spanOffset -> + annotatedTermsString.getStringAnnotations(spanOffset, spanOffset) + .firstOrNull() + ?.also { span -> + if (span.tag == "openTerms") { + runCatching { uri.openUri("https://github.com/vitorpamplona/amethyst/blob/main/PRIVACY.md") } + } + } + } } if (termsAcceptanceIsRequired.isNotBlank()) { @@ -197,7 +189,8 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { Button( onClick = { if (!acceptedTerms.value) { - termsAcceptanceIsRequired = context.getString(R.string.acceptance_of_terms_is_required) + termsAcceptanceIsRequired = + context.getString(R.string.acceptance_of_terms_is_required) } if (key.value.text.isBlank()) { @@ -236,7 +229,8 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { if (acceptedTerms.value) { accountViewModel.newKey() } else { - termsAcceptanceIsRequired = context.getString(R.string.acceptance_of_terms_is_required) + termsAcceptanceIsRequired = + context.getString(R.string.acceptance_of_terms_is_required) } }, style = TextStyle( From b8bc07624043c05ef68acaf7823ed46a581b41fa Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Mon, 6 Mar 2023 18:10:51 +0200 Subject: [PATCH 2/6] Shorten 'post' ru and uk translation --- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 3c485cbaa..2e571abd3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -67,7 +67,7 @@ Описание "О нас.. " Что нового? - Опубликовать + Отправить Сохранить Создать Отменить diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index a8a541768..9b115bb30 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -67,7 +67,7 @@ Опис "Про нас.. " Що нового? - Опублікувати + Надіслати Зберегти Створити Скасувати From a82fc7334631a8c02221e782c109b727b230284d Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Tue, 7 Mar 2023 22:02:53 +0200 Subject: [PATCH 3/6] Rearrange buttons on the new post screen. Add icons --- .../amethyst/ui/actions/NewPostView.kt | 43 +++++++++++++------ .../amethyst/ui/actions/UploadFromGallery.kt | 24 +++++++---- .../main/res/drawable-anydpi/ic_add_photo.xml | 5 +++ app/src/main/res/drawable-anydpi/ic_close.xml | 5 +++ app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- 6 files changed, 57 insertions(+), 24 deletions(-) create mode 100644 app/src/main/res/drawable-anydpi/ic_add_photo.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_close.xml diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt index f903635fa..b7b51786b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt @@ -37,7 +37,6 @@ import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.components.* -import com.vitorpamplona.amethyst.ui.navigation.UploadFromGallery import com.vitorpamplona.amethyst.ui.note.ReplyInformation import com.vitorpamplona.amethyst.ui.screen.loggedIn.UserLine import kotlinx.coroutines.delay @@ -75,9 +74,16 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n decorFitsSystemWindows = false ) ) { - Surface(modifier = Modifier.fillMaxWidth().fillMaxHeight()) { - Column(modifier = Modifier.fillMaxWidth().fillMaxHeight()) { - Column(modifier = Modifier.padding(10.dp).imePadding().weight(1f)) { + Surface(modifier = Modifier + .fillMaxWidth() + .fillMaxHeight()) { + Column(modifier = Modifier + .fillMaxWidth() + .fillMaxHeight()) { + Column(modifier = Modifier + .padding(start = 10.dp, end = 10.dp, top = 10.dp) + .imePadding() + .weight(1f)) { Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, @@ -88,12 +94,6 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n onClose() }) - UploadFromGallery( - isUploading = postViewModel.isUploadingImage, - ) { - postViewModel.upload(it, context) - } - PostButton( onPost = { postViewModel.sendPost() @@ -105,9 +105,13 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n } Row( - modifier = Modifier.fillMaxWidth().weight(1f) + modifier = Modifier + .fillMaxWidth() + .weight(1f) ) { - Column(modifier = Modifier.fillMaxWidth().verticalScroll(scroolState)) { + Column(modifier = Modifier + .fillMaxWidth() + .verticalScroll(scroolState)) { if (postViewModel.replyTos != null && baseReplyTo?.event is TextNoteEvent) { ReplyInformation(postViewModel.replyTos, postViewModel.mentions, account, "✖ ") { postViewModel.removeFromReplyList(it) @@ -204,6 +208,14 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n } } } + + Row(modifier = Modifier.fillMaxWidth()) { + UploadFromGallery( + isUploading = postViewModel.isUploadingImage, + ) { + postViewModel.upload(it, context) + } + } } } } @@ -222,7 +234,12 @@ fun CloseButton(onCancel: () -> Unit) { backgroundColor = Color.Gray ) ) { - Text(text = stringResource(R.string.cancel), color = Color.White) + Icon( + painter = painterResource(id = R.drawable.ic_close), + contentDescription = stringResource(id = R.string.cancel), + modifier = Modifier.size(20.dp), + tint = Color.White + ) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/UploadFromGallery.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/UploadFromGallery.kt index 00e52dd37..a8f7d3510 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/UploadFromGallery.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/UploadFromGallery.kt @@ -1,17 +1,15 @@ -package com.vitorpamplona.amethyst.ui.navigation +package com.vitorpamplona.amethyst.ui.actions import android.net.Uri import android.os.Build import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.padding -import androidx.compose.material.Button -import androidx.compose.material.Text +import androidx.compose.foundation.layout.* +import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.google.accompanist.permissions.ExperimentalPermissionsApi @@ -46,15 +44,23 @@ fun UploadFromGallery( ) } else { Box() { - Button( + TextButton( modifier = Modifier - .align(Alignment.TopCenter) - .padding(4.dp), + .align(Alignment.TopCenter), enabled = !isUploading, onClick = { showGallerySelect = true } ) { + Icon( + painter = painterResource(id = R.drawable.ic_add_photo), + contentDescription = stringResource(id = R.string.upload_image), + modifier = Modifier + .height(20.dp) + .padding(end = 8.dp), + tint = MaterialTheme.colors.primary + ) + if (!isUploading) { Text(stringResource(R.string.upload_image)) } else { diff --git a/app/src/main/res/drawable-anydpi/ic_add_photo.xml b/app/src/main/res/drawable-anydpi/ic_add_photo.xml new file mode 100644 index 000000000..4ebcf7e03 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_add_photo.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable-anydpi/ic_close.xml b/app/src/main/res/drawable-anydpi/ic_close.xml new file mode 100644 index 000000000..844b6b62e --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_close.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 2e571abd3..6501cff66 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -92,7 +92,7 @@ LN URL (устаревш.) Фото сохранено в галерею Не удалось сохранить фото - Загрузить\nфото + Загрузить фото Загрузка… Пользователь не установил Lightning адрес для получения чаевых "ответить.. " diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 9b115bb30..07f348f19 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -92,7 +92,7 @@ LN URL (застарівш.) Фото збережено до галереї Не вдалося зберегти фото - Завантажити\nфото + Завантажити фото Завантаження… Користувач не встановив Lightning адресу для отримання чайових "відповісти.. " From 773d747f5a1b5ed739e089348254afac255af0e3 Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Tue, 7 Mar 2023 22:15:55 +0200 Subject: [PATCH 4/6] Fix slightly lighter color of the terms checkbox --- .../vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt index b4f948321..9c4d81a44 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt @@ -151,7 +151,7 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { ) val clickableTextStyle = - SpanStyle(color = MaterialTheme.colors.primary.copy(alpha = 0.52f)) + SpanStyle(color = MaterialTheme.colors.primary) val annotatedTermsString = buildAnnotatedString { append(stringResource(R.string.i_accept_the)) From f2b1fa9101b1d7fcc1715e148912f5c2a97f088d Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Wed, 8 Mar 2023 20:50:42 +0200 Subject: [PATCH 5/6] Fix shrinking of public channel names --- .../amethyst/ui/note/ChatroomCompose.kt | 60 +++++++++++++++---- 1 file changed, 49 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomCompose.kt index 4bc794766..785491414 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomCompose.kt @@ -31,10 +31,13 @@ import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDirection import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController @@ -49,7 +52,11 @@ import com.vitorpamplona.amethyst.ui.components.ResizeImage import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @Composable -fun ChatroomCompose(baseNote: Note, accountViewModel: AccountViewModel, navController: NavController) { +fun ChatroomCompose( + baseNote: Note, + accountViewModel: AccountViewModel, + navController: NavController +) { val noteState by baseNote.live().metadata.observeAsState() val note = noteState?.note @@ -84,24 +91,43 @@ fun ChatroomCompose(baseNote: Note, accountViewModel: AccountViewModel, navContr LaunchedEffect(key1 = notificationCache, key2 = note) { note.createdAt()?.let { - hasNewMessages = it > notificationCache.cache.load("Channel/${channel.idHex}", context) + hasNewMessages = + it > notificationCache.cache.load("Channel/${channel.idHex}", context) } } ChannelName( channelPicture = channel.profilePicture(), - channelPicturePlaceholder = BitmapPainter(RoboHashCache.get(context, channel.idHex)), + channelPicturePlaceholder = BitmapPainter( + RoboHashCache.get( + context, + channel.idHex + ) + ), channelTitle = { Text( - "${channel.info.name}", + text = buildAnnotatedString { + withStyle( + SpanStyle( + fontWeight = FontWeight.Bold + ) + ) { + append(channel.info.name) + } + + withStyle( + SpanStyle( + color = MaterialTheme.colors.onSurface.copy(alpha = 0.32f), + fontWeight = FontWeight.Normal + ) + ) { + append(" ${stringResource(id = R.string.public_chat)}") + } + }, fontWeight = FontWeight.Bold, modifier = it, style = LocalTextStyle.current.copy(textDirection = TextDirection.Content) ) - Text( - " ${stringResource(R.string.public_chat)}", - color = MaterialTheme.colors.onSurface.copy(alpha = 0.32f) - ) }, channelLastTime = note.createdAt(), channelLastContent = "${author?.toBestDisplayName()}: " + description, @@ -127,12 +153,21 @@ fun ChatroomCompose(baseNote: Note, accountViewModel: AccountViewModel, navContr LaunchedEffect(key1 = notificationCache, key2 = note) { noteEvent?.let { - hasNewMessages = it.createdAt() > notificationCache.cache.load("Room/${userToComposeOn.pubkeyHex}", context) + hasNewMessages = it.createdAt() > notificationCache.cache.load( + "Room/${userToComposeOn.pubkeyHex}", + context + ) } } ChannelName( - channelPicture = { UserPicture(userToComposeOn, account.userProfile(), size = 55.dp) }, + channelPicture = { + UserPicture( + userToComposeOn, + account.userProfile(), + size = 55.dp + ) + }, channelTitle = { UsernameDisplay(userToComposeOn, it) }, channelLastTime = note.createdAt(), channelLastContent = accountViewModel.decrypt(note), @@ -209,7 +244,10 @@ fun ChannelName( } } - Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { if (channelLastContent != null) { Text( channelLastContent, From c6a991967c243bba60b4103602740bcc6277773d Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Wed, 8 Mar 2023 20:53:06 +0200 Subject: [PATCH 6/6] Autoformat by ktLint --- .../amethyst/ui/actions/NewPostView.kt | 47 +++++++++++-------- .../ui/screen/loggedOff/LoginScreen.kt | 17 ++++--- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt index b7b51786b..40d517fd1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt @@ -36,12 +36,11 @@ import coil.compose.AsyncImage import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.Note +import com.vitorpamplona.amethyst.service.model.TextNoteEvent import com.vitorpamplona.amethyst.ui.components.* import com.vitorpamplona.amethyst.ui.note.ReplyInformation import com.vitorpamplona.amethyst.ui.screen.loggedIn.UserLine import kotlinx.coroutines.delay -import com.vitorpamplona.amethyst.service.model.TextNoteEvent - @OptIn(ExperimentalComposeUiApi::class) @Composable @@ -74,16 +73,22 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n decorFitsSystemWindows = false ) ) { - Surface(modifier = Modifier - .fillMaxWidth() - .fillMaxHeight()) { - Column(modifier = Modifier + Surface( + modifier = Modifier .fillMaxWidth() - .fillMaxHeight()) { - Column(modifier = Modifier - .padding(start = 10.dp, end = 10.dp, top = 10.dp) - .imePadding() - .weight(1f)) { + .fillMaxHeight() + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight() + ) { + Column( + modifier = Modifier + .padding(start = 10.dp, end = 10.dp, top = 10.dp) + .imePadding() + .weight(1f) + ) { Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, @@ -99,8 +104,8 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n postViewModel.sendPost() onClose() }, - isActive = postViewModel.message.text.isNotBlank() - && !postViewModel.isUploadingImage + isActive = postViewModel.message.text.isNotBlank() && + !postViewModel.isUploadingImage ) } @@ -109,9 +114,11 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n .fillMaxWidth() .weight(1f) ) { - Column(modifier = Modifier - .fillMaxWidth() - .verticalScroll(scroolState)) { + Column( + modifier = Modifier + .fillMaxWidth() + .verticalScroll(scroolState) + ) { if (postViewModel.replyTos != null && baseReplyTo?.event is TextNoteEvent) { ReplyInformation(postViewModel.replyTos, postViewModel.mentions, account, "✖ ") { postViewModel.removeFromReplyList(it) @@ -176,7 +183,7 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n ) ) } else if (videoExtension.matcher(removedParamsFromUrl) - .matches() + .matches() ) { VideoView(myUrlPreview) } else { @@ -188,7 +195,6 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n } } } - } val userSuggestions = postViewModel.userSuggestions @@ -201,7 +207,8 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n ) { itemsIndexed( userSuggestions, - key = { _, item -> item.pubkeyHex }) { index, item -> + key = { _, item -> item.pubkeyHex } + ) { index, item -> UserLine(item, account) { postViewModel.autocompleteWithUser(item) } @@ -211,7 +218,7 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n Row(modifier = Modifier.fillMaxWidth()) { UploadFromGallery( - isUploading = postViewModel.isUploadingImage, + isUploading = postViewModel.isUploadingImage ) { postViewModel.upload(it, context) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt index 9c4d81a44..c505c5738 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/LoginScreen.kt @@ -63,9 +63,8 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { modifier = Modifier .padding(20.dp) .fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally, + horizontalAlignment = Alignment.CenterHorizontally ) { - Image( painterResource(id = R.drawable.amethyst), contentDescription = stringResource(R.string.app_logo), @@ -117,9 +116,13 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { IconButton(onClick = { showPassword = !showPassword }) { Icon( imageVector = if (showPassword) Icons.Outlined.VisibilityOff else Icons.Outlined.Visibility, - contentDescription = if (showPassword) stringResource(R.string.show_password) else stringResource( - R.string.hide_password - ) + contentDescription = if (showPassword) { + stringResource(R.string.show_password) + } else { + stringResource( + R.string.hide_password + ) + } ) } }, @@ -163,7 +166,7 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { } ClickableText( - text = annotatedTermsString, + text = annotatedTermsString ) { spanOffset -> annotatedTermsString.getStringAnnotations(spanOffset, spanOffset) .firstOrNull() @@ -241,4 +244,4 @@ fun LoginPage(accountViewModel: AccountStateViewModel) { ) ) } -} \ No newline at end of file +}