1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-3044 Chats | Fix | Misc. fixes for space-level chats (#1818)

This commit is contained in:
Evgenii Kozlov 2024-11-19 15:49:11 +01:00 committed by GitHub
parent d0f171a9d2
commit ba71b06f44
Signed by: github
GPG key ID: B5690EEEBB952194
6 changed files with 120 additions and 12 deletions

View file

@ -75,6 +75,9 @@ class DiscussionFragment : BaseComposeFragment() {
vm = vm,
onAttachClicked = {
showBottomSheet = true
},
onBackButtonClicked = {
// TODO
}
)

View file

@ -117,6 +117,7 @@ class HomeScreenFragment : BaseComposeFragment(),
Modifier.fillMaxSize()
) {
HomeScreenToolbar(
isChatActive = pagerState.targetPage == 1,
onWidgetTabClicked = {
coroutineScope.launch {
pagerState.animateScrollToPage(0)
@ -178,6 +179,9 @@ class HomeScreenFragment : BaseComposeFragment(),
vm = spaceLevelChatViewModel,
onAttachClicked = {
// TODO
},
onBackButtonClicked = {
findNavController().popBackStack()
}
)
}

View file

@ -11,6 +11,7 @@ import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
@ -20,6 +21,7 @@ import com.anytypeio.anytype.feature_discussions.R
@Composable
fun HomeScreenToolbar(
isChatActive: Boolean,
onWidgetTabClicked: () -> Unit,
onChatTabClicked: () -> Unit
) {
@ -35,6 +37,9 @@ fun HomeScreenToolbar(
modifier = Modifier
.size(32.dp)
.align(Alignment.CenterStart)
.alpha(
if (isChatActive) 0.5f else 1f
)
.noRippleClickable {
onWidgetTabClicked()
},
@ -46,6 +51,9 @@ fun HomeScreenToolbar(
modifier = Modifier
.size(32.dp)
.align(Alignment.CenterEnd)
.alpha(
if (isChatActive) 1f else 0.5f
)
.noRippleClickable {
onChatTabClicked()
},
@ -59,6 +67,7 @@ fun HomeScreenToolbar(
fun HomeScreenToolbarPreview() {
HomeScreenToolbar(
onWidgetTabClicked = {},
onChatTabClicked = {}
onChatTabClicked = {},
isChatActive = false
)
}

View file

@ -81,7 +81,8 @@ fun DiscussionScreenPreview() {
onAttachmentClicked = {},
onEditMessage = {},
onExitEditMessageMode = {},
isSpaceLevelChat = true
isSpaceLevelChat = true,
onBackButtonClicked = {}
)
}

View file

@ -124,7 +124,8 @@ fun DiscussionScreenWrapper(
isSpaceLevelChat: Boolean = false,
vm: DiscussionViewModel,
// TODO move to view model
onAttachClicked: () -> Unit
onAttachClicked: () -> Unit,
onBackButtonClicked: () -> Unit
) {
NavHost(
navController = rememberNavController(),
@ -168,7 +169,8 @@ fun DiscussionScreenWrapper(
onEditMessage = vm::onRequestEditMessageClicked,
onAttachmentClicked = vm::onAttachmentClicked,
isInEditMessageMode = vm.chatBoxMode.collectAsState().value is ChatBoxMode.EditMessage,
onExitEditMessageMode = vm::onExitEditMessageMode
onExitEditMessageMode = vm::onExitEditMessageMode,
onBackButtonClicked = onBackButtonClicked
)
LaunchedEffect(Unit) {
vm.commands.collect { command ->
@ -201,6 +203,7 @@ fun DiscussionScreen(
onMessageSent: (String) -> Unit,
onTitleChanged: (String) -> Unit,
onAttachClicked: () -> Unit,
onBackButtonClicked: () -> Unit,
onClearAttachmentClicked: () -> Unit,
onReacted: (Id, String) -> Unit,
onDeleteMessage: (DiscussionView.Message) -> Unit,
@ -294,10 +297,6 @@ fun DiscussionScreen(
enabled = jumpToBottomButtonEnabled
)
}
Divider(
paddingStart = 0.dp,
paddingEnd = 0.dp
)
attachments.forEach {
Box {
Attachment(
@ -357,7 +356,8 @@ fun DiscussionScreen(
},
clearText = {
textState = TextFieldValue()
}
},
onBackButtonClicked = onBackButtonClicked
)
}
}
@ -406,7 +406,7 @@ private fun DiscussionTitle(
}
@Composable
private fun ChatBox(
private fun OldChatBox(
chatBoxFocusRequester: FocusRequester,
textState: TextFieldValue,
onMessageSent: (String) -> Unit = {},
@ -488,6 +488,96 @@ private fun ChatBox(
}
}
@Composable
private fun ChatBox(
onBackButtonClicked: () -> Unit,
chatBoxFocusRequester: FocusRequester,
textState: TextFieldValue,
onMessageSent: (String) -> Unit = {},
onAttachClicked: () -> Unit = {},
resetScroll: () -> Unit = {},
isTitleFocused: Boolean,
attachments: List<GlobalSearchItemView>,
clearText: () -> Unit,
updateValue: (TextFieldValue) -> Unit
) {
val scope = rememberCoroutineScope()
val focus = LocalFocusManager.current
Row(
modifier = Modifier
.fillMaxWidth()
.defaultMinSize(minHeight = 56.dp)
.padding(
start = 12.dp,
end = 12.dp,
bottom = 20.dp
)
.background(
color = colorResource(R.color.navigation_panel),
shape = RoundedCornerShape(16.dp)
)
) {
Box(
modifier = Modifier
.padding(horizontal = 4.dp, vertical = 8.dp)
.clip(CircleShape)
.align(Alignment.Bottom)
.clickable {
scope.launch {
focus.clearFocus(force = true)
onBackButtonClicked()
}
}
) {
Image(
painter = painterResource(id = R.drawable.ic_nav_panel_back),
contentDescription = "Back button",
modifier = Modifier
.align(Alignment.Center)
.padding(horizontal = 4.dp, vertical = 4.dp)
)
}
ChatBoxUserInput(
textState = textState,
onMessageSent = {
onMessageSent(it)
clearText()
resetScroll()
},
onTextChanged = { value ->
updateValue(value)
},
modifier = Modifier
.weight(1f)
.align(Alignment.Bottom)
.focusRequester(chatBoxFocusRequester)
)
Box(
modifier = Modifier
.padding(horizontal = 4.dp, vertical = 8.dp)
.clip(CircleShape)
.align(Alignment.Bottom)
.clickable {
scope.launch {
focus.clearFocus(force = true)
onAttachClicked()
}
}
) {
Image(
painter = painterResource(id = R.drawable.ic_nav_panel_plus),
contentDescription = "Plus button",
modifier = Modifier
.align(Alignment.Center)
.padding(horizontal = 4.dp, vertical = 4.dp)
)
}
}
}
@Composable
fun EditMessageToolbar(
onExitClicked: () -> Unit
@ -564,9 +654,9 @@ private fun ChatBoxUserInput(
decorationBox = @Composable { innerTextField ->
DefaultHintDecorationBox(
text = textState.text,
hint = "Write a message",
hint = stringResource(R.string.write_a_message),
innerTextField = innerTextField,
textStyle = BodyRegular
textStyle = BodyRegular.copy(color = colorResource(R.color.text_tertiary))
)
}
)

View file

@ -1821,5 +1821,6 @@ Please provide specific details of your needs here.</string>
<string name="chats_edit_message">Edit message</string>
<string name="chats_message_edited">edited</string>
<string name="chat_empty_state_message">There is no messages yet.\nBe the first to start a discussion.</string>
<string name="write_a_message">Write a message...</string>
</resources>