Skip to content

Commit 8160bfb

Browse files
authored
Merge pull request #168 from FamilyVaultApp/task-list-fixes
Task list fixes
2 parents 1351a6d + 527d94b commit 8160bfb

5 files changed

Lines changed: 50 additions & 29 deletions

File tree

composeApp/src/commonMain/kotlin/com/github/familyvault/services/ITaskService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.github.familyvault.models.tasks.TaskList
77
interface ITaskService {
88
suspend fun getTaskLists(): List<TaskList>
99
suspend fun createNewTaskList(name: String)
10-
suspend fun updateTaskList(taskListId: String, name: String)
10+
suspend fun updateTaskList(taskListId: String, name: String): Boolean
1111
suspend fun deleteTaskList(taskListId: String)
1212

1313
suspend fun createNewTask(

composeApp/src/commonMain/kotlin/com/github/familyvault/services/TaskService.kt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,22 @@ class TaskService(
3737
)
3838
}
3939

40-
override suspend fun updateTaskList(taskListId: String, name: String) {
41-
val splitFamilyMembers = FamilyMembersSplitter.split(
42-
familyGroupService.retrieveFamilyGroupMembersList()
43-
)
40+
override suspend fun updateTaskList(taskListId: String, name: String): Boolean {
41+
return try {
42+
val splitFamilyMembers = FamilyMembersSplitter.split(
43+
familyGroupService.retrieveFamilyGroupMembersList()
44+
)
4445

45-
privMxClient.updateThread(
46-
taskListId,
47-
users = splitFamilyMembers.members.map { it.toPrivMxUser() },
48-
managers = splitFamilyMembers.guardians.map { it.toPrivMxUser() },
49-
newName = name,
50-
)
46+
privMxClient.updateThread(
47+
taskListId,
48+
users = splitFamilyMembers.members.map { it.toPrivMxUser() },
49+
managers = splitFamilyMembers.guardians.map { it.toPrivMxUser() },
50+
newName = name,
51+
)
52+
true
53+
} catch (e: Exception) {
54+
false
55+
}
5156
}
5257

5358
override suspend fun deleteTaskList(taskListId: String) {

composeApp/src/commonMain/kotlin/com/github/familyvault/ui/screens/main/tasks/TaskTabContent.kt

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,29 @@ fun TaskTabContent() {
3939
tasksCategoriesState.populateTaskListFromServices()
4040
familyMembersState.populateFamilyGroupMembersFromService()
4141

42-
taskListListenerService.startListeningForNewTaskList { newList ->
43-
tasksListState.taskLists.add(newList)
42+
try {
43+
taskListListenerService.startListeningForNewTaskList { newList ->
44+
tasksListState.taskLists.add(newList)
45+
}
46+
} catch (_: Exception) {
4447
}
45-
taskListListenerService.startListeningForUpdatedTaskList { updatedList ->
46-
tasksListState.updateTaskList(updatedList)
48+
49+
try {
50+
taskListListenerService.startListeningForUpdatedTaskList { updatedList ->
51+
tasksListState.updateTaskList(updatedList)
52+
}
53+
} catch (_: Exception) {
4754
}
4855

49-
taskListListenerService.startListeningForDeletedTaskList { deletedListId ->
50-
coroutineScope.launch {
51-
isLoading = true
52-
tasksListState.removeTaskList(deletedListId.threadId)
53-
isLoading = false
56+
try {
57+
taskListListenerService.startListeningForDeletedTaskList { deletedListId ->
58+
coroutineScope.launch {
59+
isLoading = true
60+
tasksListState.removeTaskList(deletedListId.threadId)
61+
isLoading = false
62+
}
5463
}
64+
} catch (_: Exception) {
5565
}
5666

5767
isLoading = false

composeApp/src/commonMain/kotlin/com/github/familyvault/ui/screens/main/tasks/taskList/TaskListContent.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ fun TaskListContent() {
8383
taskListState.taskLists.forEach {
8484
TaskListButton(
8585
title = it.name,
86-
selected = it == taskListState.selectedTaskList
86+
selected = it.id == taskListState.selectedTaskList?.id
8787
) {
8888
coroutineScope.launch {
8989
taskListState.selectTaskList(it.id)
@@ -106,11 +106,12 @@ fun TaskListContent() {
106106
.verticalScroll(scrollState)
107107
) {
108108
taskListState.selectedTaskList?.let { taskList ->
109+
val currentTaskList = taskListState.taskLists.find { it.id == taskList.id } ?: taskList
109110
TaskGroupPending(
110-
categoryTitle = taskList.name,
111+
categoryTitle = currentTaskList.name,
111112
tasks = taskListState.tasks.filter { !it.content.completed },
112113
onEditClick = {
113-
localNavigator.parent?.push(TaskListEditScreen(taskList))
114+
localNavigator.parent?.push(TaskListEditScreen(currentTaskList))
114115
},
115116
permissionGroup = currentUserPermissionGroup
116117
)

composeApp/src/commonMain/kotlin/com/github/familyvault/ui/screens/main/tasks/taskList/TaskListEditScreen.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,18 @@ class TaskListEditScreen(private val taskList: TaskList) : Screen {
8383
) {
8484
coroutineScope.launch {
8585
isEditing = true
86-
taskService.updateTaskList(taskList.id, taskListForm.name)
87-
taskListState.populateTaskListFromServices()
88-
if (taskList.id == taskListState.selectedTaskList?.id) {
89-
taskListState.selectTaskList(taskList.id)
86+
val updateResult = taskService.updateTaskList(taskList.id, taskListForm.name)
87+
88+
if (updateResult) {
89+
taskListState.populateTaskListFromServices()
90+
if (taskList.id == taskListState.selectedTaskList?.id) {
91+
taskListState.selectTaskList(taskList.id)
92+
}
93+
isEditing = false
94+
localNavigator.pop()
95+
} else {
96+
isEditing = false
9097
}
91-
isEditing = false
92-
localNavigator.pop()
9398
}
9499
}
95100
DangerButton(

0 commit comments

Comments
 (0)