diff --git a/src/main/kotlin/app/App.kt b/src/main/kotlin/app/App.kt index b72f62f..184859f 100644 --- a/src/main/kotlin/app/App.kt +++ b/src/main/kotlin/app/App.kt @@ -68,7 +68,7 @@ class Main { var showSettingsDialog by remember { mutableStateOf(false) } AppTheme(theme = theme) { - Box (modifier = Modifier.background(MaterialTheme.colors.background)) { + Box(modifier = Modifier.background(MaterialTheme.colors.background)) { AppTabs( onOpenSettings = { showSettingsDialog = true @@ -76,7 +76,7 @@ class Main { ) } - if(showSettingsDialog) { + if (showSettingsDialog) { SettingsDialog( appPreferences = appPreferences, onDismiss = { showSettingsDialog = false } @@ -88,8 +88,6 @@ class Main { } - - @Composable fun AppTabs( onOpenSettings: () -> Unit, diff --git a/src/main/kotlin/app/AppStateManager.kt b/src/main/kotlin/app/AppStateManager.kt index a1be9a6..0f141c6 100644 --- a/src/main/kotlin/app/AppStateManager.kt +++ b/src/main/kotlin/app/AppStateManager.kt @@ -69,7 +69,7 @@ class AppStateManager @Inject constructor( } val repositoriesPathsSaved = appPreferences.latestOpenedRepositoriesPath - if(repositoriesPathsSaved.isNotEmpty()) { + if (repositoriesPathsSaved.isNotEmpty()) { val repositories = Json.decodeFromString>(repositoriesPathsSaved) _latestOpenedRepositoriesPaths.addAll(repositories) } diff --git a/src/main/kotlin/app/CommitNode.kt b/src/main/kotlin/app/CommitNode.kt index 2a382b3..0cb5a81 100644 --- a/src/main/kotlin/app/CommitNode.kt +++ b/src/main/kotlin/app/CommitNode.kt @@ -6,7 +6,7 @@ class CommitNode(val revCommit: RevCommit) { private val children = mutableListOf() fun addChild(node: CommitNode) { - if(children.find { it.revCommit.id == node.revCommit.id } == null) { + if (children.find { it.revCommit.id == node.revCommit.id } == null) { children.add(node) } } diff --git a/src/main/kotlin/app/ErrorsManager.kt b/src/main/kotlin/app/ErrorsManager.kt index f3dede4..514bc29 100644 --- a/src/main/kotlin/app/ErrorsManager.kt +++ b/src/main/kotlin/app/ErrorsManager.kt @@ -31,4 +31,4 @@ class ErrorsManager @Inject constructor() { data class Error(val date: Long, val exception: Exception, val message: String) -fun newErrorNow(exception: Exception,message: String) = Error(System.currentTimeMillis(), exception, message) \ No newline at end of file +fun newErrorNow(exception: Exception, message: String) = Error(System.currentTimeMillis(), exception, message) \ No newline at end of file diff --git a/src/main/kotlin/app/credentials/GRemoteSession.kt b/src/main/kotlin/app/credentials/GRemoteSession.kt index cd33cce..ef38ffe 100644 --- a/src/main/kotlin/app/credentials/GRemoteSession.kt +++ b/src/main/kotlin/app/credentials/GRemoteSession.kt @@ -71,7 +71,7 @@ class GRemoteSession @Inject constructor( credentials = credentialsStateManager.currentCredentialsState } - if(credentials !is CredentialsState.SshCredentialsAccepted) + if (credentials !is CredentialsState.SshCredentialsAccepted) null else credentials.password diff --git a/src/main/kotlin/app/credentials/HttpCredentialsProvider.kt b/src/main/kotlin/app/credentials/HttpCredentialsProvider.kt index d53bf3d..7feaa86 100644 --- a/src/main/kotlin/app/credentials/HttpCredentialsProvider.kt +++ b/src/main/kotlin/app/credentials/HttpCredentialsProvider.kt @@ -30,12 +30,13 @@ class HttpCredentialsProvider : CredentialsProvider() { credentials = credentialsStateManager.currentCredentialsState } - if(credentials is CredentialsState.HttpCredentialsAccepted) { + if (credentials is CredentialsState.HttpCredentialsAccepted) { val userItem = items.firstOrNull { it?.promptText == "Username" } val passwordItem = items.firstOrNull { it?.promptText == "Password" } - if(userItem is CredentialItem.Username && - passwordItem is CredentialItem.Password) { + if (userItem is CredentialItem.Username && + passwordItem is CredentialItem.Password + ) { userItem.value = credentials.user passwordItem.value = credentials.password.toCharArray() diff --git a/src/main/kotlin/app/extensions/DateExtensions.kt b/src/main/kotlin/app/extensions/DateExtensions.kt index 5c1852f..a8b1359 100644 --- a/src/main/kotlin/app/extensions/DateExtensions.kt +++ b/src/main/kotlin/app/extensions/DateExtensions.kt @@ -15,11 +15,12 @@ fun Date.toSmartSystemString(): String { val currentTime = LocalDate.now(zoneId) var result = sdf.format(this) - if(localDate.year == currentTime.year && - localDate.month == currentTime.month) { - if(localDate.dayOfMonth == currentTime.dayOfMonth) + if (localDate.year == currentTime.year && + localDate.month == currentTime.month + ) { + if (localDate.dayOfMonth == currentTime.dayOfMonth) result = "Today" - else if(localDate.dayOfMonth == currentTime.dayOfMonth - 1) + else if (localDate.dayOfMonth == currentTime.dayOfMonth - 1) result = "Yesterday" } diff --git a/src/main/kotlin/app/extensions/DiffEntryExtensions.kt b/src/main/kotlin/app/extensions/DiffEntryExtensions.kt index 76d0023..8a071a3 100644 --- a/src/main/kotlin/app/extensions/DiffEntryExtensions.kt +++ b/src/main/kotlin/app/extensions/DiffEntryExtensions.kt @@ -9,9 +9,9 @@ import androidx.compose.material.icons.filled.Refresh import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector -import org.eclipse.jgit.diff.DiffEntry import app.theme.addFile import app.theme.modifyFile +import org.eclipse.jgit.diff.DiffEntry val DiffEntry.filePath: String get() { diff --git a/src/main/kotlin/app/extensions/RefExtensions.kt b/src/main/kotlin/app/extensions/RefExtensions.kt index 7db3244..628bcaa 100644 --- a/src/main/kotlin/app/extensions/RefExtensions.kt +++ b/src/main/kotlin/app/extensions/RefExtensions.kt @@ -56,10 +56,10 @@ val Ref.isRemote: Boolean fun Ref.isSameBranch(otherRef: Ref?): Boolean { - if(this.name == "HEAD" && otherRef == null) + if (this.name == "HEAD" && otherRef == null) return true - if(otherRef == null) + if (otherRef == null) return false return this.name == otherRef.name diff --git a/src/main/kotlin/app/extensions/RevCommitExtensions.kt b/src/main/kotlin/app/extensions/RevCommitExtensions.kt index 6514bf8..00c88d5 100644 --- a/src/main/kotlin/app/extensions/RevCommitExtensions.kt +++ b/src/main/kotlin/app/extensions/RevCommitExtensions.kt @@ -4,7 +4,7 @@ import org.eclipse.jgit.lib.Repository import org.eclipse.jgit.revwalk.RevCommit fun RevCommit.fullData(repository: Repository): RevCommit? { - return if(this.tree == null) + return if (this.tree == null) repository.parseCommit(this) else this diff --git a/src/main/kotlin/app/extensions/StringExtensions.kt b/src/main/kotlin/app/extensions/StringExtensions.kt index 364cade..0040466 100644 --- a/src/main/kotlin/app/extensions/StringExtensions.kt +++ b/src/main/kotlin/app/extensions/StringExtensions.kt @@ -4,28 +4,28 @@ import java.math.BigInteger import java.security.MessageDigest val String.md5: String -get() { - val md = MessageDigest.getInstance("MD5") - return BigInteger(1, md.digest(this.toByteArray())).toString(16).padStart(32, '0') -} + get() { + val md = MessageDigest.getInstance("MD5") + return BigInteger(1, md.digest(this.toByteArray())).toString(16).padStart(32, '0') + } val String.dirName: String -get() { - val parts = this.split("/") + get() { + val parts = this.split("/") - return if(parts.isNotEmpty()) - parts.last() - else - this -} + return if (parts.isNotEmpty()) + parts.last() + else + this + } val String.dirPath: String -get() { - val parts = this.split("/").toMutableList() + get() { + val parts = this.split("/").toMutableList() - return if(parts.count() > 1) { - parts.removeLast() - parts.joinToString("/") - } else - this -} \ No newline at end of file + return if (parts.count() > 1) { + parts.removeLast() + parts.joinToString("/") + } else + this + } \ No newline at end of file diff --git a/src/main/kotlin/app/git/DiffEntryType.kt b/src/main/kotlin/app/git/DiffEntryType.kt index 581fd97..1cb9aae 100644 --- a/src/main/kotlin/app/git/DiffEntryType.kt +++ b/src/main/kotlin/app/git/DiffEntryType.kt @@ -3,7 +3,7 @@ package app.git import org.eclipse.jgit.diff.DiffEntry sealed class DiffEntryType(val diffEntry: DiffEntry) { - class CommitDiff(diffEntry: DiffEntry): DiffEntryType(diffEntry) - class UnstagedDiff(diffEntry: DiffEntry): DiffEntryType(diffEntry) - class StagedDiff(diffEntry: DiffEntry): DiffEntryType(diffEntry) + class CommitDiff(diffEntry: DiffEntry) : DiffEntryType(diffEntry) + class UnstagedDiff(diffEntry: DiffEntry) : DiffEntryType(diffEntry) + class StagedDiff(diffEntry: DiffEntry) : DiffEntryType(diffEntry) } diff --git a/src/main/kotlin/app/git/DiffManager.kt b/src/main/kotlin/app/git/DiffManager.kt index e747a04..44399f8 100644 --- a/src/main/kotlin/app/git/DiffManager.kt +++ b/src/main/kotlin/app/git/DiffManager.kt @@ -55,7 +55,6 @@ class DiffManager @Inject constructor() { } - suspend fun commitDiffEntries(git: Git, commit: RevCommit): List = withContext(Dispatchers.IO) { val fullCommit = commit.fullData(git.repository) ?: return@withContext emptyList() diff --git a/src/main/kotlin/app/git/FileChangesWatcher.kt b/src/main/kotlin/app/git/FileChangesWatcher.kt index 847529f..316c0dc 100644 --- a/src/main/kotlin/app/git/FileChangesWatcher.kt +++ b/src/main/kotlin/app/git/FileChangesWatcher.kt @@ -27,7 +27,7 @@ class FileChangesWatcher @Inject constructor() { override fun preVisitDirectory(dir: Path, attrs: BasicFileAttributes): FileVisitResult { val isIgnoredDirectory = ignoredDirsPath.any { "$pathStr/$it" == dir.toString() } - return if(!isIgnoredDirectory) { + return if (!isIgnoredDirectory) { dir.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY) FileVisitResult.CONTINUE } else { diff --git a/src/main/kotlin/app/git/GitManager.kt b/src/main/kotlin/app/git/GitManager.kt index c0f75c9..4e6d81e 100644 --- a/src/main/kotlin/app/git/GitManager.kt +++ b/src/main/kotlin/app/git/GitManager.kt @@ -1,22 +1,21 @@ package app.git +import app.AppStateManager +import app.app.ErrorsManager +import app.app.newErrorNow import app.credentials.CredentialsState import app.credentials.CredentialsStateManager import kotlinx.coroutines.* import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.collect import org.eclipse.jgit.api.Git import org.eclipse.jgit.diff.DiffEntry +import org.eclipse.jgit.lib.ObjectId import org.eclipse.jgit.lib.Ref import org.eclipse.jgit.lib.Repository import org.eclipse.jgit.revwalk.RevCommit import org.eclipse.jgit.storage.file.FileRepositoryBuilder -import app.AppStateManager -import app.app.ErrorsManager -import app.app.newErrorNow -import kotlinx.coroutines.flow.collect -import org.eclipse.jgit.lib.ObjectId -import org.eclipse.jgit.transport.RemoteConfig import java.io.File import javax.inject.Inject @@ -323,7 +322,7 @@ class GitManager @Inject constructor( } catch (ex: Exception) { ex.printStackTrace() - if(showError) + if (showError) errorsManager.addError(newErrorNow(ex, ex.localizedMessage)) } finally { _processing.value = false diff --git a/src/main/kotlin/app/git/LogManager.kt b/src/main/kotlin/app/git/LogManager.kt index 2a89268..bc0eaba 100644 --- a/src/main/kotlin/app/git/LogManager.kt +++ b/src/main/kotlin/app/git/LogManager.kt @@ -13,7 +13,6 @@ import org.eclipse.jgit.api.CreateBranchCommand import org.eclipse.jgit.api.Git import org.eclipse.jgit.api.ResetCommand import org.eclipse.jgit.lib.Constants -import org.eclipse.jgit.lib.ObjectId import org.eclipse.jgit.lib.Ref import org.eclipse.jgit.revwalk.RevCommit import javax.inject.Inject @@ -64,14 +63,14 @@ class LogManager @Inject constructor( suspend fun checkoutRef(git: Git, ref: Ref) = withContext(Dispatchers.IO) { git.checkout().apply { - setName(ref.name) - if(ref.isBranch && ref.name.startsWith("refs/remotes/")) { - setCreateBranch(true) - setName(ref.simpleName) - setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK) - } - call() + setName(ref.name) + if (ref.isBranch && ref.name.startsWith("refs/remotes/")) { + setCreateBranch(true) + setName(ref.simpleName) + setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK) } + call() + } } suspend fun revertCommit(git: Git, revCommit: RevCommit) = withContext(Dispatchers.IO) { @@ -82,7 +81,7 @@ class LogManager @Inject constructor( } suspend fun resetToCommit(git: Git, revCommit: RevCommit, resetType: ResetType) = withContext(Dispatchers.IO) { - val reset = when(resetType) { + val reset = when (resetType) { ResetType.SOFT -> ResetCommand.ResetType.SOFT ResetType.MIXED -> ResetCommand.ResetType.MIXED ResetType.HARD -> ResetCommand.ResetType.HARD @@ -94,6 +93,7 @@ class LogManager @Inject constructor( .call() } } + // TODO Move this to enum class ResetType { SOFT, diff --git a/src/main/kotlin/app/git/RemoteOperationsManager.kt b/src/main/kotlin/app/git/RemoteOperationsManager.kt index b231ecd..3705dd9 100644 --- a/src/main/kotlin/app/git/RemoteOperationsManager.kt +++ b/src/main/kotlin/app/git/RemoteOperationsManager.kt @@ -1,6 +1,7 @@ package app.git -import app.credentials.* +import app.credentials.GSessionManager +import app.credentials.HttpCredentialsProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -8,7 +9,10 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.withContext import org.eclipse.jgit.api.Git import org.eclipse.jgit.lib.ProgressMonitor -import org.eclipse.jgit.transport.* +import org.eclipse.jgit.transport.CredentialsProvider +import org.eclipse.jgit.transport.HttpTransport +import org.eclipse.jgit.transport.RefSpec +import org.eclipse.jgit.transport.SshTransport import java.io.File import javax.inject.Inject diff --git a/src/main/kotlin/app/git/StatusManager.kt b/src/main/kotlin/app/git/StatusManager.kt index 2c44857..a754a19 100644 --- a/src/main/kotlin/app/git/StatusManager.kt +++ b/src/main/kotlin/app/git/StatusManager.kt @@ -9,7 +9,6 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.withContext import org.eclipse.jgit.api.Git import org.eclipse.jgit.diff.DiffEntry -import org.eclipse.jgit.lib.Constants import javax.inject.Inject class StatusManager @Inject constructor() { @@ -54,7 +53,7 @@ class StatusManager @Inject constructor() { ensureActive() _stageStatus.value = StageStatus.Loaded(staged, unstaged) - } catch(ex: Exception) { + } catch (ex: Exception) { _stageStatus.value = previousStatus throw ex } diff --git a/src/main/kotlin/app/git/graph/GraphCommitList.kt b/src/main/kotlin/app/git/graph/GraphCommitList.kt index d7a026e..2da2f78 100644 --- a/src/main/kotlin/app/git/graph/GraphCommitList.kt +++ b/src/main/kotlin/app/git/graph/GraphCommitList.kt @@ -1,12 +1,11 @@ package app.git.graph -import org.eclipse.jgit.revwalk.RevCommitList -import java.lang.ClassCastException -import java.text.MessageFormat import org.eclipse.jgit.internal.JGitText import org.eclipse.jgit.lib.AnyObjectId import org.eclipse.jgit.revwalk.RevCommit +import org.eclipse.jgit.revwalk.RevCommitList import org.eclipse.jgit.revwalk.RevWalk +import java.text.MessageFormat import java.util.* /** diff --git a/src/main/kotlin/app/git/graph/GraphWalk.kt b/src/main/kotlin/app/git/graph/GraphWalk.kt index a762d4c..81fb0ed 100644 --- a/src/main/kotlin/app/git/graph/GraphWalk.kt +++ b/src/main/kotlin/app/git/graph/GraphWalk.kt @@ -8,7 +8,6 @@ import org.eclipse.jgit.lib.Ref import org.eclipse.jgit.lib.Repository import org.eclipse.jgit.revwalk.* import java.io.IOException -import java.util.* /** * Specialized RevWalk for visualization of a commit graph. diff --git a/src/main/kotlin/app/images/NetworkImageLoader.kt b/src/main/kotlin/app/images/NetworkImageLoader.kt index 0fffc31..f8360c6 100644 --- a/src/main/kotlin/app/images/NetworkImageLoader.kt +++ b/src/main/kotlin/app/images/NetworkImageLoader.kt @@ -23,8 +23,8 @@ object NetworkImageLoader { try { val cachedImage = cache.getCachedImage(url) - if(cachedImage != null) - return@withContext cachedImage.toComposeImage() + if (cachedImage != null) + return@withContext cachedImage.toComposeImage() loadingImagesSemaphore.acquireAndUse { val imageByteArray = loadImage(url) @@ -50,7 +50,6 @@ object NetworkImageLoader { } - @Composable fun rememberNetworkImage(url: String): ImageBitmap { val networkImageLoader = NetworkImageLoader @@ -64,7 +63,7 @@ fun rememberNetworkImage(url: String): ImageBitmap { LaunchedEffect(url) { val networkImage = networkImageLoader.loadImageNetwork(url) - if(networkImage != null) + if (networkImage != null) image = networkImage } diff --git a/src/main/kotlin/app/theme/Theme.kt b/src/main/kotlin/app/theme/Theme.kt index 6a3dac3..a5c0cb8 100644 --- a/src/main/kotlin/app/theme/Theme.kt +++ b/src/main/kotlin/app/theme/Theme.kt @@ -1,6 +1,9 @@ package app.theme -import androidx.compose.material.* +import androidx.compose.material.Colors +import androidx.compose.material.MaterialTheme +import androidx.compose.material.darkColors +import androidx.compose.material.lightColors import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color @@ -26,7 +29,7 @@ private val LightColorPalette = lightColors( @Composable fun AppTheme(theme: Themes = Themes.LIGHT, content: @Composable() () -> Unit) { - val colors = when(theme) { + val colors = when (theme) { Themes.LIGHT -> LightColorPalette Themes.DARK -> DarkColorPalette } diff --git a/src/main/kotlin/app/ui/AppTab.kt b/src/main/kotlin/app/ui/AppTab.kt index f9a0cec..1e34824 100644 --- a/src/main/kotlin/app/ui/AppTab.kt +++ b/src/main/kotlin/app/ui/AppTab.kt @@ -134,7 +134,7 @@ fun AppTab( ) { Column( modifier = Modifier - .padding(horizontal = 32.dp) + .padding(horizontal = 32.dp) ) { Text( text = "Error", diff --git a/src/main/kotlin/app/ui/Branches.kt b/src/main/kotlin/app/ui/Branches.kt index 8c2cc48..82b0822 100644 --- a/src/main/kotlin/app/ui/Branches.kt +++ b/src/main/kotlin/app/ui/Branches.kt @@ -2,42 +2,32 @@ package app.ui import androidx.compose.foundation.ContextMenuArea import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material.Icon +import androidx.compose.material.MaterialTheme import androidx.compose.runtime.* -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import app.MAX_SIDE_PANEL_ITEMS_HEIGHT import app.extensions.isLocal -import app.ui.components.ScrollableLazyColumn import app.extensions.simpleName import app.git.GitManager -import org.eclipse.jgit.lib.Ref -import app.theme.headerBackground -import app.theme.headerText +import app.ui.components.ScrollableLazyColumn import app.ui.components.SideMenuEntry import app.ui.components.SideMenuSubentry import app.ui.components.entryHeight import app.ui.context_menu.branchContextMenuItems import app.ui.dialogs.MergeDialog +import org.eclipse.jgit.lib.Ref @Composable fun Branches( gitManager: GitManager, onBranchClicked: (Ref) -> Unit, -) { + ) { val branches by gitManager.branches.collectAsState() val currentBranch by gitManager.currentBranch.collectAsState() val (mergeBranch, setMergeBranch) = remember { mutableStateOf(null) } @@ -67,7 +57,7 @@ fun Branches( } } - if(mergeBranch != null) { + if (mergeBranch != null) { MergeDialog( currentBranch, mergeBranchName = mergeBranch.name, diff --git a/src/main/kotlin/app/ui/Diff.kt b/src/main/kotlin/app/ui/Diff.kt index 10792fd..9c48cca 100644 --- a/src/main/kotlin/app/ui/Diff.kt +++ b/src/main/kotlin/app/ui/Diff.kt @@ -1,26 +1,27 @@ package app.ui import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.items -import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue import androidx.compose.foundation.text.selection.SelectionContainer -import androidx.compose.material.* -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.MaterialTheme +import androidx.compose.material.OutlinedButton +import androidx.compose.material.Text +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import app.ui.components.ScrollableLazyColumn import app.git.DiffEntryType import app.git.GitManager import app.theme.primaryTextColor +import app.ui.components.ScrollableLazyColumn @Composable fun Diff(gitManager: GitManager, diffEntryType: DiffEntryType, onCloseDiffView: () -> Unit) { @@ -30,7 +31,7 @@ fun Diff(gitManager: GitManager, diffEntryType: DiffEntryType, onCloseDiffView: text = gitManager.diffFormat(diffEntryType) - if(text.isEmpty()) onCloseDiffView() + if (text.isEmpty()) onCloseDiffView() } Column( diff --git a/src/main/kotlin/app/ui/GMenu.kt b/src/main/kotlin/app/ui/GMenu.kt index 9fe050c..853f6e4 100644 --- a/src/main/kotlin/app/ui/GMenu.kt +++ b/src/main/kotlin/app/ui/GMenu.kt @@ -4,17 +4,15 @@ package app.ui import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.CornerSize -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.* +import androidx.compose.material.MaterialTheme +import androidx.compose.material.OutlinedButton +import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.layout.HorizontalAlignmentLine import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp diff --git a/src/main/kotlin/app/ui/Remotes.kt b/src/main/kotlin/app/ui/Remotes.kt index 78268a1..708f784 100644 --- a/src/main/kotlin/app/ui/Remotes.kt +++ b/src/main/kotlin/app/ui/Remotes.kt @@ -1,6 +1,9 @@ package app.ui -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState @@ -8,10 +11,10 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import app.MAX_SIDE_PANEL_ITEMS_HEIGHT -import app.ui.components.ScrollableLazyColumn import app.extensions.simpleVisibleName import app.git.GitManager import app.git.RemoteInfo +import app.ui.components.ScrollableLazyColumn import app.ui.components.SideMenuEntry import app.ui.components.SideMenuSubentry import app.ui.components.entryHeight @@ -25,7 +28,7 @@ fun Remotes(gitManager: GitManager) { val allBranches = remotes.map { it.branchesList }.flatten() val remotesHeight = (allBranches.count() + remotes.count()) * entryHeight - val maxHeight = if(remotesHeight < MAX_SIDE_PANEL_ITEMS_HEIGHT) + val maxHeight = if (remotesHeight < MAX_SIDE_PANEL_ITEMS_HEIGHT) remotesHeight else MAX_SIDE_PANEL_ITEMS_HEIGHT diff --git a/src/main/kotlin/app/ui/RepositoryOpen.kt b/src/main/kotlin/app/ui/RepositoryOpen.kt index 8ed969c..f8cdd52 100644 --- a/src/main/kotlin/app/ui/RepositoryOpen.kt +++ b/src/main/kotlin/app/ui/RepositoryOpen.kt @@ -1,15 +1,9 @@ package app.ui import androidx.compose.animation.Crossfade -import androidx.compose.foundation.background import androidx.compose.foundation.layout.* -import androidx.compose.material.MaterialTheme import androidx.compose.runtime.* import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.SolidColor -import androidx.compose.ui.input.pointer.PointerIcon -import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.unit.dp import app.git.DiffEntryType import app.git.GitManager @@ -20,7 +14,6 @@ import org.eclipse.jgit.revwalk.RevCommit import org.jetbrains.compose.splitpane.ExperimentalSplitPaneApi import org.jetbrains.compose.splitpane.HorizontalSplitPane import org.jetbrains.compose.splitpane.rememberSplitPaneState -import java.awt.Cursor @OptIn(ExperimentalSplitPaneApi::class, androidx.compose.ui.ExperimentalComposeUiApi::class) @@ -38,7 +31,7 @@ fun RepositoryOpenPage(gitManager: GitManager) { diffSelected = null } - if(showNewBranchDialog) { + if (showNewBranchDialog) { NewBranchDialog( onReject = { showNewBranchDialog = false @@ -94,7 +87,7 @@ fun RepositoryOpenPage(gitManager: GitManager) { ) } } - + second { HorizontalSplitPane( splitPaneState = rememberSplitPaneState(0.9f) @@ -144,7 +137,7 @@ fun RepositoryOpenPage(gitManager: GitManager) { diffSelected = DiffEntryType.UnstagedDiff(diffEntry) } ) - } else if(selectedItem is SelectedItem.CommitBasedItem) { + } else if (selectedItem is SelectedItem.CommitBasedItem) { CommitChanges( gitManager = gitManager, commit = selectedItem.revCommit, diff --git a/src/main/kotlin/app/ui/SystemDialogs.kt b/src/main/kotlin/app/ui/SystemDialogs.kt index a712b0d..6579030 100644 --- a/src/main/kotlin/app/ui/SystemDialogs.kt +++ b/src/main/kotlin/app/ui/SystemDialogs.kt @@ -1,8 +1,5 @@ -import app.AppStateManager import app.extensions.runCommand import app.git.GitManager -import java.io.IOException -import java.util.* import javax.swing.JFileChooser @@ -12,16 +9,16 @@ fun openRepositoryDialog(gitManager: GitManager) { val latestDirectoryOpened = appStateManager.latestOpenedRepositoryPath - if(os.lowercase() == "linux") { + if (os.lowercase() == "linux") { val checkZenityInstalled = runCommand("which zenity 2>/dev/null") val isZenityInstalled = !checkZenityInstalled.isNullOrEmpty() - if(isZenityInstalled) { + if (isZenityInstalled) { val openDirectory = runCommand( "zenity --file-selection --title=Open --directory --filename=\"$latestDirectoryOpened\"" )?.replace("\n", "") - if(!openDirectory.isNullOrEmpty()) + if (!openDirectory.isNullOrEmpty()) gitManager.openRepository(openDirectory) } else openRepositoryDialog(gitManager, latestDirectoryOpened) diff --git a/src/main/kotlin/app/ui/Tags.kt b/src/main/kotlin/app/ui/Tags.kt index 3f08b44..4c8d4d5 100644 --- a/src/main/kotlin/app/ui/Tags.kt +++ b/src/main/kotlin/app/ui/Tags.kt @@ -2,7 +2,10 @@ package app.ui import androidx.compose.foundation.ContextMenuArea import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState @@ -10,8 +13,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import app.MAX_SIDE_PANEL_ITEMS_HEIGHT import app.extensions.simpleName -import app.ui.components.ScrollableLazyColumn import app.git.GitManager +import app.ui.components.ScrollableLazyColumn import app.ui.components.SideMenuEntry import app.ui.components.SideMenuSubentry import app.ui.components.entryHeight diff --git a/src/main/kotlin/app/ui/UncommitedChanges.kt b/src/main/kotlin/app/ui/UncommitedChanges.kt index 4387aa6..a1cbcf3 100644 --- a/src/main/kotlin/app/ui/UncommitedChanges.kt +++ b/src/main/kotlin/app/ui/UncommitedChanges.kt @@ -29,16 +29,16 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import app.ui.components.ScrollableLazyColumn import app.extensions.filePath import app.extensions.icon import app.extensions.iconColor import app.git.GitManager import app.git.StageStatus -import org.eclipse.jgit.diff.DiffEntry import app.theme.headerBackground import app.theme.headerText import app.theme.primaryTextColor +import app.ui.components.ScrollableLazyColumn +import org.eclipse.jgit.diff.DiffEntry @OptIn(ExperimentalAnimationApi::class, androidx.compose.ui.ExperimentalComposeUiApi::class) @Composable @@ -141,9 +141,8 @@ fun UncommitedChanges( if (it.isCtrlPressed && it.key == Key.Enter && canCommit) { doCommit() true - } - else - false + } else + false }, value = commitMessage, onValueChange = { commitMessage = it }, diff --git a/src/main/kotlin/app/ui/WelcomePage.kt b/src/main/kotlin/app/ui/WelcomePage.kt index ce138fb..dcd1101 100644 --- a/src/main/kotlin/app/ui/WelcomePage.kt +++ b/src/main/kotlin/app/ui/WelcomePage.kt @@ -50,7 +50,7 @@ fun WelcomePage( horizontalArrangement = Arrangement.Center, verticalAlignment = BiasAlignment.Vertical(-0.5f), - ) { + ) { Column( modifier = Modifier .padding(end = 32.dp), @@ -159,7 +159,7 @@ fun WelcomePage( } - if(showCloneView) + if (showCloneView) MaterialDialog { CloneDialog(gitManager, onClose = { showCloneView = false }) } diff --git a/src/main/kotlin/app/ui/components/RepositoriesTabPanel.kt b/src/main/kotlin/app/ui/components/RepositoriesTabPanel.kt index 2611082..67817da 100644 --- a/src/main/kotlin/app/ui/components/RepositoriesTabPanel.kt +++ b/src/main/kotlin/app/ui/components/RepositoriesTabPanel.kt @@ -1,14 +1,14 @@ package app.ui.components -import androidx.compose.foundation.HorizontalScrollbar import androidx.compose.foundation.background import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.foundation.rememberScrollbarAdapter import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* import androidx.compose.material.icons.Icons diff --git a/src/main/kotlin/app/ui/components/SideMenuSubentry.kt b/src/main/kotlin/app/ui/components/SideMenuSubentry.kt index b9f6306..d4dc8f6 100644 --- a/src/main/kotlin/app/ui/components/SideMenuSubentry.kt +++ b/src/main/kotlin/app/ui/components/SideMenuSubentry.kt @@ -52,7 +52,7 @@ fun SideMenuSubentry( modifier = Modifier.weight(1f, fill = true), maxLines = 1, fontSize = 14.sp, - fontWeight = if(bold) FontWeight.SemiBold else FontWeight.Normal, + fontWeight = if (bold) FontWeight.SemiBold else FontWeight.Normal, color = MaterialTheme.colors.primaryTextColor, overflow = TextOverflow.Ellipsis, ) diff --git a/src/main/kotlin/app/ui/components/TooltipText.kt b/src/main/kotlin/app/ui/components/TooltipText.kt index b39b143..f0f575b 100644 --- a/src/main/kotlin/app/ui/components/TooltipText.kt +++ b/src/main/kotlin/app/ui/components/TooltipText.kt @@ -44,7 +44,7 @@ fun TooltipText( ) { TooltipArea( tooltip = { - Card ( + Card( backgroundColor = MaterialTheme.colors.background, elevation = 10.dp, ) { @@ -53,7 +53,7 @@ fun TooltipText( modifier = Modifier.padding(10.dp) ) } - }, + }, ) { Text( text = text, diff --git a/src/main/kotlin/app/ui/context_menu/TagContextMenu.kt b/src/main/kotlin/app/ui/context_menu/TagContextMenu.kt index 2afcc7f..113476b 100644 --- a/src/main/kotlin/app/ui/context_menu/TagContextMenu.kt +++ b/src/main/kotlin/app/ui/context_menu/TagContextMenu.kt @@ -2,7 +2,6 @@ package app.ui.context_menu import androidx.compose.foundation.ContextMenuItem import androidx.compose.foundation.ExperimentalFoundationApi -import app.extensions.isLocal @OptIn(ExperimentalFoundationApi::class) fun tagContextMenuItems( diff --git a/src/main/kotlin/app/ui/dialogs/CloneDialog.kt b/src/main/kotlin/app/ui/dialogs/CloneDialog.kt index 62ecee8..5a50411 100644 --- a/src/main/kotlin/app/ui/dialogs/CloneDialog.kt +++ b/src/main/kotlin/app/ui/dialogs/CloneDialog.kt @@ -26,9 +26,9 @@ fun CloneDialog( var directory by remember { mutableStateOf("") } var url by remember { mutableStateOf("") } Column { - if(cloneStatusValue is CloneStatus.Cloning || cloneStatusValue == CloneStatus.CheckingOut) + if (cloneStatusValue is CloneStatus.Cloning || cloneStatusValue == CloneStatus.CheckingOut) LinearProgressIndicator(modifier = Modifier.width(500.dp)) - else if(cloneStatusValue == CloneStatus.Completed) { + else if (cloneStatusValue == CloneStatus.Completed) { gitManager.openRepository(directory) onClose() } diff --git a/src/main/kotlin/app/ui/dialogs/MaterialDialog.kt b/src/main/kotlin/app/ui/dialogs/MaterialDialog.kt index 6b307a9..a21f34b 100644 --- a/src/main/kotlin/app/ui/dialogs/MaterialDialog.kt +++ b/src/main/kotlin/app/ui/dialogs/MaterialDialog.kt @@ -5,15 +5,11 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Card import androidx.compose.material.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Brush -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.* import androidx.compose.ui.window.Popup import androidx.compose.ui.window.PopupPositionProvider @@ -26,7 +22,7 @@ fun MaterialDialog( ) { Popup( focusable = true, - popupPositionProvider = object: PopupPositionProvider { + popupPositionProvider = object : PopupPositionProvider { override fun calculatePosition( anchorBounds: IntRect, windowSize: IntSize, diff --git a/src/main/kotlin/app/ui/dialogs/MergeDialog.kt b/src/main/kotlin/app/ui/dialogs/MergeDialog.kt index a1be12d..ef254ca 100644 --- a/src/main/kotlin/app/ui/dialogs/MergeDialog.kt +++ b/src/main/kotlin/app/ui/dialogs/MergeDialog.kt @@ -2,19 +2,18 @@ package app.ui.dialogs import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.mouseClickable import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.FocusRequester -import androidx.compose.ui.focus.focusOrder import androidx.compose.ui.input.pointer.isPrimaryPressed -import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import app.theme.primaryTextColor @OptIn(ExperimentalFoundationApi::class) diff --git a/src/main/kotlin/app/ui/dialogs/ResetDialog.kt b/src/main/kotlin/app/ui/dialogs/ResetDialog.kt index a0792d5..8249515 100644 --- a/src/main/kotlin/app/ui/dialogs/ResetDialog.kt +++ b/src/main/kotlin/app/ui/dialogs/ResetDialog.kt @@ -3,18 +3,17 @@ package app.ui.dialogs import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.mouseClickable import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.FocusRequester -import androidx.compose.ui.focus.focusOrder import androidx.compose.ui.input.pointer.isPrimaryPressed -import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import app.git.ResetType import app.theme.primaryTextColor @@ -92,7 +91,7 @@ fun RadioButtonText( verticalAlignment = Alignment.CenterVertically, modifier = Modifier .mouseClickable { - if(this.buttons.isPrimaryPressed) { + if (this.buttons.isPrimaryPressed) { if (onClick != null) { onClick() } diff --git a/src/main/kotlin/app/ui/dialogs/SettingsDialog.kt b/src/main/kotlin/app/ui/dialogs/SettingsDialog.kt index d82298a..4bfe34a 100644 --- a/src/main/kotlin/app/ui/dialogs/SettingsDialog.kt +++ b/src/main/kotlin/app/ui/dialogs/SettingsDialog.kt @@ -5,11 +5,10 @@ package app.ui.dialogs import androidx.compose.foundation.layout.* import androidx.compose.material.* import androidx.compose.runtime.* +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import app.AppPreferences -import androidx.compose.ui.Alignment -import app.theme.Themes import app.theme.primaryTextColor import app.theme.themesList diff --git a/src/main/kotlin/app/ui/log/Log.kt b/src/main/kotlin/app/ui/log/Log.kt index 3014b6f..8cb9f45 100644 --- a/src/main/kotlin/app/ui/log/Log.kt +++ b/src/main/kotlin/app/ui/log/Log.kt @@ -78,19 +78,20 @@ fun Log( val showLogDialog = remember { mutableStateOf(LogDialog.None) } - val selectedCommit = if (selectedItem is SelectedItem.CommitBasedItem) { + val selectedCommit = if (selectedItem is SelectedItem.CommitBasedItem) { selectedItem.revCommit } else { null } - if (logStatus is LogStatus.Loaded) { val commitList = logStatus.plotCommitList val scrollState = rememberLazyListState() + LaunchedEffect(selectedCommit) { - if(selectedItem is SelectedItem.Ref) + // Scroll to commit if a Ref is selected + if (selectedItem is SelectedItem.Ref) scrollState.scrollToItem(commitList.indexOfFirst { it.name == selectedCommit?.name }) } @@ -722,7 +723,7 @@ fun RefChip( modifier = modifier, verticalAlignment = Alignment.CenterVertically, ) { - Box (modifier = Modifier.background(color = color)) { + Box(modifier = Modifier.background(color = color)) { Icon( modifier = Modifier .padding(6.dp) diff --git a/src/main/kotlin/app/ui/log/LogDialog.kt b/src/main/kotlin/app/ui/log/LogDialog.kt index 574c798..a5a482b 100644 --- a/src/main/kotlin/app/ui/log/LogDialog.kt +++ b/src/main/kotlin/app/ui/log/LogDialog.kt @@ -4,9 +4,9 @@ import app.git.graph.GraphNode import org.eclipse.jgit.lib.Ref sealed class LogDialog { - object None: LogDialog() - data class NewBranch(val graphNode: GraphNode): LogDialog() - data class NewTag(val graphNode: GraphNode): LogDialog() - data class ResetBranch(val graphNode: GraphNode): LogDialog() - data class MergeBranch(val ref: Ref): LogDialog() + object None : LogDialog() + data class NewBranch(val graphNode: GraphNode) : LogDialog() + data class NewTag(val graphNode: GraphNode) : LogDialog() + data class ResetBranch(val graphNode: GraphNode) : LogDialog() + data class MergeBranch(val ref: Ref) : LogDialog() } \ No newline at end of file diff --git a/src/main/resources/apply_stash.svg b/src/main/resources/apply_stash.svg index da2b777..b03e00b 100644 --- a/src/main/resources/apply_stash.svg +++ b/src/main/resources/apply_stash.svg @@ -1,4 +1,6 @@ - - + + diff --git a/src/main/resources/branch.svg b/src/main/resources/branch.svg index 32e924c..ef262d5 100644 --- a/src/main/resources/branch.svg +++ b/src/main/resources/branch.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/main/resources/bug.svg b/src/main/resources/bug.svg index ca5a1c3..ed8b65d 100644 --- a/src/main/resources/bug.svg +++ b/src/main/resources/bug.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/main/resources/cloud.svg b/src/main/resources/cloud.svg index 8bd8e45..bd9e5d2 100644 --- a/src/main/resources/cloud.svg +++ b/src/main/resources/cloud.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/main/resources/code.svg b/src/main/resources/code.svg index 5728238..1ac2905 100644 --- a/src/main/resources/code.svg +++ b/src/main/resources/code.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/main/resources/download.svg b/src/main/resources/download.svg index 11ff822..aa10088 100644 --- a/src/main/resources/download.svg +++ b/src/main/resources/download.svg @@ -1 +1,9 @@ - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/location.svg b/src/main/resources/location.svg index c6413a3..d652f12 100644 --- a/src/main/resources/location.svg +++ b/src/main/resources/location.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/main/resources/logo.svg b/src/main/resources/logo.svg index d51d12c..fb196d6 100644 --- a/src/main/resources/logo.svg +++ b/src/main/resources/logo.svg @@ -1,5 +1,7 @@ - - - + + + diff --git a/src/main/resources/open.svg b/src/main/resources/open.svg index fe2f358..62e96c4 100644 --- a/src/main/resources/open.svg +++ b/src/main/resources/open.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/main/resources/settings.svg b/src/main/resources/settings.svg index f53024e..b6e0b4b 100644 --- a/src/main/resources/settings.svg +++ b/src/main/resources/settings.svg @@ -1 +1,7 @@ - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/src/main/resources/stash.svg b/src/main/resources/stash.svg index 0f4467e..d316ae4 100644 --- a/src/main/resources/stash.svg +++ b/src/main/resources/stash.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/main/resources/tag.svg b/src/main/resources/tag.svg index ccda60c..8c69c4b 100644 --- a/src/main/resources/tag.svg +++ b/src/main/resources/tag.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/main/resources/upload.svg b/src/main/resources/upload.svg index 248dd39..e0d7c3f 100644 --- a/src/main/resources/upload.svg +++ b/src/main/resources/upload.svg @@ -1 +1,9 @@ - \ No newline at end of file + + + + + + + + \ No newline at end of file