Submodules UI now calls methods to sync, update and deinit
This commit is contained in:
parent
5359f58a67
commit
8e14696bdf
@ -320,8 +320,11 @@ fun LazyListScope.submodules(
|
||||
if (isExpanded) {
|
||||
items(submodules, key = { it.first }) { submodule ->
|
||||
Submodule(
|
||||
submodule,
|
||||
onInitializeModule = { submodulesViewModel.initializeSubmodule(submodule.first) },
|
||||
submodule = submodule,
|
||||
onInitializeSubmodule = { submodulesViewModel.initializeSubmodule(submodule.first) },
|
||||
onDeinitializeSubmodule = { submodulesViewModel.onDeinitializeSubmodule(submodule.first) },
|
||||
onSyncSubmodule = { submodulesViewModel.onSyncSubmodule(submodule.first) },
|
||||
onUpdateSubmodule = { submodulesViewModel.onUpdateSubmodule(submodule.first) },
|
||||
onOpenSubmoduleInTab = { submodulesViewModel.onOpenSubmoduleInTab(submodule.first) },
|
||||
)
|
||||
}
|
||||
@ -463,24 +466,30 @@ private fun Stash(
|
||||
|
||||
@Composable
|
||||
private fun Submodule(
|
||||
submodulePair: Pair<String, SubmoduleStatus>,
|
||||
onInitializeModule: () -> Unit,
|
||||
submodule: Pair<String, SubmoduleStatus>,
|
||||
onInitializeSubmodule: () -> Unit,
|
||||
onDeinitializeSubmodule: () -> Unit,
|
||||
onSyncSubmodule: () -> Unit,
|
||||
onUpdateSubmodule: () -> Unit,
|
||||
onOpenSubmoduleInTab: () -> Unit,
|
||||
) {
|
||||
ContextMenu(
|
||||
items = {
|
||||
submoduleContextMenuItems(
|
||||
submodulePair.second,
|
||||
onInitializeModule = onInitializeModule,
|
||||
submodule.second,
|
||||
onInitializeSubmodule = onInitializeSubmodule,
|
||||
onDeinitializeSubmodule = onDeinitializeSubmodule,
|
||||
onSyncSubmodule = onSyncSubmodule,
|
||||
onUpdateSubmodule = onUpdateSubmodule,
|
||||
onOpenSubmoduleInTab = onOpenSubmoduleInTab,
|
||||
)
|
||||
}
|
||||
) {
|
||||
SideMenuSubentry(
|
||||
text = submodulePair.first,
|
||||
text = submodule.first,
|
||||
iconResourcePath = AppIcons.TOPIC,
|
||||
) {
|
||||
val stateName = submodulePair.second.type.toString()
|
||||
val stateName = submodule.second.type.toString()
|
||||
Tooltip(stateName) {
|
||||
Text(
|
||||
text = stateName.first().toString(),
|
||||
|
@ -5,7 +5,10 @@ import org.eclipse.jgit.submodule.SubmoduleStatusType
|
||||
|
||||
fun submoduleContextMenuItems(
|
||||
submoduleStatus: SubmoduleStatus,
|
||||
onInitializeModule: () -> Unit,
|
||||
onInitializeSubmodule: () -> Unit,
|
||||
onDeinitializeSubmodule: () -> Unit,
|
||||
onSyncSubmodule: () -> Unit,
|
||||
onUpdateSubmodule: () -> Unit,
|
||||
onOpenSubmoduleInTab: () -> Unit,
|
||||
): List<ContextMenuElement> {
|
||||
return mutableListOf<ContextMenuElement>().apply {
|
||||
@ -13,7 +16,7 @@ fun submoduleContextMenuItems(
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "Initialize submodule",
|
||||
onClick = onInitializeModule
|
||||
onClick = onInitializeSubmodule,
|
||||
)
|
||||
)
|
||||
}
|
||||
@ -21,27 +24,27 @@ fun submoduleContextMenuItems(
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "Open submodule in new tab",
|
||||
onClick = onOpenSubmoduleInTab
|
||||
onClick = onOpenSubmoduleInTab,
|
||||
)
|
||||
)
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "Sync submodule",
|
||||
onClick = onInitializeModule
|
||||
onClick = onSyncSubmodule,
|
||||
)
|
||||
)
|
||||
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "Update submodule",
|
||||
onClick = onInitializeModule
|
||||
onClick = onUpdateSubmodule,
|
||||
)
|
||||
)
|
||||
|
||||
add(
|
||||
ContextMenuElement.ContextTextEntry(
|
||||
label = "DeInitialize submodule",
|
||||
onClick = onInitializeModule
|
||||
onClick = onDeinitializeSubmodule,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -3,9 +3,7 @@ package com.jetpackduba.gitnuro.viewmodels.sidepanel
|
||||
import com.jetpackduba.gitnuro.extensions.lowercaseContains
|
||||
import com.jetpackduba.gitnuro.git.RefreshType
|
||||
import com.jetpackduba.gitnuro.git.TabState
|
||||
import com.jetpackduba.gitnuro.git.submodules.GetSubmodulesUseCase
|
||||
import com.jetpackduba.gitnuro.git.submodules.InitializeSubmoduleUseCase
|
||||
import com.jetpackduba.gitnuro.git.submodules.UpdateSubmoduleUseCase
|
||||
import com.jetpackduba.gitnuro.git.submodules.*
|
||||
import com.jetpackduba.gitnuro.ui.TabsManager
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
@ -20,6 +18,8 @@ class SubmodulesViewModel @AssistedInject constructor(
|
||||
private val getSubmodulesUseCase: GetSubmodulesUseCase,
|
||||
private val initializeSubmoduleUseCase: InitializeSubmoduleUseCase,
|
||||
private val updateSubmoduleUseCase: UpdateSubmoduleUseCase,
|
||||
private val syncSubmoduleUseCase: SyncSubmoduleUseCase,
|
||||
private val deInitializeSubmoduleUseCase: DeInitializeSubmoduleUseCase,
|
||||
private val tabScope: CoroutineScope,
|
||||
private val tabsManager: TabsManager,
|
||||
@Assisted
|
||||
@ -67,6 +67,29 @@ class SubmodulesViewModel @AssistedInject constructor(
|
||||
fun onOpenSubmoduleInTab(path: String) = tabState.runOperation(refreshType = RefreshType.NONE) { git ->
|
||||
tabsManager.addNewTabFromPath("${git.repository.directory.parent}/$path", true)
|
||||
}
|
||||
|
||||
fun onDeinitializeSubmodule(path: String) = tabState.safeProcessing(
|
||||
refreshType = RefreshType.SUBMODULES,
|
||||
title = "Deinitializing submodule $path",
|
||||
){ git ->
|
||||
deInitializeSubmoduleUseCase(git, path)
|
||||
}
|
||||
|
||||
fun onSyncSubmodule(path: String) = tabState.safeProcessing(
|
||||
refreshType = RefreshType.SUBMODULES,
|
||||
title = "Syncing submodule $path",
|
||||
subtitle = "Please wait until synchronization has finished",
|
||||
){ git ->
|
||||
syncSubmoduleUseCase(git, path)
|
||||
}
|
||||
|
||||
fun onUpdateSubmodule(path: String) = tabState.safeProcessing(
|
||||
refreshType = RefreshType.SUBMODULES,
|
||||
title = "Updating submodule $path",
|
||||
subtitle = "Please wait until update has finished",
|
||||
){ git ->
|
||||
updateSubmoduleUseCase(git, path)
|
||||
}
|
||||
}
|
||||
|
||||
data class SubmodulesState(val submodules: List<Pair<String, SubmoduleStatus>>, val isExpanded: Boolean)
|
Loading…
Reference in New Issue
Block a user