Hatice Sarp
06/08/2021, 8:22 PMHatice Sarp
06/08/2021, 8:22 PM@Composable
private fun RequestComposable(
modifier: Modifier= Modifier,
paginatedRequests: LazyPagingItems<RequestItem>,
deleteRequest: (String, (Boolean) -> Unit) -> Unit,
) {
LazyColumn(modifier = modifier.fillMaxSize()) {
if (paginatedRequests.loadState.refresh == LoadState.Loading) {
item {
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
CircularProgressIndicator()
}
}
}
itemsIndexed(paginatedRequests) { index, item ->
if (item != null) {
ListItem(
item = item,
userName = item.name,
endImage = {
Image(
ImageVector.vectorResource(id = R.drawable.ic_icons_call_end_call),
contentDescription = "endCallIcon"
)
},
endImageClick = {
deleteRequest(item.id){
if (it) {
paginatedRequests.refresh()
}
}
}
)
}
}
if (paginatedRequests.loadState.append == LoadState.Loading) {
item {
CircularProgressIndicator(
modifier = Modifier
.fillMaxWidth()
.wrapContentWidth(Alignment.CenterHorizontally)
)
}
}
}
}
Hatice Sarp
06/08/2021, 8:23 PM@AndroidEntryPoint
class FriendsFragment: ComposableFragment() {
private val friendsViewModel: FriendsViewModel by activityViewModels()
@Composable
override fun ScreenContent() {
RequestUIModel(
RequestComposableComponent(
declineFriendRequest = { userId, listener -> friendsViewModel.declineFriendRequest(userId, listener)},
)
).getComponents().forEach {
it.createComposableViews().render()
}
}
}
Hatice Sarp
06/08/2021, 8:23 PMfun declineFriendRequest(userId: String, listener: (Boolean) -> Unit) {
viewModelScope.launch {
declineFriendRequestUsecase.invoke(userId).collect {
if (it is Result.Success) {
listener.invoke(true)
}
}
}
}