56 lines
1.4 KiB
Kotlin
56 lines
1.4 KiB
Kotlin
package app.ui
|
|
|
|
import androidx.compose.foundation.layout.Column
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
import androidx.compose.foundation.lazy.items
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.collectAsState
|
|
import androidx.compose.ui.Modifier
|
|
import app.git.GitManager
|
|
import app.git.StashStatus
|
|
import app.ui.components.ScrollableLazyColumn
|
|
import app.ui.components.SideMenuEntry
|
|
import app.ui.components.SideMenuSubentry
|
|
import org.eclipse.jgit.revwalk.RevCommit
|
|
|
|
@Composable
|
|
fun Stashes(
|
|
gitManager: GitManager,
|
|
onStashSelected: (commit: RevCommit) -> Unit,
|
|
) {
|
|
val stashStatusState = gitManager.stashStatus.collectAsState()
|
|
val stashStatus = stashStatusState.value
|
|
|
|
val stashList = if (stashStatus is StashStatus.Loaded)
|
|
stashStatus.stashes
|
|
else
|
|
listOf()
|
|
|
|
|
|
Column {
|
|
SideMenuEntry(
|
|
text = "Stashes",
|
|
)
|
|
|
|
ScrollableLazyColumn(modifier = Modifier.fillMaxWidth()) {
|
|
items(items = stashList) { stash ->
|
|
StashRow(
|
|
stash = stash,
|
|
onClick = {
|
|
onStashSelected(stash)
|
|
}
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@Composable
|
|
private fun StashRow(stash: RevCommit, onClick: () -> Unit) {
|
|
SideMenuSubentry(
|
|
text = stash.shortMessage,
|
|
iconResourcePath = "stash.svg",
|
|
onClick = onClick,
|
|
)
|
|
} |