diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fa46500..63168cc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,7 +16,7 @@ android { minSdk = 26 targetSdk = 35 versionCode = 1 - versionName = "0.0.1" + versionName = "0.0.2" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/planify/mobile/data/caldav/CalDavDiscovery.kt b/app/src/main/java/com/planify/mobile/data/caldav/CalDavDiscovery.kt index ad83c04..dc7cc7b 100644 --- a/app/src/main/java/com/planify/mobile/data/caldav/CalDavDiscovery.kt +++ b/app/src/main/java/com/planify/mobile/data/caldav/CalDavDiscovery.kt @@ -94,10 +94,20 @@ class CalDavDiscovery @Inject constructor(private val client: CalDavClient) { """.trimIndent() - val resp = client.propfind(principalUrl, credentials, "0", body) - if (!resp.isSuccess) return null - val href = extractHref(resp.body, "calendar-home-set") ?: return null - return resolveUrl(principalUrl, href) + val urlsToTry = mutableListOf(principalUrl) + // Nextcloud alias /principals/username/ doesn't expose calendar-home-set, + // but /principals/users/username/ does — add it as fallback + if (principalUrl.contains("/principals/") && !principalUrl.contains("/principals/users/")) { + urlsToTry.add(principalUrl.replaceFirst("/principals/", "/principals/users/")) + } + + for (url in urlsToTry) { + val resp = client.propfind(url, credentials, "0", body) + if (!resp.isSuccess) continue + val href = extractHref(resp.body, "calendar-home-set") ?: continue + return resolveUrl(url, href) + } + return null } private fun listCalendars(homeUrl: String, credentials: String, username: String, baseUrl: String): List {