Added basic UI components for submodules support
This commit is contained in:
parent
f9ccf87030
commit
05852a6034
@ -0,0 +1,16 @@
|
||||
package com.jetpackduba.gitnuro.git.submodules
|
||||
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.eclipse.jgit.api.Git
|
||||
import javax.inject.Inject
|
||||
|
||||
class AddSubmoduleUseCase @Inject constructor() {
|
||||
suspend operator fun invoke(git: Git, name: String, path: String, uri: String): Unit = withContext(Dispatchers.IO) {
|
||||
git.submoduleAdd()
|
||||
.setName(name)
|
||||
.setPath(path)
|
||||
.setURI(uri)
|
||||
.call()
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.jetpackduba.gitnuro.git.submodules
|
||||
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.eclipse.jgit.api.Git
|
||||
import javax.inject.Inject
|
||||
|
||||
class DeInitializeSubmoduleUseCase @Inject constructor() {
|
||||
suspend operator fun invoke(git: Git, path: String): Unit = withContext(Dispatchers.IO) {
|
||||
git.submoduleDeinit()
|
||||
.addPath(path)
|
||||
.call()
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.jetpackduba.gitnuro.git.submodules
|
||||
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.eclipse.jgit.api.Git
|
||||
import javax.inject.Inject
|
||||
|
||||
class SyncSubmoduleUseCase @Inject constructor() {
|
||||
suspend operator fun invoke(git: Git, path: String): Unit = withContext(Dispatchers.IO) {
|
||||
git.submoduleSync()
|
||||
.addPath(path)
|
||||
.call()
|
||||
}
|
||||
}
|
@ -197,17 +197,12 @@ fun ExtendedMenuButton(
|
||||
onClick: () -> Unit,
|
||||
extendedListItems: List<ContextMenuElement>,
|
||||
) {
|
||||
var showDropDownMenu by remember { mutableStateOf(false) }
|
||||
|
||||
Row(
|
||||
modifier = modifier
|
||||
.size(width = 64.dp, height = 56.dp)
|
||||
.ignoreKeyEvents()
|
||||
.clip(RoundedCornerShape(4.dp))
|
||||
.background(MaterialTheme.colors.surface)
|
||||
.handMouseClickable {
|
||||
showDropDownMenu = true
|
||||
}
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
@ -250,18 +245,6 @@ fun ExtendedMenuButton(
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
// DropdownMenu(
|
||||
// onDismissRequest = {
|
||||
// showDropDownMenu = false
|
||||
// },
|
||||
// content = {
|
||||
// for (item in extendedListItems) {
|
||||
// DropDownContent(item, onDismiss = { showDropDownMenu = false })
|
||||
// }
|
||||
// },
|
||||
// expanded = showDropDownMenu,
|
||||
// )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import org.eclipse.jgit.submodule.SubmoduleStatusType
|
||||
fun submoduleContextMenuItems(
|
||||
submoduleStatus: SubmoduleStatus,
|
||||
onInitializeModule: () -> Unit,
|
||||
onOpenSubmoduleInTab: () -> Unit,
|
||||
): List<ContextMenuElement> {
|
||||
return mutableListOf<ContextMenuElement>().apply {
|
||||
if (submoduleStatus.type == SubmoduleStatusType.UNINITIALIZED) {
|
||||
@ -16,5 +17,33 @@ fun submoduleContextMenuItems(
|
||||
)
|
||||
)
|
||||
}
|
||||
if (submoduleStatus.type != SubmoduleStatusType.UNINITIALIZED) {
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "Open submodule in new tab",
|
||||
onClick = onOpenSubmoduleInTab
|
||||
)
|
||||
)
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "Sync submodule",
|
||||
onClick = onInitializeModule
|
||||
)
|
||||
)
|
||||
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "Update submodule",
|
||||
onClick = onInitializeModule
|
||||
)
|
||||
)
|
||||
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "DeInitialize submodule",
|
||||
onClick = onInitializeModule
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@ -69,6 +69,10 @@ class SubmodulesViewModel @AssistedInject constructor(
|
||||
suspend fun refresh(git: Git) {
|
||||
loadSubmodules(git)
|
||||
}
|
||||
|
||||
fun onOpenSubmoduleInTab(@Suppress("UNUSED_PARAMETER") path: String) {
|
||||
TODO()
|
||||
}
|
||||
}
|
||||
|
||||
data class SubmodulesState(val submodules: List<Pair<String, SubmoduleStatus>>, val isExpanded: Boolean)
|
Loading…
Reference in New Issue
Block a user