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