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

Commit 0fe67fa

Browse files
authored
Merge pull request #3031 from wordpress-mobile/issue/update-voice-to-content-requests
[Voice to Content] Endpoint adjustments
2 parents b5d95fd + d6bce60 commit 0fe67fa

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

fluxc/src/main/java/org/wordpress/android/fluxc/model/jetpackai/JetpackAIAssistantFeature.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ data class JetpackAIAssistantFeature(
3434
val usagePeriod: UsagePeriod?,
3535
val siteRequireUpgrade: Boolean,
3636
val upgradeType: String,
37+
val upgradeUrl: String?,
3738
val currentTier: Tier?,
3839
val nextTier: Tier?,
3940
val tierPlans: List<Tier>,

fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/jetpackai/JetpackAIAssistantFeatureDto.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ data class JetpackAIAssistantFeatureDto(
9494
val siteRequireUpgrade: Boolean?,
9595
@SerializedName("upgrade-type")
9696
val upgradeType: String?,
97+
@SerializedName("upgrade-url")
98+
val upgradeUrl: String?,
9799
@SerializedName("current-tier")
98100
val currentTier: TierDto?,
99101
@SerializedName("next-tier")
@@ -114,6 +116,7 @@ data class JetpackAIAssistantFeatureDto(
114116
usagePeriod = usagePeriod?.toUsagePeriod(),
115117
siteRequireUpgrade = siteRequireUpgrade ?: false,
116118
upgradeType = upgradeType.orEmpty(),
119+
upgradeUrl = upgradeUrl, // Can be null
117120
currentTier = currentTier?.toTier(),
118121
nextTier = nextTier?.toTier(),
119122
tierPlans = tierPlans?.map { it.toTier() } ?: emptyList(),

fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/jetpackai/JetpackAIRestClient.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.wordpress.android.fluxc.network.rest.wpcom.jetpackai
22

33
import android.content.Context
4+
import androidx.annotation.VisibleForTesting
45
import com.android.volley.RequestQueue
56
import com.google.gson.annotations.SerializedName
67
import org.wordpress.android.fluxc.Dispatcher
@@ -168,8 +169,11 @@ class JetpackAIRestClient @Inject constructor(
168169

169170
return when (response) {
170171
is Response.Success -> {
171-
(response.data as? JetpackAIQueryDto)?.toJetpackAIQueryResponse()
172-
?: JetpackAIQueryResponse.Error(JetpackAIQueryErrorType.INVALID_DATA, "Can not get the object")
172+
val data = response.data as? JetpackAIQueryDto
173+
data?.toJetpackAIQueryResponse()
174+
?: JetpackAIQueryResponse.Error(
175+
JetpackAIQueryErrorType.INVALID_DATA, "Can not get the object"
176+
)
173177
}
174178
is Response.Error -> {
175179
JetpackAIQueryResponse.Error(
@@ -222,7 +226,8 @@ class JetpackAIRestClient @Inject constructor(
222226
@SerializedName ("completion") val completion: String
223227
)
224228

225-
internal data class JetpackAIQueryDto(val model: String, val choices: List<Choice>) {
229+
@VisibleForTesting
230+
internal data class JetpackAIQueryDto(val model: String, val choices: List<Choice>?) {
226231
data class Choice(val index: Int, val message: Message) {
227232
data class Message(val role: String, val content: String)
228233
}
@@ -253,7 +258,10 @@ class JetpackAIRestClient @Inject constructor(
253258
}
254259

255260
private fun JetpackAIQueryDto.toJetpackAIQueryResponse(): JetpackAIQueryResponse {
256-
return JetpackAIQueryResponse.Success(model, choices.map { choice ->
261+
// Check if choices is null or empty
262+
val safeChoices = choices ?: emptyList()
263+
264+
return JetpackAIQueryResponse.Success(model, safeChoices.map { choice ->
257265
JetpackAIQueryResponse.Success.Choice(
258266
choice.index,
259267
JetpackAIQueryResponse.Success.Choice.Message(

0 commit comments

Comments
 (0)