Improve state reset for some dialogs in FeedTab
This commit is contained in:
parent
b4ac021159
commit
da78d1b835
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user