init(_ router: LinkCreateRouter, _ linkCreateUseCase: LinkCreateUseCase) { self.router = router self.linkCreateUseCase = linkCreateUseCase } override func onStart() { super.onStart() if self.router.initialDialogViewModel != nil && self.isFirstStart() { self.router.showDialog(viewModel: self.router.initialDialogViewModel!) } self.view?.showSplash(self.router.splash) } func onSendClicked(email: String) { self.view?.setLoading(true) self.linkCreateUseCase.invoke(email: email) { [weak self] (success: Bool) in self?.view?.setLoading(false) if success { self?.onMagicLinkSend() } else { self?.onEmailNotFound() } } } func onMagicLinkSend() { let viewModel = ConfirmationDialogViewModel(…) self.router.showDialog(viewModel: viewModel) } func onEmailNotFound() { let viewModel = ConfirmationDialogViewModel(…) self.router.showDialog(viewModel: viewModel) } } class LinkCreatePresenter : BasePresenter<LinkCreateView> { val router: LinkCreateRouter val linkCreateUseCase: LinkCreateUseCase constructor(router: LinkCreateRouter, linkCreateUseCase: LinkCreateUseCase) { this.router = router this.linkCreateUseCase = linkCreateUseCase } override fun onStart(view: View) { super.onStart() if (isFirstStart()) { this.router.showDialog(initialDialogViewModel) } this.view?.showSplash(router.splash) } fun onSendClicked(email: String) { this.view?.setLoading(true) this.linkCreateUseCase.invoke(email.toString()) { success -> this.view?.setLoading(false) if (success!!) { onMagicLinkSend() } else { onEmailNotFound() } } } private fun onMagicLinkSend() { val viewModel = ConfirmationDialogViewModel(…) router.showDialog(viewModel) } private fun onEmailNotFound() { val viewModel = ConfirmationDialogViewModel(…) this.router.showDialog(viewModel) } } KOTLIN SWIFT