ЙажаСценарий / Говнокод #26820 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
import { combineEpics, ofType } from 'redux-observable'

import { map, switchMap, catchError, filter, mergeAll } from 'rxjs/operators'
import { of, from } from 'rxjs'
import * as R from 'ramda'

import * as TICKETS_ACTION_TYPES from './tickets.types'
import * as TicketsActions from './tickets.actions'
import * as TicketsSelectors from './tickets.selectors'
import { /* TICKET_TYPES,*/ TICKET_STEPS } from './constants'
import mockAPI from 'services/mockAPI'

export const getTicketsEpic = (action$, state$) =>
  from(
    R.map(
      (step) =>
        action$.pipe(
          filter(
            R.either(
              R.both(R.propEq('type', TICKETS_ACTION_TYPES.GET_TICKETS_BY_STEP), R.pathEq(['payload', 'step'], step)),
              R.propEq('type', TICKETS_ACTION_TYPES.GET_ALL_TICKETS)
            )
          ),
          switchMap((action) => {
            if (
              action.type !== TICKETS_ACTION_TYPES.GET_ALL_TICKETS &&
              TicketsSelectors.ticketsAllDirtySelector(state$.value)
            ) {
              return of(TicketsActions.getAllTickets())
            } else if (!TicketsSelectors.ticketsByStepDirtySelector(step, state$.value)) {
              return of(TicketsActions.getTicketsByStepSuccess(step, null, true))
            }
            return from(
              // Mocks tickets API
              // TODO: Replace by real request
              mockAPI.getTicketsByStep(step)
            ).pipe(
              map((data) => TicketsActions.getTicketsByStepSuccess(step, data)),
              catchError((err) => of(TicketsActions.getTicketsByStepError(step, err)))
            )
          })
        ),
      R.values(TICKET_STEPS)
    )
  ).pipe(mergeAll())

Редукс нам уже не интересен, нам с поподвыподвертами подавай, чтоб тупо болванку показать.

Запостил: NickPepper NickPepper, (Updated )

Комментарии (19) RSS

  • Если часто меняются фильтры и нужно инвалидировать предыдущие обновления состояния то redux-observable или redux-saga - единственные известные мне нормальные способы это сделать на редухе без копипасты
    Но тут этого нет, поэтому вероятно что просто выебуются
    Ответить
    • Тут как раз редух-обсер - мож просто на этом куске не видно. Да это вообще не говнокод. Тут всё хорошо и правильно. Я просто в ахуе с того, что раньше для показа списка записей нужно было просто результат аяха сунуть в объект и всё. Теперь же вот.. многабукаф
      Ответить
      • Я имею в виду что observable решает определенные проблемы которые ajax бы решал бойлерплейтом и вытеканием контроля текущего запроса в стейт, но в примере такого нет поэтому это действительно куча говна и обычный ajax был бы тоже адекватен
        Ответить
  • Какие пиздопротивные лесенки
    R.map(
          (step) =>
            action$.pipe(
              filter(
                R.either(
                  R.both(R

    ненавижу код с лесенками
    Ответить
    • Я тоже. Но великое изобретение челлвечества - prettier - навидит....
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8