Skip to content

Instantly share code, notes, and snippets.

@KhayalSuleymani
Last active December 11, 2024 07:46
Show Gist options
  • Save KhayalSuleymani/a133c097e1353757f65ea7290409119d to your computer and use it in GitHub Desktop.
Save KhayalSuleymani/a133c097e1353757f65ea7290409119d to your computer and use it in GitHub Desktop.
# Payment Module with different Architectures
public class Payments: Controller<PaymentsRoute> {
public override func prepareTransition(for route: PaymentsRoute) -> Transition {
switch route {
case let .payments(d):
let m = PaymentsViewItem(d)
let v = PaymentsView()
return .show(v)
case let .payment(d):
let m = PaymentViewItem(d)
let v = PaymentView()
return .show(v)
case let .approve(d):
let m = ApproveViewItem(d)
let v = ApproveView()
return .show(v)
case let .success(d):
let m = SuccessViewItem(d)
let v = SuccessView()
return .present(v)
}
}
}
public class Payments: Presenter<PaymentsRoute> {
public override func prepareTransition(for route: PaymentsRoute) -> Transition {
switch route {
case let .payments(d):
let m = PaymentsViewItem(d)
let v = PaymentsView()
return .show(v)
case let .payment(d):
let m = PaymentViewItem(d)
let v = PaymentView()
return .show(v)
case let .approve(d):
let m = ApproveViewItem(d)
let v = ApproveView()
return .show(v)
case let .success(d):
let m = SuccessViewItem(d)
let v = SuccessView()
return .present(v)
}
}
}
public class Payments: Coordinator<PaymentsRoute> {
public override func prepareTransition(for route: PaymentsRoute) -> Transition {
switch route {
case let .payments(d):
let m = PaymentsViewItem(d)
let v = PaymentsView()
let vm = PaymentsViewModel(m)
.subscribe(v: v)
.move(by: self)
return .show(v)
case let .payment(d):
let m = PaymentViewItem(d)
let v = PaymentView()
let vm = PaymentViewModel(m)
.subscribe(v: v)
.move(by: self)
return .show(v)
case let .approve(d):
let m = ApproveViewItem(d)
let v = ApproveView()
let vm = ApproveViewModel(m)
.subscribe(v: v)
.move(by: self)
return .show(v)
case let .success(d):
let m = SuccessViewItem(d)
let v = SuccessView()
let vm = SuccessViewModel(m)
.subscribe(v: v)
.move(by: self)
return .present(v)
}
}
}
public class Payments: Router<PaymentsRoute> {
public override func prepareTransition(for route: PaymentsRoute) -> Transition {
switch route {
case let .payments(e):
let v = PaymentsView()
let i = PaymentsViewInteractor(e)
let p = PaymentsViewPresenter(i)
p.router = self
p.view = v
return .show(v)
case let .payment(e):
let v = PaymentView()
let i = PaymentViewInteractor(e)
let p = PaymentViewPresenter(i)
p.router = self
p.view = v
return .show(v)
case let .approve(e):
let v = ApproveView()
let i = ApproveViewInteractor(e)
let p = ApproveViewPresenter(m)
p.router = self
p.view = v
return .show(v)
case let .success(e):
let v = SuccessView(d)
let i = SuccessViewInteractor()
let p = SuccessViewPresenter(m)
p.router = self
p.view = v
return .present(v)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment