feat: Add CartEditable block

This commit is contained in:
Grigory Boyko 2022-08-01 15:17:21 +07:00
parent ea1392f279
commit c92b9bf563
1 changed files with 33 additions and 0 deletions

View File

@ -0,0 +1,33 @@
import Foundation
///Изменение количества единиц товара
///
///Интерфейс для модели товара с опциональным полем доступного количества товара и применение изменений в интерфейсе модели локальной корзины
protocol ProductCountInCartHolder {
// у тебя массив продуктов с количеством лежит локально, и вот ты его заменяешь на то, что пришло
var countInCart: Int? { get set }
}
protocol ProductCountInCartDelegate: AnyObject {
func countInCartDidChanged(count: Int, productID: Int)
}
///Выбор варианта товара
///
///Интерфейс для модели товара с массивом доступных вариантов и применение изменений в интерфейсе модели локальной корзины.
///Вариант является интерфейсом товара, но конкретная модель может быть другой.
///(Под вариантом подразумевается разная фасовка, цвет, размер и пр. характеристики товара.)
protocol ChoosableProductVariant {
///Варианты товара (фасовка, цвет, размер, и т.п.)
var variants: [CartProduct] { get }
}
///Возможность вернуть товар в корзину
///
///В интерфейсе локальной корзины должны присуствовать товары, которые были удалены из корзины, но которые можно вернуть.
///При отправке корзины на оформление заказа эти товары не учитываются.
protocol RemovableProductCart {
var removedProducts: [CartProduct] { get set }
}