Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/src/main/java/com/itsaky/androidide/di/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.itsaky.androidide.analytics.AnalyticsManager
import com.itsaky.androidide.analytics.IAnalyticsManager
import com.itsaky.androidide.git.core.GitCredentialsManager
import com.itsaky.androidide.roomData.recentproject.RecentProjectRoomDatabase
import com.itsaky.androidide.viewmodel.CloneRepositoryViewModel
import com.itsaky.androidide.viewmodel.GitBottomSheetViewModel
import com.itsaky.androidide.viewmodel.MainViewModel
import kotlinx.coroutines.CoroutineScope
Expand All @@ -33,6 +34,7 @@ val coreModule =
GitBottomSheetViewModel(get())
}
viewModel { MainViewModel(get()) }
viewModel { CloneRepositoryViewModel(get(), get()) }


single<CoroutineScope> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import android.view.ViewGroup
import android.widget.EditText
import androidx.core.widget.doAfterTextChanged
import org.koin.androidx.viewmodel.ext.android.activityViewModel
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
Expand All @@ -24,12 +23,13 @@ import com.itsaky.androidide.idetooltips.TooltipManager
import com.itsaky.androidide.idetooltips.TooltipTag
import com.itsaky.androidide.utils.forEachViewRecursively
import kotlinx.coroutines.launch
import org.koin.androidx.viewmodel.ext.android.viewModel
import java.io.File

class CloneRepositoryFragment : BaseFragment() {

private var binding: FragmentCloneRepositoryBinding? = null
private val viewModel: CloneRepositoryViewModel by viewModels()
private val viewModel: CloneRepositoryViewModel by viewModel()
private val mainViewModel: MainViewModel by activityViewModel()

override fun onCreateView(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,13 @@ import java.net.UnknownHostException
import java.io.EOFException
import java.io.File
import com.blankj.utilcode.util.NetworkUtils
import com.itsaky.androidide.git.core.GitCredentialsManager
import com.itsaky.androidide.resources.R

class CloneRepositoryViewModel(application: Application) : AndroidViewModel(application) {
class CloneRepositoryViewModel(
application: Application,
private val credentialsManager: GitCredentialsManager
) : AndroidViewModel(application) {

private val _uiState = MutableStateFlow<CloneRepoUiState>(CloneRepoUiState.Idle())
val uiState: StateFlow<CloneRepoUiState> = _uiState.asStateFlow()
Expand Down Expand Up @@ -182,6 +186,7 @@ class CloneRepositoryViewModel(application: Application) : AndroidViewModel(appl
_uiState.update {
CloneRepoUiState.Success(localPath = localPath)
}
credentialsManager.saveCredentialsIfNeeded(username, token)
} catch (e: Exception) {
// Error handling
if (isCloneCancelled) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class GitCredentialsManager(
return cachedPrefs!!
}

fun saveCredentials(username: String, token: String) {
private fun saveCredentials(username: String, token: String) {
try {
val (usernameIv, usernameData) = CryptoManager.encrypt(username)
val (tokenIv, tokenData) = CryptoManager.encrypt(token)
Expand All @@ -51,11 +51,6 @@ class GitCredentialsManager(
fun getUsername(): String? = decrypt(KEY_USERNAME_IV, KEY_USERNAME_DATA)
fun getToken(): String? = decrypt(KEY_TOKEN_IV, KEY_TOKEN_DATA)

fun hasCredentials(): Boolean {
val prefs = getPrefs()
return prefs.contains(KEY_USERNAME_DATA) && prefs.contains(KEY_TOKEN_DATA)
}

private fun decrypt(ivKey: String, dataKey: String): String? {
val prefs = getPrefs()
val ivBase64 = prefs.getString(ivKey, null) ?: return null
Expand Down
Loading