Gitnuro/src/main/kotlin/app/ui/context_menu/BranchContextMenu.kt
2022-06-11 23:54:43 +02:00

77 lines
2.4 KiB
Kotlin

package app.ui.context_menu
import androidx.compose.foundation.ContextMenuItem
import androidx.compose.foundation.ExperimentalFoundationApi
import app.extensions.isHead
import app.extensions.simpleLogName
import org.eclipse.jgit.lib.Ref
@OptIn(ExperimentalFoundationApi::class)
fun branchContextMenuItems(
branch: Ref,
isCurrentBranch: Boolean,
currentBranch: Ref?,
isLocal: Boolean,
onCheckoutBranch: () -> Unit,
onMergeBranch: () -> Unit,
onRebaseBranch: () -> Unit,
onDeleteBranch: () -> Unit,
onDeleteRemoteBranch: () -> Unit = {},
onPushToRemoteBranch: () -> Unit,
onPullFromRemoteBranch: () -> Unit,
): List<ContextMenuItem> {
return mutableListOf<ContextMenuItem>().apply {
if (!isCurrentBranch) {
add(
ContextMenuItem(
label = "Checkout branch",
onClick = onCheckoutBranch
)
)
if (currentBranch != null && !currentBranch.isHead) {
add(
ContextMenuItem(
label = "Merge branch",
onClick = onMergeBranch
)
)
add(
ContextMenuItem(
label = "Rebase branch",
onClick = onRebaseBranch
)
)
}
}
if (isLocal && !isCurrentBranch) {
add(
ContextMenuItem(
label = "Delete branch",
onClick = onDeleteBranch
)
)
}
if (!isLocal && currentBranch != null && !currentBranch.isHead) {
add(
ContextMenuItem(
label = "Push ${currentBranch.simpleLogName} to ${branch.simpleLogName}",
onClick = onPushToRemoteBranch
)
)
add(
ContextMenuItem(
label = "Pull ${branch.simpleLogName} to ${currentBranch.simpleLogName}",
onClick = onPullFromRemoteBranch
)
)
}
if (!isLocal) {
add(
ContextMenuItem(
label = "Delete remote branch",
onClick = onDeleteRemoteBranch
),
)
}
}
}