Как я могу получить правильное время для каждого сообщения
Как я могу получить правильное время для каждого сообщения
strong> в базе данных и отображать его соответствующим образом когда пользователь отправляет сообщение/отправлял сообщение раньше?
Ценим обратную связь !
База данных Postgresql:

Функция чата:

Пользовательский интерфейс ( Обновлять код):
@FormUrlEncoded
@POST("send_message")
suspend fun sendMessage(
@Field("receiver_email") receiverEmail: String,
@Field("sender_email") senderEmail: String,
@Field("message") message: String,
// I added timestamp
@Field("timestamp") timestamp: String
): Response
// I added this
@GET("send_message")
suspend fun getTimeStamp(
@Field("timestamp") time: LocalDateTime
)
Класс данных:
@Serializable
data class MessageModel(
val sender_id: Int?,
val receiver_id: Int?,
val receiver_email: String?="",
val sender_email: String?="",
val message: String?="",
val timestamp: String? = null
)
Пользовательский API:
suspend fun sendMessage(messageModel: MessageModel): Response {
return userService.sendMessage(
receiverEmail = messageModel.receiver_email ?: "",
senderEmail = messageModel.sender_email ?: "",
message = messageModel.message ?: "",
// I added this timestamp
timestamp = messageModel.timestamp ?: ""
)
}
Репозиторий пользователей:
suspend fun sendMessage(message: MessageModel) {
userApi.sendMessage(message)
}
Функция sendMessage в модели представления:
fun sendMessage(message: MessageModel) {
viewModelScope.launch {
try {
repo.sendMessage(message)
Log.d("chat_feature", "Success")
} catch (e: Exception) {
Log.d("chat_feature", "Error: ${e.message}")
e.printStackTrace()
}
}
}
Код внутри составного объекта для получения и отображения информации:
val messageModel = MessageModel(
receiver_email = currentActiveUser?.email ?: "",
sender_email = selectedUser?.email ?: "",
message = inputText,
receiver_id = currentActiveUser?.id ?: 0,
sender_id = selectedUser?.id ?: 0,
timestamp = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.getDefault()).format(Date())
)
....
Text(
text = messageModel.timestamp.toString(), // Use the timestamp in the correct format
color = Color.Black,
fontSize = 10.sp,
fontWeight = FontWeight.SemiBold,
modifier = Modifier
.align(Alignment.End) // Align timestamp to the right
.padding(end = 5.dp)
)
Подробнее здесь: https://stackoverflow.com/questions/793 ... sent-has-b