Skip to content

Instantly share code, notes, and snippets.

@nhaarman
Last active October 25, 2018 08:35
Show Gist options
  • Save nhaarman/4b36cd86db687056166ba90003f4725f to your computer and use it in GitHub Desktop.
Save nhaarman/4b36cd86db687056166ba90003f4725f to your computer and use it in GitHub Desktop.
class PaymentFlowNavigator private constructor(
private var shippingInfo: ShippingInfo? = null,
savedState: SavedState?
): StackNavigator(savedState),
ShippingInfoScreen.Events,
PaymentInfoScreen.Events,
ConfirmationScreen.Events {
override fun initialStack() = listOf(ShoppingCartScreen())
override fun onProvideShippingInfoClicked() {
push(ShippingInfoScreen(this))
}
override fun onShippingInfo(shippingInfo: ShippingInfo) {
this.shippingInfo = shippingInfo
push(PaymentInfoScreen(this))
}
override fun onPaymentInfo(paymentInfo: PaymentInfo) {
push(ConfirmationScreen(shippingInfo, paymentInfo, this))
}
override fun onConfirmed() {
finish()
}
override fun saveInstanceState() : SavedState {
return super.saveInstanceState().also {
it.shippingInfo = shippingInfo
}
}
companion object {
fun create() = PaymentFlowNavigator(null, null)
fun from(savedState: SavedState) = PaymentFlowNavigator(savedState.shippingInfo, savedState)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment