Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,11 @@
return GiteaApi(baseUrl, token)
}

fun getReposPerPage(): Int = myState.REPOS_PER_PAGE
fun setReposPerPage(value: Int) { myState.REPOS_PER_PAGE = value.coerceAtMost(50).coerceAtLeast(1) }
class State {
var REPOS_PER_PAGE = 50
var OPEN_IN_BROWSER_GIST = true

Check notice on line 28 in src/main/kotlin/com/github/leondevlifelog/gitea/services/GiteaSettings.kt

View workflow job for this annotation

GitHub Actions / Inspect code

Property naming convention

Property name `OPEN_IN_BROWSER_GIST` should start with a lowercase letter
var COPY_URL_GIST = false

// "Secret" in UI, "Public" in API. "Private" here to preserve user settings after refactoring
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ class GiteaSettingsConfigurable internal constructor(private val project: Projec
settings::isCloneGitUsingSsh, settings::setCloneGitUsingSsh
)
}
row(GiteaBundle.message("settings.repos.per.page")) {
intTextField(range = 1..50).columns(2).bindIntText({ settings.getReposPerPage() }, {
settings.setReposPerPage(it)
}).gap(RightGap.SMALL)
}
row(GiteaBundle.message("settings.timeout")) {
intTextField(range = 0..60).columns(2).bindIntText({ settings.getConnectionTimeout() / 1000 }, {
settings.setConnectionTimeout(it * 1000)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import com.intellij.openapi.progress.ProgressManager
import com.intellij.ui.SingleSelectionModel
import com.intellij.util.EventDispatcher
import kotlinx.coroutines.runBlocking
import org.gitnex.tea4j.v2.models.Repository
import javax.swing.ListSelectionModel

internal class GiteaCloneDialogRepositoryListLoaderImpl : GiteaCloneDialogRepositoryListLoader, Disposable {
Expand All @@ -48,7 +49,25 @@ internal class GiteaCloneDialogRepositoryListLoaderImpl : GiteaCloneDialogReposi

val userApi = service<GiteaSettings>().getGiteaApi(account.server.toString(), token).getUserApi()
val user = userApi.userGetCurrent().execute().body() ?: return@submitIOTask
val mutableList = userApi.userCurrentListRepos(1, 9999).execute().body() ?: return@submitIOTask

val allRepos = mutableListOf<Repository>()
var page = 1
val perPage = service<GiteaSettings>().getReposPerPage()
while (true) {
indicator.checkCanceled()
val pageResult = userApi.userCurrentListRepos(page, perPage).execute().body() ?: break
if (pageResult.isEmpty()) break
allRepos.addAll(pageResult)
if (pageResult.size < perPage) break
page += 1
}

if (allRepos.isEmpty()) return@submitIOTask
val mutableList = allRepos.sortedWith(compareBy<Repository>({ repo ->
val owner = repo.owner?.login?.lowercase() ?: ""
val userLogin = user.login?.lowercase() ?: ""
if (owner == userLogin) 0 else 1
}, { repo -> repo.owner?.login?.lowercase() ?: "" }, { repo -> repo.name?.lowercase() ?: "" })).toMutableList()
runInEdt {
indicator.checkCanceled()
preservingSelection(listModel, listSelectionModel) {
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/messages/GiteaBundle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ settings.timeout.seconds=seconds
settings.timeout=Timeout
settings.clone.ssh=Using ssh to clone
settings.ssh.port=SSH Clone Port
settings.repos.per.page=List Repositories page size
accounts.default.missing=missing default account
clone.error.load.repositories=error when load repos
accounts.relogin=Re-login
Expand Down
Loading