diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/AddSubmoduleUseCase.kt b/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/AddSubmoduleUseCase.kt new file mode 100644 index 0000000..235ec12 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/AddSubmoduleUseCase.kt @@ -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() + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/DeInitalizeSubmoduleUseCase.kt b/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/DeInitalizeSubmoduleUseCase.kt new file mode 100644 index 0000000..dbdc209 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/DeInitalizeSubmoduleUseCase.kt @@ -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() + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/SyncSubmoduleUseCase.kt b/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/SyncSubmoduleUseCase.kt new file mode 100644 index 0000000..de27623 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/git/submodules/SyncSubmoduleUseCase.kt @@ -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() + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/Menu.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/Menu.kt index 46b0ae3..790da70 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/Menu.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/Menu.kt @@ -197,17 +197,12 @@ fun ExtendedMenuButton( onClick: () -> Unit, extendedListItems: List, ) { - 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, -// ) } } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/context_menu/SubmoduleContextMenu.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/context_menu/SubmoduleContextMenu.kt index 330dbf8..706e782 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/context_menu/SubmoduleContextMenu.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/context_menu/SubmoduleContextMenu.kt @@ -6,6 +6,7 @@ import org.eclipse.jgit.submodule.SubmoduleStatusType fun submoduleContextMenuItems( submoduleStatus: SubmoduleStatus, onInitializeModule: () -> Unit, + onOpenSubmoduleInTab: () -> Unit, ): List { return mutableListOf().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 + ) + ) + } } } \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/sidepanel/SubmodulesViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/sidepanel/SubmodulesViewModel.kt index 39c3828..d8ebb8f 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/sidepanel/SubmodulesViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/sidepanel/SubmodulesViewModel.kt @@ -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>, val isExpanded: Boolean) \ No newline at end of file