Slide 1

Slide 1 text

Rise of the State Machines

Slide 2

Slide 2 text

State Machine Head

Slide 3

Slide 3 text

Florence and the State Machine

Slide 4

Slide 4 text

Welcome to the State Machine

Slide 5

Slide 5 text

OFF

Slide 6

Slide 6 text

ON

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

OFF ON switch on switch off

Slide 9

Slide 9 text

OFF ON switch on switch off

Slide 10

Slide 10 text

OFF ON switch on switch off

Slide 11

Slide 11 text

https://github.com/kanawish/android-mvi-sample "

Slide 12

Slide 12 text

https://github.com/kanawish/android-mvi-sample #

Slide 13

Slide 13 text

https://github.com/kanawish/android-mvi-sample # Model Intent View

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

IDLE PROCESS ERROR refresh check task success failed

Slide 17

Slide 17 text

sealed class SyncState { object IDLE : SyncState() { override fun toString(): String = "IDLE" } data class PROCESS(val type: Type) : SyncState() { enum class Type { REFRESH, CHECK } } data class ERROR(val throwable: Throwable) : SyncState() } IDLE PROCESS ERROR refresh check task success failed

Slide 18

Slide 18 text

sealed class SyncState { object IDLE : SyncState() { override fun toString(): String = "IDLE" } data class PROCESS(val type: Type) : SyncState() { enum class Type { REFRESH, CHECK } } data class ERROR(val throwable: Throwable) : SyncState() } IDLE PROCESS ERROR refresh check task success failed

Slide 19

Slide 19 text

Model ModelState store

Slide 20

Slide 20 text

Model ModelState store «data class» TasksModelState tasks: List

Slide 21

Slide 21 text

Model ModelState store «data class» TasksModelState tasks: List Task id: String lastUpdate: Long title: String description: String completed: Boolean tasks

Slide 22

Slide 22 text

«data class» TasksModelState tasks: List Model ModelState store Task id: String lastUpdate: Long title: String description: String completed: Boolean tasks «sealed class» SyncState Idle() Process(type) Error(details) syncState syncState: SyncState

Slide 23

Slide 23 text

«data class» TasksModelState tasks: List Model ModelState store Task id: String lastUpdate: Long title: String description: String completed: Boolean tasks «sealed class» SyncState Idle() Process(type) Error(details) syncState syncState: SyncState

Slide 24

Slide 24 text

«data class» TasksModelState tasks: List Model ModelState store Task id: String lastUpdate: Long title: String description: String completed: Boolean tasks «sealed class» SyncState Idle() Process(type) Error(details) syncState syncState: SyncState IDLE PROCESS ERROR refresh check task success failed

Slide 25

Slide 25 text

Live demo

Slide 26

Slide 26 text

Live demo

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

CLOSED EDITING task error? SAVING task DELETING taskId addTask() editTask() cancel() edit() save() error(msg) delete() error(msg) deleted() saved()

Slide 30

Slide 30 text

Live demo

Slide 31

Slide 31 text

Live demo