Skip to content

Commit

Permalink
feat: show delete button only for imported masternode keys
Browse files Browse the repository at this point in the history
  • Loading branch information
HashEngineering committed Nov 20, 2024
1 parent 67935b2 commit ef8c3f3
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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() }
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<String, IPAddressViewHolder>(DiffCallback()) {
class DiffCallback : DiffUtil.ItemCallback<String>() {
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<MasternodeEntry, IPAddressViewHolder>(DiffCallback()) {
class DiffCallback : DiffUtil.ItemCallback<MasternodeEntry>() {
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
}
}
Expand All @@ -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
}
}

0 comments on commit ef8c3f3

Please sign in to comment.