diff --git a/settings.gradle.kts b/settings.gradle.kts index b5445f22714137fa0ce572e8725e0ab6c3fd52a3..20afc493a032c708b903aa05e3f3ca8681884b5a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -4,7 +4,6 @@ pluginManagement { mavenCentral() maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") } } - } rootProject.name = "briar-desktop" @@ -12,4 +11,4 @@ include("briar:bramble-api") include("briar:bramble-core") include("briar:bramble-java") include("briar:briar-api") -include("briar:briar-core") \ No newline at end of file +include("briar:briar-core") diff --git a/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt b/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt index dfc7a8889d33c255143f6e7546bb364c05c87a63..4e0ef30e51449ab292acc320f4aad459e5ba71d8 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt @@ -21,5 +21,4 @@ internal interface BriarDesktopApp : BrambleCoreEagerSingletons, BriarCoreEagerS fun getUI(): UI fun getSecureRandom(): SecureRandom - } diff --git a/src/main/kotlin/org/briarproject/briar/desktop/BriarService.kt b/src/main/kotlin/org/briarproject/briar/desktop/BriarService.kt index d86bd3e90dcaa6ea58c70f2f147ab9b11bda5243..d063de45c80547d9d84521d72f1a5d303d26740f 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/BriarService.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/BriarService.kt @@ -1,7 +1,11 @@ package org.briarproject.briar.desktop import androidx.compose.desktop.Window -import androidx.compose.runtime.* +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 org.briarproject.bramble.api.account.AccountManager import org.briarproject.bramble.api.crypto.DecryptionException import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator @@ -55,15 +59,18 @@ constructor( Window(title = title) { when (val screen = screenState) { is Screen.Login -> - Login("Briar", onResult = { - try { - accountManager.signIn(it) - signedIn() - screenState = Screen.Main - } catch (e: DecryptionException) { - // failure, try again + Login( + "Briar", + onResult = { + try { + accountManager.signIn(it) + signedIn() + screenState = Screen.Main + } catch (e: DecryptionException) { + // failure, try again + } } - }) + ) is Screen.Main -> BriarUIStateManager() @@ -76,5 +83,4 @@ constructor( lifecycleManager.startServices(dbKey) lifecycleManager.waitForStartup() } - } diff --git a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt b/src/main/kotlin/org/briarproject/briar/desktop/Main.kt index df460910641a26c686860de3f7a1337c3f3703dd..1f3eff33dafaf103a840b51cd34d279b57aacf39 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/Main.kt @@ -15,8 +15,12 @@ import java.io.IOException import java.lang.System.getProperty import java.nio.file.Files.setPosixFilePermissions import java.nio.file.attribute.PosixFilePermission -import java.nio.file.attribute.PosixFilePermission.* -import java.util.logging.Level.* +import java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE +import java.nio.file.attribute.PosixFilePermission.OWNER_READ +import java.nio.file.attribute.PosixFilePermission.OWNER_WRITE +import java.util.logging.Level.ALL +import java.util.logging.Level.INFO +import java.util.logging.Level.WARNING import java.util.logging.LogManager private val DEFAULT_DATA_DIR = getProperty("user.home") + separator + ".briar" @@ -79,4 +83,4 @@ private class Main : CliktCommand( } } -fun main(args: Array<String>) = Main().main(args) \ No newline at end of file +fun main(args: Array<String>) = Main().main(args) diff --git a/src/main/kotlin/org/briarproject/briar/desktop/Screen.kt b/src/main/kotlin/org/briarproject/briar/desktop/Screen.kt index 61e48461ac303609e9532d52677151e28a8fa3f0..aeeb1c87f5aacc41c4e160b0f8f57fb1a7c4fd9e 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/Screen.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/Screen.kt @@ -1,6 +1,6 @@ package org.briarproject.briar.desktop sealed class Screen { - object Login: Screen() - object Main: Screen() + object Login : Screen() + object Main : Screen() } diff --git a/src/main/kotlin/org/briarproject/briar/desktop/UI.kt b/src/main/kotlin/org/briarproject/briar/desktop/UI.kt index 71d4dc59cace507092df430208fa5482accb95e5..a1e77ff829325a394bebe4760af7571e2801243a 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/UI.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/UI.kt @@ -34,11 +34,10 @@ constructor( @Composable internal fun startBriar() { - briarService.start(); + briarService.start() } internal fun getContactManager(): ContactManager { return contactManager } - -} \ No newline at end of file +} diff --git a/src/main/kotlin/org/briarproject/briar/desktop/dialogs/Login.kt b/src/main/kotlin/org/briarproject/briar/desktop/dialogs/Login.kt index 49942296d8913dc63929df8c9d2a7a44a82e3fe4..f1a532eb80b12d6e04a095bc35bbcea198fc8df5 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/dialogs/Login.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/dialogs/Login.kt @@ -1,13 +1,22 @@ package org.briarproject.briar.desktop.dialogs -import androidx.compose.desktop.Window import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +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.shape.RoundedCornerShape import androidx.compose.material.Button import androidx.compose.material.OutlinedTextField import androidx.compose.material.Text -import androidx.compose.runtime.* +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.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -46,9 +55,11 @@ private fun TheTextField(onResult: (result: String) -> Unit) { var password by remember { mutableStateOf("") } OutlinedTextField(password, { password = it }, label = { Text("Password") }) Spacer(Modifier.height(16.dp)) - Button(onClick = { - onResult.invoke(password) - }) { + Button( + onClick = { + onResult.invoke(password) + } + ) { Text("Login") } -} \ No newline at end of file +} diff --git a/src/main/kotlin/org/briarproject/briar/desktop/dialogs/Registration.kt b/src/main/kotlin/org/briarproject/briar/desktop/dialogs/Registration.kt index aba87a41f5e28cd8a609a6d413de927c89e0a528..479c901ff738bd21fc09925a34946a0acbf44353 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/dialogs/Registration.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/dialogs/Registration.kt @@ -2,12 +2,22 @@ package org.briarproject.briar.desktop.dialogs import androidx.compose.desktop.Window import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +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.shape.RoundedCornerShape import androidx.compose.material.Button import androidx.compose.material.OutlinedTextField import androidx.compose.material.Text -import androidx.compose.runtime.* +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.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -48,12 +58,14 @@ private fun TheTextFields(accountManager: AccountManager, lifecycleManager: Life OutlinedTextField(username, { username = it }, label = { Text("Username") }) OutlinedTextField(password, { password = it }, label = { Text("Password") }) Spacer(Modifier.height(16.dp)) - Button(onClick = { - accountManager.createAccount(username, password) - val dbKey = accountManager.databaseKey ?: throw AssertionError() - lifecycleManager.startServices(dbKey) - lifecycleManager.waitForStartup() - }) { + Button( + onClick = { + accountManager.createAccount(username, password) + val dbKey = accountManager.databaseKey ?: throw AssertionError() + lifecycleManager.startServices(dbKey) + lifecycleManager.waitForStartup() + } + ) { Text("Register") } -} \ No newline at end of file +} diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/data/Contacts.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContactList.kt similarity index 99% rename from src/main/kotlin/org/briarproject/briar/desktop/paul/data/Contacts.kt rename to src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContactList.kt index 2b7b47c2031f462448802bf78dee352ab35415d3..f01578cb024a96eebd02a80a0cfc982e45a34c85 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/data/Contacts.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContactList.kt @@ -226,4 +226,3 @@ object ContactList { Contact(name = "Qi", online = false, profile_pic = "p5.png", last_heard = "3 days ago", privateMessages = msg5), ) } - diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContentType.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContentTypeList.kt similarity index 99% rename from src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContentType.kt rename to src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContentTypeList.kt index e29adb5f0b1379a0e3ea73b9f1ef62ae82c8866f..66f0de30cdfccc89db20096dc2a1f0875e75239a 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContentType.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/data/ContentTypeList.kt @@ -13,4 +13,4 @@ object ContentTypeList { ContentType(id = 5, name = "Settings"), ContentType(id = 6, name = "Sign Out") ) -} \ No newline at end of file +} diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/data/OptionType.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/data/OptionTypeList.kt similarity index 99% rename from src/main/kotlin/org/briarproject/briar/desktop/paul/data/OptionType.kt rename to src/main/kotlin/org/briarproject/briar/desktop/paul/data/OptionTypeList.kt index 5dbb5d8e4c787a8cb0dd04b2a699f2130953c103..b8e60c48a9071b7d714d7d04237942f248d4e386 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/data/OptionType.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/data/OptionTypeList.kt @@ -11,4 +11,3 @@ object OptionTypeList { OptionType(name = "Eve", unread = 0, online = false), ) } - diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/model/Contact.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/model/Contact.kt index 22085dff5b7b3e44c920e725b2bbd8c8ab076399..5f4abd0704afe76c332c26a20526bc86a247416c 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/model/Contact.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/model/Contact.kt @@ -6,4 +6,4 @@ data class Contact( val profile_pic: String, val last_heard: String, val privateMessages: List<Message> -) \ No newline at end of file +) diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/model/ContentType.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/model/ContentType.kt index 0db88d307147c6363aafda082ed5947aaeb35bd3..0704b6c3f174425bf5fc4ef05755a423efbddf68 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/model/ContentType.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/model/ContentType.kt @@ -3,5 +3,5 @@ package org.briarproject.briar.desktop.paul.model data class ContentType( val id: Int, val name: String, - //val icon: Icon, -) \ No newline at end of file + // val icon: Icon, +) diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/model/Message.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/model/Message.kt index a7a79f553ff1f7be360faeade89114e2c9aba9a0..eb9c2ce17ffa83418cb0d4ff9a558c6cac51c9b2 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/model/Message.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/model/Message.kt @@ -5,5 +5,5 @@ data class Message( val message: String, val time: String, val delivered: Boolean, - //val read: Boolean, -) \ No newline at end of file + // val read: Boolean, +) diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/model/OptionType.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/model/OptionType.kt index 8367e1eb877d0490a3151f2a29407db710f33de3..ae5b2e4d76b5da4b0cf655a4e3424342ae6e22f6 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/model/OptionType.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/model/OptionType.kt @@ -4,6 +4,5 @@ data class OptionType( val name: String, val unread: Int, val online: Boolean - //val icon: Icon, + // val icon: Icon, ) - diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/theme/colors.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/theme/colors.kt index 2d443639eed3b1057ae27d4072d07fefd1f8d106..f3b864eab9cb573e0129088bc91e85a81ab6906a 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/theme/colors.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/theme/colors.kt @@ -29,4 +29,4 @@ val DarkColorPallet = darkColors( onBackground = Color.White, onSurface = Color.White, error = Color.Red, -) \ No newline at end of file +) diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/views/BriarSidebar.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/views/BriarSidebar.kt index dbbca6fa622ffda909414df5489b3ebf153b2a44..fd2c014b54dd65993d883a100d67dcc897122dde 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/views/BriarSidebar.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/views/BriarSidebar.kt @@ -3,13 +3,24 @@ package org.briarproject.briar.desktop.paul.views import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.Icon import androidx.compose.material.IconButton import androidx.compose.material.Surface import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* +import androidx.compose.material.icons.filled.ChromeReaderMode +import androidx.compose.material.icons.filled.Contacts +import androidx.compose.material.icons.filled.Forum +import androidx.compose.material.icons.filled.Group +import androidx.compose.material.icons.filled.Logout +import androidx.compose.material.icons.filled.Settings +import androidx.compose.material.icons.filled.WifiTethering import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -27,7 +38,9 @@ fun BriarSidebar(UIMode: String, onModeChange: (String) -> Unit) { Column(verticalArrangement = Arrangement.Top) { IconButton( modifier = Modifier.align(Alignment.CenterHorizontally) - .padding(top = 9.dp, bottom = 10.dp), onClick = {}) { + .padding(top = 9.dp, bottom = 10.dp), + onClick = {} + ) { Image( bitmap = imageFromResource("images/profile_images/p0.png"), "my_profile_image", @@ -91,12 +104,13 @@ fun BriarSidebarButton( thisMode: String, icon: ImageVector ) { - val bg = if (UIMode == thisMode) briarBlack else briarBlue; + val bg = if (UIMode == thisMode) briarBlack else briarBlue Column() { IconButton( modifier = Modifier.align(Alignment.CenterHorizontally).background(color = bg) .padding(vertical = 9.dp, horizontal = 12.dp), - onClick = { onModeChange(thisMode) }) { + onClick = { onModeChange(thisMode) } + ) { Icon(icon, thisMode, tint = Color.White, modifier = Modifier.size(30.dp)) } } diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/views/BriarUIStateManager.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/views/BriarUIStateManager.kt index b729efbff73b2d7b2118da2d3a75d20651b3a1c5..5f0ba4937a145fb8b646d5972d44860992caa05d 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/views/BriarUIStateManager.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/views/BriarUIStateManager.kt @@ -21,23 +21,23 @@ import org.briarproject.briar.desktop.paul.theme.briarBlack */ @Composable fun BriarUIStateManager() { - //current selected mode, changed using the sidebar buttons + // current selected mode, changed using the sidebar buttons val (UIMode, onModeChange) = remember { mutableStateOf("Contacts") } - //current selected contact + // current selected contact val (UIContact, onContactSelect) = remember { mutableStateOf(ContactList.contacts[0]) } - //current selected private message + // current selected private message val (UIPrivateMsg, onPMSelect) = remember { mutableStateOf(0) } - //current selected forum + // current selected forum val (UIForum, onForumSelect) = remember { mutableStateOf(0) } - //current blog state + // current blog state val (UIBlog, onBlogSelect) = remember { mutableStateOf(0) } - //current transport state + // current transport state val (UITransports, onTransportSelect) = remember { mutableStateOf(0) } - //current settings state + // current settings state val (UISettings, onSettingSelect) = remember { mutableStateOf(0) } - //current profile - var Profile: String; - //Other global state that we need to track should go here also + // current profile + var Profile: String + // Other global state that we need to track should go here also Row() { BriarSidebar(UIMode, onModeChange) when (UIMode) { @@ -47,5 +47,4 @@ fun BriarUIStateManager() { } } } - } diff --git a/src/main/kotlin/org/briarproject/briar/desktop/paul/views/PrivateMessageView.kt b/src/main/kotlin/org/briarproject/briar/desktop/paul/views/PrivateMessageView.kt index da9dad214bd7b208bba757835af14c8cfb9b1daf..c56e53fdf14661cf0a60fd358daf9d5d92fd4063 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/paul/views/PrivateMessageView.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/paul/views/PrivateMessageView.kt @@ -1,14 +1,44 @@ package org.briarproject.briar.desktop.paul.views -import androidx.compose.foundation.* -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +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.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.* +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.AlertDialog +import androidx.compose.material.Divider +import androidx.compose.material.Icon +import androidx.compose.material.IconButton +import androidx.compose.material.OutlinedTextField +import androidx.compose.material.Text +import androidx.compose.material.TextButton +import androidx.compose.material.TextField import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.* -import androidx.compose.runtime.* +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.AddCircle +import androidx.compose.material.icons.filled.Check +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material.icons.filled.Send +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.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -23,14 +53,21 @@ import androidx.compose.ui.window.v1.DialogProperties import org.briarproject.briar.desktop.paul.data.ContactList import org.briarproject.briar.desktop.paul.model.Contact import org.briarproject.briar.desktop.paul.model.Message -import org.briarproject.briar.desktop.paul.theme.* +import org.briarproject.briar.desktop.paul.theme.briarBlack +import org.briarproject.briar.desktop.paul.theme.briarBlue +import org.briarproject.briar.desktop.paul.theme.briarBlueMsg +import org.briarproject.briar.desktop.paul.theme.briarDarkGray +import org.briarproject.briar.desktop.paul.theme.briarGrayMsg +import org.briarproject.briar.desktop.paul.theme.briarGreen +import org.briarproject.briar.desktop.paul.theme.darkGray +import org.briarproject.briar.desktop.paul.theme.divider +import org.briarproject.briar.desktop.paul.theme.lightGray - -val HEADER_SIZE = 66.dp; +val HEADER_SIZE = 66.dp @Composable fun PrivateMessageView(UIContact: Contact, onContactSelect: (Contact) -> Unit) { - //Local State for managing the Add Contact Popup + // Local State for managing the Add Contact Popup val (AddContactDialog, onCancelAdd) = remember { mutableStateOf(false) } AddContactDialog(AddContactDialog, onCancelAdd) Column(modifier = Modifier.fillMaxHeight()) { @@ -60,7 +97,6 @@ fun PrivateMessageView(UIContact: Contact, onContactSelect: (Contact) -> Unit) { ContactCard(c, UIContact, onSel = onContactSelect) } } - } Divider(color = divider, modifier = Modifier.fillMaxHeight().width(1.dp)) Column(modifier = Modifier.weight(1f).fillMaxHeight().background(color = darkGray)) { @@ -113,7 +149,7 @@ fun AddContactDialog(isVisible: Boolean, onCancel: (Boolean) -> Unit) { "briar://ksdjlfgakslhjgaklsjdhglkasjdlk3j12h4lk2j3tkj4", onValueChange = {}, modifier = Modifier.fillMaxWidth() - ); + ) } } }, @@ -131,7 +167,8 @@ fun AddContactDialog(isVisible: Boolean, onCancel: (Boolean) -> Unit) { TextButton( onClick = { onCancel(false) - }, modifier = Modifier.background(briarBlack) + }, + modifier = Modifier.background(briarBlack) ) { Text("Cancel") } @@ -153,7 +190,8 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit) } Row( modifier = Modifier.fillMaxWidth().height(HEADER_SIZE).background(bgColor) - .clickable(onClick = { onSel(contact) }), horizontalArrangement = Arrangement.SpaceBetween + .clickable(onClick = { onSel(contact) }), + horizontalArrangement = Arrangement.SpaceBetween ) { Row(modifier = Modifier.align(Alignment.CenterVertically).padding(horizontal = 16.dp)) { Image( @@ -179,7 +217,8 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit) } } androidx.compose.foundation.Canvas( - modifier = Modifier.padding(horizontal = 29.dp).size(22.dp).align(Alignment.CenterVertically), onDraw = { + modifier = Modifier.padding(horizontal = 29.dp).size(22.dp).align(Alignment.CenterVertically), + onDraw = { val size = 16.dp.toPx() drawCircle( color = Color.White, @@ -196,7 +235,8 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit) radius = 14.dp.toPx() / 2f ) } - }) + } + ) } Divider(color = divider, thickness = 1.dp, modifier = Modifier.fillMaxWidth()) @@ -247,7 +287,9 @@ fun TextBubble(m: Message) { Icons.Filled.Send, "sending", tint = Color.LightGray, - modifier = Modifier.size(10.dp).align(Alignment.CenterVertically) + modifier = Modifier.size(10.dp).align( + Alignment.CenterVertically + ) ) } } @@ -316,4 +358,4 @@ fun DrawMessageRow(UIContact: Contact) { ) } } -} \ No newline at end of file +}