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) = 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()
} }
} }

View File

@ -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)