fix: projectId extrait des arguments de route (pas du pattern) + affichage erreur API
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user