Skip to content

Commit

Permalink
fix: Show all participants sticky button (WPB-5602) (#2453)
Browse files Browse the repository at this point in the history
Co-authored-by: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: alexandreferris <[email protected]>
  • Loading branch information
3 people authored Nov 23, 2023
1 parent 5d2ca2e commit 72059c8
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,12 @@
package com.wire.android.ui.home.conversations.details

import androidx.annotation.StringRes
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.LocalOverscrollConfiguration
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListState
Expand All @@ -37,7 +35,7 @@ import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
Expand Down Expand Up @@ -69,7 +67,6 @@ import com.wire.android.appLogger
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.style.PopUpNavigationAnimation
import com.wire.android.ui.common.CollapsingTopBarScaffold
import com.wire.android.ui.common.MLSVerifiedIcon
import com.wire.android.ui.common.MoreOptionIcon
import com.wire.android.ui.common.ProteusVerifiedIcon
Expand Down Expand Up @@ -115,6 +112,8 @@ import com.wire.android.ui.theme.wireTypography
import com.wire.android.util.ui.UIText
import com.wire.kalium.logic.data.conversation.Conversation
import kotlinx.coroutines.launch
import SwipeableSnackbar
import androidx.compose.material3.SnackbarHost

@RootNavGraph
@Destination(
Expand Down Expand Up @@ -311,8 +310,8 @@ private fun GroupConversationDetailsContent(
archiveConversationDialogState.dismiss()
}

CollapsingTopBarScaffold(
topBarHeader = {
Scaffold(
topBar = {
WireCenterAlignedTopAppBar(
elevation = elevationState,
titleContent = {
Expand All @@ -326,78 +325,77 @@ private fun GroupConversationDetailsContent(
navigationIconType = NavigationIconType.Close,
onNavigationPressed = onBackPressed,
actions = { MoreOptionIcon(onButtonClicked = openBottomSheet) }
)
},
topBarCollapsing = {
conversationSheetState.conversationSheetContent?.let {
GroupConversationDetailsTopBarCollapsing(
title = it.title,
conversationId = it.conversationId,
totalParticipants = groupParticipantsState.data.allCount,
isLoading = isLoading,
onSearchConversationMessagesClick = onSearchConversationMessagesClick
) {
conversationSheetState.conversationSheetContent?.let {
GroupConversationDetailsTopBarCollapsing(
title = it.title,
conversationId = it.conversationId,
totalParticipants = groupParticipantsState.data.allCount,
isLoading = isLoading,
onSearchConversationMessagesClick = onSearchConversationMessagesClick
)
}
WireTabRow(
tabs = GroupConversationDetailsTabItem.entries,
selectedTabIndex = currentTabState,
onTabChange = { scope.launch { pagerState.animateScrollToPage(it) } },
modifier = Modifier.padding(top = MaterialTheme.wireDimensions.spacing16x),
divider = {} // no divider
)
}
},
topBarFooter = {
AnimatedVisibility(
visible = conversationSheetState.conversationSheetContent != null,
enter = fadeIn(),
exit = fadeOut(),
) {
Surface(
shadowElevation = elevationState,
color = MaterialTheme.wireColorScheme.background
) {
WireTabRow(
tabs = GroupConversationDetailsTabItem.entries,
selectedTabIndex = currentTabState,
onTabChange = { scope.launch { pagerState.animateScrollToPage(it) } },
modifier = Modifier.padding(top = MaterialTheme.wireDimensions.spacing16x),
divider = {} // no divider
modifier = Modifier.fillMaxHeight(),
snackbarHost = {
SnackbarHost(
hostState = snackbarHostState,
snackbar = { data ->
SwipeableSnackbar(
hostState = snackbarHostState,
data = data,
onDismiss = { data.dismiss() }
)
}
}
)
},
content = {
var focusedTabIndex: Int by remember { mutableStateOf(initialPageIndex) }
val keyboardController = LocalSoftwareKeyboardController.current
val focusManager = LocalFocusManager.current

CompositionLocalProvider(LocalOverscrollConfiguration provides null) {
HorizontalPager(
state = pagerState,
modifier = Modifier
.fillMaxWidth()
) { pageIndex ->
when (GroupConversationDetailsTabItem.entries[pageIndex]) {
GroupConversationDetailsTabItem.OPTIONS -> GroupConversationOptions(
lazyListState = lazyListStates[pageIndex],
onEditGuestAccess = onEditGuestAccess,
onEditSelfDeletingMessages = onEditSelfDeletingMessages,
onEditGroupName = onEditGroupName
)
) { internalPadding ->
var focusedTabIndex: Int by remember { mutableStateOf(initialPageIndex) }
val keyboardController = LocalSoftwareKeyboardController.current
val focusManager = LocalFocusManager.current

CompositionLocalProvider(LocalOverscrollConfiguration provides null) {
HorizontalPager(
state = pagerState,
modifier = Modifier
.fillMaxWidth()
.padding(internalPadding)
) { pageIndex ->
when (GroupConversationDetailsTabItem.entries[pageIndex]) {
GroupConversationDetailsTabItem.OPTIONS -> GroupConversationOptions(
lazyListState = lazyListStates[pageIndex],
onEditGuestAccess = onEditGuestAccess,
onEditSelfDeletingMessages = onEditSelfDeletingMessages,
onEditGroupName = onEditGroupName
)

GroupConversationDetailsTabItem.PARTICIPANTS -> GroupConversationParticipants(
groupParticipantsState = groupParticipantsState,
openFullListPressed = openFullListPressed,
onAddParticipantsPressed = onAddParticipantsPressed,
onProfilePressed = onProfilePressed,
lazyListState = lazyListStates[pageIndex]
)
}
GroupConversationDetailsTabItem.PARTICIPANTS -> GroupConversationParticipants(
groupParticipantsState = groupParticipantsState,
openFullListPressed = openFullListPressed,
onAddParticipantsPressed = onAddParticipantsPressed,
onProfilePressed = onProfilePressed,
lazyListState = lazyListStates[pageIndex]
)
}
}

LaunchedEffect(pagerState.isScrollInProgress, focusedTabIndex, pagerState.currentPage) {
if (!pagerState.isScrollInProgress && focusedTabIndex != pagerState.currentPage) {
keyboardController?.hide()
focusManager.clearFocus()
focusedTabIndex = pagerState.currentPage
}
LaunchedEffect(pagerState.isScrollInProgress, focusedTabIndex, pagerState.currentPage) {
if (!pagerState.isScrollInProgress && focusedTabIndex != pagerState.currentPage) {
keyboardController?.hide()
focusManager.clearFocus()
focusedTabIndex = pagerState.currentPage
}
}
}
)
}

WireModalSheetLayout(
sheetState = sheetState,
Expand Down
2 changes: 1 addition & 1 deletion kalium
Submodule kalium updated 21 files
+21 βˆ’3 logic/src/commonMain/kotlin/com/wire/kalium/logic/configuration/UserConfigRepository.kt
+1 βˆ’3 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/client/ClientRepository.kt
+46 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/event/Event.kt
+54 βˆ’3 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/event/EventMapper.kt
+23 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/legalhold/LastPreKey.kt
+46 βˆ’16 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/UserSessionScope.kt
+3 βˆ’7 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/client/ClientScope.kt
+9 βˆ’2 logic/src/commonMain/kotlin/com/wire/kalium/logic/sync/receiver/UserEventReceiver.kt
+20 βˆ’6 logic/src/commonMain/kotlin/com/wire/kalium/logic/sync/receiver/conversation/NewConversationEventHandler.kt
+69 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/sync/receiver/handler/legalhold/LegalHoldHandler.kt
+49 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/sync/receiver/handler/legalhold/LegalHoldRequestHandler.kt
+10 βˆ’1 logic/src/commonTest/kotlin/com/wire/kalium/logic/sync/receiver/UserEventReceiverTest.kt
+106 βˆ’38 ...c/src/commonTest/kotlin/com/wire/kalium/logic/sync/receiver/conversation/NewConversationEventHandlerTest.kt
+139 βˆ’0 logic/src/commonTest/kotlin/com/wire/kalium/logic/sync/receiver/handler/legalhold/LegalHoldHandlerTest.kt
+106 βˆ’0 .../src/commonTest/kotlin/com/wire/kalium/logic/sync/receiver/handler/legalhold/LegalHoldRequestHandlerTest.kt
+27 βˆ’0 network/src/commonMain/kotlin/com/wire/kalium/network/api/base/authenticated/client/ClientIdDTO.kt
+29 βˆ’0 network/src/commonMain/kotlin/com/wire/kalium/network/api/base/authenticated/keypackage/LastPreKeyDTO.kt
+22 βˆ’0 network/src/commonMain/kotlin/com/wire/kalium/network/api/base/authenticated/notification/EventContentDTO.kt
+24 βˆ’14 network/src/jvmTest/kotlin/com/wire/kalium/HttpClientConnectionSpecsTest.kt
+82 βˆ’23 persistence/src/commonMain/kotlin/com/wire/kalium/persistence/config/UserConfigStorage.kt
+21 βˆ’0 persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/unread/UserConfigDAO.kt

0 comments on commit 72059c8

Please sign in to comment.