Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developer Experience at Heetch

Developer Experience at Heetch

Avatar for Jérôme Alves

Jérôme Alves

April 04, 2019

More Decks by Jérôme Alves

Other Decks in Technology

Transcript

  1. MVC

  2. → Managing the View → Presenting View Controllers → Supporting

    Custom Transitions and Presentations → Managing Child View Controllers in a Custom Container
  3. → Responding to View Events → Extending the View's Safe

    Area → Managing the View's Margins → Configuring the View’s Layout Behavior → Managing the Status Bar
  4. → Configuring Visual Appearance → Managing the View Hierarchy →

    Managing AutoLayout (Constraints, LayoutGuides, etc..) → Laying out Subviews (manually) → Drawing → Managing Gesture Recognizers
  5. class ProfileViewModel { var name: Observable<String> { get } var

    email: Observable<String?> { get } var rating: Observable<Double> { get } }
  6. extension ProfileViewModel { func drive(_ view: ProfileHeaderView) { /* Binding

    Rx */ } func drive(_ view: ProfileContentView) { /* Binding Rx */ } func drive(_ view: ProfileSummaryView) { /* Binding Rx */ } }
  7. protocol ProfileViewModelIO { var profile: Observable<Profile> { get } func

    updateEmail(_ newValue: String) -> Completable } class ProfileViewModel { let io: ProfileViewModelIO init(io: ProfileViewModelIO) { self.io = io } }
  8. let viewModel = ProfileViewModel(io: .resolve( profile: { Observable.merge( apns.continuousUpdates(of: .profile),

    api.performRequest(.getProfile) ) }, updateEmail: { newValue in api.performRequest(.postEmail(newValue)) } ))