diff --git a/mobile/android/app/src/main/kotlin/app/alextran/immich/core/HttpClientManager.kt b/mobile/android/app/src/main/kotlin/app/alextran/immich/core/HttpClientManager.kt index d70a9c094a..37435a9f02 100644 --- a/mobile/android/app/src/main/kotlin/app/alextran/immich/core/HttpClientManager.kt +++ b/mobile/android/app/src/main/kotlin/app/alextran/immich/core/HttpClientManager.kt @@ -32,6 +32,7 @@ private const val CERT_ALIAS = "client_cert" private const val PREFS_NAME = "immich.ssl" private const val PREFS_CERT_ALIAS = "immich.client_cert" private const val PREFS_HEADERS = "immich.request_headers" +private const val PREFS_SERVER_URL = "immich.server_url" /** * Manages a shared OkHttpClient with SSL configuration support. @@ -152,14 +153,22 @@ object HttpClientManager { synchronized(this) { clientChangedListeners.add(listener) } } - fun setRequestHeaders(headerMap: Map) { + fun setRequestHeaders(headerMap: Map, serverUrls: List) { synchronized(this) { val builder = Headers.Builder() headerMap.forEach { (key, value) -> builder[key] = value } val newHeaders = builder.build() - if (headers == newHeaders) return + val headersChanged = headers != newHeaders + val newUrl = serverUrls.firstOrNull() + val urlChanged = newUrl != prefs.getString(PREFS_SERVER_URL, null) + if (!headersChanged && !urlChanged) return headers = newHeaders - prefs.edit { putString(PREFS_HEADERS, JSONObject(headerMap).toString()) } + prefs.edit { + if (headersChanged) putString(PREFS_HEADERS, JSONObject(headerMap).toString()) + if (urlChanged) { + if (newUrl != null) putString(PREFS_SERVER_URL, newUrl) else remove(PREFS_SERVER_URL) + } + } } } diff --git a/mobile/android/app/src/main/kotlin/app/alextran/immich/core/NetworkApiPlugin.kt b/mobile/android/app/src/main/kotlin/app/alextran/immich/core/NetworkApiPlugin.kt index 853df6bfba..384c94cce9 100644 --- a/mobile/android/app/src/main/kotlin/app/alextran/immich/core/NetworkApiPlugin.kt +++ b/mobile/android/app/src/main/kotlin/app/alextran/immich/core/NetworkApiPlugin.kt @@ -80,6 +80,6 @@ private class NetworkApiImpl() : NetworkApi { } override fun setRequestHeaders(headers: Map, serverUrls: List) { - HttpClientManager.setRequestHeaders(headers) + HttpClientManager.setRequestHeaders(headers, serverUrls) } }