Bugfix: Handled single or triple clicked at once instead of executing them as separate events

This commit introduces a new `singleOrTripleClickable` Modifier extension function.

This function allows distinguishing between single and triple clicks on a Composable element.

The `ChatHeader` was updated to utilize this new Modifier for handling clicks on the "bitchat*" title, where a single click shows app info and a triple click triggers a separate action.
This commit is contained in:
Mohamad Hamade
2025-07-14 22:16:19 +03:00
parent 013f0c00cf
commit 0a33bd734d
2 changed files with 65 additions and 10 deletions
@@ -22,6 +22,7 @@ import androidx.compose.ui.text.font.FontWeight
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
/**
* Header components for ChatScreen
@@ -181,15 +182,8 @@ fun ChatHeaderContent(
MainHeader(
nickname = nickname,
onNicknameChange = viewModel::setNickname,
onTitleClick = {
tripleClickCount++
if (tripleClickCount >= 3) {
tripleClickCount = 0
onTripleClick()
} else {
onShowAppInfo()
}
},
onTitleClick = onShowAppInfo,
onTripleTitleClick = onTripleClick,
onSidebarClick = onSidebarClick,
viewModel = viewModel
)
@@ -345,6 +339,7 @@ private fun MainHeader(
nickname: String,
onNicknameChange: (String) -> Unit,
onTitleClick: () -> Unit,
onTripleTitleClick: () -> Unit,
onSidebarClick: () -> Unit,
viewModel: ChatViewModel
) {
@@ -365,7 +360,10 @@ private fun MainHeader(
text = "bitchat*",
style = MaterialTheme.typography.headlineSmall,
color = colorScheme.primary,
modifier = Modifier.clickable { onTitleClick() }
modifier = Modifier.singleOrTripleClickable(
onSingleClick = onTitleClick,
onTripleClick = onTripleTitleClick
)
)
Spacer(modifier = Modifier.width(8.dp))