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) =
|
fun setFolderExpandState(isExpanded: Boolean) =
|
||||||
_feedState.update { it.copy(areFoldersExpanded = isExpanded) }
|
_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) {
|
fun openDialog(state: DialogState) {
|
||||||
if (state is DialogState.UpdateFeed) {
|
if (state is DialogState.UpdateFeed) {
|
||||||
@ -172,8 +190,7 @@ class FeedScreenModel(
|
|||||||
// TODO add support for all account types
|
// TODO add support for all account types
|
||||||
repository?.insertNewFeeds(listOf(url))
|
repository?.insertNewFeeds(listOf(url))
|
||||||
|
|
||||||
closeDialog()
|
closeDialog(DialogState.AddFeed)
|
||||||
resetAddFeedDialogState()
|
|
||||||
} else {
|
} else {
|
||||||
val rssUrls = HtmlParser.getFeedLink(url, get())
|
val rssUrls = HtmlParser.getFeedLink(url, get())
|
||||||
|
|
||||||
@ -185,8 +202,7 @@ class FeedScreenModel(
|
|||||||
// TODO add support for all account types
|
// TODO add support for all account types
|
||||||
repository?.insertNewFeeds(rssUrls.map { it.url })
|
repository?.insertNewFeeds(rssUrls.map { it.url })
|
||||||
|
|
||||||
closeDialog()
|
closeDialog(DialogState.AddFeed)
|
||||||
resetAddFeedDialogState()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
@ -199,15 +215,6 @@ class FeedScreenModel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun resetAddFeedDialogState() {
|
|
||||||
_addFeedDialogState.update {
|
|
||||||
it.copy(
|
|
||||||
url = "",
|
|
||||||
error = null,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// add feed
|
// add feed
|
||||||
|
|
||||||
// update feed
|
// update feed
|
||||||
@ -298,13 +305,6 @@ class FeedScreenModel(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun resetFolderState() = _folderState.update {
|
|
||||||
it.copy(
|
|
||||||
folder = Folder(),
|
|
||||||
nameError = null,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun folderValidate(updateFolder: Boolean = false) {
|
fun folderValidate(updateFolder: Boolean = false) {
|
||||||
val name = _folderState.value.name.orEmpty()
|
val name = _folderState.value.name.orEmpty()
|
||||||
|
|
||||||
@ -323,8 +323,7 @@ class FeedScreenModel(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
closeDialog()
|
closeDialog(DialogState.AddFolder)
|
||||||
resetFolderState()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,8 +69,7 @@ object FeedTab : Tab {
|
|||||||
AddFeedDialog(
|
AddFeedDialog(
|
||||||
viewModel = viewModel,
|
viewModel = viewModel,
|
||||||
onDismiss = {
|
onDismiss = {
|
||||||
viewModel.closeDialog()
|
viewModel.closeDialog(DialogState.AddFeed)
|
||||||
viewModel.resetAddFeedDialogState()
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -123,8 +122,7 @@ object FeedTab : Tab {
|
|||||||
FolderDialog(
|
FolderDialog(
|
||||||
viewModel = viewModel,
|
viewModel = viewModel,
|
||||||
onDismiss = {
|
onDismiss = {
|
||||||
viewModel.closeDialog()
|
viewModel.closeDialog(DialogState.AddFolder)
|
||||||
viewModel.resetFolderState()
|
|
||||||
},
|
},
|
||||||
onValidate = {
|
onValidate = {
|
||||||
viewModel.folderValidate()
|
viewModel.folderValidate()
|
||||||
@ -152,8 +150,7 @@ object FeedTab : Tab {
|
|||||||
updateFolder = true,
|
updateFolder = true,
|
||||||
viewModel = viewModel,
|
viewModel = viewModel,
|
||||||
onDismiss = {
|
onDismiss = {
|
||||||
viewModel.closeDialog()
|
viewModel.closeDialog(DialogState.UpdateFolder(dialog.folder))
|
||||||
viewModel.resetFolderState()
|
|
||||||
},
|
},
|
||||||
onValidate = {
|
onValidate = {
|
||||||
viewModel.folderValidate(updateFolder = true)
|
viewModel.folderValidate(updateFolder = true)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user