Skip to content

Commit 47db6d4

Browse files
committed
Wire action editor into task editing flow — add actions to tasks with full persistence
1 parent 9fa3483 commit 47db6d4

2 files changed

Lines changed: 19 additions & 6 deletions

File tree

app/src/main/java/com/opentasker/app/MainActivity.kt

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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
)

app/src/main/java/com/opentasker/ui/screens/EditorScreens.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ fun TaskEditorScreen(
148148
task: Task?,
149149
onSave: (Task) -> Unit,
150150
onBack: () -> Unit,
151+
onTaskUpdated: (Task) -> Unit = {},
151152
onAddAction: () -> Unit = {},
152153
) {
153154
var name by remember { mutableStateOf(task?.name ?: "") }

0 commit comments

Comments
 (0)