Skip to content

Commit a6120e0

Browse files
authored
[Android] [gradle-test-app] Add request for local backend config (#927)
1 parent ff1782b commit a6120e0

File tree

8 files changed

+122
-7
lines changed

8 files changed

+122
-7
lines changed

platform/jvm/gradle-test-app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
android:fullBackupContent="@xml/backup_rules"
1414
android:icon="@drawable/ic_bitdrift_logo_final"
1515
android:label="@string/app_name"
16+
android:networkSecurityConfig="@xml/network_security_config"
1617
android:roundIcon="@drawable/ic_bitdrift_logo_final"
1718
android:supportsRtl="true"
1819
android:theme="@style/Theme.MyApplication"
@@ -67,4 +68,4 @@
6768

6869
</application>
6970

70-
</manifest>
71+
</manifest>

platform/jvm/gradle-test-app/src/main/java/io/bitdrift/gradletestapp/data/model/Actions.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ sealed class NetworkTestAction : AppAction {
6464
object PerformPreExistingB3SingleRequest : NetworkTestAction()
6565

6666
object PerformPreExistingB3MultiRequest : NetworkTestAction()
67+
68+
object PerformLocalBackendAddToCartRequest : NetworkTestAction()
69+
70+
object PerformLocalBackendGetCartRequest : NetworkTestAction()
71+
72+
object PerformLocalBackendDeleteCartItemRequest : NetworkTestAction()
6773
}
6874

6975
sealed class FeatureFlagsTestAction : AppAction {

platform/jvm/gradle-test-app/src/main/java/io/bitdrift/gradletestapp/data/repository/NetworkTestingRepository.kt

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ import okhttp3.Callback
3131
import okhttp3.Connection
3232
import okhttp3.EventListener
3333
import okhttp3.HttpUrl
34+
import okhttp3.MediaType.Companion.toMediaType
3435
import okhttp3.OkHttpClient
3536
import okhttp3.Protocol
3637
import okhttp3.Request
3738
import okhttp3.RequestBody.Companion.toRequestBody
3839
import okhttp3.Response
40+
import org.json.JSONObject
3941
import retrofit2.Retrofit
4042
import retrofit2.converter.gson.GsonConverterFactory
4143
import timber.log.Timber
@@ -252,6 +254,35 @@ class NetworkTestingRepository(context: Context) {
252254
performRequestWithPreExistingHeaders(request, "Pre-existing B3 Multi")
253255
}
254256

257+
fun performLocalBackendAddToCartRequest() {
258+
val requestBody = JSONObject()
259+
.put("product_id", LOCAL_BACKEND_PRODUCT_ID)
260+
.put("quantity", 1)
261+
.toString()
262+
.toRequestBody(JSON_MEDIA_TYPE)
263+
val request = Request.Builder()
264+
.url("$LOCAL_BACKEND_BASE_URL/cart")
265+
.post(requestBody)
266+
.build()
267+
performRequestWithPreExistingHeaders(request, "Local Backend Add to Cart")
268+
}
269+
270+
fun performLocalBackendGetCartRequest() {
271+
val request = Request.Builder()
272+
.url("$LOCAL_BACKEND_BASE_URL/cart")
273+
.get()
274+
.build()
275+
performRequestWithPreExistingHeaders(request, "Local Backend Get Cart")
276+
}
277+
278+
fun performLocalBackendDeleteCartItemRequest() {
279+
val request = Request.Builder()
280+
.url("$LOCAL_BACKEND_BASE_URL/cart/$LOCAL_BACKEND_PRODUCT_ID")
281+
.delete()
282+
.build()
283+
performRequestWithPreExistingHeaders(request, "Local Backend Delete Cart Item")
284+
}
285+
255286
private fun performRequestWithPreExistingHeaders(request: Request, label: String) {
256287
Timber.i("Performing OkHttp request ($label): ${request.url}")
257288
okHttpClientManual.newCall(request).enqueue(
@@ -323,4 +354,10 @@ class NetworkTestingRepository(context: Context) {
323354
emptyMap()
324355
}
325356
}
326-
}
357+
358+
private companion object {
359+
private const val LOCAL_BACKEND_BASE_URL = "http://10.0.2.2:5173/api"
360+
private const val LOCAL_BACKEND_PRODUCT_ID = "classic-tee"
361+
private val JSON_MEDIA_TYPE = "application/json; charset=utf-8".toMediaType()
362+
}
363+
}

platform/jvm/gradle-test-app/src/main/java/io/bitdrift/gradletestapp/ui/compose/MainScreen.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,15 @@ private fun HomeTabContent(
252252
uiState = uiState,
253253
onStartNewSession = { onAction(SessionAction.StartNewSession) },
254254
onGenerateDeviceCode = { onAction(SessionAction.GenerateDeviceCode) },
255+
onCopySessionId = {
256+
uiState.session.sessionId?.let { sessionId ->
257+
clipboardManager.setText(AnnotatedString(sessionId))
258+
}
259+
},
255260
onCopySessionUrl = {
256261
onAction(SessionAction.CopySessionUrl)
257-
uiState.session.sessionUrl?.let { url ->
258-
clipboardManager.setText(AnnotatedString(url))
262+
uiState.session.sessionUrl?.let { sessionUrl ->
263+
clipboardManager.setText(AnnotatedString(sessionUrl))
259264
}
260265
},
261266
)
@@ -324,6 +329,9 @@ private fun SdkApisTabContent(
324329
onPreExistingW3cRequest = { onAction(NetworkTestAction.PerformPreExistingW3cRequest) },
325330
onPreExistingB3SingleRequest = { onAction(NetworkTestAction.PerformPreExistingB3SingleRequest) },
326331
onPreExistingB3MultiRequest = { onAction(NetworkTestAction.PerformPreExistingB3MultiRequest) },
332+
onLocalBackendAddToCartRequest = { onAction(NetworkTestAction.PerformLocalBackendAddToCartRequest) },
333+
onLocalBackendGetCartRequest = { onAction(NetworkTestAction.PerformLocalBackendGetCartRequest) },
334+
onLocalBackendDeleteCartItemRequest = { onAction(NetworkTestAction.PerformLocalBackendDeleteCartItemRequest) },
327335
)
328336
}
329337
}

