Private
Public Access
1
0

Better database syncing... maybe

This commit is contained in:
2023-08-19 01:22:56 -07:00
parent 19a6960ab2
commit 4add2b4674
10 changed files with 123 additions and 48 deletions

View File

@@ -17,6 +17,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
@@ -24,6 +25,22 @@ import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.hilt.navigation.compose.hiltViewModel
import net.buzzert.kordophone.backend.model.Conversation
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.LocalTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.util.Date
fun formatDateTime(dateTime: LocalDateTime): String {
val formatter: DateTimeFormatter = if (LocalDate.now().isEqual(dateTime.toLocalDate())) {
DateTimeFormatter.ofPattern("HH:mm") // show just the time
} else {
DateTimeFormatter.ofPattern("M/d/yy") // show day/month/year
}
return dateTime.format(formatter)
}
@Composable
fun ConversationListScreen(
@@ -58,6 +75,7 @@ fun ConversationListView(
id = conversation.guid,
isUnread = conversation.unreadCount > 0,
lastMessagePreview = conversation.lastMessagePreview ?: "",
date = conversation.date,
onClick = { onConversationSelected(conversation.guid) }
)
}
@@ -71,11 +89,12 @@ fun ConversationListItem(
id: String,
isUnread: Boolean,
lastMessagePreview: String,
date: Date,
onClick: () -> Unit
) {
val unreadSize = 12.dp
val horizontalPadding = 8.dp
val verticalPadding = 12.dp
val verticalPadding = 14.dp
Row(
Modifier
@@ -108,7 +127,12 @@ fun ConversationListItem(
Spacer(Modifier.weight(1f))
Text("13:37",
Text(
formatDateTime(
date.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime()
),
modifier = Modifier.align(Alignment.CenterVertically),
color = MaterialTheme.colors.onBackground.copy(alpha = 0.4f)
)
@@ -116,7 +140,7 @@ fun ConversationListItem(
Spacer(Modifier.width(horizontalPadding))
}
Text(lastMessagePreview)
Text(lastMessagePreview, maxLines = 1, overflow = TextOverflow.Ellipsis)
Spacer(Modifier.height(verticalPadding))
Divider()
@@ -142,7 +166,7 @@ fun UnreadIndicator(size: Dp, modifier: Modifier = Modifier) {
@Composable
fun ConversationListItemPreview() {
Column(modifier = Modifier.background(MaterialTheme.colors.background)) {
ConversationListItem(name = "James Magahern", id = "asdf", lastMessagePreview = "This is a test", isUnread = true) {}
ConversationListItem(name = "James Magahern", id = "asdf", lastMessagePreview = "This is a test", date = Date(), isUnread = true) {}
}
}

View File

@@ -4,13 +4,16 @@ import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import net.buzzert.kordophone.backend.model.Conversation
import net.buzzert.kordophone.backend.server.ChatRepository
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@HiltViewModel
class ConversationListViewModel @Inject constructor(
@@ -28,7 +31,9 @@ class ConversationListViewModel @Inject constructor(
// TODO: Need error handling (exceptions thrown below)
viewModelScope.launch {
repository.synchronize()
withContext(Dispatchers.IO) {
repository.synchronize()
}
}
viewModelScope.launch {