Skip to content

Instantly share code, notes, and snippets.

@xaviervia
Created December 3, 2016 15:05
Show Gist options
  • Save xaviervia/4a24b923f53e294c3fbc5ea0bcc061b4 to your computer and use it in GitHub Desktop.
Save xaviervia/4a24b923f53e294c3fbc5ea0bcc061b4 to your computer and use it in GitHub Desktop.
Tessellation v1 app lib.
export default (reducer, initialState, effects) => {
let state = initialState
let listeners = []
const broadcast = (state) => {
listeners.forEach((listener) => listener(state))
}
const push = (action) => {
state = reducer(state, action)
broadcast(state)
}
listeners = effects
.map((effect) => effect(push))
.filter((listener) => listener != null)
broadcast(state)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment