Improve state reset for some dialogs in FeedTab

This commit is contained in:
Shinokuni 2024-03-26 14:30:29 +01:00
parent b4ac021159
commit da78d1b835
2 changed files with 25 additions and 29 deletions

View File

@ -94,7 +94,25 @@ class FeedScreenModel(
fun setFolderExpandState(isExpanded: Boolean) =
_feedState.update { it.copy(areFoldersExpanded = isExpanded) }
fun closeDialog() = _feedState.update { it.copy(dialog = null) }
fun closeDialog(dialog: DialogState? = null) {
if (dialog is DialogState.AddFeed) {
_addFeedDialogState.update {
it.copy(
url = "",
error = null,
)
}
} else if (dialog is DialogState.AddFolder || dialog is DialogState.UpdateFolder) {
_folderState.update {
it.copy(
folder = Folder(),
nameError = null,
)
}
}
_feedState.update { it.copy(dialog = null) }
}
fun openDialog(state: DialogState) {
if (state is DialogState.UpdateFeed) {
@ -172,8 +190,7 @@ class FeedScreenModel(
// TODO add support for all account types
repository?.insertNewFeeds(listOf(url))
closeDialog()
resetAddFeedDialogState()
closeDialog(DialogState.AddFeed)
} else {
val rssUrls = HtmlParser.getFeedLink(url, get())
@ -185,8 +202,7 @@ class FeedScreenModel(
// TODO add support for all account types
repository?.insertNewFeeds(rssUrls.map { it.url })
closeDialog()
resetAddFeedDialogState()
closeDialog(DialogState.AddFeed)
}
}
} catch (e: Exception) {
@ -199,15 +215,6 @@ class FeedScreenModel(
}
}
fun resetAddFeedDialogState() {
_addFeedDialogState.update {
it.copy(
url = "",
error = null,
)
}
}
// add feed
// update feed
@ -298,13 +305,6 @@ class FeedScreenModel(
)
}
fun resetFolderState() = _folderState.update {
it.copy(
folder = Folder(),
nameError = null,
)
}
fun folderValidate(updateFolder: Boolean = false) {
val name = _folderState.value.name.orEmpty()
@ -323,8 +323,7 @@ class FeedScreenModel(
})
}
closeDialog()
resetFolderState()
closeDialog(DialogState.AddFolder)
}
}

View File

@ -69,8 +69,7 @@ object FeedTab : Tab {
AddFeedDialog(
viewModel = viewModel,
onDismiss = {
viewModel.closeDialog()
viewModel.resetAddFeedDialogState()
viewModel.closeDialog(DialogState.AddFeed)
},
)
}
@ -123,8 +122,7 @@ object FeedTab : Tab {
FolderDialog(
viewModel = viewModel,
onDismiss = {
viewModel.closeDialog()
viewModel.resetFolderState()
viewModel.closeDialog(DialogState.AddFolder)
},
onValidate = {
viewModel.folderValidate()
@ -152,8 +150,7 @@ object FeedTab : Tab {
updateFolder = true,
viewModel = viewModel,
onDismiss = {
viewModel.closeDialog()
viewModel.resetFolderState()
viewModel.closeDialog(DialogState.UpdateFolder(dialog.folder))
},
onValidate = {
viewModel.folderValidate(updateFolder = true)