示例#1
0
export default function * renameTournamentSaga () {
  const firebase = getFirebase()

  yield takeEvery(RENAME_TOURNAMENT, function * (action) {
    const { tournamentId, title } = action.payload

    const auth = yield select(state => pathToJS(state.firebase, 'auth'))
    if (!auth) { return }
    const { uid } = auth

    const db = firebase.database()
    const ref = db.ref()

    try {
      yield ref.update({
        [`/tournamentsByOwner/${uid}/${tournamentId}/title`]: title
      })
    } catch (ex) {
      yield put({
        type: RENAME_TOURNAMENT_RESPONSE,
        payload: {
          request: action.payload,
          error: ex
        },
        error: true
      })
      return
    }

    yield put({
      type: RENAME_TOURNAMENT_RESPONSE,
      payload: { request: action.payload }
    })
  })
}
示例#2
0
export default function * createTournamentSaga () {
  const firebase = getFirebase()

  yield takeEvery(CREATE_TOURNAMENT, function * (action) {
    const { title, tournament, revision } = action.payload

    const auth = yield select(state => pathToJS(state.firebase, 'auth'))
    if (!auth) { return }
    const { uid } = auth

    const db = firebase.database()
    const ref = db.ref()
    const newKey = ref.child('tournaments').push().key
    const lastModified = firebase.database.ServerValue.TIMESTAMP

    try {
      yield ref.update({
        [`/tournaments/${newKey}`]: {
          owner: uid,
          data: JSON.stringify(tournament),
          lastModified,
          revision
        },
        [`/tournamentsByOwner/${uid}/${newKey}`]: {
          owner: uid,
          title,
          lastModified
        }
      })
    } catch (ex) {
      yield put({
        type: CREATE_TOURNAMENT_RESPONSE,
        payload: {
          request: action.payload,
          error: ex
        },
        error: true
      })
      return
    }

    yield put({
      type: CREATE_TOURNAMENT_RESPONSE,
      payload: { request: action.payload }
    })
  })
}