cellx icon indicating copy to clipboard operation
cellx copied to clipboard

Минимальное апи. extract BaseCell

Open zerkalica opened this issue 7 years ago • 4 comments

По аналогии с 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 минифицированного кода.

zerkalica avatar Nov 20 '16 09:11 zerkalica

А что должен делать pend?

Riim avatar Nov 21 '16 08:11 Riim

Управлять pending-статусом. setPending(isPending: boolean) правильнее назвать. Для ошибок такая штука есть - fail, логично что и для статуса будет.

Короче есть случаи, когда через pull неудобно косвенно влиять на isPending, хочется полностью управлять атомом со стороны.

zerkalica avatar Nov 21 '16 08:11 zerkalica

Переход isPending в true должен происходить при разрешении (resolve) ячейки, для ошибки это fail, для нормального разрешения push (он же set).

Riim avatar Nov 21 '16 08:11 Riim

Да, когда isPending внутри атома, пожалуй ты прав. По https://github.com/Riim/cellx/issues/24#issuecomment-261878514 я просто хотел один подход для работы со статусами и ошибками при сохранении и загрузке, отделив все эти податомы в отдельные атомы и управляя ими со стороны.

zerkalica avatar Nov 21 '16 09:11 zerkalica