
Nikita
07.08.2017
11:53:43
https://clojuredocs.org/clojure.core/-%3E
https://clojuredocs.org/clojure.core/-%3E%3E
наверное самые часто используемые
из либ тоже найду, момент

Google

Nikita
07.08.2017
11:55:50
традиционный routing API для http
https://github.com/weavejester/compojure
вот еще, но это плохой пример :) концептуально
http://sqlkorma.com/

Denis
07.08.2017
12:01:09
http://squeryl.org/index.html

illiatshurotshka❄️
07.08.2017
12:02:07
со стороны ТК нет

kana
07.08.2017
12:27:47

? animufag ?
07.08.2017
12:29:13
пишу
например в какой ситуации?

kana
07.08.2017
12:33:12
когда бойлерплейта много. Там не всегда подходят функции. В re-frame есть макрос (reg-sub :key (fn [db _] (:key db)) для субскрайберов, и вот часто (очень часто) приходилось писать такие сабсы, где ключ и путь совпадали. Ну я и писал макрос (reg-key-sub :key)
define-ы часто пишутся разными создателями либ
сам использую plumbing, он дает несколько полезных макросов типа letk и fn->

? animufag ?
07.08.2017
12:35:24

kana
07.08.2017
12:36:26

Google

kana
07.08.2017
12:36:44
не только функцию (ну хотя функцию она тоже создает, но вообще создает глобальный роут)

andretshurotshka?❄️кде
08.08.2017
03:59:43
/stat@combot

Combot
08.08.2017
03:59:43
combot.org/chat/-1001071213089

Aleksei
08.08.2017
04:24:16
А как бот Flood ratio рассчитывает?)

andretshurotshka?❄️кде
08.08.2017
04:26:07
уже кидали вроде сюда
ща найду
чет не нашел)

Aleksei
08.08.2017
04:35:17
Ну ладно, ни чего страшного) мне просто казалось, что такая вещь трудноизмерима т.к. субъективна.

Gleb
08.08.2017
06:48:50
Привет, как в rx называется map в который мы могли бы что то вернуть при этом чтобы следующий оператор проигнорировал в параметрах то что мы вернули, а получил предудущий

andretshurotshka?❄️кде
08.08.2017
06:50:38
do ?

Gleb
08.08.2017
06:51:01
черт как же дебильно выразился
action$
.ofType(SOME_TYPE)
.someMap(params => {type: "bla_bla"})
. flatMap(params => )
В общем что бы someMap вернуло что то но при этом в flatMap мы получили params основные
неет речь идет о redux-observable , мне нужно промежуточно вернуть экшн но при этом сохранить парамтеры в следующем flatMap

andretshurotshka?❄️кде
08.08.2017
06:51:35
Основные?
?

Gleb
08.08.2017
06:51:54
Кароче как do только при этом чтобы вернуть можно было что то
но проигнорировать это далее
черт такое вообще возмонжо?
только если конкат какой нибудль

andretshurotshka?❄️кде
08.08.2017
06:52:15
Не понимаю)

Gleb
08.08.2017
06:53:53
мне кароче хочется разнести логику с токеном и если что задиспатчить что он истек

Google

Gleb
08.08.2017
06:54:01
но при этом далее как бы подождать его апдейта

Дмитрий
08.08.2017
06:54:07
Если нужно одновременно задиспатчить экшн и продолжить цепь обработки этих данных, то это решается через chain

andretshurotshka?❄️кде
08.08.2017
06:54:43
chain это flatMap

Gleb
08.08.2017
06:55:29
Нукась сейчас гляну chain. а подскажи пожалуйста это вообще по практис наверное маразм сначало проверять токен а потом дожидаться апдейта, по идеи надо наверное вляпаться что он истек а потом как нибудь repet'нуть запрос

Дмитрий
08.08.2017
06:55:52
Не, чейн это действительно flatMap
redux-observable - это event-driven архитектура, просто диспатчи соответствующие эвенты

Gleb
08.08.2017
06:58:24
А есть ли возможность сначало словить 401 а потом как бы задиспатчить заново евент обновив токен? за этими дейтсвиями у меня просто сам евент уже теряется
repeatWhen я сначлао думал, но видимо тоже нет , потому что
rxHttpFetch(request)
.retryWhen(err =>
err
/** тут логика какая то но не суть**/
.delay(2000)
)
Вот тут у меня повторится ошибка а незапрос
То есть через 2 секунды я получу ту же ошибку но не делая сам запрос

