@@ -30,6 +30,7 @@ import androidx.compose.material.icons.filled.Terminal
3030import androidx.compose.material.icons.outlined.ContentCopy
3131import androidx.compose.material3.Card
3232import androidx.compose.material3.CardDefaults
33+ import androidx.compose.material3.CircularProgressIndicator
3334import androidx.compose.material3.ExperimentalMaterial3Api
3435import androidx.compose.material3.Icon
3536import androidx.compose.material3.IconButton
@@ -337,6 +338,20 @@ fun TailscalePeerScreen(
337338 fontWeight = FontWeight .Bold ,
338339 )
339340 }
341+ if (pingState.isDirect && pingState.endpoint.isNotEmpty()) {
342+ Spacer (modifier = Modifier .height(8 .dp))
343+ DetailRow (
344+ label = stringResource(R .string.tailscale_ping_endpoint),
345+ value = pingState.endpoint,
346+ )
347+ }
348+ if (! pingState.isDirect && pingState.derpRegionCode.isNotEmpty()) {
349+ Spacer (modifier = Modifier .height(8 .dp))
350+ DetailRow (
351+ label = stringResource(R .string.tailscale_ping_derp_region),
352+ value = pingState.derpRegionCode,
353+ )
354+ }
340355 if (pingState.isRunning && pingState.latencyHistory.size > 1 ) {
341356 Spacer (modifier = Modifier .height(8 .dp))
342357 Row (
@@ -386,9 +401,32 @@ fun TailscalePeerScreen(
386401 }
387402 }
388403 }
389- } else {
404+ }
405+ if (pingState.error.isNotEmpty()) {
406+ if (pingState.hasResult) {
407+ Spacer (modifier = Modifier .height(8 .dp))
408+ }
409+ Text (
410+ text = pingState.error,
411+ color = MaterialTheme .colorScheme.error,
412+ )
413+ } else if (pingState.isRunning && ! pingState.hasResult) {
414+ Row (
415+ verticalAlignment = Alignment .CenterVertically ,
416+ ) {
417+ CircularProgressIndicator (
418+ modifier = Modifier .size(16 .dp),
419+ strokeWidth = 2 .dp,
420+ )
421+ Spacer (modifier = Modifier .width(8 .dp))
422+ Text (
423+ text = stringResource(R .string.tailscale_ping_connecting),
424+ color = MaterialTheme .colorScheme.onSurfaceVariant,
425+ )
426+ }
427+ } else if (! pingState.hasResult) {
390428 Text (
391- text = " No data " ,
429+ text = stringResource( R .string.tailscale_ping_no_data) ,
392430 color = MaterialTheme .colorScheme.onSurfaceVariant,
393431 )
394432 }
0 commit comments