mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
fix party seeking issues
This commit is contained in:
parent
9ef7b99d2d
commit
2a7b25bddf
5 changed files with 19 additions and 23 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
NAME=4.2
|
||||
CODE=6001
|
||||
CODE=6011
|
||||
Loading…
Reference in a new issue