chore: graduate channelscreen2
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
7550d01c8b
commit
ee8d4d632f
|
|
@ -90,7 +90,7 @@ import chat.revolt.screens.chat.dialogs.safety.ReportUserDialog
|
||||||
import chat.revolt.screens.chat.views.FriendsScreen
|
import chat.revolt.screens.chat.views.FriendsScreen
|
||||||
import chat.revolt.screens.chat.views.HomeScreen
|
import chat.revolt.screens.chat.views.HomeScreen
|
||||||
import chat.revolt.screens.chat.views.NoCurrentChannelScreen
|
import chat.revolt.screens.chat.views.NoCurrentChannelScreen
|
||||||
import chat.revolt.screens.chat.views.channel.ChannelScreen2
|
import chat.revolt.screens.chat.views.channel.ChannelScreen
|
||||||
import chat.revolt.sheets.AddServerSheet
|
import chat.revolt.sheets.AddServerSheet
|
||||||
import chat.revolt.sheets.ChangelogSheet
|
import chat.revolt.sheets.ChangelogSheet
|
||||||
import chat.revolt.sheets.EmoteInfoSheet
|
import chat.revolt.sheets.EmoteInfoSheet
|
||||||
|
|
@ -1032,7 +1032,7 @@ fun ChannelNavigator(
|
||||||
}
|
}
|
||||||
|
|
||||||
is ChatRouterDestination.Channel -> {
|
is ChatRouterDestination.Channel -> {
|
||||||
ChannelScreen2(
|
ChannelScreen(
|
||||||
channelId = dest.channelId,
|
channelId = dest.channelId,
|
||||||
onToggleDrawer = {
|
onToggleDrawer = {
|
||||||
scope.launch {
|
scope.launch {
|
||||||
|
|
|
||||||
|
|
@ -158,11 +158,11 @@ private fun pxAsDp(px: Int): Dp {
|
||||||
ExperimentalAnimationApi::class
|
ExperimentalAnimationApi::class
|
||||||
)
|
)
|
||||||
@Composable
|
@Composable
|
||||||
fun ChannelScreen2(
|
fun ChannelScreen(
|
||||||
channelId: String,
|
channelId: String,
|
||||||
onToggleDrawer: () -> Unit,
|
onToggleDrawer: () -> Unit,
|
||||||
useDrawer: Boolean,
|
useDrawer: Boolean,
|
||||||
viewModel: ChannelScreen2ViewModel = hiltViewModel()
|
viewModel: ChannelScreenViewModel = hiltViewModel()
|
||||||
) {
|
) {
|
||||||
// Setup
|
// Setup
|
||||||
|
|
||||||
|
|
@ -296,7 +296,7 @@ fun ChannelScreen2(
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.collect { isNearTop ->
|
.collect { isNearTop ->
|
||||||
if (isNearTop) {
|
if (isNearTop) {
|
||||||
Log.d("ChannelScreen2", "Loading more messages")
|
Log.d("ChannelScreen", "Loading more messages")
|
||||||
viewModel.loadMessages(before = viewModel.items.lastOrNull {
|
viewModel.loadMessages(before = viewModel.items.lastOrNull {
|
||||||
it is ChannelScreenItem.RegularMessage || it is ChannelScreenItem.SystemMessage
|
it is ChannelScreenItem.RegularMessage || it is ChannelScreenItem.SystemMessage
|
||||||
}?.let {
|
}?.let {
|
||||||
|
|
@ -615,7 +615,7 @@ fun ChannelScreen2(
|
||||||
is ChannelScreenItem.LoadTrigger -> {
|
is ChannelScreenItem.LoadTrigger -> {
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
Log.d(
|
Log.d(
|
||||||
"ChannelScreen2",
|
"ChannelScreen",
|
||||||
"LoadTrigger: After ${item.after} Before ${item.before}"
|
"LoadTrigger: After ${item.after} Before ${item.before}"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -66,7 +66,7 @@ import java.time.ZoneId
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class ChannelScreen2ViewModel @Inject constructor(
|
class ChannelScreenViewModel @Inject constructor(
|
||||||
private val kvStorage: KVStorage,
|
private val kvStorage: KVStorage,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
var items = mutableStateListOf<ChannelScreenItem>()
|
var items = mutableStateListOf<ChannelScreenItem>()
|
||||||
|
|
@ -268,7 +268,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
)
|
)
|
||||||
putDraftContent("")
|
putDraftContent("")
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("ChannelScreen2ViewModel", "Failed to edit message", e)
|
Log.e("ChannelScreenViewModel", "Failed to edit message", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -292,7 +292,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val attachmentIds = arrayListOf<String>()
|
val attachmentIds = arrayListOf<String>()
|
||||||
val takenAttachments =
|
val takenAttachments =
|
||||||
this@ChannelScreen2ViewModel.draftAttachments.take(MAX_ATTACHMENTS_PER_MESSAGE)
|
this@ChannelScreenViewModel.draftAttachments.take(MAX_ATTACHMENTS_PER_MESSAGE)
|
||||||
val totalTaken = takenAttachments.size
|
val totalTaken = takenAttachments.size
|
||||||
|
|
||||||
takenAttachments.forEachIndexed { index, it ->
|
takenAttachments.forEachIndexed { index, it ->
|
||||||
|
|
@ -309,7 +309,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
)
|
)
|
||||||
attachmentIds.add(id)
|
attachmentIds.add(id)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("ChannelScreen2ViewModel", "Failed to upload attachment", e)
|
Log.e("ChannelScreenViewModel", "Failed to upload attachment", e)
|
||||||
attachmentUploadProgress = 0f
|
attachmentUploadProgress = 0f
|
||||||
// TODO show error message
|
// TODO show error message
|
||||||
return@launch
|
return@launch
|
||||||
|
|
@ -343,7 +343,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
draftReplyTo.clear()
|
draftReplyTo.clear()
|
||||||
attachmentUploadProgress = 0f
|
attachmentUploadProgress = 0f
|
||||||
|
|
||||||
this@ChannelScreen2ViewModel.draftAttachments.removeAll(takenAttachments)
|
this@ChannelScreenViewModel.draftAttachments.removeAll(takenAttachments)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
sendMessage(
|
sendMessage(
|
||||||
|
|
@ -355,7 +355,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
idempotencyKey = ULID.makeNext()
|
idempotencyKey = ULID.makeNext()
|
||||||
)
|
)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("ChannelScreen2ViewModel", "Failed to send message", e)
|
Log.e("ChannelScreenViewModel", "Failed to send message", e)
|
||||||
updateItems(listOf(ChannelScreenItem.FailedMessage(prospectiveMessage)) + items.filter { it !is ChannelScreenItem.ProspectiveMessage })
|
updateItems(listOf(ChannelScreenItem.FailedMessage(prospectiveMessage)) + items.filter { it !is ChannelScreenItem.ProspectiveMessage })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -433,7 +433,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
|
|
||||||
updateItems(newItemsWithPosition)
|
updateItems(newItemsWithPosition)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("ChannelScreen2ViewModel", "Failed to fetch messages", e)
|
Log.e("ChannelScreenViewModel", "Failed to fetch messages", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -466,7 +466,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
fetchMember(serverId, userId)
|
fetchMember(serverId, userId)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("ChannelScreen2ViewModel", "Failed to fetch member", e)
|
Log.e("ChannelScreenViewModel", "Failed to fetch member", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -664,7 +664,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
} as? ChannelScreenItem.RegularMessage ?: return@onEach
|
} as? ChannelScreenItem.RegularMessage ?: return@onEach
|
||||||
|
|
||||||
putDraftContent(message.message.content ?: "")
|
putDraftContent(message.message.content ?: "")
|
||||||
this@ChannelScreen2ViewModel.draftAttachments.clear()
|
this@ChannelScreenViewModel.draftAttachments.clear()
|
||||||
draftReplyTo.clear()
|
draftReplyTo.clear()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -691,7 +691,7 @@ class ChannelScreen2ViewModel @Inject constructor(
|
||||||
// [Deviation from spec: if M is not a [Regular/System]Message we just put it in the list...]
|
// [Deviation from spec: if M is not a [Regular/System]Message we just put it in the list...]
|
||||||
if (m !is ChannelScreenItem.RegularMessage && m !is ChannelScreenItem.SystemMessage) {
|
if (m !is ChannelScreenItem.RegularMessage && m !is ChannelScreenItem.SystemMessage) {
|
||||||
groupedItems.add(m)
|
groupedItems.add(m)
|
||||||
Log.d("ChannelScreen2ViewModel", "Non-regular message: $m. Skipping grouping.")
|
Log.d("ChannelScreenViewModel", "Non-regular message: $m. Skipping grouping.")
|
||||||
return@forEachIndexed
|
return@forEachIndexed
|
||||||
}
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue