Skip to content

Instantly share code, notes, and snippets.

@Ochornma
Created April 22, 2021 15:50
Show Gist options
  • Select an option

  • Save Ochornma/981d45d7266e9f2997dec65c53563d45 to your computer and use it in GitHub Desktop.

Select an option

Save Ochornma/981d45d7266e9f2997dec65c53563d45 to your computer and use it in GitHub Desktop.
class HomeFragment : Fragment() {
private var _binding: HomeFragmentBinding? = null
private val binding get() = _binding
private lateinit var viewModel: HomeViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = HomeFragmentBinding.inflate(inflater, container, false)
refreshBalance()
return binding!!.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
shimmerDuration()
getUserBalance()
profile(view)
takeLoan(view)
payBack(view)
loanCalculator(view)
blogPost(view)
}
private fun blogPost(view: View){
binding?.blog?.setOnClickListener {
// Toast.makeText(requireContext(), "Coming soon", Toast.LENGTH_SHORT).show()
val navBuilder = NavOptions.Builder()
navBuilder.setEnterAnim(R.anim.anim_slide_in_left).setExitAnim(R.anim.anim_slide_out_left)
.setPopEnterAnim(R.anim.anim_slide_in_left).setPopExitAnim(R.anim.anim_slide_out_left)
Navigation.findNavController(view).navigate(R.id.navigation_about, null, navBuilder.build())
}
}
//navigate to profile
private fun profile(view: View){
binding!!.profile.setOnClickListener {
val navBuilder = NavOptions.Builder()
navBuilder.setEnterAnim(R.anim.anim_slide_in_left).setExitAnim(R.anim.anim_slide_out_left)
.setPopEnterAnim(R.anim.anim_slide_in_left).setPopExitAnim(R.anim.anim_slide_out_left)
Navigation.findNavController(view).navigate(R.id.navigation_profile, null, navBuilder.build())
}
}
private fun takeLoan(view: View){
binding!!.takeLoan.setOnClickListener {
Navigation.findNavController(view).navigate(R.id.navigation_loan)
}
}
private fun payBack(view: View){
binding!!.loanPayBack.setOnClickListener {
Navigation.findNavController(view).navigate(R.id.navigation_payback)
}
}
private fun loanCalculator(view: View){
binding!!.loanCalculateButton.setOnClickListener {
val navBuild = NavOptions.Builder()
navBuild.setEnterAnim(R.anim.anim_slide_up)
Navigation.findNavController(view).navigate(R.id.navigation_loanCalculator, null, navBuild.build())
}
}
private fun shimmerDuration(){
binding!!.shimmerViewContainer.duration = 800
}
@SuppressLint("SimpleDateFormat", "SetTextI18n")
private fun getUserBalance(){
val sp = binding!!.root.context.getSharedPreferences("identifier", Context.MODE_PRIVATE)
val userid = sp.getInt("userId", 0)
val running = "running"
viewModel.getUserRunningLoan(running, userid){ response ->
if (!response.isSuccessful){
if (response.code() == 401){
toastFail(requireContext(), "Session Expired")
Navigation.findNavController(binding!!.root).navigate(R.id.navigation_logIn)
}else {
toastFail(requireContext(), "Error retrieving loan Balance, check Network")
}
}else{
val resMessage = response.body()?.data
if (resMessage == null){
binding?.balanceAmount?.text = getString(R.string.zero_balance)
binding?.balanceDate?.visibility = View.INVISIBLE
}else{
binding?.balanceAmount?.text = resMessage.amountRemain
binding?.balanceDate?.visibility = View.VISIBLE
//date converter
val parser = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
val formatter = SimpleDateFormat("dd.MM.yyyy")
val output = formatter.format(parser.parse(resMessage.endDate)!!)
binding?.balanceDate?.text = getString(R.string.due_date) + " " + output
}
}
binding!!.shimmerViewContainer.stopShimmerAnimation()
binding!!.shimmerViewContainer.visibility = View.GONE
}
}
private fun refreshBalance(){
binding!!.refresh.setOnRefreshListener {
val green: Int = resources.getColor(R.color.dark_green)
binding!!.refresh.setColorSchemeColors(green)
getUserBalance()
binding!!.refresh.isRefreshing = false
}
}
override fun onResume() {
super.onResume()
binding!!.shimmerViewContainer.startShimmerAnimation()
}
override fun onPause() {
binding!!.shimmerViewContainer.stopShimmerAnimation()
super.onPause()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment