cellx
cellx copied to clipboard
Минимальное апи. extract BaseCell
По аналогии с fail не хватает pend. Т.к. управлять статусом через pull неудобно.
Хорошее апи должно быть простым, минимальным и расширяемым без рефакторинга. Например атомы в clojure.
В базовом классе Cell много всего, нельзя ли выделить основной класс только с минимальными апи: computable/get/set/subscribe/reap и доступом к masters, что б можно было на основе этого лепить свои isPending, getError, fail, pend, pull, put.
Не всегда этот стаф нужен. Взгляни на derivable он в 2 раза меньше cellx, но его апи позволяет навернуть всю эту мишуру с pull/put/errors/pending поверх. При том, что в нем тоже дофига лишнего: линзы, реакторы и т.д.
Базовый cellx может быть еще меньше, кил в 5 минифицированного кода.
А что должен делать pend
?
Управлять pending-статусом. setPending(isPending: boolean) правильнее назвать. Для ошибок такая штука есть - fail, логично что и для статуса будет.
Короче есть случаи, когда через pull неудобно косвенно влиять на isPending, хочется полностью управлять атомом со стороны.
Переход isPending
в true
должен происходить при разрешении (resolve) ячейки, для ошибки это fail
, для нормального разрешения push
(он же set
).
Да, когда isPending внутри атома, пожалуй ты прав. По https://github.com/Riim/cellx/issues/24#issuecomment-261878514 я просто хотел один подход для работы со статусами и ошибками при сохранении и загрузке, отделив все эти податомы в отдельные атомы и управляя ими со стороны.