diff --git a/app/src/main/java/org/fdroid/fdroid/views/repos/ManageReposActivity.java b/app/src/main/java/org/fdroid/fdroid/views/repos/ManageReposActivity.java index 8d0ffe420..c73413d3e 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/repos/ManageReposActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/repos/ManageReposActivity.java @@ -172,7 +172,7 @@ public class ManageReposActivity extends AppCompatActivity implements RepoAdapte @Override public void onClicked(Repository repo) { - editRepo(repo); + RepoDetailsActivity.launch(this, repo.getRepoId()); } /** @@ -237,14 +237,6 @@ public class ManageReposActivity extends AppCompatActivity implements RepoAdapte Snackbar.make(findViewById(R.id.list), notification, Snackbar.LENGTH_LONG).setTextMaxLines(3).show(); } - private static final int SHOW_REPO_DETAILS = 1; - - private void editRepo(Repository repo) { - Intent intent = new Intent(this, RepoDetailsActivity.class); - intent.putExtra(RepoDetailsActivity.ARG_REPO_ID, repo.getRepoId()); - startActivityForResult(intent, SHOW_REPO_DETAILS); - } - public static String getDisallowInstallUnknownSourcesErrorMessage(Context context) { UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); if (Build.VERSION.SDK_INT >= 29 diff --git a/app/src/main/java/org/fdroid/fdroid/views/repos/RepoDetailsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/repos/RepoDetailsActivity.java index a2addf27f..70745fd88 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/repos/RepoDetailsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/repos/RepoDetailsActivity.java @@ -68,6 +68,12 @@ public class RepoDetailsActivity extends AppCompatActivity { static final String ARG_REPO_ID = "repo_id"; + static void launch(Context context, long repoId) { + Intent intent = new Intent(context, RepoDetailsActivity.class); + intent.putExtra(ARG_REPO_ID, repoId); + context.startActivity(intent); + } + /** * If the repo has been updated at least once, then we will show * all of this info, otherwise they will be hidden. diff --git a/app/src/main/java/org/fdroid/fdroid/views/repos/RepoPreviewScreen.kt b/app/src/main/java/org/fdroid/fdroid/views/repos/RepoPreviewScreen.kt index 0a1833992..7de2eefdb 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/repos/RepoPreviewScreen.kt +++ b/app/src/main/java/org/fdroid/fdroid/views/repos/RepoPreviewScreen.kt @@ -1,6 +1,5 @@ package org.fdroid.fdroid.views.repos -import android.content.Intent import android.content.res.Configuration import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image @@ -120,12 +119,17 @@ fun RepoPreviewHeader( is IsExistingRepository, is IsExistingMirror -> stringResource(R.string.repo_view_repo) else -> error("Unexpected fetch state: ${state.fetchResult}") } - val buttonAction: () -> Unit = when (state.fetchResult) { + val buttonAction: () -> Unit = when (val res = state.fetchResult) { is IsNewRepository, is IsNewRepoAndNewMirror, is IsNewMirror -> onAddRepo - is IsExistingRepository, is IsExistingMirror -> { -> - val intent = Intent(context, RepoDetailsActivity::class.java) - intent.putExtra(RepoDetailsActivity.ARG_REPO_ID, repo.repoId) - context.startActivity(intent) + // unfortunately we need to duplicate these functions + is IsExistingRepository -> { -> + val repoId = res.existingRepoId + RepoDetailsActivity.launch(context, repoId) + } + + is IsExistingMirror -> { -> + val repoId = res.existingRepoId + RepoDetailsActivity.launch(context, repoId) } else -> error("Unexpected fetch state: ${state.fetchResult}") @@ -319,7 +323,7 @@ fun RepoPreviewScreenExistingRepoPreview() { FDroidContent { RepoPreviewScreen( PaddingValues(0.dp), - Fetching(address, repo, emptyList(), IsExistingRepository) + Fetching(address, repo, emptyList(), IsExistingRepository(0L)) ) {} } } @@ -331,7 +335,7 @@ fun RepoPreviewScreenExistingMirrorPreview() { FDroidContent { RepoPreviewScreen( PaddingValues(0.dp), - Fetching("https://mirror.example.org", repo, emptyList(), IsExistingMirror) + Fetching("https://mirror.example.org", repo, emptyList(), IsExistingMirror(0L)) ) {} } } 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 89a07479f..2a3ef013c 100644 --- a/libs/database/src/main/java/org/fdroid/repo/RepoAdder.kt +++ b/libs/database/src/main/java/org/fdroid/repo/RepoAdder.kt @@ -104,8 +104,8 @@ public sealed class FetchResult { public data object IsNewRepoAndNewMirror : FetchResult() public data class IsNewMirror(internal val existingRepoId: Long) : FetchResult() - public data object IsExistingRepository : FetchResult() - public data object IsExistingMirror : FetchResult() + public data class IsExistingRepository(val existingRepoId: Long) : FetchResult() + public data class IsExistingMirror(val existingRepoId: Long) : FetchResult() } @OptIn(DelicateCoroutinesApi::class) @@ -251,14 +251,14 @@ internal class RepoAdder( FetchResult.IsNewRepository } } else if (existingRepo.address.trimEnd('/') == url) { - FetchResult.IsExistingRepository + FetchResult.IsExistingRepository(existingRepo.repoId) } else { val existingMirror = existingRepo.mirrors.find { it.url.trimEnd('/') == url } ?: existingRepo.userMirrors.find { it.trimEnd('/') == url } if (existingMirror == null) { FetchResult.IsNewMirror(existingRepo.repoId) } else { - FetchResult.IsExistingMirror + FetchResult.IsExistingMirror(existingRepo.repoId) } } } diff --git a/libs/database/src/test/java/org/fdroid/repo/RepoAdderTest.kt b/libs/database/src/test/java/org/fdroid/repo/RepoAdderTest.kt index 11a227b34..0fc6d68dd 100644 --- a/libs/database/src/test/java/org/fdroid/repo/RepoAdderTest.kt +++ b/libs/database/src/test/java/org/fdroid/repo/RepoAdderTest.kt @@ -359,8 +359,9 @@ internal class RepoAdderTest { every { repoDao.getRepository(any()) } returns existingRepo val expectedFetchResult = - if (existingRepo.address == url) FetchResult.IsExistingRepository - else FetchResult.IsExistingMirror + if (existingRepo.address == url) + FetchResult.IsExistingRepository(existingRepo.repoId) + else FetchResult.IsExistingMirror(existingRepo.repoId) expectMinRepoPreview(repoName, expectedFetchResult, canAdd = false) { repoAdder.fetchRepository(url = downloadUrl, proxy = null)