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

Aviasales Отели - практический опыт объединения двух приложений

Aviasales Отели - практический опыт объединения двух приложений

Evgeny Shishkin

November 27, 2018
Tweet

More Decks by Evgeny Shishkin

Other Decks in Programming

Transcript

  1. +

  2. Git

  3. Hotellook/ res/ color/ hl_color.xml drawable/ hl_drawable.xml layout/ hl_layout.xml menu/ hl_menu.xml

    … Aviasales/ res/ color/ color.xml drawable/ drawable.xml layout/ layout.xml menu/ menu.xml … Resources
  4. • CPU: Intel Core i7-8700K • Motherboard: MSI Z370 •

    Memory: DDR4 Corsair 2x16Gb 3200MHz • SSD: Samsung 970 PRO • …
  5. • CPU: Intel Core i7-8700K • Motherboard: MSI Z370 •

    Memory: DDR4 Corsair 2x16Gb 3200MHz • SSD: Samsung 970 PRO • … ≈ 100k RUB
  6. • CPU: Intel Core i7-8700K • Motherboard: MSI Z370 •

    Memory: DDR4 Corsair 2x16Gb 3200MHz • SSD: Samsung 970 PRO • … ≈ 100k RUB cheaper than slowest mbp 13
  7. API

  8. Mockable interface PermissionsHandler { fun checkPermissions(vararg permissions: String): Observable<PermissionCheckResult> fun

    requestPermissions(vararg permissions: String): Observable<PermissionCheckResult> }
  9. Singleton abstract class PermissionsDelegate<in T : Any> : PermissionsHandler {

    fun attach(component: T) {…} fun detach() {…} fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {…} PermissionsActivityDelegate PermissionsFragmentDelegate
  10. Logging class Permissions( private val permissionsHandler: PermissionsHandler, private val logger:

    ((message: String) -> Unit)? = null ) Permissions: Request android.permission.CAMERA, android.permission.ACCESS_FINE_LOCATION Permissions: PermissionDenied(permission=android.permission.CAMERA, shouldShowRequestPermissionRationale=false) Permissions: PermissionGranted(permission=android.permission.ACCESS_FINE_LOCATION)
  11. Navigation Navigation #1 Navigation #2 Navigation #3 Navigation #4 Navigator

    Router Activity Application * Command 1_1 * Command 1_2 * Command 1_3 * Command 2_1 * Command 2_2 * Command 2_3 * Command 3_1 * Command 3_2 * Command 3_3 * Command 4_1 * Command 4_2 * Command 4_3