diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainApiClient.kt b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainApiClient.kt index 51991939d2..50d8b14002 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainApiClient.kt +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainApiClient.kt @@ -282,4 +282,24 @@ class EndurainApiClient( } }.start() } + + /** + * Fetch server version string + */ + fun fetchVersion(): String? { + try { + val uri = "$baseUrl/api/v1/about".toUri() + + val headers = buildHeaders(AuthType.NONE) + + val result = InternetUtils.doJsonRequest( + uri = uri, + requestHeaders = headers, + ) + return result?.getString("version") + } catch (e: Exception) { + LOG.error("Fetching server version error", e) + return null + } + } } \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainPreferencesActivity.kt b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainPreferencesActivity.kt index 3f8f163d61..289f3993cd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainPreferencesActivity.kt +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainPreferencesActivity.kt @@ -55,6 +55,11 @@ class EndurainPreferencesActivity : AbstractSettingsActivityV2() { updateLogoutPreferenceVisibility() } } + vm.fetchServerVersion(server) { + activity?.runOnUiThread { + updateStatus() + } + } } } @@ -121,11 +126,14 @@ class EndurainPreferencesActivity : AbstractSettingsActivityV2() { val server = GBApplication.getPrefs().preferences.getString("endurain_server", null) val tokenExpiresAt = vm.getTokenExpiresAt() + var summaryText = "Not logged in, integration is disabled" if (vm.isLoggedIn() && server != null) { - statusPref?.summary = "Logged in to $server\nAuth token expires: $tokenExpiresAt" - } else { - statusPref?.summary = "Not logged in, integration is disabled" + summaryText = "Logged in to $server\nAuth token expires: $tokenExpiresAt" } + if (vm.serverVersion != null) { + summaryText += "\nServer version: ${vm.serverVersion}" + } + statusPref?.summary = summaryText } } } \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainSetupViewModel.kt b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainSetupViewModel.kt index 8b6fd65e7c..2a5b09ec7e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainSetupViewModel.kt +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/endurain/EndurainSetupViewModel.kt @@ -43,6 +43,26 @@ class EndurainSetupViewModel(application: Application) : AndroidViewModel(applic var localLoginEnabled = false var ssoEnabled = false var pendingMfaUsername: String? = null + var serverVersion: String? = null + + + /** + * Fetch server version + */ + fun fetchServerVersion( + serverUrl: String, + callback: (Boolean) -> Unit + ) { + Thread { + try { + apiClient = EndurainApiClient(serverUrl, tokenManager) + serverVersion = apiClient.fetchVersion() + } catch (e: Exception) { + LOG.error("Fetching server version error", e) + callback(true) + } + }.start() + } /** * Fetch server capabilities to determine available login methods