Skip to content

Commit a4723a8

Browse files
authored
Merge pull request #182 from virtusize/bugfix/NSDK-383-no-size
NSDK-383 no size test issue
2 parents eb49ff4 + c280273 commit a4723a8

17 files changed

Lines changed: 90 additions & 38 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
### Changes
2+
- Fix: issue with no size found text
3+
- Fix: Virtusize button state when loading a new product
4+
15
### 2.12.13
26
- Fix: External Link redirect issue
37

virtusize-core/src/main/java/com/virtusize/android/data/remote/I18nLocalization.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ data class I18nLocalization(
2222
val sizeComparisonMultiSizeText: String,
2323
val willFitResultText: String,
2424
val willNotFitResultText: String,
25+
val willNotFitResultDefaultText: String,
2526
val bodyDataEmptyText: String,
2627
) {
2728
enum class TrimType {

virtusize-core/src/main/java/com/virtusize/android/data/remote/Product.kt

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ data class Product(
4141
i18nLocalization: I18nLocalization,
4242
sizeComparisonRecommendedSize: SizeComparisonRecommendedSize?,
4343
bodyProfileRecommendedSizeName: String?,
44+
bodyProfileWillFit: Boolean? = null,
4445
): String {
4546
return when {
4647
isAccessory() -> accessoryText(i18nLocalization, sizeComparisonRecommendedSize)
@@ -49,12 +50,14 @@ data class Product(
4950
i18nLocalization = i18nLocalization,
5051
sizeComparisonRecommendedSize = sizeComparisonRecommendedSize,
5152
bodyProfileRecommendedSizeName = bodyProfileRecommendedSizeName,
53+
bodyProfileWillFit = bodyProfileWillFit,
5254
)
5355
else ->
5456
multiSizeText(
5557
i18nLocalization,
5658
sizeComparisonRecommendedSize,
5759
bodyProfileRecommendedSizeName,
60+
bodyProfileWillFit,
5861
)
5962
}
6063
}
@@ -88,13 +91,27 @@ data class Product(
8891
i18nLocalization: I18nLocalization,
8992
sizeComparisonRecommendedSize: SizeComparisonRecommendedSize?,
9093
bodyProfileRecommendedSizeName: String?,
94+
bodyProfileWillFit: Boolean?,
9195
): String {
92-
bodyProfileRecommendedSizeName?.let {
93-
return i18nLocalization.oneSizeWillFitResultText
96+
// Check if body data is provided (bodyProfileRecommendedSizeName is not null means body data was provided)
97+
val hasBodyData = bodyProfileRecommendedSizeName != null
98+
99+
// For one-size products with body data provided
100+
if (hasBodyData) {
101+
// If willFit is not explicitly false and we have a recommended size, show the will fit message
102+
if (bodyProfileWillFit != false) {
103+
return i18nLocalization.oneSizeWillFitResultText
104+
}
105+
// If willFit is false or no recommended size, show "Your size not found"
106+
return i18nLocalization.willNotFitResultDefaultText
94107
}
108+
109+
// No body data provided, check for product comparison
95110
sizeComparisonRecommendedSize?.let {
96111
return i18nLocalization.getOneSizeProductComparisonText(it)
97112
}
113+
114+
// No data at all, show body data empty message
98115
return i18nLocalization.bodyDataEmptyText
99116
}
100117

@@ -105,15 +122,29 @@ data class Product(
105122
i18nLocalization: I18nLocalization,
106123
sizeComparisonRecommendedSize: SizeComparisonRecommendedSize?,
107124
bodyProfileRecommendedSizeName: String?,
125+
bodyProfileWillFit: Boolean?,
108126
): String {
109-
bodyProfileRecommendedSizeName?.let {
110-
return i18nLocalization.getMultiSizeBodyProfileText(
111-
bodyProfileRecommendedSizeName = bodyProfileRecommendedSizeName,
112-
)
127+
// Check if body data is provided
128+
val hasBodyData = bodyProfileRecommendedSizeName != null
129+
130+
// For multi-size products with body data provided
131+
if (hasBodyData) {
132+
// If willFit is not explicitly false and we have a recommended size, show it
133+
if (bodyProfileWillFit != false && bodyProfileRecommendedSizeName.isNotEmpty()) {
134+
return i18nLocalization.getMultiSizeBodyProfileText(
135+
bodyProfileRecommendedSizeName = bodyProfileRecommendedSizeName,
136+
)
137+
}
138+
// If willFit is false or no recommended size, show "Your size not found"
139+
return i18nLocalization.willNotFitResultDefaultText
113140
}
141+
142+
// No body data provided, check for product comparison
114143
sizeComparisonRecommendedSize?.bestStoreProductSize?.name?.let {
115144
return i18nLocalization.getMultiSizeProductComparisonText(it)
116145
}
146+
147+
// No data at all, show body data empty message
117148
return i18nLocalization.bodyDataEmptyText
118149
}
119150

virtusize-core/src/main/res/values-ja/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@
1212
<string name="inpage_multi_size_comparison_text">あなたの服に近いサイズ</string>
1313
<string name="inpage_will_fit_result_text">あなたにフィットするサイズ</string>
1414
<string name="inpage_will_not_fit_result_text">試着をおすすめします</string>
15+
<string name="inpage_will_not_fit_result_default_text">試着をおすすめします</string>
1516
<string name="inpage_body_data_empty_text">簡単サイズチェック</string>
1617
</resources>

virtusize-core/src/main/res/values-ko/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@
1212
<string name="inpage_multi_size_comparison_text">가장 유사한 상품은</string>
1313
<string name="inpage_will_fit_result_text">추천하는 사이즈는</string>
1414
<string name="inpage_will_not_fit_result_text">당신에게 잘 맞는지 확인해 보세요</string>
15+
<string name="inpage_will_not_fit_result_default_text">당신에게 잘 맞는지 확인해 보세요</string>
1516
<string name="inpage_body_data_empty_text">당신에게 맞는 사이즈를 찾아보세요</string>
1617
</resources>

virtusize-core/src/main/res/values/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<string name="inpage_one_size_will_fit_result_text">This item should fit you</string>
1212
<string name="inpage_multi_size_comparison_text">The closest size to your item is</string>
1313
<string name="inpage_will_fit_result_text">Your recommended size is</string>
14-
<string name="inpage_will_not_fit_result_text">Check how it fits you</string>
14+
<string name="inpage_will_not_fit_result_text">Your size not found</string>
15+
<string name="inpage_will_not_fit_result_default_text">Your size not found</string>
1516
<string name="inpage_body_data_empty_text">Find your right size</string>
1617
</resources>

virtusize-core/src/test/java/com/virtusize/android/data/remote/ProductTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class ProductTest {
4141
sizeComparisonMultiSizeText = context.getString(R.string.inpage_multi_size_comparison_text),
4242
willFitResultText = context.getString(R.string.inpage_will_fit_result_text),
4343
willNotFitResultText = context.getString(R.string.inpage_will_not_fit_result_text),
44+
willNotFitResultDefaultText = context.getString(R.string.inpage_will_not_fit_result_default_text),
4445
bodyDataEmptyText = context.getString(R.string.inpage_body_data_empty_text),
4546
)
4647
}

virtusize/src/main/java/com/virtusize/android/VirtusizeImpl.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ internal class VirtusizeImpl(
247247
externalProductId: String,
248248
userProductRecommendedSize: SizeComparisonRecommendedSize?,
249249
userBodyRecommendedSize: String?,
250+
userBodyWillFit: Boolean?,
250251
) {
251252
val storeProduct = virtusizeRepository.getProductBy(externalProductId)
252253
virtusizeViews
@@ -266,6 +267,7 @@ internal class VirtusizeImpl(
266267
i18nLocalization = i18nLocalization,
267268
sizeComparisonRecommendedSize = userProductRecommendedSize,
268269
bodyProfileRecommendedSizeName = userBodyRecommendedSize,
270+
bodyProfileWillFit = userBodyWillFit,
269271
).trimI18nText(trimType)
270272
virtusizeView.setRecommendationText(
271273
externalProductId,

virtusize/src/main/java/com/virtusize/android/VirtusizePresenter.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ internal interface VirtusizePresenter {
1212
externalProductId: String,
1313
userProductRecommendedSize: SizeComparisonRecommendedSize?,
1414
userBodyRecommendedSize: String?,
15+
userBodyWillFit: Boolean?,
1516
)
1617

1718
fun hasInPageError(

virtusize/src/main/java/com/virtusize/android/VirtusizeRepository.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class VirtusizeRepository internal constructor(
4848
private var userProducts: List<Product>? = null
4949
private var userProductRecommendedSize: SizeComparisonRecommendedSize? = null
5050
private var userBodyRecommendedSize: String? = null
51+
private var userBodyWillFit: Boolean? = null
5152

5253
// This variable holds the list of product types from the Virtusize API
5354
private var productTypes: List<ProductType>? = null
@@ -373,6 +374,7 @@ class VirtusizeRepository internal constructor(
373374
externalProductId = productId,
374375
userProductRecommendedSize = userProductRecommendedSize,
375376
userBodyRecommendedSize = null,
377+
userBodyWillFit = null,
376378
)
377379
}
378380

@@ -381,6 +383,7 @@ class VirtusizeRepository internal constructor(
381383
externalProductId = productId,
382384
userProductRecommendedSize = null,
383385
userBodyRecommendedSize = userBodyRecommendedSize,
386+
userBodyWillFit = userBodyWillFit,
384387
)
385388
}
386389

@@ -389,6 +392,7 @@ class VirtusizeRepository internal constructor(
389392
externalProductId = productId,
390393
userProductRecommendedSize = userProductRecommendedSize,
391394
userBodyRecommendedSize = userBodyRecommendedSize,
395+
userBodyWillFit = userBodyWillFit,
392396
)
393397
}
394398
}
@@ -406,6 +410,7 @@ class VirtusizeRepository internal constructor(
406410
userProducts = null
407411
userProductRecommendedSize = null
408412
userBodyRecommendedSize = null
413+
userBodyWillFit = null
409414
}
410415

411416
/**
@@ -419,6 +424,7 @@ class VirtusizeRepository internal constructor(
419424
productTypes: List<ProductType>?,
420425
): String? {
421426
if (storeProduct == null || productTypes == null || storeProduct.isAccessory()) {
427+
userBodyWillFit = null
422428
return null
423429
}
424430
val userBodyProfileResponse = virtusizeAPIService.getUserBodyProfile()
@@ -430,6 +436,7 @@ class VirtusizeRepository internal constructor(
430436
storeProduct,
431437
userBodyProfileResponse.successData!!,
432438
)
439+
userBodyWillFit = bodyProfileRecommendedSizeResponse.successData?.willFit
433440
return bodyProfileRecommendedSizeResponse.successData?.sizeName
434441
} else {
435442
val bodyProfileRecommendedSizeResponse =
@@ -438,13 +445,15 @@ class VirtusizeRepository internal constructor(
438445
storeProduct,
439446
userBodyProfileResponse.successData!!,
440447
)
448+
userBodyWillFit = bodyProfileRecommendedSizeResponse.successData?.get(0)?.willFit
441449
return bodyProfileRecommendedSizeResponse.successData?.get(0)?.sizeName
442450
}
443451
} else if (userBodyProfileResponse.failureData?.code != HttpURLConnection.HTTP_NOT_FOUND) {
444452
userBodyProfileResponse.failureData?.let {
445453
messageHandler.onError(it)
446454
}
447455
}
456+
userBodyWillFit = null
448457
return null
449458
}
450459

0 commit comments

Comments
 (0)