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
|
minSdk = 26
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 1
|
versionCode = 1
|
||||||
versionName = "0.0.14"
|
versionName = "0.0.15"
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -72,8 +72,9 @@ fun MainScreen(
|
|||||||
var showCreateTask by remember { mutableStateOf(false) }
|
var showCreateTask by remember { mutableStateOf(false) }
|
||||||
var selectedTask by remember { mutableStateOf<Task?>(null) }
|
var selectedTask by remember { mutableStateOf<Task?>(null) }
|
||||||
val inboxProjectId = projects.find { it.isInbox }?.id ?: ""
|
val inboxProjectId = projects.find { it.isInbox }?.id ?: ""
|
||||||
val createProjectId = if (currentRoute?.startsWith("project/") == true)
|
// destination.route is the pattern ("project/{projectId}"), arguments hold the real value
|
||||||
currentRoute.removePrefix("project/")
|
val createProjectId = if (currentRoute == Route.Project().path)
|
||||||
|
navBackStack?.arguments?.getString("projectId") ?: inboxProjectId
|
||||||
else
|
else
|
||||||
inboxProjectId
|
inboxProjectId
|
||||||
|
|
||||||
@@ -85,9 +86,10 @@ fun MainScreen(
|
|||||||
Route.Filter.path to "Filtres",
|
Route.Filter.path to "Filtres",
|
||||||
Route.Settings.path to "Paramètres",
|
Route.Settings.path to "Paramètres",
|
||||||
)
|
)
|
||||||
val title = drawerTitles[currentRoute]
|
val activeProjectName = if (currentRoute == Route.Project().path)
|
||||||
?: projects.find { "project/${it.id}" == currentRoute }?.name
|
projects.find { it.id == navBackStack?.arguments?.getString("projectId") }?.name
|
||||||
?: "BonsaiTask"
|
else null
|
||||||
|
val title = drawerTitles[currentRoute] ?: activeProjectName ?: "BonsaiTask"
|
||||||
|
|
||||||
ModalNavigationDrawer(
|
ModalNavigationDrawer(
|
||||||
drawerState = drawerState,
|
drawerState = drawerState,
|
||||||
@@ -154,7 +156,7 @@ fun MainScreen(
|
|||||||
NavigationDrawerItem(
|
NavigationDrawerItem(
|
||||||
icon = { Icon(Icons.Default.FolderOpen, null) },
|
icon = { Icon(Icons.Default.FolderOpen, null) },
|
||||||
label = { Text(project.name) },
|
label = { Text(project.name) },
|
||||||
selected = currentRoute == "project/${project.id}",
|
selected = currentRoute == Route.Project().path && navBackStack?.arguments?.getString("projectId") == project.id,
|
||||||
onClick = {
|
onClick = {
|
||||||
navController.navigate(Route.Project().buildRoute(project.id))
|
navController.navigate(Route.Project().buildRoute(project.id))
|
||||||
scope.launch { drawerState.close() }
|
scope.launch { drawerState.close() }
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import androidx.compose.material3.ModalBottomSheet
|
|||||||
import androidx.compose.material3.OutlinedTextField
|
import androidx.compose.material3.OutlinedTextField
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material3.rememberModalBottomSheetState
|
import androidx.compose.material3.rememberModalBottomSheetState
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
@@ -150,6 +151,15 @@ fun TaskEditSheet(
|
|||||||
|
|
||||||
Spacer(Modifier.height(12.dp))
|
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(
|
Row(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
horizontalArrangement = Arrangement.End,
|
horizontalArrangement = Arrangement.End,
|
||||||
|
|||||||
@@ -129,6 +129,13 @@ class TaskEditViewModel @Inject constructor(
|
|||||||
val taskIdLong = st.taskId?.toLongOrNull()
|
val taskIdLong = st.taskId?.toLongOrNull()
|
||||||
|
|
||||||
if (authManager.isLoggedIn && projectIdLong != null) {
|
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) {
|
val apiResult = if (taskIdLong != null) {
|
||||||
apiClient.updateIssue(projectIdLong, taskIdLong, request)
|
apiClient.updateIssue(projectIdLong, taskIdLong, request)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user