diff --git a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveClientFactory.kt b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveClientFactory.kt index 27ac7cf5..294f278a 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveClientFactory.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveClientFactory.kt @@ -17,42 +17,42 @@ class OnedriveClientFactory private constructor() { companion object { - fun createInstance(context: Context, token: String?, sharedPreferencesHandler: SharedPreferencesHandler): GraphServiceClient { + fun createInstance(context: Context, encryptedToken: String, sharedPreferencesHandler: SharedPreferencesHandler): GraphServiceClient { val tokenAuthenticationProvider = object : BaseAuthenticationProvider() { + val token = CompletableFuture.completedFuture(CredentialCryptor.getInstance(context).decrypt(encryptedToken)) override fun getAuthorizationTokenAsync(requestUrl: URL): CompletableFuture { 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() } } diff --git a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveCloudContentRepository.kt b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveCloudContentRepository.kt index 4c91ad33..2832a50d 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveCloudContentRepository.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveCloudContentRepository.kt @@ -42,7 +42,6 @@ internal class OnedriveCloudContentRepository(private val cloud: OnedriveCloud, private fun throwWrongCredentialsExceptionIfRequired(e: Exception) { if (isAuthenticationError(e)) { - logout(cloud) throw WrongCredentialsException(cloud) } } diff --git a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveImpl.kt b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveImpl.kt index 116f3ffa..b77eab34 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveImpl.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveImpl.kt @@ -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 diff --git a/data/src/main/java/org/cryptomator/data/repository/DispatchingCloudContentRepository.kt b/data/src/main/java/org/cryptomator/data/repository/DispatchingCloudContentRepository.kt index 602c0cd0..85e5e5fd 100644 --- a/data/src/main/java/org/cryptomator/data/repository/DispatchingCloudContentRepository.kt +++ b/data/src/main/java/org/cryptomator/data/repository/DispatchingCloudContentRepository.kt @@ -219,9 +219,9 @@ class DispatchingCloudContentRepository @Inject constructor( } private fun delegateFor(cloud: Cloud): CloudContentRepository { - return delegates.getOrPut(cloud, { + return delegates.getOrPut(cloud) { createCloudContentRepositoryFor(cloud) - }) + } } private fun createCloudContentRepositoryFor(cloud: Cloud): CloudContentRepository { diff --git a/presentation/src/main/java/org/cryptomator/presentation/model/CryptoCloudModel.kt b/presentation/src/main/java/org/cryptomator/presentation/model/CryptoCloudModel.kt index edde6312..83744b92 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/model/CryptoCloudModel.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/model/CryptoCloudModel.kt @@ -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 "" } diff --git a/presentation/src/main/java/org/cryptomator/presentation/presenter/BrowseFilesPresenter.kt b/presentation/src/main/java/org/cryptomator/presentation/presenter/BrowseFilesPresenter.kt index 391d30a9..e3bdf105 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/presenter/BrowseFilesPresenter.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/presenter/BrowseFilesPresenter.kt @@ -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) { downloadFiles.forEach { downloadFile -> try { - val source = FileInputStream(fileUtil.fileFor(cloudFileModelMapper.toModel(downloadFile.downloadFile))) - - copyDataUseCase // - .withSource(source) // - .andTarget(downloadFile.dataSink) // - .run(object : DefaultResultHandler() { - 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() { + override fun onFinished() { + view?.showMessage(R.string.screen_file_browser_msg_file_exported) + } + }) + } } catch (e: FileNotFoundException) { showError(e) }