Gitnuro/src/main/kotlin/app/ui/Stashes.kt
2021-12-07 01:09:58 +01:00

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,
)
}