diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/adapters/TransactionsAdapter.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/adapters/TransfersAdapter.kt similarity index 65% rename from app/src/main/java/cy/agorise/bitsybitshareswallet/adapters/TransactionsAdapter.kt rename to app/src/main/java/cy/agorise/bitsybitshareswallet/adapters/TransfersAdapter.kt index cf9d490..422a980 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/adapters/TransactionsAdapter.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/adapters/TransfersAdapter.kt @@ -11,16 +11,16 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.SortedList import cy.agorise.bitsybitshareswallet.R -import cy.agorise.bitsybitshareswallet.database.entities.Transfer +import cy.agorise.bitsybitshareswallet.database.joins.TransferDetail -class TransactionsAdapter(private val context: Context) : - RecyclerView.Adapter() { +class TransfersAdapter(private val context: Context) : + RecyclerView.Adapter() { private val mComparator = - Comparator { a, b -> a.id.compareTo(b.id) } + Comparator { a, b -> a.id.compareTo(b.id) } private val mSortedList = - SortedList(Transfer::class.java, object : SortedList.Callback() { + SortedList(TransferDetail::class.java, object : SortedList.Callback() { override fun onInserted(position: Int, count: Int) { notifyItemRangeInserted(position, count) } @@ -37,15 +37,15 @@ class TransactionsAdapter(private val context: Context) : notifyItemRangeChanged(position, count) } - override fun compare(a: Transfer, b: Transfer): Int { + override fun compare(a: TransferDetail, b: TransferDetail): Int { return mComparator.compare(a, b) } - override fun areContentsTheSame(oldItem: Transfer, newItem: Transfer): Boolean { + override fun areContentsTheSame(oldItem: TransferDetail, newItem: TransferDetail): Boolean { return oldItem == newItem } - override fun areItemsTheSame(item1: Transfer, item2: Transfer): Boolean { + override fun areItemsTheSame(item1: TransferDetail, item2: TransferDetail): Boolean { return item1.id == item2.id } }) @@ -64,7 +64,7 @@ class TransactionsAdapter(private val context: Context) : val tvFiatEquivalent: TextView = itemView.findViewById(R.id.tvFiatEquivalent) } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TransactionsAdapter.ViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TransfersAdapter.ViewHolder { val inflater = LayoutInflater.from(context) val transactionView = inflater.inflate(R.layout.item_transaction, parent, false) @@ -73,41 +73,41 @@ class TransactionsAdapter(private val context: Context) : } override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { - val transaction = mSortedList.get(position) + val transferDetail = mSortedList.get(position) - viewHolder.tvFrom.text = transaction.source - viewHolder.tvTo.text = transaction.destination + viewHolder.tvFrom.text = transferDetail.from + viewHolder.tvTo.text = transferDetail.to } - fun add(transaction: Transfer) { - mSortedList.add(transaction) + fun add(transferDetail: TransferDetail) { + mSortedList.add(transferDetail) } - fun remove(transaction: Transfer) { - mSortedList.remove(transaction) + fun remove(transferDetail: TransferDetail) { + mSortedList.remove(transferDetail) } - fun add(transactions: List) { - mSortedList.addAll(transactions) + fun add(transfersDetails: List) { + mSortedList.addAll(transfersDetails) } - fun remove(transactions: List) { + fun remove(transfersDetails: List) { mSortedList.beginBatchedUpdates() - for (transaction in transactions) { - mSortedList.remove(transaction) + for (transferDetail in transfersDetails) { + mSortedList.remove(transferDetail) } mSortedList.endBatchedUpdates() } - fun replaceAll(transactions: List) { + fun replaceAll(transfersDetails: List) { mSortedList.beginBatchedUpdates() for (i in mSortedList.size() - 1 downTo 0) { - val transaction = mSortedList.get(i) - if (!transactions.contains(transaction)) { - mSortedList.remove(transaction) + val transferDetail = mSortedList.get(i) + if (!transfersDetails.contains(transferDetail)) { + mSortedList.remove(transferDetail) } } - mSortedList.addAll(transactions) + mSortedList.addAll(transfersDetails) mSortedList.endBatchedUpdates() } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/BitsyDatabase.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/BitsyDatabase.kt index 63078a8..8cfd754 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/BitsyDatabase.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/BitsyDatabase.kt @@ -6,8 +6,8 @@ import androidx.room.Room import androidx.room.RoomDatabase import cy.agorise.bitsybitshareswallet.database.daos.* import cy.agorise.bitsybitshareswallet.database.entities.* -import cy.agorise.bitsybitshareswallet.database.joins.BalanceDetail import cy.agorise.bitsybitshareswallet.database.joins.BalanceDetailDao +import cy.agorise.bitsybitshareswallet.database.joins.TransferDetailDao @Database(entities = [ Asset::class, @@ -27,6 +27,7 @@ abstract class BitsyDatabase : RoomDatabase() { abstract fun transferDao(): TransferDao abstract fun userAccountDao(): UserAccountDao abstract fun balanceDetailDao(): BalanceDetailDao + abstract fun transferDetailDao(): TransferDetailDao companion object { diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetail.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetail.kt new file mode 100644 index 0000000..fb46432 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetail.kt @@ -0,0 +1,14 @@ +package cy.agorise.bitsybitshareswallet.database.joins + +data class TransferDetail( + val id: String, + val from: String, + val to: String +// val direction: Boolean, // True -> Received, False -> Sent +// val date: Long, +// val cryptoAmount: Long, +// val cryptoPrecision: Int, +// val cryptoSymbol: String, +// val fiatAmount: Long, +// val fiatCurrency: String +) \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetailDao.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetailDao.kt new file mode 100644 index 0000000..e027b66 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetailDao.kt @@ -0,0 +1,12 @@ +package cy.agorise.bitsybitshareswallet.database.joins + +import androidx.lifecycle.LiveData +import androidx.room.Dao +import androidx.room.Query + +@Dao +interface TransferDetailDao { + + @Query("SELECT id, IFNULL((SELECT name FROM user_accounts WHERE user_accounts.id=transfers.source), '') AS `from`, IFNULL((SELECT name FROM user_accounts WHERE user_accounts.id=transfers.destination), '') AS `to` FROM transfers") + fun getAll(): LiveData> +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BalancesFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BalancesFragment.kt index 08fe51d..64a42e3 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BalancesFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BalancesFragment.kt @@ -13,13 +13,13 @@ import androidx.recyclerview.widget.LinearLayoutManager import cy.agorise.bitsybitshareswallet.R import cy.agorise.bitsybitshareswallet.adapters.BalancesAdapter -import cy.agorise.bitsybitshareswallet.adapters.TransactionsAdapter -import cy.agorise.bitsybitshareswallet.database.entities.Transfer +import cy.agorise.bitsybitshareswallet.adapters.TransfersAdapter import cy.agorise.bitsybitshareswallet.database.entities.UserAccount import cy.agorise.bitsybitshareswallet.database.joins.BalanceDetail +import cy.agorise.bitsybitshareswallet.database.joins.TransferDetail import cy.agorise.bitsybitshareswallet.utils.Constants import cy.agorise.bitsybitshareswallet.viewmodels.BalanceDetailViewModel -import cy.agorise.bitsybitshareswallet.viewmodels.TransactionViewModel +import cy.agorise.bitsybitshareswallet.viewmodels.TransferDetailViewModel import cy.agorise.bitsybitshareswallet.viewmodels.UserAccountViewModel import kotlinx.android.synthetic.main.fragment_balances.* @@ -27,7 +27,7 @@ class BalancesFragment : Fragment() { private lateinit var mUserAccountViewModel: UserAccountViewModel private lateinit var mBalanceDetailViewModel: BalanceDetailViewModel - private lateinit var mTransactionViewModel: TransactionViewModel + private lateinit var mTransferDetailViewModel: TransferDetailViewModel override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -60,15 +60,15 @@ class BalancesFragment : Fragment() { balancesAdapter.replaceAll(balancesDetails) }) - // Configure TransactionViewModel to show the transaction history - mTransactionViewModel = ViewModelProviders.of(this).get(TransactionViewModel::class.java) + // Configure TransferDetailViewModel to show the transaction history + mTransferDetailViewModel = ViewModelProviders.of(this).get(TransferDetailViewModel::class.java) - val transactionsAdapter = TransactionsAdapter(context!!) - rvTransactions.adapter = transactionsAdapter + val transfersAdapter = TransfersAdapter(context!!) + rvTransactions.adapter = transfersAdapter rvTransactions.layoutManager = LinearLayoutManager(context) - mTransactionViewModel.getAll().observe(this, Observer> { transfers -> - transactionsAdapter.replaceAll(transfers) + mTransferDetailViewModel.getAll().observe(this, Observer> { transfersDetails -> + transfersAdapter.replaceAll(transfersDetails) }) } } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/repositories/TransferDetailRepository.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/repositories/TransferDetailRepository.kt new file mode 100644 index 0000000..915289d --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/repositories/TransferDetailRepository.kt @@ -0,0 +1,22 @@ +package cy.agorise.bitsybitshareswallet.repositories + +import android.content.Context +import androidx.lifecycle.LiveData +import cy.agorise.bitsybitshareswallet.database.BitsyDatabase +import cy.agorise.bitsybitshareswallet.database.joins.TransferDetail +import cy.agorise.bitsybitshareswallet.database.joins.TransferDetailDao + +class TransferDetailRepository internal constructor(context: Context) { + + private val mTransferDetailDao: TransferDetailDao + + init { + val db = BitsyDatabase.getDatabase(context) + mTransferDetailDao = db!!.transferDetailDao() + } + + fun getAll(): LiveData> { + return mTransferDetailDao.getAll() + } + +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransactionViewModel.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransactionViewModel.kt deleted file mode 100644 index 6590fa2..0000000 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransactionViewModel.kt +++ /dev/null @@ -1,15 +0,0 @@ -package cy.agorise.bitsybitshareswallet.viewmodels - -import android.app.Application -import androidx.lifecycle.AndroidViewModel -import androidx.lifecycle.LiveData -import cy.agorise.bitsybitshareswallet.database.entities.Transfer -import cy.agorise.bitsybitshareswallet.repositories.TransferRepository - -class TransactionViewModel(application: Application) : AndroidViewModel(application) { - private var mRepository = TransferRepository(application) - - internal fun getAll(): LiveData> { - return mRepository.getAll() - } -} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransferDetailViewModel.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransferDetailViewModel.kt new file mode 100644 index 0000000..4521f4d --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransferDetailViewModel.kt @@ -0,0 +1,15 @@ +package cy.agorise.bitsybitshareswallet.viewmodels + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.LiveData +import cy.agorise.bitsybitshareswallet.database.joins.TransferDetail +import cy.agorise.bitsybitshareswallet.repositories.TransferDetailRepository + +class TransferDetailViewModel(application: Application) : AndroidViewModel(application) { + private var mRepository = TransferDetailRepository(application) + + internal fun getAll(): LiveData> { + return mRepository.getAll() + } +} \ No newline at end of file