fix: projectId extrait des arguments de route (pas du pattern) + affichage erreur API

This commit is contained in:
2026-06-06 10:47:35 +02:00
parent 8cab357c4c
commit ba9f379100
4 changed files with 26 additions and 7 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ android {
minSdk = 26
targetSdk = 35
versionCode = 1
versionName = "0.0.14"
versionName = "0.0.15"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
@@ -72,8 +72,9 @@ fun MainScreen(
var showCreateTask by remember { mutableStateOf(false) }
var selectedTask by remember { mutableStateOf<Task?>(null) }
val inboxProjectId = projects.find { it.isInbox }?.id ?: ""
val createProjectId = if (currentRoute?.startsWith("project/") == true)
currentRoute.removePrefix("project/")
// destination.route is the pattern ("project/{projectId}"), arguments hold the real value
val createProjectId = if (currentRoute == Route.Project().path)
navBackStack?.arguments?.getString("projectId") ?: inboxProjectId
else
inboxProjectId
@@ -85,9 +86,10 @@ fun MainScreen(
Route.Filter.path to "Filtres",
Route.Settings.path to "Paramètres",
)
val title = drawerTitles[currentRoute]
?: projects.find { "project/${it.id}" == currentRoute }?.name
?: "BonsaiTask"
val activeProjectName = if (currentRoute == Route.Project().path)
projects.find { it.id == navBackStack?.arguments?.getString("projectId") }?.name
else null
val title = drawerTitles[currentRoute] ?: activeProjectName ?: "BonsaiTask"
ModalNavigationDrawer(
drawerState = drawerState,
@@ -154,7 +156,7 @@ fun MainScreen(
NavigationDrawerItem(
icon = { Icon(Icons.Default.FolderOpen, null) },
label = { Text(project.name) },
selected = currentRoute == "project/${project.id}",
selected = currentRoute == Route.Project().path && navBackStack?.arguments?.getString("projectId") == project.id,
onClick = {
navController.navigate(Route.Project().buildRoute(project.id))
scope.launch { drawerState.close() }
@@ -26,6 +26,7 @@ import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.ui.graphics.Color
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
@@ -150,6 +151,15 @@ fun TaskEditSheet(
Spacer(Modifier.height(12.dp))
state.saveError?.let { error ->
Text(
text = error,
color = Color.Red,
style = MaterialTheme.typography.bodySmall,
modifier = Modifier.padding(vertical = 4.dp),
)
}
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.End,
@@ -129,6 +129,13 @@ class TaskEditViewModel @Inject constructor(
val taskIdLong = st.taskId?.toLongOrNull()
if (authManager.isLoggedIn && projectIdLong != null) {
// Refresh token if expired before calling API
val tokenOk = authManager.refreshIfNeeded()
if (!tokenOk) {
_state.update { it.copy(isSaving = false, saveError = "Session expirée, veuillez vous reconnecter") }
return@launch
}
val apiResult = if (taskIdLong != null) {
apiClient.updateIssue(projectIdLong, taskIdLong, request)
} else {