Skip to content

Commit d3b3c23

Browse files
author
mvgreen
committed
Introduce an interface 'ChoiceBased' to simplify access to properties 'choices' and 'defaultChoice'
1 parent e311c13 commit d3b3c23

2 files changed

Lines changed: 34 additions & 22 deletions

File tree

src/main/kotlin/com/ecwid/apiclient/v3/dto/product/request/UpdatedProduct.kt

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,36 +102,42 @@ data class UpdatedProduct(
102102
abstract val name: String
103103
abstract val nameTranslated: LocalizedValueMap?
104104

105+
interface ChoiceBased {
106+
val choices: List<ProductOptionChoice>
107+
val defaultChoice: Int?
108+
}
109+
105110
data class SelectOption(
106111
override val name: String = "",
107112
override val nameTranslated: LocalizedValueMap? = null,
108-
val choices: List<ProductOptionChoice> = listOf(),
109-
val defaultChoice: Int = 0,
113+
override val choices: List<ProductOptionChoice> = listOf(),
114+
override val defaultChoice: Int = 0,
110115
val required: Boolean = false
111-
) : ProductOption(ProductOptionType.SELECT)
116+
) : ProductOption(ProductOptionType.SELECT), ChoiceBased
112117

113118
data class SizeOption(
114119
override val name: String = "",
115120
override val nameTranslated: LocalizedValueMap? = null,
116-
val choices: List<ProductOptionChoice> = listOf(),
117-
val defaultChoice: Int = 0,
121+
override val choices: List<ProductOptionChoice> = listOf(),
122+
override val defaultChoice: Int = 0,
118123
val required: Boolean = false
119-
) : ProductOption(ProductOptionType.SIZE)
124+
) : ProductOption(ProductOptionType.SIZE), ChoiceBased
120125

121126
data class RadioOption(
122127
override val name: String = "",
123128
override val nameTranslated: LocalizedValueMap? = null,
124-
val choices: List<ProductOptionChoice> = listOf(),
125-
val defaultChoice: Int = 0,
129+
override val choices: List<ProductOptionChoice> = listOf(),
130+
override val defaultChoice: Int = 0,
126131
val required: Boolean = false
127-
) : ProductOption(ProductOptionType.RADIO)
132+
) : ProductOption(ProductOptionType.RADIO), ChoiceBased
128133

129134
data class CheckboxOption(
130135
override val name: String = "",
131136
override val nameTranslated: LocalizedValueMap? = null,
132-
val choices: List<ProductOptionChoice> = listOf(),
137+
override val choices: List<ProductOptionChoice> = listOf(),
138+
override val defaultChoice: Int? = null,
133139
val required: Boolean = false
134-
) : ProductOption(ProductOptionType.CHECKBOX)
140+
) : ProductOption(ProductOptionType.CHECKBOX), ChoiceBased
135141

136142
data class TextFieldOption(
137143
override val name: String = "",

src/main/kotlin/com/ecwid/apiclient/v3/dto/product/result/FetchedProduct.kt

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -159,36 +159,42 @@ data class FetchedProduct(
159159
abstract val name: String
160160
abstract val nameTranslated: LocalizedValueMap?
161161

162+
interface ChoiceBased {
163+
val choices: List<ProductOptionChoice>
164+
val defaultChoice: Int?
165+
}
166+
162167
data class SelectOption(
163168
override val name: String = "",
164169
override val nameTranslated: LocalizedValueMap? = null,
165-
val choices: List<ProductOptionChoice> = listOf(),
166-
val defaultChoice: Int = 0,
170+
override val choices: List<ProductOptionChoice> = listOf(),
171+
override val defaultChoice: Int = 0,
167172
val required: Boolean = false
168-
) : ProductOption(ProductOptionType.SELECT)
173+
) : ProductOption(ProductOptionType.SELECT), ChoiceBased
169174

170175
data class SizeOption(
171176
override val name: String = "",
172177
override val nameTranslated: LocalizedValueMap? = null,
173-
val choices: List<ProductOptionChoice> = listOf(),
174-
val defaultChoice: Int = 0,
178+
override val choices: List<ProductOptionChoice> = listOf(),
179+
override val defaultChoice: Int = 0,
175180
val required: Boolean = false
176-
) : ProductOption(ProductOptionType.SIZE)
181+
) : ProductOption(ProductOptionType.SIZE), ChoiceBased
177182

178183
data class RadioOption(
179184
override val name: String = "",
180185
override val nameTranslated: LocalizedValueMap? = null,
181-
val choices: List<ProductOptionChoice> = listOf(),
182-
val defaultChoice: Int = 0,
186+
override val choices: List<ProductOptionChoice> = listOf(),
187+
override val defaultChoice: Int = 0,
183188
val required: Boolean = false
184-
) : ProductOption(ProductOptionType.RADIO)
189+
) : ProductOption(ProductOptionType.RADIO), ChoiceBased
185190

186191
data class CheckboxOption(
187192
override val name: String = "",
188193
override val nameTranslated: LocalizedValueMap? = null,
189-
val choices: List<ProductOptionChoice> = listOf(),
194+
override val choices: List<ProductOptionChoice> = listOf(),
195+
override val defaultChoice: Int? = null,
190196
val required: Boolean = false
191-
) : ProductOption(ProductOptionType.CHECKBOX)
197+
) : ProductOption(ProductOptionType.CHECKBOX), ChoiceBased
192198

193199
data class TextFieldOption(
194200
override val name: String = "",

0 commit comments

Comments
 (0)