From 2a7b25bddf3118d232a6353cfd43f45e21bf4f99 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 9 May 2023 18:20:53 +0200 Subject: [PATCH] fix party seeking issues --- .../preferences/AccountPreferenceFragment.kt | 3 +- .../social/party/PartyInviteFragment.kt | 2 -- .../social/party/PartySeekingFragment.kt | 31 ++++++++----------- .../habitica/ui/views/LoadingButton.kt | 4 ++- version.properties | 2 +- 5 files changed, 19 insertions(+), 23 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt index 73d83da6b..9ab7540ae 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt @@ -447,11 +447,12 @@ class AccountPreferenceFragment : context?.let { context -> val dialog = HabiticaAlertDialog(context) dialog.setTitle(title) - dialog.addButton(R.string.save, true) { _, _ -> + dialog.addButton(R.string.save, true, autoDismiss = false) { dialog, _ -> KeyboardUtil.dismissKeyboard(activity) editText?.showErrorIfNecessary() if (editText?.isValid != true) return@addButton onChange(editText.text) + dialog.dismiss() } dialog.addCancelButton() dialog.setAdditionalContentView(view) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt index a91c3c35c..77531f528 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt @@ -250,8 +250,6 @@ fun PartyInviteView( val responses = viewModel.sendInvites() if (responses?.isNotEmpty() == true) { inviteButtonState = LoadingButtonState.SUCCESS - viewModel.invites.clear() - viewModel.invites.add("") delay(2.toDuration(DurationUnit.SECONDS)) dismiss() } else { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartySeekingFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartySeekingFragment.kt index 35f19080a..26f202707 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartySeekingFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartySeekingFragment.kt @@ -21,7 +21,6 @@ import androidx.compose.material.pullrefresh.pullRefresh import androidx.compose.material.pullrefresh.rememberPullRefreshState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateMapOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.rememberCoroutineScope @@ -79,8 +78,7 @@ class PartySeekingViewModel @Inject constructor( ) : BaseViewModel(userRepository, userViewModel) { val isRefreshing = mutableStateOf(false) val seekingUsers : Flow> - val successfulInvites = mutableStateListOf() - val inviteStates = mutableStateMapOf() + val inviteStates = mutableStateMapOf>() init { seekingUsers = Pager( config = PagingConfig( @@ -196,7 +194,7 @@ fun PartySeekingView( textAlign = TextAlign.Center, style = TextStyle(fontSize = 16.sp, fontWeight = FontWeight.Normal), color = HabiticaTheme.colors.textSecondary, modifier = Modifier - .width(250.dp) + .width(320.dp) .align(alignment = Alignment.CenterHorizontally) ) Image( @@ -207,8 +205,9 @@ fun PartySeekingView( Text( stringResource(R.string.habiticans_looking_party), textAlign = TextAlign.Center, + style = TextStyle(fontSize = 16.sp, fontWeight = FontWeight.Normal), color = HabiticaTheme.colors.textSecondary, modifier = Modifier - .width(250.dp) + .width(320.dp) .align(alignment = Alignment.CenterHorizontally) ) } @@ -220,28 +219,24 @@ fun PartySeekingView( if (it == null) return@items PartySeekingListItem( user = it, - inviteState =viewModel.inviteStates[it.id] ?: LoadingButtonState.CONTENT, - isInvited = viewModel.successfulInvites.contains(it.id), + inviteState = viewModel.inviteStates[it.id]?.second ?: LoadingButtonState.CONTENT, + isInvited = viewModel.inviteStates[it.id]?.first ?: false, modifier = Modifier .animateItemPlacement() .padding(horizontal = 14.dp) ) { member -> scope.launchCatching({ - viewModel.inviteStates[member.id] = LoadingButtonState.FAILED + viewModel.inviteStates[member.id] = Pair(false, LoadingButtonState.FAILED) }) { - viewModel.inviteStates[member.id] = LoadingButtonState.LOADING - val response: Any? = if (viewModel.successfulInvites.contains(member.id)) viewModel.rescindInvite(member) else viewModel.inviteUser(member) + val isInvited = viewModel.inviteStates[member.id]?.first ?: false + viewModel.inviteStates[member.id] = Pair(isInvited, LoadingButtonState.LOADING) + val response: Any? = if (isInvited) viewModel.rescindInvite(member) else viewModel.inviteUser(member) if (response != null) { - viewModel.inviteStates[member.id] = LoadingButtonState.SUCCESS + viewModel.inviteStates[member.id] = Pair(isInvited, LoadingButtonState.SUCCESS) delay(4.toDuration(DurationUnit.SECONDS)) - if (viewModel.successfulInvites.contains(member.id)) { - viewModel.successfulInvites.remove(member.id) - } else { - viewModel.successfulInvites.add(member.id) - } - viewModel.inviteStates[member.id] = LoadingButtonState.CONTENT + viewModel.inviteStates[member.id] = Pair(!isInvited, LoadingButtonState.CONTENT) } else { - viewModel.inviteStates[member.id] = LoadingButtonState.FAILED + viewModel.inviteStates[member.id] = Pair(isInvited, LoadingButtonState.FAILED) } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/LoadingButton.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/LoadingButton.kt index a5b76a0af..35647c895 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/LoadingButton.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/LoadingButton.kt @@ -122,7 +122,9 @@ fun LoadingButton( val buttonColors = ButtonDefaults.buttonColors( backgroundColor = backgroundColor.value, - contentColor = contentColor.value + contentColor = contentColor.value, + disabledBackgroundColor = backgroundColor.value, + disabledContentColor = contentColor.value ) Button( { diff --git a/version.properties b/version.properties index 297f3909d..5512509f9 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ NAME=4.2 -CODE=6001 \ No newline at end of file +CODE=6011 \ No newline at end of file