I have 1 viper module where through dependency injection I set value of favoriteBeers and then pass this entity to router where I create 2 viper module with this same entity of favoriteBeers. Also I have "add to favourites" button to remove or add beer to this entity, but here starts part where my mind is just blowing. Vc2 sees changes made from vc1 in favoriteBeers, but vc1 don't see changes made with this entity from vc2. Here is code responsible for passing data between modules:
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let favoriteBeers = FavoriteBeers()
let beersList = BeersListModuleBuilder.buildBeersListModule(favoriteBeers: favoriteBeers)
}
class BeersListPresenter: BeersListPresenterProtocol{
weak var view: BeersListViewProtocol!
var interactor : BeersListInteractorProtocol!
var router: BeersListRouterProtocol!
func rowSelected(beer: Beer){
router.routeToBeerDetails(of: beer, self.view, interactor.favoriteBeers)
}
}
class BeersListRouter: BeersListRouterProtocol{
func routeToBeerDetails(of beer: Beer,_ view: BeersListViewProtocol ,_ favoriteBeers: FavoriteBeers){
let beerDetailsView = BeerDetailsModuleBuilder.buildBeerDetailsModule(of: beer, favoriteBeers)
view.show(beerDetailsView, sender: self)
}
}
Full source code here : https://github.com/IgorShevtshenko/BeerList/tree/main/Wallester%20iOS%20Test%20Task%20(Viper-UIKit)/Wallester%20iOS%20Test%20Task%20(Viper-UIKit)
Video how it looks like: https://vimeo.com/user165189020/review/671750808/e4634c8b0f