@@ -93,66 +93,66 @@ internal class VirtusizeRepository(
9393 virtusizeProductCheckResponseMap.getOrPut(virtusizeProduct.externalId) {
9494 virtusizeAPIService.productCheck(virtusizeProduct)
9595 }
96- if (productCheckResponse.isSuccessful) {
97- val productCheck = productCheckResponse.successData!!
98- virtusizeProduct.productCheckData = productCheck
96+ if (! productCheckResponse.isSuccessful) {
97+ productCheckResponse.failureData?.let { error -> messageHandler.onError(error) }
98+ return @coroutineScope false
99+ }
99100
100- // Send API Event UserSawProduct as non-blocking
101- launch {
102- sendEvent(
103- virtusizeProduct,
104- VirtusizeEvent .UserSawProduct (),
105- )
106- }
101+ val productCheck = productCheckResponse.successData!!
102+ virtusizeProduct.productCheckData = productCheck
107103
108- productCheck.data?.let { productCheckData ->
109- if (productCheckData.validProduct) {
110- if (productCheckData.fetchMetaData) {
111- if (virtusizeProduct.imageUrl != null ) {
112- // If image URL is valid, send image URL to server
113- val sendProductImageResponse =
114- virtusizeAPIService.sendProductImageToBackend(
115- product = virtusizeProduct,
116- )
117- if (! sendProductImageResponse.isSuccessful) {
118- sendProductImageResponse.failureData?.let {
119- messageHandler.onError(
120- it,
121- )
122- }
123- }
124- } else {
125- VirtusizeErrorType .ImageUrlNotValid .throwError()
126- }
127- }
104+ // Send API Event UserSawProduct as non-blocking
105+ launch {
106+ sendEvent(
107+ virtusizeProduct,
108+ VirtusizeEvent .UserSawProduct (),
109+ )
110+ }
128111
129- // Send API Event UserSawWidgetButton as non-blocking
130- launch {
131- sendEvent(
132- virtusizeProduct,
133- VirtusizeEvent .UserSawWidgetButton (),
134- )
135- }
112+ val productCheckData = productCheck.data ? : return @coroutineScope false
136113
137- withContext(Dispatchers .Main ) {
138- presenter?.onValidProductCheck(virtusizeProduct)
139- }
140- return @coroutineScope true
141- } else {
142- withContext(Dispatchers .Main ) {
143- presenter?.hasInPageError(
144- externalProductId = virtusizeProduct.externalId,
145- error =
146- VirtusizeErrorType .InvalidProduct .virtusizeError(
147- extraMessage = virtusizeProduct.externalId,
148- ),
114+ if (productCheckData.validProduct) {
115+ if (productCheckData.fetchMetaData) {
116+ if (virtusizeProduct.imageUrl != null ) {
117+ // If image URL is valid, send image URL to server
118+ val sendProductImageResponse =
119+ virtusizeAPIService.sendProductImageToBackend(
120+ product = virtusizeProduct,
149121 )
122+ if (! sendProductImageResponse.isSuccessful) {
123+ sendProductImageResponse.failureData?.let {
124+ messageHandler.onError(
125+ it,
126+ )
127+ }
150128 }
151- return @coroutineScope false
129+ } else {
130+ VirtusizeErrorType .ImageUrlNotValid .throwError()
152131 }
153- } ? : return @coroutineScope false
132+ }
133+
134+ // Send API Event UserSawWidgetButton as non-blocking
135+ launch {
136+ sendEvent(
137+ virtusizeProduct,
138+ VirtusizeEvent .UserSawWidgetButton (),
139+ )
140+ }
141+
142+ withContext(Dispatchers .Main ) {
143+ presenter?.onValidProductCheck(virtusizeProduct)
144+ }
145+ return @coroutineScope true
154146 } else {
155- productCheckResponse.failureData?.let { error -> messageHandler.onError(error) }
147+ withContext(Dispatchers .Main ) {
148+ presenter?.hasInPageError(
149+ externalProductId = virtusizeProduct.externalId,
150+ error =
151+ VirtusizeErrorType .InvalidProduct .virtusizeError(
152+ extraMessage = virtusizeProduct.externalId,
153+ ),
154+ )
155+ }
156156 return @coroutineScope false
157157 }
158158 }
0 commit comments