Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions app/src/main/java/com/bitchat/android/ui/ChatHeader.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 com.bitchat.android.util.NicknameUtils

/**
* Header components for ChatScreen
Expand Down Expand Up @@ -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
Expand All @@ -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(NicknameUtils.generateRandomNickname())
}
}
)
}
}
Expand Down
9 changes: 4 additions & 5 deletions app/src/main/java/com/bitchat/android/ui/ChatViewModel.kt
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -11,10 +10,10 @@ 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 kotlinx.coroutines.launch
import com.bitchat.android.util.NicknameUtils
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
Expand Down Expand Up @@ -427,7 +426,7 @@ class ChatViewModel(
notificationManager.clearAllNotifications()

// Reset nickname
val newNickname = "anon${Random.nextInt(1000, 9999)}"
val newNickname = NicknameUtils.generateRandomNickname()
state.setNickname(newNickname)
dataManager.saveNickname(newNickname)

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/bitchat/android/ui/DataManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
}
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/java/com/bitchat/android/util/NicknameUtils.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.bitchat.android.util

import kotlin.random.Random

object NicknameUtils {
fun generateRandomNickname(): String {
return "anon${Random.nextInt(1000, 9999)}"
}
}
Loading