From 754e61ed8a7805c3920acc79ea2699e4c7f3f179 Mon Sep 17 00:00:00 2001 From: Welisson Hudson Fernandes Lima Date: Thu, 31 Jul 2025 06:57:33 -0300 Subject: [PATCH 1/3] fix: generate new nickname if NicknameEditor loses focus with blank value --- .../main/java/com/bitchat/android/ui/ChatHeader.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt b/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt index a5f90f848..08db8afe0 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt @@ -14,6 +14,7 @@ import androidx.compose.runtime.* import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalFocusManager @@ -23,6 +24,7 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.bitchat.android.core.ui.utils.singleOrTripleClickable +import kotlin.random.Random /** * Header components for ChatScreen @@ -92,7 +94,8 @@ fun NicknameEditor( ) { val colorScheme = MaterialTheme.colorScheme val focusManager = LocalFocusManager.current - + val isFocused = remember { mutableStateOf(false) } + Row( verticalAlignment = Alignment.CenterVertically, modifier = modifier @@ -117,7 +120,14 @@ fun NicknameEditor( focusManager.clearFocus() } ), - modifier = Modifier.widthIn(max = 100.dp) + modifier = Modifier + .widthIn(max = 100.dp) + .onFocusChanged { focusState -> + isFocused.value = focusState.isFocused + if (!focusState.isFocused && value.isBlank()) { + onValueChange("anon${Random.nextInt(1000, 9999)}") + } + } ) } } From 549b6ebe6994204f57d7c3bad2ec794c44e23abf Mon Sep 17 00:00:00 2001 From: Welisson Hudson Fernandes Lima Date: Wed, 6 Aug 2025 01:20:35 -0300 Subject: [PATCH 2/3] chore: apply requested changes from code review. --- app/src/main/java/com/bitchat/android/ui/ChatHeader.kt | 4 ++-- .../main/java/com/bitchat/android/ui/ChatViewModel.kt | 4 ++-- app/src/main/java/com/bitchat/android/ui/DataManager.kt | 4 ++-- .../main/java/com/bitchat/android/util/NicknameUtils.kt | 9 +++++++++ 4 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/com/bitchat/android/util/NicknameUtils.kt diff --git a/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt b/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt index 08db8afe0..bdee893c6 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatHeader.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.bitchat.android.core.ui.utils.singleOrTripleClickable -import kotlin.random.Random +import com.bitchat.android.util.NicknameUtils /** * Header components for ChatScreen @@ -125,7 +125,7 @@ fun NicknameEditor( .onFocusChanged { focusState -> isFocused.value = focusState.isFocused if (!focusState.isFocused && value.isBlank()) { - onValueChange("anon${Random.nextInt(1000, 9999)}") + onValueChange(NicknameUtils.generateRandomNickname()) } } ) diff --git a/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt b/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt index ea9f3b5ab..89f775f3c 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt @@ -1,7 +1,6 @@ package com.bitchat.android.ui import android.app.Application -import android.content.Context import android.util.Log import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData @@ -11,6 +10,7 @@ import com.bitchat.android.mesh.BluetoothMeshService import com.bitchat.android.model.BitchatMessage import com.bitchat.android.model.DeliveryAck import com.bitchat.android.model.ReadReceipt +import com.bitchat.android.util.NicknameUtils import kotlinx.coroutines.launch import kotlinx.coroutines.delay import java.util.* @@ -416,7 +416,7 @@ class ChatViewModel( notificationManager.clearAllNotifications() // Reset nickname - val newNickname = "anon${Random.nextInt(1000, 9999)}" + val newNickname = NicknameUtils.generateRandomNickname() state.setNickname(newNickname) dataManager.saveNickname(newNickname) diff --git a/app/src/main/java/com/bitchat/android/ui/DataManager.kt b/app/src/main/java/com/bitchat/android/ui/DataManager.kt index 0f16a1e09..e1bbf94e8 100644 --- a/app/src/main/java/com/bitchat/android/ui/DataManager.kt +++ b/app/src/main/java/com/bitchat/android/ui/DataManager.kt @@ -4,7 +4,7 @@ import android.content.Context import android.content.SharedPreferences import android.util.Log import com.google.gson.Gson -import kotlin.random.Random +import com.bitchat.android.util.NicknameUtils /** * Handles data persistence operations for the chat system @@ -36,7 +36,7 @@ class DataManager(private val context: Context) { return if (savedNickname != null) { savedNickname } else { - val randomNickname = "anon${Random.nextInt(1000, 9999)}" + val randomNickname = NicknameUtils.generateRandomNickname() saveNickname(randomNickname) randomNickname } diff --git a/app/src/main/java/com/bitchat/android/util/NicknameUtils.kt b/app/src/main/java/com/bitchat/android/util/NicknameUtils.kt new file mode 100644 index 000000000..e148aa896 --- /dev/null +++ b/app/src/main/java/com/bitchat/android/util/NicknameUtils.kt @@ -0,0 +1,9 @@ +package com.bitchat.android.util + +import kotlin.random.Random + +object NicknameUtils { + fun generateRandomNickname(): String { + return "anon${Random.nextInt(1000, 9999)}" + } +} \ No newline at end of file From 5c1a1a5b225f7666bad01877a7de85d64fe31ffc Mon Sep 17 00:00:00 2001 From: Welisson Hudson Fernandes Lima Date: Wed, 6 Aug 2025 01:33:25 -0300 Subject: [PATCH 3/3] chore: removed unnecessary imports --- app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt b/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt index 89f775f3c..573681128 100644 --- a/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt +++ b/app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt @@ -11,10 +11,9 @@ import com.bitchat.android.model.BitchatMessage import com.bitchat.android.model.DeliveryAck import com.bitchat.android.model.ReadReceipt import com.bitchat.android.util.NicknameUtils -import kotlinx.coroutines.launch import kotlinx.coroutines.delay -import java.util.* -import kotlin.random.Random +import kotlinx.coroutines.launch +import java.util.Date /** * Refactored ChatViewModel - Main coordinator for bitchat functionality