diff --git a/wallet/src/de/schildbach/wallet/ui/username/AddVotingKeysFragment.kt b/wallet/src/de/schildbach/wallet/ui/username/AddVotingKeysFragment.kt index 804853398a..fb41574748 100644 --- a/wallet/src/de/schildbach/wallet/ui/username/AddVotingKeysFragment.kt +++ b/wallet/src/de/schildbach/wallet/ui/username/AddVotingKeysFragment.kt @@ -63,7 +63,8 @@ class AddVotingKeysFragment : Fragment(R.layout.fragment_add_voting_keys) { log.info("updating masternode list: {}", it.map { mn -> mn.address }) adapter.submitList( it.map { masternode -> - masternode.address + val canDelete = viewModel.isImported(masternode) + MasternodeEntry(masternode.address, canDelete) } ) binding.votesCastText.text = getString(R.string.multiple_votes_cast, it.size) @@ -78,7 +79,7 @@ class AddVotingKeysFragment : Fragment(R.layout.fragment_add_voting_keys) { lifecycleScope.launch { val isFirstTime = withContext(Dispatchers.IO) { viewModel.isFirstTimeVoting() } binding.dontAskAgainButton.isVisible = !isFirstTime - viewModel.setSecondTimeVoting() + withContext(Dispatchers.IO) { viewModel.setSecondTimeVoting() } } } } diff --git a/wallet/src/de/schildbach/wallet/ui/username/UsernameRequestsViewModel.kt b/wallet/src/de/schildbach/wallet/ui/username/UsernameRequestsViewModel.kt index 6ae20c8508..5e3673e8fe 100644 --- a/wallet/src/de/schildbach/wallet/ui/username/UsernameRequestsViewModel.kt +++ b/wallet/src/de/schildbach/wallet/ui/username/UsernameRequestsViewModel.kt @@ -693,4 +693,8 @@ class UsernameRequestsViewModel @Inject constructor( usernameVoteDao.countVotes(username) == UsernameVote.MAX_VOTES - votesLeft } } + + suspend fun isImported(masternode: ImportedMasternodeKey): Boolean { + return importedMasternodeKeyDao.contains(masternode.proTxHash) + } } diff --git a/wallet/src/de/schildbach/wallet/ui/username/adapters/IPAddressAdapter.kt b/wallet/src/de/schildbach/wallet/ui/username/adapters/IPAddressAdapter.kt index d81daef652..02855e686e 100644 --- a/wallet/src/de/schildbach/wallet/ui/username/adapters/IPAddressAdapter.kt +++ b/wallet/src/de/schildbach/wallet/ui/username/adapters/IPAddressAdapter.kt @@ -19,18 +19,24 @@ package de.schildbach.wallet.ui.username.adapters import android.view.LayoutInflater import android.view.ViewGroup +import androidx.core.view.isVisible import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import de.schildbach.wallet_test.databinding.ViewMasternodeIpBinding -class IPAddressAdapter(private val deleteClickListener: (String) -> Unit) : ListAdapter(DiffCallback()) { - class DiffCallback : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: String, newItem: String): Boolean { - return oldItem == newItem +data class MasternodeEntry( + val ipAddress: String, + val canDelete: Boolean +) + +class IPAddressAdapter(private val deleteClickListener: (String) -> Unit) : ListAdapter(DiffCallback()) { + class DiffCallback : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: MasternodeEntry, newItem: MasternodeEntry): Boolean { + return oldItem.ipAddress == newItem.ipAddress } - override fun areContentsTheSame(oldItem: String, newItem: String): Boolean { + override fun areContentsTheSame(oldItem: MasternodeEntry, newItem: MasternodeEntry): Boolean { return oldItem == newItem } } @@ -52,10 +58,11 @@ class IPAddressAdapter(private val deleteClickListener: (String) -> Unit) : List } class IPAddressViewHolder(val binding: ViewMasternodeIpBinding, private val deleteClickListener: (String) -> Unit): RecyclerView.ViewHolder(binding.root) { - fun bind(ipAddress: String) { - binding.ipAddress.text = ipAddress + fun bind(masternodeEntry: MasternodeEntry) { + binding.ipAddress.text = masternodeEntry.ipAddress binding.removeMasternode.setOnClickListener { - deleteClickListener.invoke(ipAddress) + deleteClickListener.invoke(masternodeEntry.ipAddress) } + binding.removeMasternode.isVisible = masternodeEntry.canDelete } }