mirror of
https://github.com/nextcloud/android.git
synced 2024-11-26 23:28:42 +03:00
Fix crash when no internet connection
Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
parent
ffe19232dc
commit
a959c15354
2 changed files with 49 additions and 13 deletions
|
@ -36,6 +36,9 @@ import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class AssistantViewModel(private val repository: AssistantRepositoryType) : ViewModel() {
|
class AssistantViewModel(private val repository: AssistantRepositoryType) : ViewModel() {
|
||||||
|
|
||||||
|
private val _errorMessage = MutableStateFlow<String?>(null)
|
||||||
|
val errorMessage: StateFlow<String?> = _errorMessage
|
||||||
|
|
||||||
private val _selectedTaskType = MutableStateFlow<TaskType?>(null)
|
private val _selectedTaskType = MutableStateFlow<TaskType?>(null)
|
||||||
val selectedTaskType: StateFlow<TaskType?> = _selectedTaskType
|
val selectedTaskType: StateFlow<TaskType?> = _selectedTaskType
|
||||||
|
|
||||||
|
@ -85,30 +88,43 @@ class AssistantViewModel(private val repository: AssistantRepositoryType) : View
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val allTaskType = MainApp.getAppContext().getString(R.string.assistant_screen_all_task_type)
|
val allTaskType = MainApp.getAppContext().getString(R.string.assistant_screen_all_task_type)
|
||||||
val result = arrayListOf(TaskType(null, allTaskType, null))
|
val result = arrayListOf(TaskType(null, allTaskType, null))
|
||||||
val taskTypes = repository.getTaskTypes().resultData.types
|
val taskTypesResult = repository.getTaskTypes()
|
||||||
result.addAll(taskTypes)
|
|
||||||
|
|
||||||
_taskTypes.update {
|
if (taskTypesResult.isSuccess) {
|
||||||
result.toList()
|
result.addAll(taskTypesResult.resultData.types)
|
||||||
}
|
_taskTypes.update {
|
||||||
|
result.toList()
|
||||||
|
}
|
||||||
|
|
||||||
_selectedTaskType.update {
|
_selectedTaskType.update {
|
||||||
result.first()
|
result.first()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
_errorMessage.update {
|
||||||
|
taskTypesResult.message
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getTaskList(appId: String = "assistant", onCompleted: () -> Unit = {}) {
|
fun getTaskList(appId: String = "assistant", onCompleted: () -> Unit = {}) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
_taskList = repository.getTaskList(appId).resultData.tasks
|
val result = repository.getTaskList(appId)
|
||||||
|
if (result.isSuccess) {
|
||||||
|
_taskList = result.resultData.tasks
|
||||||
|
|
||||||
filterTaskList(_selectedTaskType.value?.id)
|
filterTaskList(_selectedTaskType.value?.id)
|
||||||
|
|
||||||
_loading.update {
|
_loading.update {
|
||||||
false
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
onCompleted()
|
||||||
|
} else {
|
||||||
|
_errorMessage.update {
|
||||||
|
result.message
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onCompleted()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,6 +142,12 @@ class AssistantViewModel(private val repository: AssistantRepositoryType) : View
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun resetErrorState() {
|
||||||
|
_errorMessage.update {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun resetTaskDeletionState() {
|
fun resetTaskDeletionState() {
|
||||||
_isTaskDeleted.update {
|
_isTaskDeleted.update {
|
||||||
null
|
null
|
||||||
|
|
|
@ -71,6 +71,7 @@ import kotlinx.coroutines.delay
|
||||||
@Composable
|
@Composable
|
||||||
fun AssistantScreen(viewModel: AssistantViewModel, activity: Activity) {
|
fun AssistantScreen(viewModel: AssistantViewModel, activity: Activity) {
|
||||||
val loading by viewModel.loading.collectAsState()
|
val loading by viewModel.loading.collectAsState()
|
||||||
|
val errorMessage by viewModel.errorMessage.collectAsState()
|
||||||
val selectedTaskType by viewModel.selectedTaskType.collectAsState()
|
val selectedTaskType by viewModel.selectedTaskType.collectAsState()
|
||||||
val filteredTaskList by viewModel.filteredTaskList.collectAsState()
|
val filteredTaskList by viewModel.filteredTaskList.collectAsState()
|
||||||
val isTaskCreated by viewModel.isTaskCreated.collectAsState()
|
val isTaskCreated by viewModel.isTaskCreated.collectAsState()
|
||||||
|
@ -133,6 +134,7 @@ fun AssistantScreen(viewModel: AssistantViewModel, activity: Activity) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CheckErrorMessage(errorMessage, activity, viewModel)
|
||||||
CheckTaskAdd(isTaskCreated, activity, viewModel)
|
CheckTaskAdd(isTaskCreated, activity, viewModel)
|
||||||
CheckTaskDeletion(isTaskDeleted, activity, viewModel)
|
CheckTaskDeletion(isTaskDeleted, activity, viewModel)
|
||||||
|
|
||||||
|
@ -182,6 +184,18 @@ private fun CheckTaskAdd(isTaskCreated: Boolean?, activity: Activity, viewModel:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun CheckErrorMessage(errorMessage: String?, activity: Activity, viewModel: AssistantViewModel) {
|
||||||
|
errorMessage?.let {
|
||||||
|
DisplayUtils.showSnackMessage(
|
||||||
|
activity,
|
||||||
|
errorMessage
|
||||||
|
)
|
||||||
|
|
||||||
|
viewModel.resetErrorState()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun CheckTaskDeletion(isTaskDeleted: Boolean?, activity: Activity, viewModel: AssistantViewModel) {
|
private fun CheckTaskDeletion(isTaskDeleted: Boolean?, activity: Activity, viewModel: AssistantViewModel) {
|
||||||
isTaskDeleted?.let {
|
isTaskDeleted?.let {
|
||||||
|
|
Loading…
Reference in a new issue