@@ -4,9 +4,12 @@ import android.content.Intent
4import soy.iko.opencode.ui.components.showToast
4import soy.iko.opencode.ui.components.showToast
5import androidx.compose.foundation.horizontalScroll
5import androidx.compose.foundation.horizontalScroll
6import androidx.compose.foundation.layout.Box
6import androidx.compose.foundation.layout.Box
7+import androidx.compose.foundation.layout.Column
7import androidx.compose.foundation.layout.Row
8import androidx.compose.foundation.layout.Row
9+import androidx.compose.foundation.layout.Spacer
8import androidx.compose.foundation.layout.fillMaxSize
10import androidx.compose.foundation.layout.fillMaxSize
9import androidx.compose.foundation.layout.padding
11import androidx.compose.foundation.layout.padding
12+import androidx.compose.foundation.layout.size
10import androidx.compose.foundation.layout.width
13import androidx.compose.foundation.layout.width
11import androidx.compose.foundation.lazy.LazyColumn
14import androidx.compose.foundation.lazy.LazyColumn
12import androidx.compose.foundation.lazy.itemsIndexed
15import androidx.compose.foundation.lazy.itemsIndexed
@@ -23,6 +26,7 @@ import androidx.compose.material3.IconButton
23import androidx.compose.material3.MaterialTheme
26import androidx.compose.material3.MaterialTheme
24import androidx.compose.material3.Scaffold
27import androidx.compose.material3.Scaffold
25import androidx.compose.material3.Text
28import androidx.compose.material3.Text
29+import androidx.compose.material3.TextButton
26import androidx.compose.material3.TopAppBar
30import androidx.compose.material3.TopAppBar
27import androidx.compose.runtime.Composable
31import androidx.compose.runtime.Composable
28import androidx.compose.runtime.getValue
32import androidx.compose.runtime.getValue
@@ -99,11 +103,19 @@ fun FileViewScreen(
99 Modifier.align(Alignment.Center).semantics { contentDescription = loadingLabel },
103 Modifier.align(Alignment.Center).semantics { contentDescription = loadingLabel },
102− state.error != null -> Text(
106+ state.error != null -> Column(
104 modifier = Modifier.align(Alignment.Center).padding(24.dp),
107 modifier = Modifier.align(Alignment.Center).padding(24.dp),
108+ horizontalAlignment = Alignment.CenterHorizontally,
105− color = MaterialTheme.colorScheme.error,
112+ color = MaterialTheme.colorScheme.error,
114+ Spacer(Modifier.size(12.dp))
115+ TextButton(onClick = { vm.reload() }) {
116+ Text(stringResource(R.string.retry))
107 state.content?.isBinary == true -> Text(
119 state.content?.isBinary == true -> Text(
108 stringResource(R.string.binary_file),
120 stringResource(R.string.binary_file),
109 modifier = Modifier.align(Alignment.Center).padding(24.dp),
121 modifier = Modifier.align(Alignment.Center).padding(24.dp),