From dec7c4d260b730c72ac4d792e80c604b8503a426 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 31 Jan 2024 14:21:37 -0300 Subject: [PATCH] [db] return error when trying to add archive repo --- libs/database/src/main/java/org/fdroid/repo/RepoAdder.kt | 6 ++++++ .../database/src/main/java/org/fdroid/repo/RepoUriGetter.kt | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libs/database/src/main/java/org/fdroid/repo/RepoAdder.kt b/libs/database/src/main/java/org/fdroid/repo/RepoAdder.kt index d160620d3..e1e468acc 100644 --- a/libs/database/src/main/java/org/fdroid/repo/RepoAdder.kt +++ b/libs/database/src/main/java/org/fdroid/repo/RepoAdder.kt @@ -37,6 +37,7 @@ import org.fdroid.index.TempFileProvider import org.fdroid.repo.AddRepoError.ErrorType.INVALID_FINGERPRINT import org.fdroid.repo.AddRepoError.ErrorType.INVALID_INDEX import org.fdroid.repo.AddRepoError.ErrorType.IO_ERROR +import org.fdroid.repo.AddRepoError.ErrorType.IS_ARCHIVE_REPO import org.fdroid.repo.AddRepoError.ErrorType.UNKNOWN_SOURCES_DISALLOWED import java.io.IOException import java.net.Proxy @@ -82,6 +83,7 @@ public data class AddRepoError( public enum class ErrorType { UNKNOWN_SOURCES_DISALLOWED, INVALID_FINGERPRINT, + IS_ARCHIVE_REPO, INVALID_INDEX, IO_ERROR, } @@ -141,6 +143,10 @@ internal class RepoAdder( addRepoState.value = AddRepoError(INVALID_INDEX, e) return } + if (nUri.uri.lastPathSegment == "archive") { + addRepoState.value = AddRepoError(IS_ARCHIVE_REPO) + return + } // some plumping to receive the repo preview var receivedRepo: Repository? = null diff --git a/libs/database/src/main/java/org/fdroid/repo/RepoUriGetter.kt b/libs/database/src/main/java/org/fdroid/repo/RepoUriGetter.kt index 511a9d81a..ed8b1854a 100644 --- a/libs/database/src/main/java/org/fdroid/repo/RepoUriGetter.kt +++ b/libs/database/src/main/java/org/fdroid/repo/RepoUriGetter.kt @@ -49,10 +49,12 @@ internal object RepoUriGetter { // do some path auto-adding, if it is missing if (pathSegments.size >= 2 && pathSegments[pathSegments.lastIndex - 1] == "fdroid" && - pathSegments.last() == "repo" + (pathSegments.last() == "repo" || pathSegments.last() == "archive") ) { // path already is /fdroid/repo, use as is - } else if (pathSegments.lastOrNull() == "repo") { + } else if (pathSegments.lastOrNull() == "repo" || + pathSegments.lastOrNull() == "archive" + ) { // path already ends in /repo, use as is } else if (pathSegments.size >= 1 && pathSegments.last() == "fdroid") { // path is /fdroid with missing /repo, so add that