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 {
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 token = CompletableFuture.completedFuture(CredentialCryptor.getInstance(context).decrypt(encryptedToken))
override fun getAuthorizationTokenAsync(requestUrl: URL): CompletableFuture<String> {
return if (shouldAuthenticateRequestWithUrl(requestUrl)) {
val decryptedToken = CredentialCryptor.getInstance(context).decrypt(token)
CompletableFuture.completedFuture(decryptedToken)
token
} else {
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 //
.builder() //
.authenticationProvider(tokenAuthenticationProvider) //
.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) {
TODO("Not yet implemented") // FIXME
}
})
.logger(logger)
.buildClient()
}
}

View File

@ -42,7 +42,6 @@ internal class OnedriveCloudContentRepository(private val cloud: OnedriveCloud,
private fun throwWrongCredentialsExceptionIfRequired(e: Exception) {
if (isAuthenticationError(e)) {
logout(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.IOException
import java.io.OutputStream
import java.util.ArrayList
import java.util.Date
import java.util.concurrent.CompletableFuture
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> {
return delegates.getOrPut(cloud, {
return delegates.getOrPut(cloud) {
createCloudContentRepositoryFor(cloud)
})
}
}
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")
}
override fun username(): String? {
override fun username(): String {
return ""
}

View File

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