From f9613ad8e341e7000bfa30c9bc34b803f6c0ac75 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Mon, 27 May 2024 10:31:35 -0300 Subject: [PATCH] update ktlint, format code --- .editorconfig | 20 +++++++ app/build.gradle.kts | 4 +- .../com/greenart7c3/citrine/MainActivity.kt | 36 ++++++------- .../citrine/database/AppDatabase.kt | 10 ++-- .../greenart7c3/citrine/database/EventDao.kt | 2 +- .../citrine/database/EventEntity.kt | 49 +++++++++-------- .../com/greenart7c3/citrine/relays/Client.kt | 38 ++++++------- .../greenart7c3/citrine/relays/Constants.kt | 40 +++++++------- .../com/greenart7c3/citrine/relays/EOSE.kt | 4 +- .../greenart7c3/citrine/relays/JsonFilter.kt | 10 ++-- .../com/greenart7c3/citrine/relays/Relay.kt | 46 ++++++++-------- .../greenart7c3/citrine/relays/RelayPool.kt | 28 +++++----- .../citrine/relays/RelaySetupInfo.kt | 4 +- .../citrine/relays/Subscription.kt | 6 +-- .../greenart7c3/citrine/relays/TypedFilter.kt | 10 ++-- .../citrine/server/CommandResult.kt | 2 +- .../citrine/server/CustomWebSocketServer.kt | 10 ++-- .../greenart7c3/citrine/server/EventFilter.kt | 2 +- .../citrine/server/EventRepository.kt | 14 ++--- .../citrine/server/EventSubscription.kt | 16 +++--- .../citrine/server/SubscriptionManager.kt | 4 +- .../citrine/service/WebSocketServerService.kt | 4 +- .../com/greenart7c3/citrine/ui/CloseButton.kt | 4 +- .../citrine/ui/dialogs/ContactsDialog.kt | 54 +++++++++---------- .../com/greenart7c3/citrine/ui/theme/Theme.kt | 10 ++-- .../com/greenart7c3/citrine/ui/theme/Type.kt | 6 +-- .../greenart7c3/citrine/utils/DateUtils.kt | 4 +- .../greenart7c3/citrine/utils/Extensions.kt | 2 +- .../citrine/utils/HttpClientManager.kt | 20 +++---- 29 files changed, 241 insertions(+), 218 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..63241c4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,20 @@ +root = true + +[*] +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{kt,kts}] +indent_size = 4 +ij_kotlin_packages_to_use_import_on_demand = unset +ij_kotlin_name_count_to_use_star_import = 999 +ij_kotlin_name_count_to_use_star_import_for_members = 999 +max_line_length = off +ktlint_function_naming_ignore_when_annotated_with = Composable +ktlint_code_style = android_studio +ij_kotlin_allow_trailing_comma_on_call_site = true +ij_kotlin_allow_trailing_comma = true + +[*.{yml,yaml}] +indent_size = 2 \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 22885a3..7d46025 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,7 +2,7 @@ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.devtools.ksp") - id("org.jlleitschuh.gradle.ktlint") version "11.5.0" + id("org.jlleitschuh.gradle.ktlint") version "12.1.0" } android { @@ -30,7 +30,7 @@ android { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" + "proguard-rules.pro", ) resValue("string", "app_name", "@string/app_name_release") } diff --git a/app/src/main/java/com/greenart7c3/citrine/MainActivity.kt b/app/src/main/java/com/greenart7c3/citrine/MainActivity.kt index f3e33ac..bb84e12 100644 --- a/app/src/main/java/com/greenart7c3/citrine/MainActivity.kt +++ b/app/src/main/java/com/greenart7c3/citrine/MainActivity.kt @@ -52,22 +52,22 @@ import com.greenart7c3.citrine.service.WebSocketServerService import com.greenart7c3.citrine.ui.dialogs.ContactsDialog import com.greenart7c3.citrine.ui.theme.CitrineTheme import com.vitorpamplona.quartz.events.Event +import java.io.ByteArrayOutputStream +import java.util.zip.GZIPInputStream +import java.util.zip.GZIPOutputStream +import kotlin.text.Charsets.UTF_8 import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import java.io.ByteArrayOutputStream -import java.util.zip.GZIPInputStream -import java.util.zip.GZIPOutputStream -import kotlin.text.Charsets.UTF_8 class MainActivity : ComponentActivity() { private val storageHelper = SimpleStorageHelper(this@MainActivity) @OptIn(DelicateCoroutinesApi::class) private val requestPermissionLauncher = registerForActivityResult( - ActivityResultContracts.RequestPermission() + ActivityResultContracts.RequestPermission(), ) { GlobalScope.launch(Dispatchers.IO) { start() @@ -169,14 +169,14 @@ class MainActivity : ComponentActivity() { Toast.makeText( context, getString(R.string.sign_request_rejected), - Toast.LENGTH_SHORT + Toast.LENGTH_SHORT, ).show() } else { result.data?.let { pubKey = it.getStringExtra("signature") ?: "" } } - } + }, ) CitrineTheme { @@ -187,7 +187,7 @@ class MainActivity : ComponentActivity() { modifier = Modifier .fillMaxSize() .verticalScroll(rememberScrollState()), - color = MaterialTheme.colorScheme.background + color = MaterialTheme.colorScheme.background, ) { if (pubKey.isNotBlank()) { ContactsDialog(pubKey = pubKey) { @@ -197,7 +197,7 @@ class MainActivity : ComponentActivity() { Column( verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { if (isLoading.value) { CircularProgressIndicator() @@ -214,7 +214,7 @@ class MainActivity : ComponentActivity() { delay(1000) isLoading.value = false } - } + }, ) { Text(stringResource(R.string.stop)) } @@ -228,7 +228,7 @@ class MainActivity : ComponentActivity() { delay(1000) isLoading.value = false } - } + }, ) { Text(stringResource(R.string.start)) } @@ -248,13 +248,13 @@ class MainActivity : ComponentActivity() { Toast.makeText( context, getString(R.string.no_external_signer_installed), - Toast.LENGTH_SHORT + Toast.LENGTH_SHORT, ).show() } val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/greenart7c3/Amber/releases")) launcherLogin.launch(intent) } - } + }, ) { Text(stringResource(R.string.restore_follows)) } @@ -263,7 +263,7 @@ class MainActivity : ComponentActivity() { ElevatedButton( onClick = { storageHelper.openFolderPicker() - } + }, ) { Text("Export database") } @@ -271,7 +271,7 @@ class MainActivity : ComponentActivity() { ElevatedButton( onClick = { storageHelper.openFilePicker() - } + }, ) { Text("Import database") } @@ -280,7 +280,7 @@ class MainActivity : ComponentActivity() { Spacer(modifier = Modifier.padding(4.dp)) Text( "Relay", - fontWeight = FontWeight.Bold + fontWeight = FontWeight.Bold, ) Spacer(modifier = Modifier.padding(4.dp)) Text("Connections: ${service?.webSocketServer?.connections?.size ?: 0}") @@ -293,7 +293,7 @@ class MainActivity : ComponentActivity() { Modifier .fillMaxWidth() .padding(horizontal = 24.dp), - horizontalArrangement = Arrangement.SpaceBetween + horizontalArrangement = Arrangement.SpaceBetween, ) { Text("Kind", fontWeight = FontWeight.Bold) Text("Count", fontWeight = FontWeight.Bold) @@ -304,7 +304,7 @@ class MainActivity : ComponentActivity() { Modifier .fillMaxWidth() .padding(horizontal = 24.dp), - horizontalArrangement = Arrangement.SpaceBetween + horizontalArrangement = Arrangement.SpaceBetween, ) { Text("${item.kind}") Text("${item.count}") diff --git a/app/src/main/java/com/greenart7c3/citrine/database/AppDatabase.kt b/app/src/main/java/com/greenart7c3/citrine/database/AppDatabase.kt index fc3c7ad..67e55bc 100644 --- a/app/src/main/java/com/greenart7c3/citrine/database/AppDatabase.kt +++ b/app/src/main/java/com/greenart7c3/citrine/database/AppDatabase.kt @@ -8,7 +8,7 @@ import androidx.room.TypeConverters @Database( entities = [EventEntity::class, TagEntity::class], - version = 1 + version = 1, ) @TypeConverters(Converters::class) abstract class AppDatabase : RoomDatabase() { @@ -16,17 +16,17 @@ abstract class AppDatabase : RoomDatabase() { companion object { @Volatile - private var INSTANCE: AppDatabase? = null + private var database: AppDatabase? = null fun getDatabase(context: Context): AppDatabase { - return INSTANCE ?: synchronized(this) { + return database ?: synchronized(this) { val instance = Room.databaseBuilder( context, AppDatabase::class.java, - "citrine_database" + "citrine_database", ).build() - INSTANCE = instance + database = instance instance } } diff --git a/app/src/main/java/com/greenart7c3/citrine/database/EventDao.kt b/app/src/main/java/com/greenart7c3/citrine/database/EventDao.kt index 2283128..5b5b5d3 100644 --- a/app/src/main/java/com/greenart7c3/citrine/database/EventDao.kt +++ b/app/src/main/java/com/greenart7c3/citrine/database/EventDao.kt @@ -75,7 +75,7 @@ interface EventDao { AND TagEntity.col0Name = 'd' AND TagEntity.col1Value = :dTagValue ) - """ + """, ) @Transaction fun getOldestReplaceable(kind: Int, pubkey: String, dTagValue: String): List diff --git a/app/src/main/java/com/greenart7c3/citrine/database/EventEntity.kt b/app/src/main/java/com/greenart7c3/citrine/database/EventEntity.kt index f70513e..967c8e9 100644 --- a/app/src/main/java/com/greenart7c3/citrine/database/EventEntity.kt +++ b/app/src/main/java/com/greenart7c3/citrine/database/EventEntity.kt @@ -18,14 +18,14 @@ import com.vitorpamplona.quartz.events.EventFactory Index( value = ["id"], name = "id_is_hash", - unique = true + unique = true, ), Index( value = ["pubkey", "kind"], name = "most_common_search_is_pubkey_kind", - orders = [Index.Order.ASC, Index.Order.ASC] - ) - ] + orders = [Index.Order.ASC, Index.Order.ASC], + ), + ], ) data class EventEntity( @PrimaryKey(autoGenerate = false) @@ -34,16 +34,16 @@ data class EventEntity( val createdAt: Long, val kind: Int, val content: String, - val sig: String + val sig: String, ) data class EventWithTags( @Embedded val event: EventEntity, @Relation( parentColumn = "id", - entityColumn = "pkEvent" + entityColumn = "pkEvent", ) - val tags: List + val tags: List, ) @Entity( @@ -52,21 +52,20 @@ data class EventWithTags( entity = EventEntity::class, childColumns = ["pkEvent"], parentColumns = ["id"], - onDelete = CASCADE - ) + onDelete = CASCADE, + ), ], indices = [ Index( value = ["pkEvent"], - name = "tags_by_pk_event" + name = "tags_by_pk_event", ), Index( value = ["col0Name", "col1Value"], - name = "tags_by_tags_on_person_or_events" - ) - ] + name = "tags_by_tags_on_person_or_events", + ), + ], ) - data class TagEntity( @PrimaryKey(autoGenerate = true) val pk: Long? = null, var pkEvent: String? = null, @@ -77,7 +76,7 @@ data class TagEntity( val col1Value: String?, val col2Differentiator: String?, val col3Amount: String?, - val col4Plus: List + val col4Plus: List, ) class Converters { @@ -108,7 +107,7 @@ fun EventWithTags.toEvent(): Event { sig = event.sig, tags = tags.map { it.toTags() - }.toTypedArray() + }.toTypedArray(), ) } @@ -117,7 +116,7 @@ fun TagEntity.toTags(): Array { col0Name, col1Value, col2Differentiator, - col3Amount + col3Amount, ).plus(col4Plus).toTypedArray() } @@ -128,17 +127,21 @@ fun Event.toEventWithTags(): EventWithTags { createdAt = createdAt, kind = kind, content = content, - sig = sig + sig = sig, ) val dbTags = tags.mapIndexed { index, tag -> TagEntity( position = index, - col0Name = tag.getOrNull(0), // tag name - col1Value = tag.getOrNull(1), // tag value - col2Differentiator = tag.getOrNull(2), // marker - col3Amount = tag.getOrNull(3), // value - col4Plus = if (tag.size > 4) tag.asList().subList(4, tag.size) else emptyList() + // tag name + col0Name = tag.getOrNull(0), + // tag value + col1Value = tag.getOrNull(1), + // marker + col2Differentiator = tag.getOrNull(2), + // value + col3Amount = tag.getOrNull(3), + col4Plus = if (tag.size > 4) tag.asList().subList(4, tag.size) else emptyList(), ) } diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/Client.kt b/app/src/main/java/com/greenart7c3/citrine/relays/Client.kt index b2e811d..caa4dfa 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/Client.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/Client.kt @@ -24,12 +24,12 @@ import android.util.Log import com.greenart7c3.citrine.utils.checkNotInMainThread import com.vitorpamplona.quartz.events.Event import com.vitorpamplona.quartz.events.EventInterface +import java.util.UUID import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import java.util.UUID /** * The Nostr Client manages multiple personae the user may switch between. Events are received and @@ -43,7 +43,7 @@ object Client : RelayPool.Listener { @Synchronized fun reconnect( relays: Array?, - onlyIfChanged: Boolean = false + onlyIfChanged: Boolean = false, ) { Log.d("Relay", "Relay Pool Reconnecting to ${relays?.size} relays") checkNotInMainThread() @@ -93,7 +93,7 @@ object Client : RelayPool.Listener { fun sendFilter( subscriptionId: String = UUID.randomUUID().toString().substring(0..10), - filters: List = listOf() + filters: List = listOf(), ) { checkNotInMainThread() @@ -103,7 +103,7 @@ object Client : RelayPool.Listener { fun sendFilterOnlyIfDisconnected( subscriptionId: String = UUID.randomUUID().toString().substring(0..10), - filters: List = listOf() + filters: List = listOf(), ) { checkNotInMainThread() @@ -116,7 +116,7 @@ object Client : RelayPool.Listener { relay: String? = null, feedTypes: Set? = null, relayList: List? = null, - onDone: (() -> Unit)? = null + onDone: (() -> Unit)? = null, ) { checkNotInMainThread() @@ -135,7 +135,7 @@ object Client : RelayPool.Listener { relay, feedTypes, onConnected = { relay -> relay.send(signedEvent) }, - onDone = onDone + onDone = onDone, ) } } @@ -146,7 +146,7 @@ object Client : RelayPool.Listener { url: String, feedTypes: Set?, onConnected: (Relay) -> Unit, - onDone: (() -> Unit)? + onDone: (() -> Unit)?, ) { val relay = Relay(url, true, true, feedTypes ?: emptySet()) RelayPool.addRelay(relay) @@ -182,7 +182,7 @@ object Client : RelayPool.Listener { event: Event, subscriptionId: String, relay: Relay, - afterEOSE: Boolean + afterEOSE: Boolean, ) { // Releases the Web thread for the new payload. // May need to add a processing queue if processing new events become too costly. @@ -195,7 +195,7 @@ object Client : RelayPool.Listener { override fun onError( error: Error, subscriptionId: String, - relay: Relay + relay: Relay, ) { // Releases the Web thread for the new payload. // May need to add a processing queue if processing new events become too costly. @@ -208,7 +208,7 @@ object Client : RelayPool.Listener { override fun onRelayStateChange( type: Relay.StateType, relay: Relay, - channel: String? + channel: String?, ) { // Releases the Web thread for the new payload. // May need to add a processing queue if processing new events become too costly. @@ -222,7 +222,7 @@ object Client : RelayPool.Listener { eventId: String, success: Boolean, message: String, - relay: Relay + relay: Relay, ) { // Releases the Web thread for the new payload. // May need to add a processing queue if processing new events become too costly. @@ -234,7 +234,7 @@ object Client : RelayPool.Listener { @OptIn(DelicateCoroutinesApi::class) override fun onAuth( relay: Relay, - challenge: String + challenge: String, ) { // Releases the Web thread for the new payload. // May need to add a processing queue if processing new events become too costly. @@ -244,7 +244,7 @@ object Client : RelayPool.Listener { @OptIn(DelicateCoroutinesApi::class) override fun onNotify( relay: Relay, - description: String + description: String, ) { // Releases the Web thread for the new payload. // May need to add a processing queue if processing new events become too costly. @@ -279,21 +279,21 @@ object Client : RelayPool.Listener { event: Event, subscriptionId: String, relay: Relay, - afterEOSE: Boolean + afterEOSE: Boolean, ) = Unit /** A new or repeat message was received */ open fun onError( error: Error, subscriptionId: String, - relay: Relay + relay: Relay, ) = Unit /** Connected to or disconnected from a relay */ open fun onRelayStateChange( type: Relay.StateType, relay: Relay, - subscriptionId: String? + subscriptionId: String?, ) = Unit /** When an relay saves or rejects a new event. */ @@ -301,17 +301,17 @@ object Client : RelayPool.Listener { eventId: String, success: Boolean, message: String, - relay: Relay + relay: Relay, ) = Unit open fun onAuth( relay: Relay, - challenge: String + challenge: String, ) = Unit open fun onNotify( relay: Relay, - description: String + description: String, ) = Unit } } diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/Constants.kt b/app/src/main/java/com/greenart7c3/citrine/relays/Constants.kt index 957ac61..4ae2874 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/Constants.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/Constants.kt @@ -40,25 +40,25 @@ object Constants { "wss://nostr.bitcoiner.social", read = true, write = true, - feedTypes = activeTypesChats + feedTypes = activeTypesChats, ), RelaySetupInfo( "wss://relay.nostr.bg", read = true, write = true, - feedTypes = activeTypesChats + feedTypes = activeTypesChats, ), RelaySetupInfo( "wss://nostr.oxtr.dev", read = true, write = true, - feedTypes = activeTypesChats + feedTypes = activeTypesChats, ), RelaySetupInfo( "wss://nostr-pub.wellorder.net", read = true, write = true, - feedTypes = activeTypesChats + feedTypes = activeTypesChats, ), RelaySetupInfo("wss://nostr.mom", read = true, write = true, feedTypes = activeTypesGlobalChats), RelaySetupInfo("wss://nos.lol", read = true, write = true, feedTypes = activeTypesGlobalChats), @@ -84,76 +84,76 @@ object Constants { "wss://relay.snort.social", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://relay.nostr.com.au", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://eden.nostr.land", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://nostr.milou.lol", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://puravida.nostr.land", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://nostr.wine", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://nostr.inosta.cc", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://atlas.nostr.land", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://relay.orangepill.dev", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), RelaySetupInfo( "wss://relay.nostrati.com", read = true, write = false, - feedTypes = activeTypesGlobalChats + feedTypes = activeTypesGlobalChats, ), // Supporting NIP-50 RelaySetupInfo( "wss://relay.nostr.band", read = true, write = false, - feedTypes = activeTypesSearch + feedTypes = activeTypesSearch, ), RelaySetupInfo("wss://nostr.wine", read = true, write = false, feedTypes = activeTypesSearch), RelaySetupInfo( "wss://relay.noswhere.com", read = true, write = false, - feedTypes = activeTypesSearch - ) + feedTypes = activeTypesSearch, + ), ) val forcedRelayForSearch = @@ -162,15 +162,15 @@ object Constants { "wss://relay.nostr.band", read = true, write = false, - feedTypes = activeTypesSearch + feedTypes = activeTypesSearch, ), RelaySetupInfo("wss://nostr.wine", read = true, write = false, feedTypes = activeTypesSearch), RelaySetupInfo( "wss://relay.noswhere.com", read = true, write = false, - feedTypes = activeTypesSearch - ) + feedTypes = activeTypesSearch, + ), ) val forcedRelaysForSearchSet = forcedRelayForSearch.map { it.url } } diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/EOSE.kt b/app/src/main/java/com/greenart7c3/citrine/relays/EOSE.kt index 5530801..d042b15 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/EOSE.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/EOSE.kt @@ -29,7 +29,7 @@ class EOSETime(var time: Long) { class EOSERelayList(var relayList: Map = emptyMap()) { fun addOrUpdate( relayUrl: String, - time: Long + time: Long, ) { val eose = relayList[relayUrl] if (eose == null) { @@ -44,7 +44,7 @@ class EOSEFollowList(var followList: Map = emptyMap()) { fun addOrUpdate( listCode: String, relayUrl: String, - time: Long + time: Long, ) { val relayList = followList[listCode] if (relayList == null) { diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/JsonFilter.kt b/app/src/main/java/com/greenart7c3/citrine/relays/JsonFilter.kt index 963ef4f..faae2a7 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/JsonFilter.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/JsonFilter.kt @@ -30,7 +30,7 @@ class JsonFilter( val since: Map? = null, val until: Long? = null, val limit: Int? = null, - val search: String? = null + val search: String? = null, ) { fun toJson(forRelay: String? = null): String { val factory = Event.mapper.nodeFactory @@ -39,26 +39,26 @@ class JsonFilter( ids?.run { put( "ids", - factory.arrayNode(ids.size).apply { ids.forEach { add(it) } } + factory.arrayNode(ids.size).apply { ids.forEach { add(it) } }, ) } authors?.run { put( "authors", - factory.arrayNode(authors.size).apply { authors.forEach { add(it) } } + factory.arrayNode(authors.size).apply { authors.forEach { add(it) } }, ) } kinds?.run { put( "kinds", - factory.arrayNode(kinds.size).apply { kinds.forEach { add(it) } } + factory.arrayNode(kinds.size).apply { kinds.forEach { add(it) } }, ) } tags?.run { entries.forEach { kv -> put( "#${kv.key}", - factory.arrayNode(kv.value.size).apply { kv.value.forEach { add(it) } } + factory.arrayNode(kv.value.size).apply { kv.value.forEach { add(it) } }, ) } } diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/Relay.kt b/app/src/main/java/com/greenart7c3/citrine/relays/Relay.kt index b76c745..fbafb8d 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/Relay.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/Relay.kt @@ -30,12 +30,12 @@ import com.vitorpamplona.quartz.events.EventInterface import com.vitorpamplona.quartz.events.RelayAuthEvent import com.vitorpamplona.quartz.events.bytesUsedInMemory import com.vitorpamplona.quartz.utils.TimeUtils +import java.util.concurrent.atomic.AtomicBoolean import kotlinx.coroutines.CancellationException import okhttp3.Request import okhttp3.Response import okhttp3.WebSocket import okhttp3.WebSocketListener -import java.util.concurrent.atomic.AtomicBoolean enum class FeedType { FOLLOWS, @@ -43,7 +43,7 @@ enum class FeedType { PRIVATE_DMS, GLOBAL, SEARCH, - WALLET_CONNECT + WALLET_CONNECT, } val COMMON_FEED_TYPES = @@ -53,7 +53,7 @@ class Relay( val url: String, val read: Boolean = true, val write: Boolean = true, - val activeTypes: Set = FeedType.values().toSet() + val activeTypes: Set = FeedType.values().toSet(), ) { companion object { // waits 3 minutes to reconnect once things fail @@ -142,14 +142,14 @@ class Relay( inner class RelayListener(val onConnected: (Relay) -> Unit) : WebSocketListener() { override fun onOpen( webSocket: WebSocket, - response: Response + response: Response, ) { checkNotInMainThread() Log.d("Relay", "Connect onOpen $url $socket") markConnectionAsReady( pingInMs = response.receivedResponseAtMillis - response.sentRequestAtMillis, - usingCompression = response.headers.get("Sec-WebSocket-Extensions")?.contains("permessage-deflate") ?: false + usingCompression = response.headers.get("Sec-WebSocket-Extensions")?.contains("permessage-deflate") ?: false, ) // Log.w("Relay", "Relay OnOpen, Loading All subscriptions $url") @@ -160,7 +160,7 @@ class Relay( override fun onMessage( webSocket: WebSocket, - text: String + text: String, ) { checkNotInMainThread() @@ -180,7 +180,7 @@ class Relay( override fun onClosing( webSocket: WebSocket, code: Int, - reason: String + reason: String, ) { checkNotInMainThread() @@ -190,7 +190,7 @@ class Relay( it.onRelayStateChange( this@Relay, StateType.DISCONNECTING, - null + null, ) } } @@ -198,7 +198,7 @@ class Relay( override fun onClosed( webSocket: WebSocket, code: Int, - reason: String + reason: String, ) { checkNotInMainThread() @@ -212,7 +212,7 @@ class Relay( override fun onFailure( webSocket: WebSocket, t: Throwable, - response: Response? + response: Response?, ) { checkNotInMainThread() @@ -228,7 +228,7 @@ class Relay( it.onError( this@Relay, "", - Error("WebSocket Failure. Response: $response. Exception: ${t.message}", t) + Error("WebSocket Failure. Response: $response. Exception: ${t.message}", t), ) } } @@ -236,7 +236,7 @@ class Relay( fun markConnectionAsReady( pingInMs: Long, - usingCompression: Boolean + usingCompression: Boolean, ) { this.resetEOSEStatuses() this.isReady = true @@ -265,7 +265,7 @@ class Relay( this@Relay, subscriptionId, event, - afterEOSEPerSubscription[subscriptionId] == true + afterEOSEPerSubscription[subscriptionId] == true, ) } } @@ -318,7 +318,7 @@ class Relay( it.onError( this@Relay, "", - Error("Unknown type $type on channel. Msg was $newMessage") + Error("Unknown type $type on channel. Msg was $newMessage"), ) } } @@ -356,7 +356,7 @@ class Relay( separator = ",", limit = 20, prefix = """["REQ","$requestId",""", - postfix = "]" + postfix = "]", ) { it.filter.toJson(url) } @@ -383,7 +383,7 @@ class Relay( prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, - transform: ((T) -> CharSequence)? = null + transform: ((T) -> CharSequence)? = null, ): String { val buffer = StringBuilder() buffer.append(prefix) @@ -481,7 +481,7 @@ class Relay( DISCONNECT, // End Of Stored Events - EOSE + EOSE, } interface Listener { @@ -490,25 +490,25 @@ class Relay( relay: Relay, subscriptionId: String, event: Event, - afterEOSE: Boolean + afterEOSE: Boolean, ) fun onError( relay: Relay, subscriptionId: String, - error: Error + error: Error, ) fun onSendResponse( relay: Relay, eventId: String, success: Boolean, - message: String + message: String, ) fun onAuth( relay: Relay, - challenge: String + challenge: String, ) /** @@ -519,13 +519,13 @@ class Relay( fun onRelayStateChange( relay: Relay, type: StateType, - channel: String? + channel: String?, ) /** Relay sent an invoice */ fun onNotify( relay: Relay, - description: String + description: String, ) } } diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/RelayPool.kt b/app/src/main/java/com/greenart7c3/citrine/relays/RelayPool.kt index 6415365..03564b3 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/RelayPool.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/RelayPool.kt @@ -87,7 +87,7 @@ object RelayPool : Relay.Listener { fun sendToSelectedRelays( list: List, - signedEvent: EventInterface + signedEvent: EventInterface, ) { list.forEach { relay -> relays.filter { it.url == relay.url }.forEach { it.send(signedEvent) } } } @@ -129,36 +129,36 @@ object RelayPool : Relay.Listener { event: Event, subscriptionId: String, relay: Relay, - afterEOSE: Boolean + afterEOSE: Boolean, ) fun onError( error: Error, subscriptionId: String, - relay: Relay + relay: Relay, ) fun onRelayStateChange( type: Relay.StateType, relay: Relay, - channel: String? + channel: String?, ) fun onSendResponse( eventId: String, success: Boolean, message: String, - relay: Relay + relay: Relay, ) fun onAuth( relay: Relay, - challenge: String + challenge: String, ) fun onNotify( relay: Relay, - description: String + description: String, ) } @@ -166,7 +166,7 @@ object RelayPool : Relay.Listener { relay: Relay, subscriptionId: String, event: Event, - afterEOSE: Boolean + afterEOSE: Boolean, ) { listeners.forEach { it.onEvent(event, subscriptionId, relay, afterEOSE) } } @@ -174,7 +174,7 @@ object RelayPool : Relay.Listener { override fun onError( relay: Relay, subscriptionId: String, - error: Error + error: Error, ) { listeners.forEach { it.onError(error, subscriptionId, relay) } updateStatus() @@ -183,7 +183,7 @@ object RelayPool : Relay.Listener { override fun onRelayStateChange( relay: Relay, type: Relay.StateType, - channel: String? + channel: String?, ) { listeners.forEach { it.onRelayStateChange(type, relay, channel) } if (type != Relay.StateType.EOSE) { @@ -195,21 +195,21 @@ object RelayPool : Relay.Listener { relay: Relay, eventId: String, success: Boolean, - message: String + message: String, ) { listeners.forEach { it.onSendResponse(eventId, success, message, relay) } } override fun onAuth( relay: Relay, - challenge: String + challenge: String, ) { listeners.forEach { it.onAuth(relay, challenge) } } override fun onNotify( relay: Relay, - description: String + description: String, ) { listeners.forEach { it.onNotify(relay, description) } } @@ -228,5 +228,5 @@ object RelayPool : Relay.Listener { data class RelayPoolStatus( val connected: Int, val available: Int, - val isConnected: Boolean = connected > 0 + val isConnected: Boolean = connected > 0, ) diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/RelaySetupInfo.kt b/app/src/main/java/com/greenart7c3/citrine/relays/RelaySetupInfo.kt index 1d64554..7d24bea 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/RelaySetupInfo.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/RelaySetupInfo.kt @@ -33,7 +33,7 @@ data class RelaySetupInfo( val uploadCountInBytes: Int = 0, val spamCount: Int = 0, val feedTypes: Set, - val paidRelay: Boolean = false + val paidRelay: Boolean = false, ) { val briefInfo: RelayBriefInfoCache.RelayBriefInfo = RelayBriefInfoCache.RelayBriefInfo(url) } @@ -46,7 +46,7 @@ object RelayBriefInfoCache { val url: String, val displayUrl: String = url.trim().removePrefix("wss://").removePrefix("ws://").removeSuffix("/").intern(), - val favIcon: String = "https://$displayUrl/favicon.ico".intern() + val favIcon: String = "https://$displayUrl/favicon.ico".intern(), ) fun get(url: String): RelayBriefInfo { diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/Subscription.kt b/app/src/main/java/com/greenart7c3/citrine/relays/Subscription.kt index dcf4f23..2e2eb9d 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/Subscription.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/Subscription.kt @@ -26,13 +26,13 @@ import java.util.UUID data class Subscription( val id: String = UUID.randomUUID().toString().substring(0, 4), - val onEOSE: ((Long, String) -> Unit)? = null + val onEOSE: ((Long, String) -> Unit)? = null, ) { var typedFilters: List? = null // Inactive when null fun updateEOSE( time: Long, - relay: String + relay: String, ) { onEOSE?.let { it(time, relay) } } @@ -51,7 +51,7 @@ data class Subscription( "typedFilters", factory.arrayNode(filters.size).apply { filters.forEach { filter -> add(filter.toJsonObject()) } - } + }, ) } } diff --git a/app/src/main/java/com/greenart7c3/citrine/relays/TypedFilter.kt b/app/src/main/java/com/greenart7c3/citrine/relays/TypedFilter.kt index 538effc..bc2402a 100644 --- a/app/src/main/java/com/greenart7c3/citrine/relays/TypedFilter.kt +++ b/app/src/main/java/com/greenart7c3/citrine/relays/TypedFilter.kt @@ -26,7 +26,7 @@ import com.vitorpamplona.quartz.events.Event class TypedFilter( val types: Set, - val filter: JsonFilter + val filter: JsonFilter, ) { fun toJson(): String { return Event.mapper.writeValueAsString(toJsonObject()) @@ -52,26 +52,26 @@ class TypedFilter( filter.ids?.run { put( "ids", - factory.arrayNode(filter.ids.size).apply { filter.ids.forEach { add(it) } } + factory.arrayNode(filter.ids.size).apply { filter.ids.forEach { add(it) } }, ) } filter.authors?.run { put( "authors", - factory.arrayNode(filter.authors.size).apply { filter.authors.forEach { add(it) } } + factory.arrayNode(filter.authors.size).apply { filter.authors.forEach { add(it) } }, ) } filter.kinds?.run { put( "kinds", - factory.arrayNode(filter.kinds.size).apply { filter.kinds.forEach { add(it) } } + factory.arrayNode(filter.kinds.size).apply { filter.kinds.forEach { add(it) } }, ) } filter.tags?.run { entries.forEach { kv -> put( "#${kv.key}", - factory.arrayNode(kv.value.size).apply { kv.value.forEach { add(it) } } + factory.arrayNode(kv.value.size).apply { kv.value.forEach { add(it) } }, ) } } diff --git a/app/src/main/java/com/greenart7c3/citrine/server/CommandResult.kt b/app/src/main/java/com/greenart7c3/citrine/server/CommandResult.kt index 5c59995..7dc856b 100644 --- a/app/src/main/java/com/greenart7c3/citrine/server/CommandResult.kt +++ b/app/src/main/java/com/greenart7c3/citrine/server/CommandResult.kt @@ -6,7 +6,7 @@ import com.vitorpamplona.quartz.events.Event data class CommandResult(val eventId: String, val result: Boolean, val description: String = "") { fun toJson(): String { return jacksonObjectMapper().writeValueAsString( - listOf("OK", eventId, result, description) + listOf("OK", eventId, result, description), ) } diff --git a/app/src/main/java/com/greenart7c3/citrine/server/CustomWebSocketServer.kt b/app/src/main/java/com/greenart7c3/citrine/server/CustomWebSocketServer.kt index 0ba24df..5fa95fc 100644 --- a/app/src/main/java/com/greenart7c3/citrine/server/CustomWebSocketServer.kt +++ b/app/src/main/java/com/greenart7c3/citrine/server/CustomWebSocketServer.kt @@ -30,10 +30,10 @@ import io.ktor.websocket.Frame import io.ktor.websocket.WebSocketDeflateExtension import io.ktor.websocket.readText import io.ktor.websocket.send -import kotlinx.coroutines.DelicateCoroutinesApi import java.util.Collections import java.util.concurrent.CancellationException import java.util.zip.Deflater +import kotlinx.coroutines.DelicateCoroutinesApi class CustomWebSocketServer(private val port: Int, private val appDatabase: AppDatabase) { val connections = Collections.synchronizedSet(LinkedHashSet()) @@ -62,7 +62,7 @@ class CustomWebSocketServer(private val port: Int, private val appDatabase: AppD subscriptionId: String, filterNodes: List, connection: Connection, - count: Boolean = false + count: Boolean = false, ) { val filters = filterNodes.map { jsonNode -> val tags = jsonNode.fields().asSequence() @@ -115,8 +115,8 @@ class CustomWebSocketServer(private val port: Int, private val appDatabase: AppD connection.session.send( CommandResult.invalid( event, - "event signature verification failed" - ).toJson() + "event signature verification failed", + ).toJson(), ) return } @@ -177,7 +177,7 @@ class CustomWebSocketServer(private val port: Int, private val appDatabase: AppD return embeddedServer( CIO, port = port, - host = "127.0.0.1" + host = "127.0.0.1", ) { install(WebSockets) { pingPeriodMillis = 1000L diff --git a/app/src/main/java/com/greenart7c3/citrine/server/EventFilter.kt b/app/src/main/java/com/greenart7c3/citrine/server/EventFilter.kt index 21ea8ef..571e228 100644 --- a/app/src/main/java/com/greenart7c3/citrine/server/EventFilter.kt +++ b/app/src/main/java/com/greenart7c3/citrine/server/EventFilter.kt @@ -11,7 +11,7 @@ data class EventFilter( var since: Int? = null, val until: Int? = null, val limit: Int = 10_000, - val search: String? = null + val search: String? = null, ) : Predicate { val searchKeywords: Set = search?.let { tokenizeString(search) } ?: emptySet() diff --git a/app/src/main/java/com/greenart7c3/citrine/server/EventRepository.kt b/app/src/main/java/com/greenart7c3/citrine/server/EventRepository.kt index 6bfd3b3..9610f9b 100644 --- a/app/src/main/java/com/greenart7c3/citrine/server/EventRepository.kt +++ b/app/src/main/java/com/greenart7c3/citrine/server/EventRepository.kt @@ -7,7 +7,7 @@ import kotlinx.coroutines.runBlocking object EventRepository { suspend fun subscribe( subscription: Subscription, - filter: EventFilter + filter: EventFilter, ) { var events = subscription.appDatabase.eventDao().getAll().sortedByDescending { it.event.createdAt }.toMutableList() @@ -60,9 +60,9 @@ object EventRepository { listOf( "COUNT", subscription.id, - CountResult(events.size).toJson() - ) - ) + CountResult(events.size).toJson(), + ), + ), ) } return @@ -77,9 +77,9 @@ object EventRepository { listOf( "EVENT", subscription.id, - event.toJsonObject() - ) - ) + event.toJsonObject(), + ), + ), ) } } diff --git a/app/src/main/java/com/greenart7c3/citrine/server/EventSubscription.kt b/app/src/main/java/com/greenart7c3/citrine/server/EventSubscription.kt index b95d01b..f73cf4d 100644 --- a/app/src/main/java/com/greenart7c3/citrine/server/EventSubscription.kt +++ b/app/src/main/java/com/greenart7c3/citrine/server/EventSubscription.kt @@ -20,7 +20,7 @@ data class Subscription( val filters: Set, val appDatabase: AppDatabase, val objectMapper: ObjectMapper, - val count: Boolean + val count: Boolean, ) object EventSubscription { @@ -41,9 +41,9 @@ object EventSubscription { listOf( "EVENT", it.subscription.id, - event.toJsonObject() - ) - ) + event.toJsonObject(), + ), + ), ) } } @@ -79,7 +79,7 @@ object EventSubscription { connection: Connection, appDatabase: AppDatabase, objectMapper: ObjectMapper, - count: Boolean + count: Boolean, ) { Log.d("subscriptions", "new subscription $subscriptionId") close(subscriptionId) @@ -92,9 +92,9 @@ object EventSubscription { filters, appDatabase, objectMapper, - count - ) - ) + count, + ), + ), ) _subscriptionCount.value = subscriptions.size() } diff --git a/app/src/main/java/com/greenart7c3/citrine/server/SubscriptionManager.kt b/app/src/main/java/com/greenart7c3/citrine/server/SubscriptionManager.kt index 317dda4..e458d30 100644 --- a/app/src/main/java/com/greenart7c3/citrine/server/SubscriptionManager.kt +++ b/app/src/main/java/com/greenart7c3/citrine/server/SubscriptionManager.kt @@ -24,7 +24,7 @@ class SubscriptionManager(val subscription: Subscription) { runBlocking { EventRepository.subscribe( subscription, - filter + filter, ) } } catch (e: Exception) { @@ -32,7 +32,7 @@ class SubscriptionManager(val subscription: Subscription) { Log.d("error", "Error reading data from database", e) subscription.connection.session.send( - NoticeResult.invalid("Error reading data from database").toJson() + NoticeResult.invalid("Error reading data from database").toJson(), ) } } diff --git a/app/src/main/java/com/greenart7c3/citrine/service/WebSocketServerService.kt b/app/src/main/java/com/greenart7c3/citrine/service/WebSocketServerService.kt index a56da9a..0a69748 100644 --- a/app/src/main/java/com/greenart7c3/citrine/service/WebSocketServerService.kt +++ b/app/src/main/java/com/greenart7c3/citrine/service/WebSocketServerService.kt @@ -36,7 +36,7 @@ class WebSocketServerService : Service() { override fun onReceive(context: Context?, intent: Intent?) { val clipboard = getSystemService( applicationContext, - ClipboardManager::class.java + ClipboardManager::class.java, ) as ClipboardManager val clip = ClipData.newPlainText("WebSocket Server Address", "ws://localhost:${webSocketServer.port()}") clipboard.setPrimaryClip(clip) @@ -58,7 +58,7 @@ class WebSocketServerService : Service() { // Start the WebSocket server webSocketServer = CustomWebSocketServer( DEFAULT_PORT, - AppDatabase.getDatabase(this@WebSocketServerService) + AppDatabase.getDatabase(this@WebSocketServerService), ) webSocketServer.start() diff --git a/app/src/main/java/com/greenart7c3/citrine/ui/CloseButton.kt b/app/src/main/java/com/greenart7c3/citrine/ui/CloseButton.kt index 70fc602..34b7161 100644 --- a/app/src/main/java/com/greenart7c3/citrine/ui/CloseButton.kt +++ b/app/src/main/java/com/greenart7c3/citrine/ui/CloseButton.kt @@ -16,12 +16,12 @@ fun CloseButton(onCancel: () -> Unit) { onClick = { onCancel() }, - shape = RoundedCornerShape(20.dp) + shape = RoundedCornerShape(20.dp), ) { Icon( Icons.Outlined.Close, contentDescription = "Cancel", - modifier = Modifier.size(20.dp) + modifier = Modifier.size(20.dp), ) } } diff --git a/app/src/main/java/com/greenart7c3/citrine/ui/dialogs/ContactsDialog.kt b/app/src/main/java/com/greenart7c3/citrine/ui/dialogs/ContactsDialog.kt index 58c2d54..fabd2eb 100644 --- a/app/src/main/java/com/greenart7c3/citrine/ui/dialogs/ContactsDialog.kt +++ b/app/src/main/java/com/greenart7c3/citrine/ui/dialogs/ContactsDialog.kt @@ -45,9 +45,9 @@ import com.vitorpamplona.quartz.encoders.toHexKey import com.vitorpamplona.quartz.events.ContactListEvent import com.vitorpamplona.quartz.signers.ExternalSignerLauncher import com.vitorpamplona.quartz.signers.NostrSignerExternal +import kotlin.coroutines.cancellation.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlin.coroutines.cancellation.CancellationException @Composable fun ContactsDialog(pubKey: String, onClose: () -> Unit) { @@ -59,7 +59,7 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { val signer = NostrSignerExternal( pubKey.bechToBytes().toHexKey(), - ExternalSignerLauncher(pubKey, "") + ExternalSignerLauncher(pubKey, ""), ) val launcher = rememberLauncherForActivityResult( contract = ActivityResultContracts.StartActivityForResult(), @@ -68,7 +68,7 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { Toast.makeText( context, context.getString(R.string.sign_request_rejected), - Toast.LENGTH_SHORT + Toast.LENGTH_SHORT, ).show() } else { result.data?.let { @@ -77,7 +77,7 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { } } } - } + }, ) signer.launcher.registerLauncher( launcher = { @@ -90,12 +90,12 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { Toast.makeText( context, context.getString(R.string.make_sure_the_signer_application_has_authorized_this_transaction), - Toast.LENGTH_LONG + Toast.LENGTH_LONG, ).show() } } }, - contentResolver = { context.contentResolver } + contentResolver = { context.contentResolver }, ) val events = mutableListOf() @@ -112,15 +112,15 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { Dialog( onDismissRequest = onClose, - properties = DialogProperties(usePlatformDefaultWidth = false) + properties = DialogProperties(usePlatformDefaultWidth = false), ) { Surface( - Modifier.fillMaxSize() + Modifier.fillMaxSize(), ) { if (loading) { Column( verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { CircularProgressIndicator() } @@ -128,17 +128,17 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { Column( modifier = Modifier .background(MaterialTheme.colorScheme.background) - .fillMaxSize() + .fillMaxSize(), ) { Row( modifier = Modifier .fillMaxWidth() .padding(10.dp), horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { CloseButton( - onCancel = onClose + onCancel = onClose, ) } @@ -146,52 +146,52 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { Column( Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { Text( stringResource(R.string.no_follow_list_found), - textAlign = TextAlign.Center + textAlign = TextAlign.Center, ) } } LazyColumn( - Modifier.fillMaxSize() + Modifier.fillMaxSize(), ) { items(events.size) { val event = events[it] Card( Modifier .fillMaxWidth() - .padding(4.dp) + .padding(4.dp), ) { Text( "Date: ${event.createdAt.toDateString()}", modifier = Modifier.padding( start = 6.dp, end = 6.dp, - top = 6.dp - ) + top = 6.dp, + ), ) Text( "Following: ${event.verifiedFollowKeySet.size}", - modifier = Modifier.padding(horizontal = 6.dp) + modifier = Modifier.padding(horizontal = 6.dp), ) Text( "Communities: ${event.verifiedFollowCommunitySet.size}", - modifier = Modifier.padding(horizontal = 6.dp) + modifier = Modifier.padding(horizontal = 6.dp), ) Text( "Hashtags: ${event.verifiedFollowTagSet.size}", - modifier = Modifier.padding(horizontal = 6.dp) + modifier = Modifier.padding(horizontal = 6.dp), ) Text( "Relays: ${event.relays()?.keys?.size ?: 0}", - modifier = Modifier.padding(horizontal = 6.dp) + modifier = Modifier.padding(horizontal = 6.dp), ) Row( Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.Center + horizontalArrangement = Arrangement.Center, ) { ElevatedButton( onClick = { @@ -201,7 +201,7 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { Toast.makeText( context, context.getString(R.string.no_relays_found), - Toast.LENGTH_SHORT + Toast.LENGTH_SHORT, ).show() } return@ElevatedButton @@ -210,7 +210,7 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { ContactListEvent.create( event.content, event.tags, - signer + signer, ) { signedEvent -> relays.forEach { relay -> if (relay.value.write) { @@ -223,8 +223,8 @@ fun ContactsDialog(pubKey: String, onClose: () -> Unit) { modifier = Modifier.padding( start = 6.dp, end = 6.dp, - bottom = 6.dp - ) + bottom = 6.dp, + ), ) { Text(stringResource(R.string.restore)) } diff --git a/app/src/main/java/com/greenart7c3/citrine/ui/theme/Theme.kt b/app/src/main/java/com/greenart7c3/citrine/ui/theme/Theme.kt index 6b5c3d9..be9350d 100644 --- a/app/src/main/java/com/greenart7c3/citrine/ui/theme/Theme.kt +++ b/app/src/main/java/com/greenart7c3/citrine/ui/theme/Theme.kt @@ -18,13 +18,13 @@ import androidx.core.view.WindowCompat private val DarkColorScheme = darkColorScheme( primary = Purple80, secondary = PurpleGrey80, - tertiary = Pink80 + tertiary = Pink80, ) private val LightColorScheme = lightColorScheme( primary = Purple40, secondary = PurpleGrey40, - tertiary = Pink40 + tertiary = Pink40, /* Other default colors to override background = Color(0xFFFFFBFE), @@ -34,7 +34,7 @@ private val LightColorScheme = lightColorScheme( onTertiary = Color.White, onBackground = Color(0xFF1C1B1F), onSurface = Color(0xFF1C1B1F), - */ + */ ) @Composable @@ -42,7 +42,7 @@ fun CitrineTheme( darkTheme: Boolean = isSystemInDarkTheme(), // Dynamic color is available on Android 12+ dynamicColor: Boolean = true, - content: @Composable () -> Unit + content: @Composable () -> Unit, ) { val colorScheme = when { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { @@ -65,6 +65,6 @@ fun CitrineTheme( MaterialTheme( colorScheme = colorScheme, typography = Typography, - content = content + content = content, ) } diff --git a/app/src/main/java/com/greenart7c3/citrine/ui/theme/Type.kt b/app/src/main/java/com/greenart7c3/citrine/ui/theme/Type.kt index e9670e9..3925425 100644 --- a/app/src/main/java/com/greenart7c3/citrine/ui/theme/Type.kt +++ b/app/src/main/java/com/greenart7c3/citrine/ui/theme/Type.kt @@ -13,8 +13,8 @@ val Typography = Typography( fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 24.sp, - letterSpacing = 0.5.sp - ) + letterSpacing = 0.5.sp, + ), /* Other default text styles to override titleLarge = TextStyle( fontFamily = FontFamily.Default, @@ -30,5 +30,5 @@ val Typography = Typography( lineHeight = 16.sp, letterSpacing = 0.5.sp ) - */ + */ ) diff --git a/app/src/main/java/com/greenart7c3/citrine/utils/DateUtils.kt b/app/src/main/java/com/greenart7c3/citrine/utils/DateUtils.kt index 292f285..1807e1f 100644 --- a/app/src/main/java/com/greenart7c3/citrine/utils/DateUtils.kt +++ b/app/src/main/java/com/greenart7c3/citrine/utils/DateUtils.kt @@ -9,12 +9,12 @@ import java.time.format.FormatStyle fun Long.toDateString(): String { val dateTime = LocalDateTime.ofInstant( Instant.ofEpochMilli(this * 1000), - ZoneId.systemDefault() + ZoneId.systemDefault(), ) // Format the LocalDateTime with local format val formatter = DateTimeFormatter.ofLocalizedDateTime( - FormatStyle.SHORT + FormatStyle.SHORT, ) return formatter.format(dateTime) diff --git a/app/src/main/java/com/greenart7c3/citrine/utils/Extensions.kt b/app/src/main/java/com/greenart7c3/citrine/utils/Extensions.kt index 14fd325..dff3128 100644 --- a/app/src/main/java/com/greenart7c3/citrine/utils/Extensions.kt +++ b/app/src/main/java/com/greenart7c3/citrine/utils/Extensions.kt @@ -7,7 +7,7 @@ private val KINDS_EVENT_EPHEMERAL = 20000 until 30000 private val KINDS_EVENT_REPLACEABLE = setOf( 0..0, 3..3, - 10000 until 20000 + 10000 until 20000, ) private val KINDS_PARAMETERIZED_REPLACEABLE = 30000 until 40000 diff --git a/app/src/main/java/com/greenart7c3/citrine/utils/HttpClientManager.kt b/app/src/main/java/com/greenart7c3/citrine/utils/HttpClientManager.kt index 67e29c7..f8d554f 100644 --- a/app/src/main/java/com/greenart7c3/citrine/utils/HttpClientManager.kt +++ b/app/src/main/java/com/greenart7c3/citrine/utils/HttpClientManager.kt @@ -22,15 +22,15 @@ package com.greenart7c3.citrine.utils import android.util.Log import com.greenart7c3.citrine.BuildConfig -import okhttp3.Interceptor -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response import java.io.IOException import java.net.InetSocketAddress import java.net.Proxy import java.time.Duration import kotlin.properties.Delegates +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response object HttpClientManager { val DEFAULT_TIMEOUT_ON_WIFI: Duration = Duration.ofSeconds(10L) @@ -42,11 +42,11 @@ object HttpClientManager { // fires off every time value of the property changes private var internalProxy: Proxy? by - Delegates.observable(null) { _, oldValue, newValue -> - if (oldValue != newValue) { - proxyChangeListeners.forEach { it() } + Delegates.observable(null) { _, oldValue, newValue -> + if (oldValue != newValue) { + proxyChangeListeners.forEach { it() } + } } - } fun setDefaultProxy(proxy: Proxy?) { if (internalProxy != proxy) { @@ -70,7 +70,7 @@ object HttpClientManager { private fun buildHttpClient( proxy: Proxy?, - timeout: Duration + timeout: Duration, ): OkHttpClient { val seconds = if (proxy != null) timeout.seconds * 2 else timeout.seconds val duration = Duration.ofSeconds(seconds) @@ -108,7 +108,7 @@ object HttpClientManager { fun initProxy( useProxy: Boolean, hostname: String, - port: Int + port: Int, ): Proxy? { return if (useProxy) Proxy(Proxy.Type.SOCKS, InetSocketAddress(hostname, port)) else null }