fix party seeking issues

This commit is contained in:
Phillip Thelen 2023-05-09 18:20:53 +02:00
parent 9ef7b99d2d
commit 2a7b25bddf
5 changed files with 19 additions and 23 deletions

View file

@ -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)

View file

@ -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 {

View file

@ -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<PagingData<Member>>
val successfulInvites = mutableStateListOf<String>()
val inviteStates = mutableStateMapOf<String, LoadingButtonState>()
val inviteStates = mutableStateMapOf<String, Pair<Boolean, LoadingButtonState>>()
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)
}
}
}

View file

@ -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(
{

View file

@ -1,2 +1,2 @@
NAME=4.2
CODE=6001
CODE=6011