@@ -37,7 +37,7 @@ import io.snabble.sdk.utils.Logger
3737
3838open class CheckoutBar @JvmOverloads constructor(
3939 context : Context , attrs : AttributeSet ? = null , defStyleAttr : Int = 0
40- ) : LinearLayout(context, attrs, defStyleAttr), Checkout.OnCheckoutStateChangedListener {
40+ ) : LinearLayout(context, attrs, defStyleAttr) {
4141 init {
4242 inflate(getContext(), R .layout.snabble_view_checkout_bar, this )
4343 }
@@ -126,19 +126,9 @@ open class CheckoutBar @JvmOverloads constructor(
126126 false
127127 })
128128
129- context.requireFragmentActivity().lifecycle.addObserver(object : LifecycleObserver {
130- @OnLifecycleEvent(Lifecycle .Event .ON_START )
131- fun onStart () {
132- if (isAttachedToWindow) {
133- registerListeners()
134- }
135- }
136-
137- @OnLifecycleEvent(Lifecycle .Event .ON_STOP )
138- fun onStop () {
139- unregisterListeners()
140- }
141- })
129+ project.checkout.checkoutState.observeView(this ) {
130+ onStateChanged(it)
131+ }
142132 }
143133
144134 private fun handleButtonClick () {
@@ -266,28 +256,7 @@ open class CheckoutBar @JvmOverloads constructor(
266256 }
267257 }
268258
269- private fun registerListeners () {
270- project.checkout.addOnCheckoutStateChangedListener(this )
271- }
272-
273- private fun unregisterListeners () {
274- project.checkout.removeOnCheckoutStateChangedListener(this )
275- progressDialog.dismiss()
276- }
277-
278- override fun onAttachedToWindow () {
279- super .onAttachedToWindow()
280- if (! isInEditMode) {
281- registerListeners()
282- }
283- }
284-
285- override fun onDetachedFromWindow () {
286- super .onDetachedFromWindow()
287- unregisterListeners()
288- }
289-
290- override fun onStateChanged (state : Checkout .State ) {
259+ protected fun onStateChanged (state : Checkout .State ) {
291260 when (state) {
292261 Checkout .State .HANDSHAKING -> {
293262 progressDialog.showAfterDelay(300 )
@@ -344,7 +313,6 @@ open class CheckoutBar @JvmOverloads constructor(
344313 putString(CheckoutActivity .ARG_PROJECT_ID , project.id)
345314 })
346315 progressDialog.dismiss()
347- unregisterListeners()
348316 }
349317 Checkout .State .INVALID_PRODUCTS -> {
350318 val invalidProducts = project.checkout.invalidProducts
0 commit comments