diff options
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/util/git')
| -rw-r--r-- | app/src/main/java/dev/msfjarvis/aps/util/git/GitCommandExecutor.kt | 17 | ||||
| -rw-r--r-- | app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt | 17 |
2 files changed, 31 insertions, 3 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/util/git/GitCommandExecutor.kt b/app/src/main/java/dev/msfjarvis/aps/util/git/GitCommandExecutor.kt index 7be06385..5d507dc8 100644 --- a/app/src/main/java/dev/msfjarvis/aps/util/git/GitCommandExecutor.kt +++ b/app/src/main/java/dev/msfjarvis/aps/util/git/GitCommandExecutor.kt @@ -10,6 +10,10 @@ import androidx.fragment.app.FragmentActivity import com.github.michaelbull.result.Result import com.github.michaelbull.result.runCatching import com.google.android.material.snackbar.Snackbar +import dagger.hilt.EntryPoint +import dagger.hilt.InstallIn +import dagger.hilt.android.EntryPointAccessors +import dagger.hilt.components.SingletonComponent import dev.msfjarvis.aps.R import dev.msfjarvis.aps.util.extensions.snackbar import dev.msfjarvis.aps.util.git.GitException.PullException @@ -30,6 +34,9 @@ class GitCommandExecutor( private val operation: GitOperation, ) { + private val hiltEntryPoint = EntryPointAccessors.fromApplication(activity.applicationContext, GitCommandExecutorEntryPoint::class.java) + private val gitSettings = hiltEntryPoint.gitSettings() + suspend fun execute(): Result<Unit, Throwable> { val snackbar = activity.snackbar( @@ -49,8 +56,8 @@ class GitCommandExecutor( // the previous status will eventually be used to avoid a commit if (nbChanges > 0) { withContext(Dispatchers.IO) { - val name = GitSettings.authorName.ifEmpty { "root" } - val email = GitSettings.authorEmail.ifEmpty { "localhost" } + val name = gitSettings.authorName.ifEmpty { "root" } + val email = gitSettings.authorEmail.ifEmpty { "localhost" } val identity = PersonIdent(name, email) command.setAuthor(identity).setCommitter(identity).call() } @@ -111,4 +118,10 @@ class GitCommandExecutor( } .also { snackbar.dismiss() } } + + @EntryPoint + @InstallIn(SingletonComponent::class) + interface GitCommandExecutorEntryPoint { + fun gitSettings(): GitSettings + } } diff --git a/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt b/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt index dbea37e8..5a9da290 100644 --- a/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt +++ b/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt @@ -14,6 +14,11 @@ import com.github.michaelbull.result.Result import com.github.michaelbull.result.onFailure import com.github.michaelbull.result.runCatching import com.google.android.material.dialog.MaterialAlertDialogBuilder +import dagger.hilt.EntryPoint +import dagger.hilt.InstallIn +import dagger.hilt.android.AndroidEntryPoint +import dagger.hilt.android.EntryPointAccessors +import dagger.hilt.components.SingletonComponent import dev.msfjarvis.aps.R import dev.msfjarvis.aps.data.repo.PasswordRepository import dev.msfjarvis.aps.ui.sshkeygen.SshKeyGenActivity @@ -26,6 +31,8 @@ import dev.msfjarvis.aps.util.git.sshj.SshKey import dev.msfjarvis.aps.util.git.sshj.SshjSessionFactory import dev.msfjarvis.aps.util.settings.AuthMode import dev.msfjarvis.aps.util.settings.GitSettings +import javax.inject.Inject +import javax.inject.Singleton import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine import kotlinx.coroutines.Dispatchers @@ -53,10 +60,11 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { abstract val commands: Array<GitCommand<out Any>> private val hostKeyFile = callingActivity.filesDir.resolve(".host_key") private var sshSessionFactory: SshjSessionFactory? = null + private val hiltEntryPoint = EntryPointAccessors.fromApplication(callingActivity.applicationContext, GitOperationEntryPoint::class.java) protected val repository = PasswordRepository.getRepository(null)!! protected val git = Git(repository) - protected val remoteBranch = GitSettings.branch + protected val remoteBranch = hiltEntryPoint.gitSettings().branch private val authActivity get() = callingActivity as ContinuationContainerActivity @@ -220,4 +228,11 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { /** Timeout in seconds before [TransportCommand] will abort a stalled IO operation. */ private const val CONNECT_TIMEOUT = 10 } + + // Using @EntryPoint seems to be our best option here, changing this to constructor injection would require a larger refactor. + @EntryPoint + @InstallIn(SingletonComponent::class) + interface GitOperationEntryPoint { + fun gitSettings(): GitSettings + } } |
