Size: a a a

Programming Offtop

2020 March 28

КР

Кирилл Романенко in Programming Offtop
Igor
Так офигенно же.

Следи за руками
- делаешь синглотон data класс Store (1), в котором будет весь стейт
- вешаешь на shared-prefs "тупой" листенер, который при каждом изменение вычитает все префсы в (1)
- делашь функию
fun <T> udpate(f : (Store) -> Pair<Store, T>): T

внутри который обратно сохранешь в прейсы
- во всем остальном коде измени/чтение префсов делаешь через update

Все: вместо 20 грязных функций, у тебя получается одна универсальная

Следующем шагом, начинаешь мапить еще и бд
Да и любые co-effect
источник

I

Igor in Programming Offtop
Ну тут какая-то дичь старая)
Но половина идеи там есть (стор и update)

Остальсь только синхронизаторы реализовать store <-> shared-prefs / store <-> sqlite и тд
источник

КР

Кирилл Романенко in Programming Offtop
Igor
Ну тут какая-то дичь старая)
Но половина идеи там есть (стор и update)

Остальсь только синхронизаторы реализовать store <-> shared-prefs / store <-> sqlite и тд
Только мне до сих пор не очень понятно, как планируется связать данные из конструктора в сторе с компаньоном стора.
источник

КР

Кирилл Романенко in Programming Offtop
(
Ридер монадка
Почитал. Клёвая штука.)
источник

КР

Кирилл Романенко in Programming Offtop
Igor
Ну тут какая-то дичь старая)
Но половина идеи там есть (стор и update)

Остальсь только синхронизаторы реализовать store <-> shared-prefs / store <-> sqlite и тд
Не, рил, как ты свяжешь компаньон и данные? Глобальное мутабельное поле?
источник

КР

Кирилл Романенко in Programming Offtop
О, как раз ты пишешь. :)
источник

I

Igor in Programming Offtop
Кирилл Романенко
Почитал. Клёвая штука.)
источник

I

Igor in Programming Offtop
Кирилл Романенко
О, как раз ты пишешь. :)
да я просто хотел колобка кинуть)
источник

КР

Кирилл Романенко in Programming Offtop
Igor
да я просто хотел колобка кинуть)
А заодно ответь мне пожалуйста.))
источник

I

Igor in Programming Offtop
Кирилл Романенко
Не, рил, как ты свяжешь компаньон и данные? Глобальное мутабельное поле?
Все правильно, можно его в atomic засунуть
Ты не смотри в тот код подробно, там только наброски были
источник

I

Igor in Programming Offtop
источник

КР

Кирилл Романенко in Programming Offtop
Ладно, меня задолбал этот стикер, ахаах
источник

КР

Кирилл Романенко in Programming Offtop
Igor
Все правильно, можно его в atomic засунуть
Ты не смотри в тот код подробно, там только наброски были
Ну когда не особо понимаешь, не смотреть подробно не получится
источник
2020 March 29

I

Igor in Programming Offtop
Я тебе кинул ссылки куда надо смотреть.

Ну и чтение/запись стора это грязный-эффект, та что не надо на нем зацикливатя
Зато их всего 2, а не 20, как без него.
источник

КР

Кирилл Романенко in Programming Offtop
Igor
Я тебе кинул ссылки куда надо смотреть.

Ну и чтение/запись стора это грязный-эффект, та что не надо на нем зацикливатя
Зато их всего 2, а не 20, как без него.
Ты кинул теорию, а я думаю как это лучше реализовать.)
источник

I

Igor in Programming Offtop
re-frame это готовый фреймворк, можно кучу идей натырить
источник

КР

Кирилл Романенко in Programming Offtop
Igor
Я тебе кинул ссылки куда надо смотреть.

Ну и чтение/запись стора это грязный-эффект, та что не надо на нем зацикливатя
Зато их всего 2, а не 20, как без него.
Так погоди... Всё равно остаётся 20 грязных функций, только к ним добавляется 2, которые просто транслируют инфу этим 20-ти.
источник

ГТ

Г. Т. Лафориак in Programming Offtop
источник

I

Igor in Programming Offtop
Igor
re-frame это готовый фреймворк, можно кучу идей натырить
Я пока два варианта сделал для совмещения этого в TEA
- добавить в update третий параметр store
те будет fun update(store: Store, model: Model, msg: Msg) : Pair<Msg, Cmd<Msd>>
- либо завести отдельную Cmd для измениня стора

какой лучше, пока не понятно
источник

I

Igor in Programming Offtop
Кирилл Романенко
Так погоди... Всё равно остаётся 20 грязных функций, только к ним добавляется 2, которые просто транслируют инфу этим 20-ти.
Да, но ты же не будешь их явно вызывать из "бизнес-логики"
Те вся грязь будет в одном месте, а не размазана по коду.

PS так-то shared-prefs можно одним запросом запросить в виде Map<String, Any>
источник