Bug fixes and cleanup (#405)

This commit is contained in:
Julian Raufelder 2022-01-26 11:30:21 +01:00
parent 4221d299ce
commit e11759b23f
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D
6 changed files with 38 additions and 44 deletions

View File

@ -17,42 +17,42 @@ class OnedriveClientFactory private constructor() {
companion object { companion object {
fun createInstance(context: Context, token: String?, sharedPreferencesHandler: SharedPreferencesHandler): GraphServiceClient<Request> { fun createInstance(context: Context, encryptedToken: String, sharedPreferencesHandler: SharedPreferencesHandler): GraphServiceClient<Request> {
val tokenAuthenticationProvider = object : BaseAuthenticationProvider() { val tokenAuthenticationProvider = object : BaseAuthenticationProvider() {
val token = CompletableFuture.completedFuture(CredentialCryptor.getInstance(context).decrypt(encryptedToken))
override fun getAuthorizationTokenAsync(requestUrl: URL): CompletableFuture<String> { override fun getAuthorizationTokenAsync(requestUrl: URL): CompletableFuture<String> {
return if (shouldAuthenticateRequestWithUrl(requestUrl)) { return if (shouldAuthenticateRequestWithUrl(requestUrl)) {
val decryptedToken = CredentialCryptor.getInstance(context).decrypt(token) token
CompletableFuture.completedFuture(decryptedToken)
} else { } else {
CompletableFuture.completedFuture(null) CompletableFuture.completedFuture(null)
} }
} }
} }
val logger = object : ILogger {
override fun getLoggingLevel(): LoggerLevel {
return if(sharedPreferencesHandler.debugMode()) {
LoggerLevel.DEBUG
} else {
LoggerLevel.ERROR
}
}
override fun logDebug(message: String) {
Timber.tag("OnedriveClientFactory").d(message)
}
override fun logError(message: String, throwable: Throwable?) {
Timber.tag("OnedriveClientFactory").e(throwable, message)
}
override fun setLoggingLevel(level: LoggerLevel) {}
}
return GraphServiceClient // return GraphServiceClient //
.builder() // .builder() //
.authenticationProvider(tokenAuthenticationProvider) // .authenticationProvider(tokenAuthenticationProvider) //
.logger(object : ILogger { .logger(logger)
override fun getLoggingLevel(): LoggerLevel {
return if(sharedPreferencesHandler.debugMode()) {
LoggerLevel.DEBUG
} else {
LoggerLevel.ERROR
}
}
override fun logDebug(message: String) {
Timber.tag("OnedriveClientFactory").d(message)
}
override fun logError(message: String, throwable: Throwable?) {
Timber.tag("OnedriveClientFactory").e(throwable, message)
}
override fun setLoggingLevel(level: LoggerLevel) {
TODO("Not yet implemented") // FIXME
}
})
.buildClient() .buildClient()
} }
} }

View File

@ -42,7 +42,6 @@ internal class OnedriveCloudContentRepository(private val cloud: OnedriveCloud,
private fun throwWrongCredentialsExceptionIfRequired(e: Exception) { private fun throwWrongCredentialsExceptionIfRequired(e: Exception) {
if (isAuthenticationError(e)) { if (isAuthenticationError(e)) {
logout(cloud)
throw WrongCredentialsException(cloud) throw WrongCredentialsException(cloud)
} }
} }

View File

@ -40,7 +40,6 @@ import org.cryptomator.util.file.LruFileCacheUtil.Companion.retrieveFromLruCache
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.io.OutputStream import java.io.OutputStream
import java.util.ArrayList
import java.util.Date import java.util.Date
import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletableFuture
import java.util.concurrent.ExecutionException import java.util.concurrent.ExecutionException

View File

@ -219,9 +219,9 @@ class DispatchingCloudContentRepository @Inject constructor(
} }
private fun delegateFor(cloud: Cloud): CloudContentRepository<Cloud, CloudNode, CloudFolder, CloudFile> { private fun delegateFor(cloud: Cloud): CloudContentRepository<Cloud, CloudNode, CloudFolder, CloudFile> {
return delegates.getOrPut(cloud, { return delegates.getOrPut(cloud) {
createCloudContentRepositoryFor(cloud) createCloudContentRepositoryFor(cloud)
}) }
} }
private fun createCloudContentRepositoryFor(cloud: Cloud): CloudContentRepository<Cloud, CloudNode, CloudFolder, CloudFile> { private fun createCloudContentRepositoryFor(cloud: Cloud): CloudContentRepository<Cloud, CloudNode, CloudFolder, CloudFile> {

View File

@ -11,7 +11,7 @@ class CryptoCloudModel(cloud: Cloud) : CloudModel(cloud) {
throw IllegalStateException("Should not be invoked") throw IllegalStateException("Should not be invoked")
} }
override fun username(): String? { override fun username(): String {
return "" return ""
} }

View File

@ -49,7 +49,6 @@ import org.cryptomator.presentation.intent.IntentBuilder
import org.cryptomator.presentation.intent.Intents import org.cryptomator.presentation.intent.Intents
import org.cryptomator.presentation.model.CloudFileModel import org.cryptomator.presentation.model.CloudFileModel
import org.cryptomator.presentation.model.CloudFolderModel import org.cryptomator.presentation.model.CloudFolderModel
import org.cryptomator.presentation.model.CloudModel
import org.cryptomator.presentation.model.CloudNodeModel import org.cryptomator.presentation.model.CloudNodeModel
import org.cryptomator.presentation.model.ImagePreviewFilesStore import org.cryptomator.presentation.model.ImagePreviewFilesStore
import org.cryptomator.presentation.model.ProgressModel import org.cryptomator.presentation.model.ProgressModel
@ -224,10 +223,7 @@ class BrowseFilesPresenter @Inject constructor( //
@Callback @Callback
fun getCloudListAfterAuthentication(result: ActivityResult, cloudFolderModel: CloudFolderModel) { fun getCloudListAfterAuthentication(result: ActivityResult, cloudFolderModel: CloudFolderModel) {
val cloudModel = result.getSingleResult(CloudModel::class.java) getCloudList(cloudFolderModel)
cloudFolderModel.toCloudNode().withCloud(cloudModel.toCloud())?.let {
getCloudList(cloudFolderModelMapper.toModel(it))
} ?: throw FatalBackendException("cloudFolderModel with updated Cloud shouldn't be null")
} }
fun onCreateFolderPressed(cloudFolder: CloudFolderModel, folderName: String?) { fun onCreateFolderPressed(cloudFolder: CloudFolderModel, folderName: String?) {
@ -245,16 +241,16 @@ class BrowseFilesPresenter @Inject constructor( //
private fun copyFile(downloadFiles: List<DownloadFile>) { private fun copyFile(downloadFiles: List<DownloadFile>) {
downloadFiles.forEach { downloadFile -> downloadFiles.forEach { downloadFile ->
try { try {
val source = FileInputStream(fileUtil.fileFor(cloudFileModelMapper.toModel(downloadFile.downloadFile))) FileInputStream(fileUtil.fileFor(cloudFileModelMapper.toModel(downloadFile.downloadFile))).use {
copyDataUseCase //
copyDataUseCase // .withSource(it) //
.withSource(source) // .andTarget(downloadFile.dataSink) //
.andTarget(downloadFile.dataSink) // .run(object : DefaultResultHandler<Void>() {
.run(object : DefaultResultHandler<Void>() { override fun onFinished() {
override fun onFinished() { view?.showMessage(R.string.screen_file_browser_msg_file_exported)
view?.showMessage(R.string.screen_file_browser_msg_file_exported) }
} })
}) }
} catch (e: FileNotFoundException) { } catch (e: FileNotFoundException) {
showError(e) showError(e)
} }