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) {
|
if (isExpanded) {
|
||||||
items(submodules, key = { it.first }) { submodule ->
|
items(submodules, key = { it.first }) { submodule ->
|
||||||
Submodule(
|
Submodule(
|
||||||
submodule,
|
submodule = submodule,
|
||||||
onInitializeModule = { submodulesViewModel.initializeSubmodule(submodule.first) },
|
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) },
|
onOpenSubmoduleInTab = { submodulesViewModel.onOpenSubmoduleInTab(submodule.first) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -463,24 +466,30 @@ private fun Stash(
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun Submodule(
|
private fun Submodule(
|
||||||
submodulePair: Pair<String, SubmoduleStatus>,
|
submodule: Pair<String, SubmoduleStatus>,
|
||||||
onInitializeModule: () -> Unit,
|
onInitializeSubmodule: () -> Unit,
|
||||||
|
onDeinitializeSubmodule: () -> Unit,
|
||||||
|
onSyncSubmodule: () -> Unit,
|
||||||
|
onUpdateSubmodule: () -> Unit,
|
||||||
onOpenSubmoduleInTab: () -> Unit,
|
onOpenSubmoduleInTab: () -> Unit,
|
||||||
) {
|
) {
|
||||||
ContextMenu(
|
ContextMenu(
|
||||||
items = {
|
items = {
|
||||||
submoduleContextMenuItems(
|
submoduleContextMenuItems(
|
||||||
submodulePair.second,
|
submodule.second,
|
||||||
onInitializeModule = onInitializeModule,
|
onInitializeSubmodule = onInitializeSubmodule,
|
||||||
|
onDeinitializeSubmodule = onDeinitializeSubmodule,
|
||||||
|
onSyncSubmodule = onSyncSubmodule,
|
||||||
|
onUpdateSubmodule = onUpdateSubmodule,
|
||||||
onOpenSubmoduleInTab = onOpenSubmoduleInTab,
|
onOpenSubmoduleInTab = onOpenSubmoduleInTab,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
SideMenuSubentry(
|
SideMenuSubentry(
|
||||||
text = submodulePair.first,
|
text = submodule.first,
|
||||||
iconResourcePath = AppIcons.TOPIC,
|
iconResourcePath = AppIcons.TOPIC,
|
||||||
) {
|
) {
|
||||||
val stateName = submodulePair.second.type.toString()
|
val stateName = submodule.second.type.toString()
|
||||||
Tooltip(stateName) {
|
Tooltip(stateName) {
|
||||||
Text(
|
Text(
|
||||||
text = stateName.first().toString(),
|
text = stateName.first().toString(),
|
||||||
|
@ -5,7 +5,10 @@ import org.eclipse.jgit.submodule.SubmoduleStatusType
|
|||||||
|
|
||||||
fun submoduleContextMenuItems(
|
fun submoduleContextMenuItems(
|
||||||
submoduleStatus: SubmoduleStatus,
|
submoduleStatus: SubmoduleStatus,
|
||||||
onInitializeModule: () -> Unit,
|
onInitializeSubmodule: () -> Unit,
|
||||||
|
onDeinitializeSubmodule: () -> Unit,
|
||||||
|
onSyncSubmodule: () -> Unit,
|
||||||
|
onUpdateSubmodule: () -> Unit,
|
||||||
onOpenSubmoduleInTab: () -> Unit,
|
onOpenSubmoduleInTab: () -> Unit,
|
||||||
): List<ContextMenuElement> {
|
): List<ContextMenuElement> {
|
||||||
return mutableListOf<ContextMenuElement>().apply {
|
return mutableListOf<ContextMenuElement>().apply {
|
||||||
@ -13,7 +16,7 @@ fun submoduleContextMenuItems(
|
|||||||
add(
|
add(
|
||||||
ContextMenuElement.ContextTextEntry(
|
ContextMenuElement.ContextTextEntry(
|
||||||
label = "Initialize submodule",
|
label = "Initialize submodule",
|
||||||
onClick = onInitializeModule
|
onClick = onInitializeSubmodule,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -21,27 +24,27 @@ fun submoduleContextMenuItems(
|
|||||||
add(
|
add(
|
||||||
ContextMenuElement.ContextTextEntry(
|
ContextMenuElement.ContextTextEntry(
|
||||||
label = "Open submodule in new tab",
|
label = "Open submodule in new tab",
|
||||||
onClick = onOpenSubmoduleInTab
|
onClick = onOpenSubmoduleInTab,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
add(
|
add(
|
||||||
ContextMenuElement.ContextTextEntry(
|
ContextMenuElement.ContextTextEntry(
|
||||||
label = "Sync submodule",
|
label = "Sync submodule",
|
||||||
onClick = onInitializeModule
|
onClick = onSyncSubmodule,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
add(
|
add(
|
||||||
ContextMenuElement.ContextTextEntry(
|
ContextMenuElement.ContextTextEntry(
|
||||||
label = "Update submodule",
|
label = "Update submodule",
|
||||||
onClick = onInitializeModule
|
onClick = onUpdateSubmodule,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
add(
|
add(
|
||||||
ContextMenuElement.ContextTextEntry(
|
ContextMenuElement.ContextTextEntry(
|
||||||
label = "DeInitialize submodule",
|
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.extensions.lowercaseContains
|
||||||
import com.jetpackduba.gitnuro.git.RefreshType
|
import com.jetpackduba.gitnuro.git.RefreshType
|
||||||
import com.jetpackduba.gitnuro.git.TabState
|
import com.jetpackduba.gitnuro.git.TabState
|
||||||
import com.jetpackduba.gitnuro.git.submodules.GetSubmodulesUseCase
|
import com.jetpackduba.gitnuro.git.submodules.*
|
||||||
import com.jetpackduba.gitnuro.git.submodules.InitializeSubmoduleUseCase
|
|
||||||
import com.jetpackduba.gitnuro.git.submodules.UpdateSubmoduleUseCase
|
|
||||||
import com.jetpackduba.gitnuro.ui.TabsManager
|
import com.jetpackduba.gitnuro.ui.TabsManager
|
||||||
import dagger.assisted.Assisted
|
import dagger.assisted.Assisted
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
@ -20,6 +18,8 @@ class SubmodulesViewModel @AssistedInject constructor(
|
|||||||
private val getSubmodulesUseCase: GetSubmodulesUseCase,
|
private val getSubmodulesUseCase: GetSubmodulesUseCase,
|
||||||
private val initializeSubmoduleUseCase: InitializeSubmoduleUseCase,
|
private val initializeSubmoduleUseCase: InitializeSubmoduleUseCase,
|
||||||
private val updateSubmoduleUseCase: UpdateSubmoduleUseCase,
|
private val updateSubmoduleUseCase: UpdateSubmoduleUseCase,
|
||||||
|
private val syncSubmoduleUseCase: SyncSubmoduleUseCase,
|
||||||
|
private val deInitializeSubmoduleUseCase: DeInitializeSubmoduleUseCase,
|
||||||
private val tabScope: CoroutineScope,
|
private val tabScope: CoroutineScope,
|
||||||
private val tabsManager: TabsManager,
|
private val tabsManager: TabsManager,
|
||||||
@Assisted
|
@Assisted
|
||||||
@ -67,6 +67,29 @@ class SubmodulesViewModel @AssistedInject constructor(
|
|||||||
fun onOpenSubmoduleInTab(path: String) = tabState.runOperation(refreshType = RefreshType.NONE) { git ->
|
fun onOpenSubmoduleInTab(path: String) = tabState.runOperation(refreshType = RefreshType.NONE) { git ->
|
||||||
tabsManager.addNewTabFromPath("${git.repository.directory.parent}/$path", true)
|
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)
|
data class SubmodulesState(val submodules: List<Pair<String, SubmoduleStatus>>, val isExpanded: Boolean)
|
Loading…
Reference in New Issue
Block a user