Open
Conversation
cart-utils/src/main/java/ru/touchin/roboswag/cart_utils/models/CartModel.kt
Show resolved
Hide resolved
cart-utils/src/main/java/ru/touchin/roboswag/cart_utils/models/ProductModel.kt
Show resolved
Hide resolved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Модуль cart-utils - управление корзиной с товарами и синхронизация с сервером
Использовать в реальном проекте возможно будет трудно, т.к. требования и стек проекта могут сильно отличаться
Но можно брать за идею
LocalCartRepositoryи другие классы из модуляКорзина с похожими методами реализована на проектах Петшоп и Лукойл
CartModel- абстрактный класс корзины с товарамиProductModel- абстрактный класс товараIRemoteCartRepository- интерфейс репозитория, из которого отправляются запросы на изменение корзиныLocalCartRepository- локальная корзина, на которую можно подписаться на разных экранах приложенияRequestsQueue- очередь для последовательного выполнения для избежания гонки запросовCartUpdateManager- комбинация локальной и северной корзинысуть такая:
добавили товар в корзину
изменения прилетели на все экраны по подписке
запрос добавился в очередь
...
несколько таких запросов успешно выполнились
если в очереди больше нет запросов, происходит слияние корзин, корзина с сервера отображается на экранах
также есть поддержка:
удаленных товаров (которые есть локально, но нет на сервере, позиция товара в списке сохраняется)
промокодов и расчет общей скидки (по проценту и по сумме)
бонусов у товаров и бонусов к списанию в корзине
обработки ошибок в запросах - при ошибках корзина может перезапрашиваться с сервера n-раз