andretshurotshka?❄️кде
08.08.2017
07:03:57
Так мб просто retry

Gleb
08.08.2017
07:06:10
Вобщем вопрос такой как можно восставноить то событие на котором мы словили 401, дождавшись обновления токена
нукась сейчас гляну retry

andretshurotshka?❄️кде
08.08.2017
07:07:26

Gleb
08.08.2017
07:11:29
Так я и заглушку поэтому тестовую и сделал retryWhen => delay
action$
.ofType(HTTP_REQUEST)
.map(action => action.payload)
.flatMap(({request}) =>
rxHttpFetch(request)
.retryWhen(err =>err.delay(2000) )
)
.mergeMap(() => ...)
catch()
и я стабильно вместо того чтобы делать запрос rxHttpFetch каждый раз через 2 секунды, просто получаю если скажем перед делеем в do распечатать err просто ошибку и все
но почему запрос не повторяется мне не потнятно
В самом httpFetch там код стандартный
export const rxHttpFetch = (rxHttpRequest: HttpRequest): Observable<any> =>
Observable.from((async (): Promise<HttpFetchResponse> => {

andretshurotshka?❄️кде
08.08.2017
07:12:19
Так стоп
Зачем err.delay(2000)
тебе надо сделать запрос, когда токен обновился
У тебя есть стрим токенов?

Google

Gleb
08.08.2017
07:12:57
Дада, это заглушкеа просто логику проверить вместо апдйета токена
просто подождать две секунды и сделатьзапрос

andretshurotshka?❄️кде
08.08.2017
07:13:11
Ну так err не надо трогать

Gleb
08.08.2017
07:13:15
вместо делей я подставлю уже запрос

andretshurotshka?❄️кде
08.08.2017
07:13:20
() => Observable.delay(2000)

Gleb
08.08.2017
07:13:35
Спасибо, пойду проверю

Admin
ERROR: S client not available

Gleb
08.08.2017
07:14:15
Просто err придется потрогать чтобы посмотреть что status === 401

Дмитрий
08.08.2017
07:15:28
Чисто в стримах конечно фигово управлять потоком с ошибками
Error ветки не хватает

andretshurotshka?❄️кде
08.08.2017
07:19:53
?

Gleb
08.08.2017
07:20:29
Property 'delay' does not exist on type 'typeof Observable'
И да в доках err юзают
Блин тогда придется длинючий конский стрим делать, типа проверяем токен, деламе его апдейт а уже потом запрос
такое не декомпозируется у кого нибудь в проектах на более мелкие?
Уродство?
action$
.ofType(HTTP_REQUEST)
.combineLatest(Observable.fromPromise(validateToken()))
.flatMap(([action, token]) => rxHttpFetch(action.payload.request))
.takeUntil(action$.ofType(CANCEL))

andretshurotshka?❄️кде
08.08.2017
07:47:03
а скинь код rxHttpFetch

Gleb
08.08.2017
07:50:40
https://github.com/radiosilence/redux-rx-http/blob/master/src/utils.ts
Вот тут полглядел

Google

andretshurotshka?❄️кде
08.08.2017
07:56:49
хмм, так он не lazy походу

Gleb
08.08.2017
07:57:54
Т.е?

andretshurotshka?❄️кде
08.08.2017
07:58:29
ну от него отписаться и подписаться заново нельзя
он всегда будет Observable.from(Promise.reject(someError))

Gleb
08.08.2017
07:59:46
На fromPromise тогда переписать

andretshurotshka?❄️кде
08.08.2017
08:00:00
не в этом проблема
мб на create?
https://www.learnrxjs.io/operators/creation/create.html

Gleb
08.08.2017
08:00:51
Все сейчас перепишу я понял
а тогда и на err можно цепляться будет?

andretshurotshka?❄️кде
08.08.2017
08:01:27
наверн

Gleb
08.08.2017
09:11:20
Да так и есть
ну все круто
спасибо!
Теперь пойду заебусь с тестами
Тестировать rx по доке redux-observable немного дебильно, я где то видел по интереснее тесты с TestSheduler

andretshurotshka?❄️кде
08.08.2017
14:31:37
cycle/time