From 4e1e3f81e319e086f4c75d78619c08f61d195072 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 12 Nov 2022 12:32:44 +0100 Subject: [PATCH] Allow changing base URL from UI --- .../gq/kirmanak/mealient/ui/activity/MainActivity.kt | 1 + .../kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt | 11 +++++++++++ app/src/main/res/menu/navigation_menu.xml | 4 ++++ app/src/main/res/navigation/nav_graph.xml | 4 ++++ app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 22 insertions(+) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index eb826bf..ef263b4 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -68,6 +68,7 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) { val directions = when (menuItem.itemId) { R.id.add_recipe -> NavGraphDirections.actionGlobalAddRecipeFragment() R.id.recipes_list -> NavGraphDirections.actionGlobalRecipesFragment() + R.id.change_url -> NavGraphDirections.actionGlobalBaseURLFragment() else -> throw IllegalArgumentException("Unknown menu item id: ${menuItem.itemId}") } navigateTo(directions) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt b/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt index d2a66de..f532cc7 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModel.kt @@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel +import gq.kirmanak.mealient.data.auth.AuthRepo import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo import gq.kirmanak.mealient.data.baseurl.VersionDataSource +import gq.kirmanak.mealient.data.recipes.RecipeRepo import gq.kirmanak.mealient.datasource.runCatchingExceptCancel import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.ui.OperationUiState @@ -16,6 +18,8 @@ import javax.inject.Inject @HiltViewModel class BaseURLViewModel @Inject constructor( private val serverInfoRepo: ServerInfoRepo, + private val authRepo: AuthRepo, + private val recipeRepo: RecipeRepo, private val versionDataSource: VersionDataSource, private val logger: Logger, ) : ViewModel() { @@ -33,10 +37,17 @@ class BaseURLViewModel @Inject constructor( private suspend fun checkBaseURL(baseURL: String) { logger.v { "checkBaseURL() called with: baseURL = $baseURL" } + if (baseURL == serverInfoRepo.getUrl()) { + logger.d { "checkBaseURL: new URL matches current" } + _uiState.value = OperationUiState.fromResult(Result.success(Unit)) + return + } val result = runCatchingExceptCancel { // If it returns proper version info then it must be a Mealie val version = versionDataSource.getVersionInfo(baseURL).version serverInfoRepo.storeBaseURL(baseURL, version) + authRepo.logout() + recipeRepo.clearLocalData() } logger.i { "checkBaseURL: result is $result" } _uiState.value = OperationUiState.fromResult(result) diff --git a/app/src/main/res/menu/navigation_menu.xml b/app/src/main/res/menu/navigation_menu.xml index 4ac8fb7..c5b3ea1 100644 --- a/app/src/main/res/menu/navigation_menu.xml +++ b/app/src/main/res/menu/navigation_menu.xml @@ -7,4 +7,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 81784f9..b50d1a7 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -72,4 +72,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index bca5f84..06e2ecc 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -47,4 +47,5 @@ неожиданный ответ нет соединения Ошибка загрузки. + Сменить URL \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7bd2a7b..13d5934 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -51,4 +51,5 @@ unauthorized unexpected response no connection + Change URL \ No newline at end of file