-
Notifications
You must be signed in to change notification settings - Fork 3
/
HomeFragment.kt
65 lines (56 loc) · 2.29 KB
/
HomeFragment.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.stripe.aod.sampleapp.fragment
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import com.google.android.material.snackbar.Snackbar
import com.stripe.aod.sampleapp.R
import com.stripe.aod.sampleapp.databinding.FragmentHomeBinding
import com.stripe.aod.sampleapp.model.MainViewModel
import com.stripe.aod.sampleapp.utils.launchAndRepeatWithViewLifecycle
import com.stripe.aod.sampleapp.utils.navOptions
import com.stripe.aod.sampleapp.utils.setThrottleClickListener
import com.stripe.stripeterminal.external.models.ConnectionStatus
import com.stripe.stripeterminal.external.models.PaymentStatus
import kotlinx.coroutines.flow.filter
class HomeFragment : Fragment(R.layout.fragment_home) {
private val viewModel: MainViewModel by activityViewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val viewBinding = FragmentHomeBinding.bind(view)
viewBinding.menuSettings.setThrottleClickListener {
startActivity(Intent(Intent.ACTION_VIEW).setData(Uri.parse("stripe://settings/")))
}
launchAndRepeatWithViewLifecycle {
viewModel.readerConnectStatus.collect {
viewBinding.indicator.visibility = if (it != ConnectionStatus.CONNECTED) {
View.VISIBLE
} else {
View.INVISIBLE
}
}
}
launchAndRepeatWithViewLifecycle {
viewModel.readerPaymentStatus.collect {
viewBinding.newPayment.isEnabled = (it == PaymentStatus.READY)
}
}
launchAndRepeatWithViewLifecycle {
viewModel.userMessage.filter {
it.isNotEmpty()
}.collect { message ->
Snackbar.make(viewBinding.newPayment, message, Snackbar.LENGTH_SHORT).show()
}
}
viewBinding.newPayment.setThrottleClickListener {
findNavController().navigate(
R.id.action_homeFragment_to_inputFragment,
null,
navOptions()
)
}
}
}