Fix UI
This commit is contained in:
1 parent
160ded9c38
commit
3b73f1932f
1 file changed
+56
-71
+56
-71
@@ -1,31 +1,26 @@
|
|||||||
package ac.cord.auxiliary.compose.ui.view.model
|
package ac.cord.auxiliary.compose.ui.view.model
|
||||||
|
|
||||||
import ac.cord.auxiliary.compose.database.model.ChatMessage
|
|
||||||
import ac.cord.auxiliary.compose.database.model.intermdiate.LocalChatRoom
|
import ac.cord.auxiliary.compose.database.model.intermdiate.LocalChatRoom
|
||||||
import ac.cord.auxiliary.compose.extensions.toFormattedTimeAndDateString
|
import ac.cord.auxiliary.compose.extensions.toFormattedTimeAndDateString
|
||||||
import ac.cord.auxiliary.compose.repository.ChatRepository
|
import ac.cord.auxiliary.compose.repository.ChatRepository
|
||||||
import ac.cord.auxiliary.compose.repository.NostrRepository
|
import ac.cord.auxiliary.compose.repository.NostrRepository
|
||||||
import ac.cord.auxiliary.compose.ui.composable.navigation.routes.ChatRoomDetailRoute
|
|
||||||
import ac.cord.auxiliary.compose.ui.composable.navigation.routes.Route
|
|
||||||
import ac.cord.auxiliary.compose.ui.view.state.ChatRoomDetailMessageListUIState
|
import ac.cord.auxiliary.compose.ui.view.state.ChatRoomDetailMessageListUIState
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.BoxWithConstraints
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.widthIn
|
||||||
|
import androidx.compose.foundation.layout.wrapContentWidth
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.text.input.TextFieldState
|
import androidx.compose.foundation.text.input.TextFieldState
|
||||||
import androidx.compose.foundation.text.input.clearText
|
import androidx.compose.foundation.text.input.clearText
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Key
|
|
||||||
import androidx.compose.material.icons.filled.KeyOff
|
import androidx.compose.material.icons.filled.KeyOff
|
||||||
import androidx.compose.material.icons.filled.LockClock
|
|
||||||
import androidx.compose.material.icons.filled.Signpost
|
|
||||||
import androidx.compose.material.icons.filled.VpnKey
|
|
||||||
import androidx.compose.material3.Card
|
import androidx.compose.material3.Card
|
||||||
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
|
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
@@ -47,12 +42,10 @@ import androidx.lifecycle.viewModelScope
|
|||||||
import androidx.lifecycle.viewmodel.initializer
|
import androidx.lifecycle.viewmodel.initializer
|
||||||
import androidx.lifecycle.viewmodel.viewModelFactory
|
import androidx.lifecycle.viewmodel.viewModelFactory
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import fr.acinq.lightning.utils.UUID
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.IO
|
import kotlinx.coroutines.IO
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.uuid.Uuid
|
|
||||||
|
|
||||||
class ChatRoomDetailMessageListViewModel(
|
class ChatRoomDetailMessageListViewModel(
|
||||||
initialChatRoomDetailMessageListUIState: ChatRoomDetailMessageListUIState,
|
initialChatRoomDetailMessageListUIState: ChatRoomDetailMessageListUIState,
|
||||||
@@ -162,81 +155,73 @@ class ChatRoomDetailMessageListViewModel(
|
|||||||
items = chatRoomDetailMessageListUIState.chatMessageList,
|
items = chatRoomDetailMessageListUIState.chatMessageList,
|
||||||
key = { it.chatMessage.id }
|
key = { it.chatMessage.id }
|
||||||
) { localChatMessage ->
|
) { localChatMessage ->
|
||||||
Row {
|
BoxWithConstraints(
|
||||||
|
modifier = Modifier.fillMaxWidth()
|
||||||
if (localChatMessage.chatMessage.isUserMessage) {
|
) {
|
||||||
Spacer(
|
val screenWidth = maxWidth
|
||||||
modifier = Modifier.width(40.dp)
|
|
||||||
)
|
|
||||||
|
|
||||||
Spacer(
|
|
||||||
modifier = Modifier.weight(1f)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Card(
|
|
||||||
onClick = {
|
|
||||||
|
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
horizontalArrangement = if (localChatMessage.chatMessage.isUserMessage) {
|
||||||
|
Arrangement.End
|
||||||
|
} else {
|
||||||
|
Arrangement.Start
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Column(
|
Card(
|
||||||
modifier = Modifier.padding(10.dp),
|
modifier = Modifier.widthIn(
|
||||||
horizontalAlignment = if (localChatMessage.chatMessage.isUserMessage) {
|
max = screenWidth * 0.8f
|
||||||
Alignment.End
|
).wrapContentWidth(),
|
||||||
} else {
|
onClick = {
|
||||||
Alignment.Start
|
|
||||||
},
|
},
|
||||||
verticalArrangement = Arrangement.spacedBy(6.dp)
|
|
||||||
) {
|
) {
|
||||||
if (localChatMessage.chatMessage.isUserMessage.not()) {
|
Column(
|
||||||
Text(
|
modifier = Modifier.padding(10.dp),
|
||||||
text = localChatMessage.chatMessage.senderPublicKey, // TODO: Get send name...
|
horizontalAlignment = if (localChatMessage.chatMessage.isUserMessage) {
|
||||||
maxLines = 1,
|
|
||||||
overflow = TextOverflow.MiddleEllipsis,
|
|
||||||
style = MaterialTheme.typography.labelSmall
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
Text(
|
|
||||||
text = localChatMessage.chatMessage.content,
|
|
||||||
style = MaterialTheme.typography.bodyMedium
|
|
||||||
)
|
|
||||||
|
|
||||||
Row(
|
|
||||||
horizontalArrangement = Arrangement.spacedBy(
|
|
||||||
10.dp,
|
|
||||||
Alignment.End
|
Alignment.End
|
||||||
),
|
} else {
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
Alignment.Start
|
||||||
|
},
|
||||||
|
verticalArrangement = Arrangement.spacedBy(6.dp)
|
||||||
) {
|
) {
|
||||||
Text(
|
if (localChatMessage.chatMessage.isUserMessage.not()) {
|
||||||
text = localChatMessage.chatMessage.createdAt.toFormattedTimeAndDateString(),
|
Text(
|
||||||
style = MaterialTheme.typography.labelSmall
|
text = localChatMessage.chatMessage.senderPublicKey, // TODO: Get send name...
|
||||||
)
|
maxLines = 1,
|
||||||
if (localChatMessage.chatMessage.isUserMessage) {
|
overflow = TextOverflow.MiddleEllipsis,
|
||||||
Icon(
|
style = MaterialTheme.typography.labelSmall
|
||||||
Icons.Default.KeyOff,
|
|
||||||
contentDescription = "Message status"
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Text(
|
||||||
|
text = localChatMessage.chatMessage.content,
|
||||||
|
style = MaterialTheme.typography.bodyMedium
|
||||||
|
)
|
||||||
|
|
||||||
|
Row(
|
||||||
|
horizontalArrangement = Arrangement.spacedBy(
|
||||||
|
10.dp,
|
||||||
|
Alignment.End
|
||||||
|
),
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
text = localChatMessage.chatMessage.createdAt.toFormattedTimeAndDateString(),
|
||||||
|
style = MaterialTheme.typography.labelSmall
|
||||||
|
)
|
||||||
|
if (localChatMessage.chatMessage.isUserMessage) {
|
||||||
|
Icon(
|
||||||
|
Icons.Default.KeyOff,
|
||||||
|
contentDescription = "Message status"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!localChatMessage.chatMessage.isUserMessage) {
|
|
||||||
Spacer(
|
|
||||||
modifier = Modifier.weight(1f)
|
|
||||||
)
|
|
||||||
Spacer(
|
|
||||||
modifier = Modifier.width(40.dp)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user