diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/components/AddLinkSheet.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/components/AddLinkSheet.kt index 12c9736d4..6ab9bd169 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/components/AddLinkSheet.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/components/AddLinkSheet.kt @@ -29,7 +29,7 @@ import app.omnivore.omnivore.ui.save.SaveViewModel @Composable fun AddLinkSheetContent( - saveViewModel: SaveViewModel, + viewModel: SaveViewModel, onCancel: () -> Unit, onLinkAdded: () -> Unit ) { @@ -50,11 +50,11 @@ fun AddLinkSheetContent( ).show() } - val saveState: SaveState by saveViewModel.saveState.observeAsState(SaveState.NONE) + val saveState: SaveState by viewModel.state.observeAsState(SaveState.DEFAULT) val isSaving = MutableLiveData(false) when (saveState) { - SaveState.NONE -> { + SaveState.DEFAULT -> { isSaving.value = false } SaveState.SAVING -> { @@ -62,23 +62,26 @@ fun AddLinkSheetContent( } SaveState.ERROR -> { isSaving.value = false - showToast(context.getString(R.string.add_link_sheet_save_url_error)) + showToast(viewModel.message ?: context.getString(R.string.add_link_sheet_save_url_error)) + + viewModel.resetState() } SaveState.SAVED -> { isSaving.value = false - showToast(context.getString(R.string.add_link_sheet_save_url_success)) + showToast(viewModel.message ?: context.getString(R.string.add_link_sheet_save_url_success)) onLinkAdded() + viewModel.resetState() } } fun addLink(url: String) { - if (!saveViewModel.validateUrl(url)) { + if (!viewModel.validateUrl(url)) { showToast(context.getString(R.string.add_link_sheet_invalid_url_error)) return } - saveViewModel.saveURL(url) + viewModel.saveURL(url) } Surface( diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt index 294808dae..325b029c1 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt @@ -164,14 +164,14 @@ fun BottomSheetContent(libraryViewModel: LibraryViewModel, } else if (showAddLinkSheet) { BottomSheetUI { AddLinkSheetContent( - saveViewModel = saveViewModel, + viewModel = saveViewModel, onCancel = { libraryViewModel.showAddLinkSheetLiveData.value = false - saveViewModel.saveState.value = SaveState.NONE + saveViewModel.state.value = SaveState.DEFAULT }, onLinkAdded = { libraryViewModel.showAddLinkSheetLiveData.value = false - saveViewModel.saveState.value = SaveState.NONE + saveViewModel.state.value = SaveState.DEFAULT } ) } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/save/SaveSheetActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/save/SaveSheetActivity.kt index 216958bc8..60f69cb55 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/save/SaveSheetActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/save/SaveSheetActivity.kt @@ -81,12 +81,12 @@ abstract class SaveSheetActivityBase : AppCompatActivity() { } setContent { - val saveState: SaveState by viewModel.saveState.observeAsState(SaveState.NONE) + val saveState: SaveState by viewModel.state.observeAsState(SaveState.DEFAULT) val scaffoldState: ScaffoldState = rememberScaffoldState() val message = when (saveState) { - SaveState.NONE -> "" + SaveState.DEFAULT -> "" SaveState.SAVING -> "Saved to Omnivore" SaveState.ERROR -> "Error Saving Article" SaveState.SAVED -> "Saved to Omnivore" diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/save/SaveViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/save/SaveViewModel.kt index f13dc3a65..f2ce8ea2a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/save/SaveViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/save/SaveViewModel.kt @@ -27,7 +27,7 @@ import java.util.regex.Pattern import javax.inject.Inject enum class SaveState { - NONE(), + DEFAULT(), SAVING(), ERROR(), SAVED() @@ -38,7 +38,7 @@ class SaveViewModel @Inject constructor( private val datastoreRepo: DatastoreRepository, private val resourceProvider: ResourceProvider ) : ViewModel() { - val saveState = MutableLiveData(SaveState.NONE) + val state = MutableLiveData(SaveState.DEFAULT) var isLoading by mutableStateOf(false) private set @@ -76,7 +76,7 @@ class SaveViewModel @Inject constructor( viewModelScope.launch { isLoading = true message = resourceProvider.getString(R.string.save_view_model_msg) - saveState.postValue(SaveState.SAVING) + state.postValue(SaveState.SAVING) val authToken = getAuthToken() @@ -115,17 +115,22 @@ class SaveViewModel @Inject constructor( isLoading = false val success = (response.data?.saveUrl?.onSaveSuccess?.url != null) - message = if (success) { - resourceProvider.getString(R.string.save_view_model_page_saved_success) + if (success) { + message = resourceProvider.getString(R.string.save_view_model_page_saved_success) + state.postValue(SaveState.SAVED) } else { - resourceProvider.getString(R.string.save_view_model_page_saved_error) + message = resourceProvider.getString(R.string.save_view_model_page_saved_error) + state.postValue(SaveState.ERROR) } - - saveState.postValue(SaveState.SAVED) - Log.d(ContentValues.TAG, "Saved URL?: $success") } catch (e: java.lang.Exception) { message = resourceProvider.getString(R.string.save_view_model_page_saved_error) + state.postValue(SaveState.ERROR) + isLoading = false } } } + + fun resetState() { + state.postValue(SaveState.DEFAULT) + } }