package cash.z.android.wallet.ui.fragment import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import cash.z.android.wallet.R import cash.z.android.wallet.databinding.FragmentHistoryBinding import cash.z.android.wallet.ui.adapter.TransactionAdapter import cash.z.android.wallet.ui.presenter.HistoryPresenter import cash.z.android.wallet.ui.presenter.Presenter import cash.z.android.wallet.ui.util.AlternatingRowColorDecoration import cash.z.wallet.sdk.dao.WalletTransaction import dagger.Binds import dagger.Module import dagger.android.ContributesAndroidInjector import kotlinx.coroutines.launch import javax.inject.Inject import javax.inject.Singleton class HistoryFragment : BaseFragment(), HistoryPresenter.HistoryView { @Inject lateinit var historyPresenter: HistoryPresenter private lateinit var binding: FragmentHistoryBinding override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return DataBindingUtil .inflate(inflater, R.layout.fragment_history, container, false) .also { binding = it } .root } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) if (mainActivity != null) { mainActivity?.setToolbarShown(true) binding.recyclerTransactionsHistory.apply { layoutManager = LinearLayoutManager(mainActivity, RecyclerView.VERTICAL, false) adapter = TransactionAdapter(R.layout.item_transaction_history) addItemDecoration(AlternatingRowColorDecoration()) } } } override fun onResume() { super.onResume() launch { historyPresenter.start() } } override fun onPause() { super.onPause() historyPresenter.stop() } override fun setTransactions(transactions: List) { mainActivity?.supportActionBar?.title = resources.getQuantityString(R.plurals.history_transaction_count_title, transactions.size, transactions.size) with (binding.recyclerTransactionsHistory) { (adapter as TransactionAdapter).submitList(transactions) postDelayed({ smoothScrollToPosition(0) }, 100L) } } } @Module abstract class HistoryFragmentModule { @ContributesAndroidInjector abstract fun contributeHistoryFragment(): HistoryFragment @Binds @Singleton abstract fun providePresenter(historyPresenter: HistoryPresenter): Presenter }