Skip to content
This repository was archived by the owner on Feb 4, 2025. It is now read-only.

Commit 82a9b48

Browse files
Fix logic of Woo detection to work with non-eligible users
1 parent a2bee76 commit 82a9b48

File tree

1 file changed

+13
-5
lines changed
  • plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/system

1 file changed

+13
-5
lines changed

plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/system/WooSystemRestClient.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.google.gson.annotations.SerializedName
55
import org.wordpress.android.fluxc.generated.endpoint.WOOCOMMERCE
66
import org.wordpress.android.fluxc.generated.endpoint.WPAPI
77
import org.wordpress.android.fluxc.model.SiteModel
8-
import org.wordpress.android.fluxc.network.BaseRequest.GenericErrorType.NOT_FOUND
98
import org.wordpress.android.fluxc.network.rest.wpapi.WPAPIResponse
109
import org.wordpress.android.fluxc.network.rest.wpcom.wc.WooNetwork
1110
import org.wordpress.android.fluxc.network.rest.wpcom.wc.WooPayload
@@ -14,6 +13,11 @@ import org.wordpress.android.fluxc.utils.toWooPayload
1413
import javax.inject.Inject
1514

1615
class WooSystemRestClient @Inject constructor(private val wooNetwork: WooNetwork) {
16+
companion object {
17+
private const val NOT_FOUND = 404
18+
private const val FORBIDDEN = 403
19+
}
20+
1721
suspend fun fetchInstalledPlugins(site: SiteModel): WooPayload<WCSystemPluginResponse> {
1822
val url = WOOCOMMERCE.system_status.pathV3
1923

@@ -59,10 +63,14 @@ class WooSystemRestClient @Inject constructor(private val wooNetwork: WooNetwork
5963
return when (response) {
6064
is WPAPIResponse.Success -> WooPayload(true)
6165
is WPAPIResponse.Error -> {
62-
if (response.error.type == NOT_FOUND) {
63-
WooPayload(false)
64-
} else {
65-
WooPayload(response.error.toWooError())
66+
when (response.error.volleyError?.networkResponse?.statusCode) {
67+
NOT_FOUND -> WooPayload(false)
68+
FORBIDDEN -> {
69+
// If we get a 403 status code, we can infer that Woo is installed,
70+
// the user just doesn't have permission to access the Woo API
71+
WooPayload(true)
72+
}
73+
else -> WooPayload(response.error.toWooError())
6674
}
6775
}
6876
}

0 commit comments

Comments
 (0)