platform/jvm/gradle-test-app/src/main/java/io/bitdrift/gradletestapp/ui/compose/components/NetworkTestingCard.kt

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ fun NetworkTestingCard(
2727
onPreExistingW3cRequest: () -> Unit,
2828
onPreExistingB3SingleRequest: () -> Unit,
2929
onPreExistingB3MultiRequest: () -> Unit,
30+
onLocalBackendAddToCartRequest: () -> Unit,
31+
onLocalBackendGetCartRequest: () -> Unit,
32+
onLocalBackendDeleteCartItemRequest: () -> Unit,
3033
modifier: Modifier = Modifier,
3134
) {
3235
Card(
@@ -150,6 +153,50 @@ fun NetworkTestingCard(
150153
Text("B3 Multi", maxLines = 1, softWrap = false)
151154
}
152155
}
156+
157+
Text(
158+
text = "Local Backend",
159+
style = MaterialTheme.typography.labelMedium,
160+
color = BitdriftColors.TextPrimary,
161+
)
162+
163+
Row(
164+
modifier = Modifier.fillMaxWidth(),
165+
horizontalArrangement = Arrangement.spacedBy(8.dp),
166+
) {
167+
OutlinedButton(
168+
onClick = onLocalBackendAddToCartRequest,
169+
modifier = Modifier.weight(1f),
170+
colors =
171+
ButtonDefaults.outlinedButtonColors(
172+
contentColor = BitdriftColors.TextPrimary,
173+
),
174+
) {
175+
Text("Add", maxLines = 1, softWrap = false)
176+
}
177+
178+
OutlinedButton(
179+
onClick = onLocalBackendGetCartRequest,
180+
modifier = Modifier.weight(1f),
181+
colors =
182+
ButtonDefaults.outlinedButtonColors(
183+
contentColor = BitdriftColors.TextPrimary,
184+
),
185+
) {
186+
Text("Get", maxLines = 1, softWrap = false)
187+
}
188+
189+
OutlinedButton(
190+
onClick = onLocalBackendDeleteCartItemRequest,
191+
modifier = Modifier.weight(1f),
192+
colors =
193+
ButtonDefaults.outlinedButtonColors(
194+
contentColor = BitdriftColors.TextPrimary,
195+
),
196+
) {
197+
Text("Delete", maxLines = 1, softWrap = false)
198+
}
199+
}
153200
}
154201
}
155202
}

platform/jvm/gradle-test-app/src/main/java/io/bitdrift/gradletestapp/ui/compose/components/SessionManagementCard.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ fun SessionManagementCard(
2424
uiState: AppState,
2525
onStartNewSession: () -> Unit,
2626
onGenerateDeviceCode: () -> Unit,
27+
onCopySessionId: () -> Unit,
2728
onCopySessionUrl: () -> Unit,
2829
modifier: Modifier = Modifier,
2930
) {
@@ -56,7 +57,7 @@ fun SessionManagementCard(
5657
if (uiState.session.sessionId != null) {
5758
SessionIdField(
5859
sessionId = uiState.session.sessionId,
59-
onCopySessionUrl = onCopySessionUrl,
60+
onCopySessionId = onCopySessionId,
6061
)
6162
}
6263

@@ -107,7 +108,7 @@ private fun SessionStrategyField(sessionStrategy: String) {
107108
@Composable
108109
private fun SessionIdField(
109110
sessionId: String,
110-
onCopySessionUrl: () -> Unit,
111+
onCopySessionId: () -> Unit,
111112
) {
112113
OutlinedTextField(
113114
value = sessionId,
@@ -126,7 +127,7 @@ private fun SessionIdField(
126127
cursorColor = BitdriftColors.TextBright,
127128
),
128129
trailingIcon = {
129-
TextButton(onClick = onCopySessionUrl) {
130+
TextButton(onClick = onCopySessionId) {
130131
Text("Copy", color = BitdriftColors.TextBright)
131132
}
132133
},

platform/jvm/gradle-test-app/src/main/java/io/bitdrift/gradletestapp/ui/viewmodel/MainViewModel.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,15 @@ class MainViewModel(
134134
is NetworkTestAction.PerformPreExistingB3MultiRequest -> {
135135
networkTestingRepository.performPreExistingB3MultiRequest()
136136
}
137+
is NetworkTestAction.PerformLocalBackendAddToCartRequest -> {
138+
networkTestingRepository.performLocalBackendAddToCartRequest()
139+
}
140+
is NetworkTestAction.PerformLocalBackendGetCartRequest -> {
141+
networkTestingRepository.performLocalBackendGetCartRequest()
142+
}
143+
is NetworkTestAction.PerformLocalBackendDeleteCartItemRequest -> {
144+
networkTestingRepository.performLocalBackendDeleteCartItemRequest()
145+
}
137146

138147
is GlobalFieldAction.AddFieldAction -> {
139148
viewModelScope.launch {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<network-security-config>
3+
<domain-config cleartextTrafficPermitted="true">
4+
<domain includeSubdomains="false">10.0.2.2</domain>
5+
</domain-config>
6+
</network-security-config>

0 commit comments

Comments
 (0)