Skip to content

Conversation

@duwna
Copy link
Contributor

@duwna duwna commented Jan 9, 2023

Модуль cart-utils - управление корзиной с товарами и синхронизация с сервером

Использовать в реальном проекте возможно будет трудно, т.к. требования и стек проекта могут сильно отличаться

Но можно брать за идею LocalCartRepository и другие классы из модуля
Корзина с похожими методами реализована на проектах Петшоп и Лукойл


CartModel - абстрактный класс корзины с товарами
ProductModel - абстрактный класс товара

IRemoteCartRepository - интерфейс репозитория, из которого отправляются запросы на изменение корзины
LocalCartRepository - локальная корзина, на которую можно подписаться на разных экранах приложения
RequestsQueue - очередь для последовательного выполнения для избежания гонки запросов
CartUpdateManager - комбинация локальной и северной корзины

суть такая:
добавили товар в корзину
изменения прилетели на все экраны по подписке
запрос добавился в очередь
...
несколько таких запросов успешно выполнились
если в очереди больше нет запросов, происходит слияние корзин, корзина с сервера отображается на экранах

также есть поддержка:
удаленных товаров (которые есть локально, но нет на сервере, позиция товара в списке сохраняется)
промокодов и расчет общей скидки (по проценту и по сумме)
бонусов у товаров и бонусов к списанию в корзине
обработки ошибок в запросах - при ошибках корзина может перезапрашиваться с сервера n-раз

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants