From e2085a8dc272755698f4c7e8184163420b38a9d0 Mon Sep 17 00:00:00 2001 From: Gato Date: Sat, 6 Jun 2026 07:59:38 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20FAB=20rond=20(CircleShape)=20+=20crash?= =?UTF-8?q?=20ajout=20t=C3=A2che=20(projet=20Inbox=20absent=20+=20projectI?= =?UTF-8?q?d=20vide)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../java/com/planify/mobile/ui/MainScreen.kt | 2 ++ .../mobile/ui/navigation/DrawerViewModel.kt | 21 ++++++++++++++++++- .../mobile/ui/task/TaskEditViewModel.kt | 4 ++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/planify/mobile/ui/MainScreen.kt b/app/src/main/java/com/planify/mobile/ui/MainScreen.kt index 2601335..53a6a2f 100644 --- a/app/src/main/java/com/planify/mobile/ui/MainScreen.kt +++ b/app/src/main/java/com/planify/mobile/ui/MainScreen.kt @@ -18,6 +18,7 @@ import androidx.compose.material.icons.outlined.Menu import androidx.compose.material.icons.outlined.Search import androidx.compose.material.icons.outlined.Settings import androidx.compose.material.icons.outlined.Today +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.DrawerValue import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton @@ -183,6 +184,7 @@ fun MainScreen(viewModel: DrawerViewModel = hiltViewModel()) { FloatingActionButton( onClick = { showCreateTask = true }, containerColor = MaterialTheme.colorScheme.primary, + shape = CircleShape, ) { Icon(Icons.Outlined.Add, contentDescription = "Nouvelle tâche", tint = MaterialTheme.colorScheme.onPrimary) } diff --git a/app/src/main/java/com/planify/mobile/ui/navigation/DrawerViewModel.kt b/app/src/main/java/com/planify/mobile/ui/navigation/DrawerViewModel.kt index f3d870f..1c11bc0 100644 --- a/app/src/main/java/com/planify/mobile/ui/navigation/DrawerViewModel.kt +++ b/app/src/main/java/com/planify/mobile/ui/navigation/DrawerViewModel.kt @@ -2,16 +2,19 @@ package com.planify.mobile.ui.navigation import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.planify.mobile.domain.model.BackendType import com.planify.mobile.domain.model.Project import com.planify.mobile.domain.repository.ProjectRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.launch +import java.util.UUID import javax.inject.Inject @HiltViewModel class DrawerViewModel @Inject constructor( - projectRepository: ProjectRepository, + private val projectRepository: ProjectRepository, ) : ViewModel() { val projects = projectRepository.getAllProjects() @@ -19,4 +22,20 @@ class DrawerViewModel @Inject constructor( val favorites = projectRepository.getFavoriteProjects() .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000), emptyList()) + + init { + viewModelScope.launch { + if (projectRepository.getInboxProject() == null) { + projectRepository.insertProject( + Project( + id = UUID.randomUUID().toString(), + name = "Boîte de réception", + isInbox = true, + backendType = BackendType.LOCAL, + childOrder = -1, + ) + ) + } + } + } } diff --git a/app/src/main/java/com/planify/mobile/ui/task/TaskEditViewModel.kt b/app/src/main/java/com/planify/mobile/ui/task/TaskEditViewModel.kt index c4ba5b1..76419ad 100644 --- a/app/src/main/java/com/planify/mobile/ui/task/TaskEditViewModel.kt +++ b/app/src/main/java/com/planify/mobile/ui/task/TaskEditViewModel.kt @@ -67,7 +67,7 @@ class TaskEditViewModel @Inject constructor( } } } else { - _state.update { it.copy(projectId = projectId, sectionId = sectionId, parentId = parentId) } + _state.value = TaskEditState(projectId = projectId, sectionId = sectionId, parentId = parentId) } } @@ -102,7 +102,7 @@ class TaskEditViewModel @Inject constructor( fun save(onDone: () -> Unit) { val st = _state.value - if (st.content.isBlank()) return + if (st.content.isBlank() || st.projectId.isBlank()) return _state.update { it.copy(isSaving = true) } viewModelScope.launch { val now = LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)