Skip to content

Instantly share code, notes, and snippets.

View erezrokah's full-sized avatar

Erez Rokah erezrokah

View GitHub Profile
//@flow
import firebase from '../firebase'
export function listenRequested(metaType: string) {
return {
type: 'FIREBASE_LISTEN_REQUESTED',
metaType,
}
}
//@flow
import createReducer from '../createReducer'
export const metaTypes = {
messages: 'messages',
userContacts: 'userContacts',
}
function getInitialState() {
//@flow
import firebase from '../firebase'
export function listenRequested(metaType: string) {
return {
type: 'FIREBASE_LISTEN_REQUESTED',
metaType
}
}
//@flow
import createReducer from '../createReducer'
export const metaTypes = {
messages: 'messages',
userContacts: 'userContacts',
}
function getInitialState() {
//@flow
export function listenRequested(metaType: string, ref: Object) {
return {
type: 'FIREBASE_LISTEN_REQUESTED',
metaType,
ref
}
}
const ref = firebase.database().ref(path)
dispatch(listenRequested(metaType, ref))
//@flow
import firebase from '../firebase'
export function messagesRequested() {
return {
type: 'MESSAGES_REQUESTED'
}
}
//@flow
import createReducer from '../createReducer'
const initialState = { messages: { inProgress: false, items: { } } }
//createReducer taken from here http://redux.js.org/docs/recipes/ReducingBoilerplate.html
export const reducer = createReducer(initialState, {
['MESSAGES_REQUESTED'](state, action) {
const newState = { ...state,
//@flow
export function listenRemoved(metaType: string) {
return {
type: 'FIREBASE_LISTEN_REMOVED',
metaType,
}
}
['FIREBASE_LISTEN_REQUESTED'](state, action) {
const newState = {
...state,
[action.metaType]: {
...state[action.metaType],
inProgress: true, error: '', ref: action.ref
}
}
return newState
},