@@ -28,6 +28,7 @@ class MainActivity : ComponentActivity() {
2828 val db = OpenTaskerApp .db
2929 OpenTaskerTheme {
3030 var currentScreen by remember { mutableStateOf<Screen >(Screen .ProfileList ) }
31+ var currentEditingTask by remember { mutableStateOf<Task ?>(null ) }
3132 val scope = rememberCoroutineScope()
3233
3334 when (val screen = currentScreen) {
@@ -60,19 +61,27 @@ class MainActivity : ComponentActivity() {
6061 )
6162 }
6263 is Screen .TaskEditor -> {
64+ if (currentEditingTask == null ) currentEditingTask = screen.task
6365 TaskEditorScreen (
64- task = screen.task ,
66+ task = currentEditingTask ,
6567 onSave = { task ->
6668 scope.launch {
6769 if (task.id == 0L ) {
6870 db.taskDao().insert(task.toEntity())
6971 } else {
7072 db.taskDao().update(task.toEntity())
7173 }
74+ currentEditingTask = null
7275 currentScreen = Screen .ProfileList
7376 }
7477 },
75- onBack = { currentScreen = Screen .ProfileList },
78+ onBack = {
79+ currentEditingTask = null
80+ currentScreen = Screen .ProfileList
81+ },
82+ onTaskUpdated = { updatedTask ->
83+ currentEditingTask = updatedTask
84+ },
7685 onAddAction = { currentScreen = Screen .ActionPicker },
7786 )
7887 }
@@ -81,16 +90,19 @@ class MainActivity : ComponentActivity() {
8190 onActionSelected = { action ->
8291 currentScreen = Screen .ActionEditor (action)
8392 },
84- onCancel = { currentScreen = Screen .TaskEditor (null ) },
93+ onCancel = { currentScreen = Screen .TaskEditor (currentEditingTask ) },
8594 )
8695 }
8796 is Screen .ActionEditor -> {
8897 ActionEditorScreen (
8998 actionSpec = screen.actionSpec,
9099 onSave = { action ->
91- // For now, just go back to task editor
92- // In a real implementation, we'd pass the action back to TaskEditor
93- currentScreen = Screen .TaskEditor (null )
100+ if (currentEditingTask != null ) {
101+ currentEditingTask = currentEditingTask!! .copy(
102+ actions = currentEditingTask!! .actions + action
103+ )
104+ }
105+ currentScreen = Screen .TaskEditor (currentEditingTask)
94106 },
95107 onCancel = { currentScreen = Screen .ActionPicker },
96108 )
0 commit comments