Refactored tabs management
This commit is contained in:
parent
38867ebb07
commit
d40a027fdc
@ -38,7 +38,6 @@ import com.jetpackduba.gitnuro.ui.AppTab
|
|||||||
import com.jetpackduba.gitnuro.ui.TabsManager
|
import com.jetpackduba.gitnuro.ui.TabsManager
|
||||||
import com.jetpackduba.gitnuro.ui.components.RepositoriesTabPanel
|
import com.jetpackduba.gitnuro.ui.components.RepositoriesTabPanel
|
||||||
import com.jetpackduba.gitnuro.ui.components.TabInformation
|
import com.jetpackduba.gitnuro.ui.components.TabInformation
|
||||||
import com.jetpackduba.gitnuro.ui.components.emptyTabInformation
|
|
||||||
import com.jetpackduba.gitnuro.ui.context_menu.AppPopupMenu
|
import com.jetpackduba.gitnuro.ui.context_menu.AppPopupMenu
|
||||||
import com.jetpackduba.gitnuro.ui.dialogs.settings.ProxyType
|
import com.jetpackduba.gitnuro.ui.dialogs.settings.ProxyType
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -52,8 +51,6 @@ import javax.inject.Inject
|
|||||||
|
|
||||||
private const val TAG = "App"
|
private const val TAG = "App"
|
||||||
|
|
||||||
val LocalTabScope = compositionLocalOf { emptyTabInformation() }
|
|
||||||
|
|
||||||
|
|
||||||
class App {
|
class App {
|
||||||
private val appComponent = DaggerAppComponent.create()
|
private val appComponent = DaggerAppComponent.create()
|
||||||
@ -260,7 +257,7 @@ class App {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
TabContent(currentTab)
|
TabContent(tabs, currentTab)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -314,19 +311,20 @@ class App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun TabContent(currentTab: TabInformation?) {
|
private fun TabContent(tabs: List<TabInformation>, currentTab: TabInformation?) {
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.background(MaterialTheme.colors.background)
|
.background(MaterialTheme.colors.background)
|
||||||
.fillMaxSize(),
|
.fillMaxSize(),
|
||||||
) {
|
) {
|
||||||
if (currentTab != null) {
|
if (currentTab != null) {
|
||||||
val tabScope = arrayOf(LocalTabScope provides currentTab)
|
for (tab in tabs) {
|
||||||
|
if (tab == currentTab) {
|
||||||
CompositionLocalProvider(values = tabScope) {
|
|
||||||
AppTab(currentTab.tabViewModel)
|
AppTab(currentTab.tabViewModel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
package com.jetpackduba.gitnuro.git
|
||||||
|
|
||||||
|
import org.eclipse.jgit.api.Git
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class GetWorkspacePathUseCase @Inject constructor() {
|
||||||
|
operator fun invoke(git: Git): String {
|
||||||
|
return git.repository.workTree.absolutePath
|
||||||
|
}
|
||||||
|
}
|
@ -60,6 +60,7 @@ fun AppTab(
|
|||||||
var showSettingsDialog by remember { mutableStateOf(false) }
|
var showSettingsDialog by remember { mutableStateOf(false) }
|
||||||
if (showSettingsDialog) {
|
if (showSettingsDialog) {
|
||||||
SettingsDialog(
|
SettingsDialog(
|
||||||
|
settingsViewModel = tabViewModel.tabViewModelsProvider.settingsViewModel,
|
||||||
onDismiss = { showSettingsDialog = false }
|
onDismiss = { showSettingsDialog = false }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -68,6 +69,7 @@ fun AppTab(
|
|||||||
|
|
||||||
if (showCloneDialog) {
|
if (showCloneDialog) {
|
||||||
CloneDialog(
|
CloneDialog(
|
||||||
|
cloneViewModel = tabViewModel.tabViewModelsProvider.cloneViewModel,
|
||||||
onClose = {
|
onClose = {
|
||||||
showCloneDialog = false
|
showCloneDialog = false
|
||||||
},
|
},
|
||||||
|
@ -42,7 +42,7 @@ import org.eclipse.jgit.revwalk.RevCommit
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun CommitChanges(
|
fun CommitChanges(
|
||||||
commitChangesViewModel: CommitChangesViewModel = gitnuroViewModel(),
|
commitChangesViewModel: CommitChangesViewModel,
|
||||||
selectedItem: SelectedItem.CommitBasedItem,
|
selectedItem: SelectedItem.CommitBasedItem,
|
||||||
onDiffSelected: (DiffEntry) -> Unit,
|
onDiffSelected: (DiffEntry) -> Unit,
|
||||||
diffSelected: DiffEntryType?,
|
diffSelected: DiffEntryType?,
|
||||||
|
@ -29,7 +29,6 @@ import com.jetpackduba.gitnuro.extensions.handOnHover
|
|||||||
import com.jetpackduba.gitnuro.extensions.ignoreKeyEvents
|
import com.jetpackduba.gitnuro.extensions.ignoreKeyEvents
|
||||||
import com.jetpackduba.gitnuro.git.remote_operations.PullType
|
import com.jetpackduba.gitnuro.git.remote_operations.PullType
|
||||||
import com.jetpackduba.gitnuro.ui.components.tooltip.InstantTooltip
|
import com.jetpackduba.gitnuro.ui.components.tooltip.InstantTooltip
|
||||||
import com.jetpackduba.gitnuro.ui.components.gitnuroViewModel
|
|
||||||
import com.jetpackduba.gitnuro.ui.context_menu.*
|
import com.jetpackduba.gitnuro.ui.context_menu.*
|
||||||
import com.jetpackduba.gitnuro.viewmodels.MenuViewModel
|
import com.jetpackduba.gitnuro.viewmodels.MenuViewModel
|
||||||
|
|
||||||
@ -37,7 +36,7 @@ import com.jetpackduba.gitnuro.viewmodels.MenuViewModel
|
|||||||
@Composable
|
@Composable
|
||||||
fun Menu(
|
fun Menu(
|
||||||
modifier: Modifier,
|
modifier: Modifier,
|
||||||
menuViewModel: MenuViewModel = gitnuroViewModel(),
|
menuViewModel: MenuViewModel,
|
||||||
onCreateBranch: () -> Unit,
|
onCreateBranch: () -> Unit,
|
||||||
onOpenAnotherRepository: () -> Unit,
|
onOpenAnotherRepository: () -> Unit,
|
||||||
onStashWithMessage: () -> Unit,
|
onStashWithMessage: () -> Unit,
|
||||||
|
@ -28,7 +28,6 @@ import com.jetpackduba.gitnuro.theme.onBackgroundSecondary
|
|||||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||||
import com.jetpackduba.gitnuro.ui.components.ScrollableLazyColumn
|
import com.jetpackduba.gitnuro.ui.components.ScrollableLazyColumn
|
||||||
import com.jetpackduba.gitnuro.ui.components.gitnuroViewModel
|
|
||||||
import com.jetpackduba.gitnuro.ui.drag_sorting.VerticalDraggableItem
|
import com.jetpackduba.gitnuro.ui.drag_sorting.VerticalDraggableItem
|
||||||
import com.jetpackduba.gitnuro.ui.drag_sorting.rememberVerticalDragDropState
|
import com.jetpackduba.gitnuro.ui.drag_sorting.rememberVerticalDragDropState
|
||||||
import com.jetpackduba.gitnuro.ui.drag_sorting.verticalDragContainer
|
import com.jetpackduba.gitnuro.ui.drag_sorting.verticalDragContainer
|
||||||
@ -39,7 +38,7 @@ import com.jetpackduba.gitnuro.viewmodels.RebaseLine
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RebaseInteractive(
|
fun RebaseInteractive(
|
||||||
rebaseInteractiveViewModel: RebaseInteractiveViewModel = gitnuroViewModel(),
|
rebaseInteractiveViewModel: RebaseInteractiveViewModel,
|
||||||
) {
|
) {
|
||||||
val rebaseState = rebaseInteractiveViewModel.rebaseState.collectAsState()
|
val rebaseState = rebaseInteractiveViewModel.rebaseState.collectAsState()
|
||||||
val rebaseStateValue = rebaseState.value
|
val rebaseStateValue = rebaseState.value
|
||||||
|
@ -16,7 +16,6 @@ import androidx.compose.ui.input.key.onKeyEvent
|
|||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.jetpackduba.gitnuro.AppConstants
|
import com.jetpackduba.gitnuro.AppConstants
|
||||||
import com.jetpackduba.gitnuro.LocalTabScope
|
|
||||||
import com.jetpackduba.gitnuro.extensions.handMouseClickable
|
import com.jetpackduba.gitnuro.extensions.handMouseClickable
|
||||||
import com.jetpackduba.gitnuro.git.DiffEntryType
|
import com.jetpackduba.gitnuro.git.DiffEntryType
|
||||||
import com.jetpackduba.gitnuro.git.rebase.RebaseInteractiveState
|
import com.jetpackduba.gitnuro.git.rebase.RebaseInteractiveState
|
||||||
@ -24,7 +23,6 @@ import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
|||||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||||
import com.jetpackduba.gitnuro.ui.components.SecondaryButton
|
import com.jetpackduba.gitnuro.ui.components.SecondaryButton
|
||||||
import com.jetpackduba.gitnuro.ui.components.TripleVerticalSplitPanel
|
import com.jetpackduba.gitnuro.ui.components.TripleVerticalSplitPanel
|
||||||
import com.jetpackduba.gitnuro.ui.components.gitnuroDynamicViewModel
|
|
||||||
import com.jetpackduba.gitnuro.ui.dialogs.*
|
import com.jetpackduba.gitnuro.ui.dialogs.*
|
||||||
import com.jetpackduba.gitnuro.ui.diff.Diff
|
import com.jetpackduba.gitnuro.ui.diff.Diff
|
||||||
import com.jetpackduba.gitnuro.ui.log.Log
|
import com.jetpackduba.gitnuro.ui.log.Log
|
||||||
@ -97,7 +95,7 @@ fun RepositoryOpenPage(
|
|||||||
)
|
)
|
||||||
} else if (showSignOffDialog) {
|
} else if (showSignOffDialog) {
|
||||||
SignOffDialog(
|
SignOffDialog(
|
||||||
viewModel = gitnuroDynamicViewModel(),
|
viewModel = tabViewModel.tabViewModelsProvider.signOffDialogViewModel,
|
||||||
onClose = { showSignOffDialog = false },
|
onClose = { showSignOffDialog = false },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -122,9 +120,9 @@ fun RepositoryOpenPage(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
val currentTabInformation = LocalTabScope.current
|
|
||||||
Column(modifier = Modifier.weight(1f)) {
|
Column(modifier = Modifier.weight(1f)) {
|
||||||
Menu(
|
Menu(
|
||||||
|
menuViewModel = tabViewModel.tabViewModelsProvider.menuViewModel,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(
|
.padding(
|
||||||
vertical = 4.dp
|
vertical = 4.dp
|
||||||
@ -133,10 +131,10 @@ fun RepositoryOpenPage(
|
|||||||
onCreateBranch = { showNewBranchDialog = true },
|
onCreateBranch = { showNewBranchDialog = true },
|
||||||
onStashWithMessage = { showStashWithMessageDialog = true },
|
onStashWithMessage = { showStashWithMessageDialog = true },
|
||||||
onOpenAnotherRepository = {
|
onOpenAnotherRepository = {
|
||||||
val repo = tabViewModel.openDirectoryPicker()
|
val repoToOpen = tabViewModel.openDirectoryPicker()
|
||||||
|
|
||||||
if (repo != null) {
|
if (repoToOpen != null) {
|
||||||
tabViewModel.openAnotherRepository(repo, currentTabInformation)
|
tabViewModel.openAnotherRepository(repoToOpen)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onQuickActions = { showQuickActionsDialog = true },
|
onQuickActions = { showQuickActionsDialog = true },
|
||||||
@ -257,10 +255,14 @@ fun MainContentView(
|
|||||||
|
|
||||||
TripleVerticalSplitPanel(
|
TripleVerticalSplitPanel(
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
firstWidth = if(rebaseInteractiveState is RebaseInteractiveState.AwaitingInteraction) 0f else firstWidth,
|
firstWidth = if (rebaseInteractiveState is RebaseInteractiveState.AwaitingInteraction) 0f else firstWidth,
|
||||||
thirdWidth = thirdWidth,
|
thirdWidth = thirdWidth,
|
||||||
first = {
|
first = {
|
||||||
SidePanel()
|
SidePanel(
|
||||||
|
tabViewModel.tabViewModelsProvider.sidePanelViewModel,
|
||||||
|
changeDefaultUpstreamBranchViewModel = { tabViewModel.tabViewModelsProvider.changeDefaultUpstreamBranchViewModel },
|
||||||
|
submoduleDialogViewModel = { tabViewModel.tabViewModelsProvider.submoduleDialogViewModel },
|
||||||
|
)
|
||||||
},
|
},
|
||||||
second = {
|
second = {
|
||||||
Box(
|
Box(
|
||||||
@ -268,7 +270,7 @@ fun MainContentView(
|
|||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
) {
|
) {
|
||||||
if (rebaseInteractiveState == RebaseInteractiveState.AwaitingInteraction && diffSelected == null) {
|
if (rebaseInteractiveState == RebaseInteractiveState.AwaitingInteraction && diffSelected == null) {
|
||||||
RebaseInteractive()
|
RebaseInteractive(tabViewModel.tabViewModelsProvider.rebaseInteractiveViewModel)
|
||||||
} else if (blameState is BlameState.Loaded && !blameState.isMinimized) {
|
} else if (blameState is BlameState.Loaded && !blameState.isMinimized) {
|
||||||
Blame(
|
Blame(
|
||||||
filePath = blameState.filePath,
|
filePath = blameState.filePath,
|
||||||
@ -282,8 +284,10 @@ fun MainContentView(
|
|||||||
when (diffSelected) {
|
when (diffSelected) {
|
||||||
null -> {
|
null -> {
|
||||||
Log(
|
Log(
|
||||||
|
logViewModel = tabViewModel.tabViewModelsProvider.logViewModel,
|
||||||
selectedItem = selectedItem,
|
selectedItem = selectedItem,
|
||||||
repositoryState = repositoryState,
|
repositoryState = repositoryState,
|
||||||
|
changeDefaultUpstreamBranchViewModel = { tabViewModel.tabViewModelsProvider.changeDefaultUpstreamBranchViewModel },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,6 +325,7 @@ fun MainContentView(
|
|||||||
when (selectedItem) {
|
when (selectedItem) {
|
||||||
SelectedItem.UncommittedChanges -> {
|
SelectedItem.UncommittedChanges -> {
|
||||||
UncommittedChanges(
|
UncommittedChanges(
|
||||||
|
statusViewModel = tabViewModel.tabViewModelsProvider.statusViewModel,
|
||||||
selectedEntryType = diffSelected,
|
selectedEntryType = diffSelected,
|
||||||
repositoryState = repositoryState,
|
repositoryState = repositoryState,
|
||||||
onStagedDiffEntrySelected = { diffEntry ->
|
onStagedDiffEntrySelected = { diffEntry ->
|
||||||
@ -350,6 +355,7 @@ fun MainContentView(
|
|||||||
|
|
||||||
is SelectedItem.CommitBasedItem -> {
|
is SelectedItem.CommitBasedItem -> {
|
||||||
CommitChanges(
|
CommitChanges(
|
||||||
|
commitChangesViewModel = tabViewModel.tabViewModelsProvider.commitChangesViewModel,
|
||||||
selectedItem = selectedItem,
|
selectedItem = selectedItem,
|
||||||
diffSelected = diffSelected,
|
diffSelected = diffSelected,
|
||||||
onDiffSelected = { diffEntry ->
|
onDiffSelected = { diffEntry ->
|
||||||
|
@ -24,6 +24,7 @@ import com.jetpackduba.gitnuro.ui.context_menu.*
|
|||||||
import com.jetpackduba.gitnuro.ui.dialogs.AddSubmodulesDialog
|
import com.jetpackduba.gitnuro.ui.dialogs.AddSubmodulesDialog
|
||||||
import com.jetpackduba.gitnuro.ui.dialogs.EditRemotesDialog
|
import com.jetpackduba.gitnuro.ui.dialogs.EditRemotesDialog
|
||||||
import com.jetpackduba.gitnuro.ui.dialogs.SetDefaultUpstreamBranchDialog
|
import com.jetpackduba.gitnuro.ui.dialogs.SetDefaultUpstreamBranchDialog
|
||||||
|
import com.jetpackduba.gitnuro.viewmodels.ChangeDefaultUpstreamBranchViewModel
|
||||||
import com.jetpackduba.gitnuro.viewmodels.sidepanel.*
|
import com.jetpackduba.gitnuro.viewmodels.sidepanel.*
|
||||||
import org.eclipse.jgit.lib.Ref
|
import org.eclipse.jgit.lib.Ref
|
||||||
import org.eclipse.jgit.revwalk.RevCommit
|
import org.eclipse.jgit.revwalk.RevCommit
|
||||||
@ -31,7 +32,9 @@ import org.eclipse.jgit.submodule.SubmoduleStatus
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SidePanel(
|
fun SidePanel(
|
||||||
sidePanelViewModel: SidePanelViewModel = gitnuroViewModel(),
|
sidePanelViewModel: SidePanelViewModel,
|
||||||
|
changeDefaultUpstreamBranchViewModel: () -> ChangeDefaultUpstreamBranchViewModel,
|
||||||
|
submoduleDialogViewModel: () -> SubmoduleDialogViewModel,
|
||||||
branchesViewModel: BranchesViewModel = sidePanelViewModel.branchesViewModel,
|
branchesViewModel: BranchesViewModel = sidePanelViewModel.branchesViewModel,
|
||||||
remotesViewModel: RemotesViewModel = sidePanelViewModel.remotesViewModel,
|
remotesViewModel: RemotesViewModel = sidePanelViewModel.remotesViewModel,
|
||||||
tagsViewModel: TagsViewModel = sidePanelViewModel.tagsViewModel,
|
tagsViewModel: TagsViewModel = sidePanelViewModel.tagsViewModel,
|
||||||
@ -111,7 +114,7 @@ fun SidePanel(
|
|||||||
|
|
||||||
if (branchToChangeUpstream != null) {
|
if (branchToChangeUpstream != null) {
|
||||||
SetDefaultUpstreamBranchDialog(
|
SetDefaultUpstreamBranchDialog(
|
||||||
viewModel = gitnuroDynamicViewModel(),
|
viewModel = changeDefaultUpstreamBranchViewModel(),
|
||||||
branch = branchToChangeUpstream,
|
branch = branchToChangeUpstream,
|
||||||
onClose = { setBranchToChangeUpstream(null) }
|
onClose = { setBranchToChangeUpstream(null) }
|
||||||
)
|
)
|
||||||
@ -119,6 +122,7 @@ fun SidePanel(
|
|||||||
|
|
||||||
if (showEditSubmodulesDialog) {
|
if (showEditSubmodulesDialog) {
|
||||||
AddSubmodulesDialog(
|
AddSubmodulesDialog(
|
||||||
|
viewModel = submoduleDialogViewModel(),
|
||||||
onCancel = {
|
onCancel = {
|
||||||
showEditSubmodulesDialog = false
|
showEditSubmodulesDialog = false
|
||||||
},
|
},
|
||||||
|
@ -47,7 +47,8 @@ class TabsManager @Inject constructor(
|
|||||||
_currentTab.value = latestSelectedTab ?: _tabsFlow.value.first()
|
_currentTab.value = latestSelectedTab ?: _tabsFlow.value.first()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addNewTabFromPath(path: String, selectTab: Boolean, tabToBeReplaced: TabInformation? = null) {
|
fun addNewTabFromPath(path: String, selectTab: Boolean, tabToBeReplacedPath: String? = null) {
|
||||||
|
val tabToBeReplaced = tabsFlow.value.firstOrNull { it.path == tabToBeReplacedPath }
|
||||||
val newTab = newAppTab(
|
val newTab = newAppTab(
|
||||||
tabName = mutableStateOf(""),
|
tabName = mutableStateOf(""),
|
||||||
path = path,
|
path = path,
|
||||||
|
@ -53,7 +53,7 @@ import org.eclipse.jgit.lib.RepositoryState
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun UncommittedChanges(
|
fun UncommittedChanges(
|
||||||
statusViewModel: StatusViewModel = gitnuroViewModel(),
|
statusViewModel: StatusViewModel,
|
||||||
selectedEntryType: DiffEntryType?,
|
selectedEntryType: DiffEntryType?,
|
||||||
repositoryState: RepositoryState,
|
repositoryState: RepositoryState,
|
||||||
onStagedDiffEntrySelected: (StatusEntry?) -> Unit,
|
onStagedDiffEntrySelected: (StatusEntry?) -> Unit,
|
||||||
|
@ -23,7 +23,6 @@ import androidx.compose.ui.text.style.TextOverflow
|
|||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.jetpackduba.gitnuro.AppIcons
|
import com.jetpackduba.gitnuro.AppIcons
|
||||||
import com.jetpackduba.gitnuro.LocalTabScope
|
|
||||||
import com.jetpackduba.gitnuro.di.AppComponent
|
import com.jetpackduba.gitnuro.di.AppComponent
|
||||||
import com.jetpackduba.gitnuro.di.DaggerTabComponent
|
import com.jetpackduba.gitnuro.di.DaggerTabComponent
|
||||||
import com.jetpackduba.gitnuro.di.TabComponent
|
import com.jetpackduba.gitnuro.di.TabComponent
|
||||||
@ -37,7 +36,6 @@ import com.jetpackduba.gitnuro.ui.drag_sorting.HorizontalDraggableItem
|
|||||||
import com.jetpackduba.gitnuro.ui.drag_sorting.horizontalDragContainer
|
import com.jetpackduba.gitnuro.ui.drag_sorting.horizontalDragContainer
|
||||||
import com.jetpackduba.gitnuro.ui.drag_sorting.rememberHorizontalDragDropState
|
import com.jetpackduba.gitnuro.ui.drag_sorting.rememberHorizontalDragDropState
|
||||||
import com.jetpackduba.gitnuro.viewmodels.TabViewModel
|
import com.jetpackduba.gitnuro.viewmodels.TabViewModel
|
||||||
import com.jetpackduba.gitnuro.viewmodels.TabViewModelsHolder
|
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@ -259,9 +257,6 @@ class TabInformation(
|
|||||||
@Inject
|
@Inject
|
||||||
lateinit var appStateManager: AppStateManager
|
lateinit var appStateManager: AppStateManager
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var tabViewModelsHolder: TabViewModelsHolder
|
|
||||||
|
|
||||||
var path = initialPath
|
var path = initialPath
|
||||||
private set
|
private set
|
||||||
|
|
||||||
@ -299,21 +294,3 @@ class TabInformation(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun emptyTabInformation() = TabInformation(mutableStateOf(""), "", {}, null)
|
fun emptyTabInformation() = TabInformation(mutableStateOf(""), "", {}, null)
|
||||||
|
|
||||||
@Composable
|
|
||||||
inline fun <reified T> gitnuroViewModel(): T {
|
|
||||||
val tab = LocalTabScope.current
|
|
||||||
|
|
||||||
return remember(tab) {
|
|
||||||
tab.tabViewModelsHolder.viewModels[T::class] as T
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
inline fun <reified T> gitnuroDynamicViewModel(): T {
|
|
||||||
val tab = LocalTabScope.current
|
|
||||||
|
|
||||||
return remember(tab) {
|
|
||||||
tab.tabViewModelsHolder.dynamicViewModel(T::class) as T
|
|
||||||
}
|
|
||||||
}
|
|
@ -29,12 +29,11 @@ import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
|||||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||||
import com.jetpackduba.gitnuro.ui.components.gitnuroDynamicViewModel
|
|
||||||
import com.jetpackduba.gitnuro.viewmodels.sidepanel.SubmoduleDialogViewModel
|
import com.jetpackduba.gitnuro.viewmodels.sidepanel.SubmoduleDialogViewModel
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AddSubmodulesDialog(
|
fun AddSubmodulesDialog(
|
||||||
viewModel: SubmoduleDialogViewModel = gitnuroDynamicViewModel(),
|
viewModel: SubmoduleDialogViewModel,
|
||||||
onCancel: () -> Unit,
|
onCancel: () -> Unit,
|
||||||
onAccept: (repository: String, directory: String) -> Unit,
|
onAccept: (repository: String, directory: String) -> Unit,
|
||||||
) {
|
) {
|
||||||
|
@ -27,13 +27,12 @@ import com.jetpackduba.gitnuro.theme.outlinedTextFieldColors
|
|||||||
import com.jetpackduba.gitnuro.theme.textButtonColors
|
import com.jetpackduba.gitnuro.theme.textButtonColors
|
||||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||||
import com.jetpackduba.gitnuro.ui.components.gitnuroViewModel
|
|
||||||
import com.jetpackduba.gitnuro.viewmodels.CloneViewModel
|
import com.jetpackduba.gitnuro.viewmodels.CloneViewModel
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun CloneDialog(
|
fun CloneDialog(
|
||||||
cloneViewModel: CloneViewModel = gitnuroViewModel(),
|
cloneViewModel: CloneViewModel,
|
||||||
onClose: () -> Unit,
|
onClose: () -> Unit,
|
||||||
onOpenRepository: (File) -> Unit,
|
onOpenRepository: (File) -> Unit,
|
||||||
) {
|
) {
|
||||||
|
@ -17,6 +17,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.jetpackduba.gitnuro.AppIcons
|
import com.jetpackduba.gitnuro.AppIcons
|
||||||
import com.jetpackduba.gitnuro.extensions.handMouseClickable
|
import com.jetpackduba.gitnuro.extensions.handMouseClickable
|
||||||
|
import com.jetpackduba.gitnuro.extensions.handOnHover
|
||||||
import com.jetpackduba.gitnuro.managers.Error
|
import com.jetpackduba.gitnuro.managers.Error
|
||||||
import com.jetpackduba.gitnuro.repositories.DEFAULT_UI_SCALE
|
import com.jetpackduba.gitnuro.repositories.DEFAULT_UI_SCALE
|
||||||
import com.jetpackduba.gitnuro.theme.*
|
import com.jetpackduba.gitnuro.theme.*
|
||||||
@ -156,7 +157,7 @@ fun Proxy(settingsViewModel: SettingsViewModel) {
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SettingsDialog(
|
fun SettingsDialog(
|
||||||
settingsViewModel: SettingsViewModel = gitnuroViewModel(),
|
settingsViewModel: SettingsViewModel,
|
||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@ -560,6 +561,7 @@ fun <T> SettingDropDown(
|
|||||||
onClick = { showThemeDropdown = true },
|
onClick = { showThemeDropdown = true },
|
||||||
colors = ButtonDefaults.outlinedButtonColors(backgroundColor = MaterialTheme.colors.background),
|
colors = ButtonDefaults.outlinedButtonColors(backgroundColor = MaterialTheme.colors.background),
|
||||||
modifier = Modifier.width(180.dp)
|
modifier = Modifier.width(180.dp)
|
||||||
|
.handOnHover()
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = currentOption.optionName,
|
text = currentOption.optionName,
|
||||||
@ -591,7 +593,6 @@ fun <T> SettingDropDown(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,8 +50,6 @@ import com.jetpackduba.gitnuro.theme.*
|
|||||||
import com.jetpackduba.gitnuro.ui.SelectedItem
|
import com.jetpackduba.gitnuro.ui.SelectedItem
|
||||||
import com.jetpackduba.gitnuro.ui.components.AvatarImage
|
import com.jetpackduba.gitnuro.ui.components.AvatarImage
|
||||||
import com.jetpackduba.gitnuro.ui.components.ScrollableLazyColumn
|
import com.jetpackduba.gitnuro.ui.components.ScrollableLazyColumn
|
||||||
import com.jetpackduba.gitnuro.ui.components.gitnuroDynamicViewModel
|
|
||||||
import com.jetpackduba.gitnuro.ui.components.gitnuroViewModel
|
|
||||||
import com.jetpackduba.gitnuro.ui.components.tooltip.InstantTooltip
|
import com.jetpackduba.gitnuro.ui.components.tooltip.InstantTooltip
|
||||||
import com.jetpackduba.gitnuro.ui.components.tooltip.InstantTooltipPosition
|
import com.jetpackduba.gitnuro.ui.components.tooltip.InstantTooltipPosition
|
||||||
import com.jetpackduba.gitnuro.ui.context_menu.*
|
import com.jetpackduba.gitnuro.ui.context_menu.*
|
||||||
@ -60,6 +58,7 @@ import com.jetpackduba.gitnuro.ui.dialogs.NewTagDialog
|
|||||||
import com.jetpackduba.gitnuro.ui.dialogs.ResetBranchDialog
|
import com.jetpackduba.gitnuro.ui.dialogs.ResetBranchDialog
|
||||||
import com.jetpackduba.gitnuro.ui.dialogs.SetDefaultUpstreamBranchDialog
|
import com.jetpackduba.gitnuro.ui.dialogs.SetDefaultUpstreamBranchDialog
|
||||||
import com.jetpackduba.gitnuro.ui.resizePointerIconEast
|
import com.jetpackduba.gitnuro.ui.resizePointerIconEast
|
||||||
|
import com.jetpackduba.gitnuro.viewmodels.ChangeDefaultUpstreamBranchViewModel
|
||||||
import com.jetpackduba.gitnuro.viewmodels.LogSearch
|
import com.jetpackduba.gitnuro.viewmodels.LogSearch
|
||||||
import com.jetpackduba.gitnuro.viewmodels.LogStatus
|
import com.jetpackduba.gitnuro.viewmodels.LogStatus
|
||||||
import com.jetpackduba.gitnuro.viewmodels.LogViewModel
|
import com.jetpackduba.gitnuro.viewmodels.LogViewModel
|
||||||
@ -67,7 +66,6 @@ import kotlinx.coroutines.launch
|
|||||||
import org.eclipse.jgit.lib.Ref
|
import org.eclipse.jgit.lib.Ref
|
||||||
import org.eclipse.jgit.lib.RepositoryState
|
import org.eclipse.jgit.lib.RepositoryState
|
||||||
import org.eclipse.jgit.revwalk.RevCommit
|
import org.eclipse.jgit.revwalk.RevCommit
|
||||||
import kotlin.math.log
|
|
||||||
|
|
||||||
private val colors = listOf(
|
private val colors = listOf(
|
||||||
Color(0xFF42a5f5),
|
Color(0xFF42a5f5),
|
||||||
@ -99,16 +97,24 @@ private const val LOG_BOTTOM_PADDING = 80
|
|||||||
)
|
)
|
||||||
@Composable
|
@Composable
|
||||||
fun Log(
|
fun Log(
|
||||||
logViewModel: LogViewModel = gitnuroViewModel(),
|
logViewModel: LogViewModel,
|
||||||
selectedItem: SelectedItem,
|
selectedItem: SelectedItem,
|
||||||
repositoryState: RepositoryState,
|
repositoryState: RepositoryState,
|
||||||
|
changeDefaultUpstreamBranchViewModel: () -> ChangeDefaultUpstreamBranchViewModel,
|
||||||
) {
|
) {
|
||||||
val logStatusState = logViewModel.logStatus.collectAsState()
|
val logStatusState = logViewModel.logStatus.collectAsState()
|
||||||
val logStatus = logStatusState.value
|
val logStatus = logStatusState.value
|
||||||
val showLogDialog by logViewModel.logDialog.collectAsState()
|
val showLogDialog by logViewModel.logDialog.collectAsState()
|
||||||
|
|
||||||
when (logStatus) {
|
when (logStatus) {
|
||||||
is LogStatus.Loaded -> LogLoaded(logViewModel, logStatus, showLogDialog, selectedItem, repositoryState)
|
is LogStatus.Loaded -> LogLoaded(
|
||||||
|
logViewModel = logViewModel,
|
||||||
|
logStatus = logStatus,
|
||||||
|
showLogDialog = showLogDialog,
|
||||||
|
selectedItem = selectedItem,
|
||||||
|
repositoryState = repositoryState,
|
||||||
|
changeDefaultUpstreamBranchViewModel = changeDefaultUpstreamBranchViewModel,
|
||||||
|
)
|
||||||
LogStatus.Loading -> LogLoading()
|
LogStatus.Loading -> LogLoading()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,7 +143,8 @@ private fun LogLoaded(
|
|||||||
logStatus: LogStatus.Loaded,
|
logStatus: LogStatus.Loaded,
|
||||||
showLogDialog: LogDialog,
|
showLogDialog: LogDialog,
|
||||||
selectedItem: SelectedItem,
|
selectedItem: SelectedItem,
|
||||||
repositoryState: RepositoryState
|
repositoryState: RepositoryState,
|
||||||
|
changeDefaultUpstreamBranchViewModel: () -> ChangeDefaultUpstreamBranchViewModel,
|
||||||
) {
|
) {
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
val hasUncommittedChanges = logStatus.hasUncommittedChanges
|
val hasUncommittedChanges = logStatus.hasUncommittedChanges
|
||||||
@ -170,6 +177,7 @@ private fun LogLoaded(
|
|||||||
logViewModel,
|
logViewModel,
|
||||||
onResetShowLogDialog = { logViewModel.showDialog(LogDialog.None) },
|
onResetShowLogDialog = { logViewModel.showDialog(LogDialog.None) },
|
||||||
showLogDialog = showLogDialog,
|
showLogDialog = showLogDialog,
|
||||||
|
changeDefaultUpstreamBranchViewModel = changeDefaultUpstreamBranchViewModel,
|
||||||
)
|
)
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
@ -584,6 +592,7 @@ fun CommitsList(
|
|||||||
fun LogDialogs(
|
fun LogDialogs(
|
||||||
logViewModel: LogViewModel,
|
logViewModel: LogViewModel,
|
||||||
onResetShowLogDialog: () -> Unit,
|
onResetShowLogDialog: () -> Unit,
|
||||||
|
changeDefaultUpstreamBranchViewModel: () -> ChangeDefaultUpstreamBranchViewModel,
|
||||||
showLogDialog: LogDialog,
|
showLogDialog: LogDialog,
|
||||||
) {
|
) {
|
||||||
when (showLogDialog) {
|
when (showLogDialog) {
|
||||||
@ -611,7 +620,7 @@ fun LogDialogs(
|
|||||||
|
|
||||||
is LogDialog.ChangeDefaultBranch -> {
|
is LogDialog.ChangeDefaultBranch -> {
|
||||||
SetDefaultUpstreamBranchDialog(
|
SetDefaultUpstreamBranchDialog(
|
||||||
viewModel = gitnuroDynamicViewModel(),
|
viewModel = changeDefaultUpstreamBranchViewModel(),
|
||||||
branch = showLogDialog.ref,
|
branch = showLogDialog.ref,
|
||||||
onClose = { onResetShowLogDialog() },
|
onClose = { onResetShowLogDialog() },
|
||||||
)
|
)
|
||||||
|
@ -24,7 +24,6 @@ import com.jetpackduba.gitnuro.system.OpenUrlInBrowserUseCase
|
|||||||
import com.jetpackduba.gitnuro.system.PickerType
|
import com.jetpackduba.gitnuro.system.PickerType
|
||||||
import com.jetpackduba.gitnuro.ui.SelectedItem
|
import com.jetpackduba.gitnuro.ui.SelectedItem
|
||||||
import com.jetpackduba.gitnuro.ui.TabsManager
|
import com.jetpackduba.gitnuro.ui.TabsManager
|
||||||
import com.jetpackduba.gitnuro.ui.components.TabInformation
|
|
||||||
import com.jetpackduba.gitnuro.updates.Update
|
import com.jetpackduba.gitnuro.updates.Update
|
||||||
import com.jetpackduba.gitnuro.updates.UpdatesRepository
|
import com.jetpackduba.gitnuro.updates.UpdatesRepository
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
@ -54,6 +53,7 @@ class TabViewModel @Inject constructor(
|
|||||||
private val initLocalRepositoryUseCase: InitLocalRepositoryUseCase,
|
private val initLocalRepositoryUseCase: InitLocalRepositoryUseCase,
|
||||||
private val openRepositoryUseCase: OpenRepositoryUseCase,
|
private val openRepositoryUseCase: OpenRepositoryUseCase,
|
||||||
private val openSubmoduleRepositoryUseCase: OpenSubmoduleRepositoryUseCase,
|
private val openSubmoduleRepositoryUseCase: OpenSubmoduleRepositoryUseCase,
|
||||||
|
private val getWorkspacePathUseCase: GetWorkspacePathUseCase,
|
||||||
private val diffViewModelProvider: Provider<DiffViewModel>,
|
private val diffViewModelProvider: Provider<DiffViewModel>,
|
||||||
private val historyViewModelProvider: Provider<HistoryViewModel>,
|
private val historyViewModelProvider: Provider<HistoryViewModel>,
|
||||||
private val authorViewModelProvider: Provider<AuthorViewModel>,
|
private val authorViewModelProvider: Provider<AuthorViewModel>,
|
||||||
@ -70,6 +70,7 @@ class TabViewModel @Inject constructor(
|
|||||||
private val sharedRepositoryStateManager: SharedRepositoryStateManager,
|
private val sharedRepositoryStateManager: SharedRepositoryStateManager,
|
||||||
private val tabsManager: TabsManager,
|
private val tabsManager: TabsManager,
|
||||||
private val tabScope: CoroutineScope,
|
private val tabScope: CoroutineScope,
|
||||||
|
val tabViewModelsProvider: TabViewModelsProvider,
|
||||||
) {
|
) {
|
||||||
var firstPaneWidth = 220f
|
var firstPaneWidth = 220f
|
||||||
var thirdPaneWidth = 360f
|
var thirdPaneWidth = 360f
|
||||||
@ -141,8 +142,11 @@ class TabViewModel @Inject constructor(
|
|||||||
* instead of opening the repo in the same ViewModel we simply create a new tab with a new TabViewModel
|
* instead of opening the repo in the same ViewModel we simply create a new tab with a new TabViewModel
|
||||||
* replacing the current tab
|
* replacing the current tab
|
||||||
*/
|
*/
|
||||||
fun openAnotherRepository(directory: String, current: TabInformation) {
|
fun openAnotherRepository(directory: String) = tabState.runOperation(
|
||||||
tabsManager.addNewTabFromPath(directory, true, current)
|
showError = true,
|
||||||
|
refreshType = RefreshType.NONE,
|
||||||
|
) { git ->
|
||||||
|
tabsManager.addNewTabFromPath(directory, true, getWorkspacePathUseCase(git))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun openRepository(directory: String) {
|
fun openRepository(directory: String) {
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
package com.jetpackduba.gitnuro.viewmodels
|
|
||||||
|
|
||||||
import com.jetpackduba.gitnuro.di.TabScope
|
|
||||||
import com.jetpackduba.gitnuro.viewmodels.sidepanel.SidePanelViewModel
|
|
||||||
import com.jetpackduba.gitnuro.viewmodels.sidepanel.SubmoduleDialogViewModel
|
|
||||||
import javax.inject.Inject
|
|
||||||
import javax.inject.Provider
|
|
||||||
import kotlin.reflect.KClass
|
|
||||||
|
|
||||||
@TabScope
|
|
||||||
class TabViewModelsHolder @Inject constructor(
|
|
||||||
logViewModel: LogViewModel,
|
|
||||||
statusViewModel: StatusViewModel,
|
|
||||||
menuViewModel: MenuViewModel,
|
|
||||||
commitChangesViewModel: CommitChangesViewModel,
|
|
||||||
cloneViewModel: CloneViewModel,
|
|
||||||
settingsViewModel: SettingsViewModel,
|
|
||||||
sidePanelViewModel: SidePanelViewModel,
|
|
||||||
rebaseInteractiveViewModel: RebaseInteractiveViewModel,
|
|
||||||
// Dynamic VM
|
|
||||||
private val diffViewModelProvider: Provider<DiffViewModel>,
|
|
||||||
private val historyViewModelProvider: Provider<HistoryViewModel>,
|
|
||||||
private val authorViewModelProvider: Provider<AuthorViewModel>,
|
|
||||||
private val changeDefaultUpstreamBranchViewModelProvider: Provider<ChangeDefaultUpstreamBranchViewModel>,
|
|
||||||
private val submoduleDialogViewModelProvider: Provider<SubmoduleDialogViewModel>,
|
|
||||||
private val signOffDialogViewModelProvider: Provider<SignOffDialogViewModel>,
|
|
||||||
) {
|
|
||||||
val viewModels = mapOf(
|
|
||||||
logViewModel::class to logViewModel,
|
|
||||||
sidePanelViewModel::class to sidePanelViewModel,
|
|
||||||
statusViewModel::class to statusViewModel,
|
|
||||||
menuViewModel::class to menuViewModel,
|
|
||||||
commitChangesViewModel::class to commitChangesViewModel,
|
|
||||||
cloneViewModel::class to cloneViewModel,
|
|
||||||
settingsViewModel::class to settingsViewModel,
|
|
||||||
rebaseInteractiveViewModel::class to rebaseInteractiveViewModel,
|
|
||||||
)
|
|
||||||
|
|
||||||
// TODO Call this when required
|
|
||||||
fun dynamicViewModel(type: KClass<*>): Any {
|
|
||||||
return when (type) {
|
|
||||||
DiffViewModel::class -> diffViewModelProvider.get()
|
|
||||||
HistoryViewModel::class -> historyViewModelProvider.get()
|
|
||||||
AuthorViewModel::class -> authorViewModelProvider.get()
|
|
||||||
ChangeDefaultUpstreamBranchViewModel::class -> changeDefaultUpstreamBranchViewModelProvider.get()
|
|
||||||
SubmoduleDialogViewModel::class -> submoduleDialogViewModelProvider.get()
|
|
||||||
SignOffDialogViewModel::class -> signOffDialogViewModelProvider.get()
|
|
||||||
else -> throw NotImplementedError("View model provider not implemented")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,55 @@
|
|||||||
|
package com.jetpackduba.gitnuro.viewmodels
|
||||||
|
|
||||||
|
import com.jetpackduba.gitnuro.di.TabScope
|
||||||
|
import com.jetpackduba.gitnuro.viewmodels.sidepanel.SidePanelViewModel
|
||||||
|
import com.jetpackduba.gitnuro.viewmodels.sidepanel.SubmoduleDialogViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
import javax.inject.Provider
|
||||||
|
|
||||||
|
interface ITabViewModelsProvider {
|
||||||
|
val logViewModel: LogViewModel
|
||||||
|
val statusViewModel: StatusViewModel
|
||||||
|
val menuViewModel: MenuViewModel
|
||||||
|
val commitChangesViewModel: CommitChangesViewModel
|
||||||
|
val cloneViewModel: CloneViewModel
|
||||||
|
val settingsViewModel: SettingsViewModel
|
||||||
|
val sidePanelViewModel: SidePanelViewModel
|
||||||
|
val rebaseInteractiveViewModel: RebaseInteractiveViewModel
|
||||||
|
val diffViewModel: DiffViewModel
|
||||||
|
val historyViewModel: HistoryViewModel
|
||||||
|
val authorViewModel: AuthorViewModel
|
||||||
|
val changeDefaultUpstreamBranchViewModel: ChangeDefaultUpstreamBranchViewModel
|
||||||
|
val submoduleDialogViewModel: SubmoduleDialogViewModel
|
||||||
|
val signOffDialogViewModel: SignOffDialogViewModel
|
||||||
|
}
|
||||||
|
|
||||||
|
@TabScope
|
||||||
|
class TabViewModelsProvider @Inject constructor(
|
||||||
|
override val logViewModel: LogViewModel,
|
||||||
|
override val statusViewModel: StatusViewModel,
|
||||||
|
override val menuViewModel: MenuViewModel,
|
||||||
|
override val commitChangesViewModel: CommitChangesViewModel,
|
||||||
|
override val cloneViewModel: CloneViewModel,
|
||||||
|
override val settingsViewModel: SettingsViewModel,
|
||||||
|
override val sidePanelViewModel: SidePanelViewModel,
|
||||||
|
override val rebaseInteractiveViewModel: RebaseInteractiveViewModel,
|
||||||
|
private val diffViewModelProvider: Provider<DiffViewModel>,
|
||||||
|
private val historyViewModelProvider: Provider<HistoryViewModel>,
|
||||||
|
private val authorViewModelProvider: Provider<AuthorViewModel>,
|
||||||
|
private val changeDefaultUpstreamBranchViewModelProvider: Provider<ChangeDefaultUpstreamBranchViewModel>,
|
||||||
|
private val submoduleDialogViewModelProvider: Provider<SubmoduleDialogViewModel>,
|
||||||
|
private val signOffDialogViewModelProvider: Provider<SignOffDialogViewModel>,
|
||||||
|
) : ITabViewModelsProvider {
|
||||||
|
override val diffViewModel: DiffViewModel
|
||||||
|
get() = diffViewModelProvider.get()
|
||||||
|
override val historyViewModel: HistoryViewModel
|
||||||
|
get() = historyViewModelProvider.get()
|
||||||
|
override val authorViewModel: AuthorViewModel
|
||||||
|
get() = authorViewModelProvider.get()
|
||||||
|
override val changeDefaultUpstreamBranchViewModel: ChangeDefaultUpstreamBranchViewModel
|
||||||
|
get() = changeDefaultUpstreamBranchViewModelProvider.get()
|
||||||
|
override val submoduleDialogViewModel: SubmoduleDialogViewModel
|
||||||
|
get() = submoduleDialogViewModelProvider.get()
|
||||||
|
override val signOffDialogViewModel: SignOffDialogViewModel
|
||||||
|
get() = signOffDialogViewModelProvider.get()
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user