From bdbcd5bdc251abd0de9d80c4e5fed0dc3a8e8d50 Mon Sep 17 00:00:00 2001 From: David Perez Date: Mon, 15 Dec 2025 12:19:32 -0600 Subject: [PATCH] PM-29795: Move FileManager to data module (#6268) --- .../platform/manager/di/PlatformManagerModule.kt | 2 +- .../flightrecorder/FlightRecorderWriterImpl.kt | 2 +- .../data/vault/manager/CipherManagerImpl.kt | 3 ++- .../data/vault/manager/SendManagerImpl.kt | 1 + .../data/vault/manager/di/VaultManagerModule.kt | 16 +--------------- .../feature/environment/EnvironmentViewModel.kt | 2 +- .../settings/exportvault/ExportVaultViewModel.kt | 2 +- .../recordedLogs/RecordedLogsViewModel.kt | 4 ++-- .../ui/vault/feature/item/VaultItemViewModel.kt | 2 +- .../data/vault/manager/CipherManagerTest.kt | 3 ++- .../data/vault/manager/SendManagerTest.kt | 1 + .../environment/EnvironmentViewModelTest.kt | 2 +- .../exportvault/ExportVaultViewModelTest.kt | 2 +- .../recordedlogs/RecordedLogsViewModelTest.kt | 4 ++-- .../vault/feature/item/VaultItemViewModelTest.kt | 2 +- .../core/data}/util/InputStreamExtensions.kt | 2 +- data/build.gradle.kts | 1 + .../data/manager/di/DataManagerModule.kt | 16 ++++++++++++++++ .../bitwarden/data/manager/file}/FileManager.kt | 6 +++--- .../data/manager/file}/FileManagerImpl.kt | 10 +++++----- .../data}/manager/model/DownloadResult.kt | 2 +- .../data}/manager/model/ZipFileResult.kt | 2 +- 22 files changed, 47 insertions(+), 40 deletions(-) rename {app/src/main/kotlin/com/x8bit/bitwarden/data/platform => core/src/main/kotlin/com/bitwarden/core/data}/util/InputStreamExtensions.kt (97%) rename {app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager => data/src/main/kotlin/com/bitwarden/data/manager/file}/FileManager.kt (90%) rename {app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager => data/src/main/kotlin/com/bitwarden/data/manager/file}/FileManagerImpl.kt (96%) rename {app/src/main/kotlin/com/x8bit/bitwarden/data/vault => data/src/main/kotlin/com/bitwarden/data}/manager/model/DownloadResult.kt (87%) rename {app/src/main/kotlin/com/x8bit/bitwarden/data/vault => data/src/main/kotlin/com/bitwarden/data}/manager/model/ZipFileResult.kt (90%) diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/di/PlatformManagerModule.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/di/PlatformManagerModule.kt index 0a6b27d74a..7d37883831 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/di/PlatformManagerModule.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/di/PlatformManagerModule.kt @@ -12,6 +12,7 @@ import com.bitwarden.core.data.manager.toast.ToastManagerImpl import com.bitwarden.cxf.registry.CredentialExchangeRegistry import com.bitwarden.cxf.registry.dsl.credentialExchangeRegistry import com.bitwarden.data.manager.NativeLibraryManager +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.data.repository.ServerConfigRepository import com.bitwarden.network.BitwardenServiceClient import com.bitwarden.network.service.EventService @@ -84,7 +85,6 @@ import com.x8bit.bitwarden.data.platform.repository.DebugMenuRepository import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository import com.x8bit.bitwarden.data.platform.repository.SettingsRepository import com.x8bit.bitwarden.data.vault.datasource.disk.VaultDiskSource -import com.x8bit.bitwarden.data.vault.manager.FileManager import com.x8bit.bitwarden.data.vault.manager.VaultLockManager import com.x8bit.bitwarden.data.vault.repository.VaultRepository import dagger.Module diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/flightrecorder/FlightRecorderWriterImpl.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/flightrecorder/FlightRecorderWriterImpl.kt index 50fdc9bb91..1b874c2b3e 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/flightrecorder/FlightRecorderWriterImpl.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/flightrecorder/FlightRecorderWriterImpl.kt @@ -5,9 +5,9 @@ import android.util.Log import com.bitwarden.annotation.OmitFromCoverage import com.bitwarden.core.data.manager.dispatcher.DispatcherManager import com.bitwarden.core.data.util.toFormattedPattern +import com.bitwarden.data.manager.file.FileManager import com.x8bit.bitwarden.BuildConfig import com.x8bit.bitwarden.data.platform.datasource.disk.model.FlightRecorderDataSet -import com.x8bit.bitwarden.data.vault.manager.FileManager import kotlinx.coroutines.withContext import timber.log.Timber import java.io.BufferedWriter diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/CipherManagerImpl.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/CipherManagerImpl.kt index cb5d391bc8..30ab82a43c 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/CipherManagerImpl.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/CipherManagerImpl.kt @@ -6,6 +6,8 @@ import com.bitwarden.core.data.manager.dispatcher.DispatcherManager import com.bitwarden.core.data.util.asFailure import com.bitwarden.core.data.util.asSuccess import com.bitwarden.core.data.util.flatMap +import com.bitwarden.data.manager.file.FileManager +import com.bitwarden.data.manager.model.DownloadResult import com.bitwarden.network.model.AttachmentJsonResponse import com.bitwarden.network.model.CreateCipherInOrganizationJsonRequest import com.bitwarden.network.model.CreateCipherResponseJson @@ -25,7 +27,6 @@ import com.x8bit.bitwarden.data.platform.manager.model.SyncCipherDeleteData import com.x8bit.bitwarden.data.platform.manager.model.SyncCipherUpsertData import com.x8bit.bitwarden.data.vault.datasource.disk.VaultDiskSource import com.x8bit.bitwarden.data.vault.datasource.sdk.VaultSdkSource -import com.x8bit.bitwarden.data.vault.manager.model.DownloadResult import com.x8bit.bitwarden.data.vault.manager.model.GetCipherResult import com.x8bit.bitwarden.data.vault.repository.model.CreateAttachmentResult import com.x8bit.bitwarden.data.vault.repository.model.CreateCipherResult diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/SendManagerImpl.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/SendManagerImpl.kt index 70f272e2b2..97d06b23b9 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/SendManagerImpl.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/SendManagerImpl.kt @@ -5,6 +5,7 @@ import com.bitwarden.core.data.manager.dispatcher.DispatcherManager import com.bitwarden.core.data.util.asFailure import com.bitwarden.core.data.util.asSuccess import com.bitwarden.core.data.util.flatMap +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.network.model.CreateFileSendResponse import com.bitwarden.network.model.CreateSendJsonResponse import com.bitwarden.network.model.UpdateSendResponseJson diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/di/VaultManagerModule.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/di/VaultManagerModule.kt index 289e32777a..0932ddc275 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/di/VaultManagerModule.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/di/VaultManagerModule.kt @@ -3,8 +3,8 @@ package com.x8bit.bitwarden.data.vault.manager.di import android.content.Context import com.bitwarden.core.data.manager.dispatcher.DispatcherManager import com.bitwarden.core.data.manager.realtime.RealtimeManager +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.network.service.CiphersService -import com.bitwarden.network.service.DownloadService import com.bitwarden.network.service.FolderService import com.bitwarden.network.service.SendsService import com.bitwarden.network.service.SyncService @@ -27,8 +27,6 @@ import com.x8bit.bitwarden.data.vault.manager.CipherManager import com.x8bit.bitwarden.data.vault.manager.CipherManagerImpl import com.x8bit.bitwarden.data.vault.manager.CredentialExchangeImportManager import com.x8bit.bitwarden.data.vault.manager.CredentialExchangeImportManagerImpl -import com.x8bit.bitwarden.data.vault.manager.FileManager -import com.x8bit.bitwarden.data.vault.manager.FileManagerImpl import com.x8bit.bitwarden.data.vault.manager.FolderManager import com.x8bit.bitwarden.data.vault.manager.FolderManagerImpl import com.x8bit.bitwarden.data.vault.manager.PinProtectedUserKeyManager @@ -127,18 +125,6 @@ object VaultManagerModule { dispatcherManager = dispatcherManager, ) - @Provides - @Singleton - fun provideFileManager( - @ApplicationContext context: Context, - downloadService: DownloadService, - dispatcherManager: DispatcherManager, - ): FileManager = FileManagerImpl( - context = context, - downloadService = downloadService, - dispatcherManager = dispatcherManager, - ) - @Provides @Singleton fun provideVaultLockManager( diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentViewModel.kt index 84e1658f8c..49ef9b980c 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentViewModel.kt @@ -6,6 +6,7 @@ import androidx.core.net.toUri import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import com.bitwarden.data.datasource.disk.model.EnvironmentUrlDataJson +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.data.repository.model.Environment import com.bitwarden.ui.platform.base.BaseViewModel import com.bitwarden.ui.platform.base.util.isValidUri @@ -21,7 +22,6 @@ import com.x8bit.bitwarden.data.platform.datasource.disk.model.MutualTlsKeyHost import com.x8bit.bitwarden.data.platform.manager.CertificateManager import com.x8bit.bitwarden.data.platform.manager.model.ImportPrivateKeyResult import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository -import com.x8bit.bitwarden.data.vault.manager.FileManager import com.x8bit.bitwarden.ui.platform.manager.keychain.model.PrivateKeyAliasSelectionResult import com.x8bit.bitwarden.ui.platform.model.SnackbarRelay import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModel.kt index 88119923cc..05a81ce0c6 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModel.kt @@ -5,6 +5,7 @@ import android.os.Parcelable import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import com.bitwarden.core.data.util.toFormattedPattern +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.network.model.PolicyTypeJson import com.bitwarden.ui.platform.base.BaseViewModel import com.bitwarden.ui.platform.components.snackbar.model.BitwardenSnackbarData @@ -22,7 +23,6 @@ import com.x8bit.bitwarden.data.platform.manager.PolicyManager import com.x8bit.bitwarden.data.platform.manager.event.OrganizationEventManager import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEvent import com.x8bit.bitwarden.data.platform.manager.util.hasRestrictItemTypes -import com.x8bit.bitwarden.data.vault.manager.FileManager import com.x8bit.bitwarden.data.vault.repository.VaultRepository import com.x8bit.bitwarden.data.vault.repository.model.ExportVaultDataResult import com.x8bit.bitwarden.ui.auth.feature.completeregistration.PasswordStrengthState diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/flightrecorder/recordedLogs/RecordedLogsViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/flightrecorder/recordedLogs/RecordedLogsViewModel.kt index be843e40c0..47445aec41 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/flightrecorder/recordedLogs/RecordedLogsViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/flightrecorder/recordedLogs/RecordedLogsViewModel.kt @@ -4,14 +4,14 @@ import android.os.Parcelable import androidx.core.net.toUri import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope +import com.bitwarden.data.manager.file.FileManager +import com.bitwarden.data.manager.model.ZipFileResult import com.bitwarden.ui.platform.base.BaseViewModel import com.bitwarden.ui.platform.resource.BitwardenString import com.bitwarden.ui.util.Text import com.bitwarden.ui.util.asText import com.x8bit.bitwarden.data.platform.datasource.disk.model.FlightRecorderDataSet import com.x8bit.bitwarden.data.platform.repository.SettingsRepository -import com.x8bit.bitwarden.data.vault.manager.FileManager -import com.x8bit.bitwarden.data.vault.manager.model.ZipFileResult import com.x8bit.bitwarden.ui.platform.feature.settings.flightrecorder.recordedLogs.util.toViewState import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt index 83fbd1538e..25e163b210 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt @@ -8,6 +8,7 @@ import com.bitwarden.core.data.repository.model.DataState import com.bitwarden.core.data.repository.util.combineDataStates import com.bitwarden.core.data.repository.util.mapNullable import com.bitwarden.core.util.persistentListOfNotNull +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.data.repository.util.baseIconUrl import com.bitwarden.ui.platform.base.BackgroundEvent import com.bitwarden.ui.platform.base.BaseViewModel @@ -29,7 +30,6 @@ import com.x8bit.bitwarden.data.platform.manager.event.OrganizationEventManager import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEvent import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository import com.x8bit.bitwarden.data.platform.repository.SettingsRepository -import com.x8bit.bitwarden.data.vault.manager.FileManager import com.x8bit.bitwarden.data.vault.repository.VaultRepository import com.x8bit.bitwarden.data.vault.repository.model.DeleteCipherResult import com.x8bit.bitwarden.data.vault.repository.model.DownloadAttachmentResult diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/data/vault/manager/CipherManagerTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/data/vault/manager/CipherManagerTest.kt index 8d8d96e317..b055520251 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/data/vault/manager/CipherManagerTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/data/vault/manager/CipherManagerTest.kt @@ -6,6 +6,8 @@ import com.bitwarden.core.data.manager.dispatcher.FakeDispatcherManager import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow import com.bitwarden.core.data.util.asFailure import com.bitwarden.core.data.util.asSuccess +import com.bitwarden.data.manager.file.FileManager +import com.bitwarden.data.manager.model.DownloadResult import com.bitwarden.network.model.AttachmentJsonRequest import com.bitwarden.network.model.CreateCipherInOrganizationJsonRequest import com.bitwarden.network.model.CreateCipherResponseJson @@ -42,7 +44,6 @@ import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockEncryptionContext import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSdkAttachment import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSdkCipher -import com.x8bit.bitwarden.data.vault.manager.model.DownloadResult import com.x8bit.bitwarden.data.vault.manager.model.GetCipherResult import com.x8bit.bitwarden.data.vault.repository.model.CreateAttachmentResult import com.x8bit.bitwarden.data.vault.repository.model.CreateCipherResult diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/data/vault/manager/SendManagerTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/data/vault/manager/SendManagerTest.kt index 70f256f12d..a2e76858e4 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/data/vault/manager/SendManagerTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/data/vault/manager/SendManagerTest.kt @@ -6,6 +6,7 @@ import com.bitwarden.core.data.repository.error.MissingPropertyException import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow import com.bitwarden.core.data.util.asFailure import com.bitwarden.core.data.util.asSuccess +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.network.model.CreateFileSendResponse import com.bitwarden.network.model.CreateSendJsonResponse import com.bitwarden.network.model.SendTypeJson diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentViewModelTest.kt index 0142ddb790..15996e9299 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/environment/EnvironmentViewModelTest.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test import com.bitwarden.core.data.util.asSuccess import com.bitwarden.data.datasource.disk.model.EnvironmentUrlDataJson +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.data.repository.model.Environment import com.bitwarden.ui.platform.base.BaseViewModelTest import com.bitwarden.ui.platform.components.snackbar.model.BitwardenSnackbarData @@ -16,7 +17,6 @@ import com.x8bit.bitwarden.data.platform.datasource.disk.model.MutualTlsKeyHost import com.x8bit.bitwarden.data.platform.manager.CertificateManager import com.x8bit.bitwarden.data.platform.manager.model.ImportPrivateKeyResult import com.x8bit.bitwarden.data.platform.repository.util.FakeEnvironmentRepository -import com.x8bit.bitwarden.data.vault.manager.FileManager import com.x8bit.bitwarden.ui.platform.manager.keychain.model.PrivateKeyAliasSelectionResult import com.x8bit.bitwarden.ui.platform.model.SnackbarRelay import io.mockk.coEvery diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModelTest.kt index a2de85b874..134b2141ba 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/exportvault/ExportVaultViewModelTest.kt @@ -3,6 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.exportvault import android.net.Uri import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.data.repository.model.Environment import com.bitwarden.exporters.ExportFormat import com.bitwarden.network.model.PolicyTypeJson @@ -23,7 +24,6 @@ import com.x8bit.bitwarden.data.platform.manager.PolicyManager import com.x8bit.bitwarden.data.platform.manager.event.OrganizationEventManager import com.x8bit.bitwarden.data.platform.manager.model.FirstTimeState import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEvent -import com.x8bit.bitwarden.data.vault.manager.FileManager import com.x8bit.bitwarden.data.vault.repository.VaultRepository import com.x8bit.bitwarden.data.vault.repository.model.ExportVaultDataResult import com.x8bit.bitwarden.ui.auth.feature.completeregistration.PasswordStrengthState diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/flightrecorder/recordedlogs/RecordedLogsViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/flightrecorder/recordedlogs/RecordedLogsViewModelTest.kt index 2b9a3d7eb3..e229368eb5 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/flightrecorder/recordedlogs/RecordedLogsViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/flightrecorder/recordedlogs/RecordedLogsViewModelTest.kt @@ -3,13 +3,13 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.flightrecorder.recorded import android.net.Uri import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test +import com.bitwarden.data.manager.file.FileManager +import com.bitwarden.data.manager.model.ZipFileResult import com.bitwarden.ui.platform.base.BaseViewModelTest import com.bitwarden.ui.platform.resource.BitwardenString import com.bitwarden.ui.util.asText import com.x8bit.bitwarden.data.platform.datasource.disk.model.FlightRecorderDataSet import com.x8bit.bitwarden.data.platform.repository.SettingsRepository -import com.x8bit.bitwarden.data.vault.manager.FileManager -import com.x8bit.bitwarden.data.vault.manager.model.ZipFileResult import com.x8bit.bitwarden.ui.platform.feature.settings.flightrecorder.recordedLogs.RecordedLogsAction import com.x8bit.bitwarden.ui.platform.feature.settings.flightrecorder.recordedLogs.RecordedLogsEvent import com.x8bit.bitwarden.ui.platform.feature.settings.flightrecorder.recordedLogs.RecordedLogsState diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt index 21526777f8..dd7d43e334 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt @@ -6,6 +6,7 @@ import app.cash.turbine.test import com.bitwarden.collections.CollectionView import com.bitwarden.core.data.repository.model.DataState import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow +import com.bitwarden.data.manager.file.FileManager import com.bitwarden.data.repository.model.Environment import com.bitwarden.data.repository.util.baseIconUrl import com.bitwarden.network.model.OrganizationType @@ -38,7 +39,6 @@ import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCollectionView import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockFolderView import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSdkCipherPermissions -import com.x8bit.bitwarden.data.vault.manager.FileManager import com.x8bit.bitwarden.data.vault.manager.model.VerificationCodeItem import com.x8bit.bitwarden.data.vault.repository.VaultRepository import com.x8bit.bitwarden.data.vault.repository.model.DeleteCipherResult diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/util/InputStreamExtensions.kt b/core/src/main/kotlin/com/bitwarden/core/data/util/InputStreamExtensions.kt similarity index 97% rename from app/src/main/kotlin/com/x8bit/bitwarden/data/platform/util/InputStreamExtensions.kt rename to core/src/main/kotlin/com/bitwarden/core/data/util/InputStreamExtensions.kt index 0799f2bd84..9f07a4e9fc 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/util/InputStreamExtensions.kt +++ b/core/src/main/kotlin/com/bitwarden/core/data/util/InputStreamExtensions.kt @@ -1,4 +1,4 @@ -package com.x8bit.bitwarden.data.platform.util +package com.bitwarden.core.data.util import android.os.Build import com.bitwarden.annotation.OmitFromCoverage diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 02254c95d0..bf97f27af4 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -54,6 +54,7 @@ dependencies { implementation(libs.google.hilt.android) ksp(libs.google.hilt.compiler) implementation(libs.kotlinx.serialization) + implementation(libs.square.okhttp) implementation(libs.timber) // Pull in test fixtures from other modules diff --git a/data/src/main/kotlin/com/bitwarden/data/manager/di/DataManagerModule.kt b/data/src/main/kotlin/com/bitwarden/data/manager/di/DataManagerModule.kt index 02ced348ae..094c68b31e 100644 --- a/data/src/main/kotlin/com/bitwarden/data/manager/di/DataManagerModule.kt +++ b/data/src/main/kotlin/com/bitwarden/data/manager/di/DataManagerModule.kt @@ -1,10 +1,14 @@ package com.bitwarden.data.manager.di import android.content.Context +import com.bitwarden.core.data.manager.dispatcher.DispatcherManager import com.bitwarden.data.manager.BitwardenPackageManager import com.bitwarden.data.manager.BitwardenPackageManagerImpl import com.bitwarden.data.manager.NativeLibraryManager import com.bitwarden.data.manager.NativeLibraryManagerImpl +import com.bitwarden.data.manager.file.FileManager +import com.bitwarden.data.manager.file.FileManagerImpl +import com.bitwarden.network.service.DownloadService import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -25,6 +29,18 @@ object DataManagerModule { @ApplicationContext context: Context, ): BitwardenPackageManager = BitwardenPackageManagerImpl(context = context) + @Provides + @Singleton + fun provideFileManager( + @ApplicationContext context: Context, + downloadService: DownloadService, + dispatcherManager: DispatcherManager, + ): FileManager = FileManagerImpl( + context = context, + downloadService = downloadService, + dispatcherManager = dispatcherManager, + ) + @Provides @Singleton fun provideNativeLibraryManager(): NativeLibraryManager = NativeLibraryManagerImpl() diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/FileManager.kt b/data/src/main/kotlin/com/bitwarden/data/manager/file/FileManager.kt similarity index 90% rename from app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/FileManager.kt rename to data/src/main/kotlin/com/bitwarden/data/manager/file/FileManager.kt index 9e8d7aade5..0b3e5cecd4 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/FileManager.kt +++ b/data/src/main/kotlin/com/bitwarden/data/manager/file/FileManager.kt @@ -1,9 +1,9 @@ -package com.x8bit.bitwarden.data.vault.manager +package com.bitwarden.data.manager.file import android.net.Uri import com.bitwarden.annotation.OmitFromCoverage -import com.x8bit.bitwarden.data.vault.manager.model.DownloadResult -import com.x8bit.bitwarden.data.vault.manager.model.ZipFileResult +import com.bitwarden.data.manager.model.DownloadResult +import com.bitwarden.data.manager.model.ZipFileResult import java.io.File /** diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/FileManagerImpl.kt b/data/src/main/kotlin/com/bitwarden/data/manager/file/FileManagerImpl.kt similarity index 96% rename from app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/FileManagerImpl.kt rename to data/src/main/kotlin/com/bitwarden/data/manager/file/FileManagerImpl.kt index 75ae93c755..088ff8e6dd 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/FileManagerImpl.kt +++ b/data/src/main/kotlin/com/bitwarden/data/manager/file/FileManagerImpl.kt @@ -1,15 +1,15 @@ @file:OmitFromCoverage -package com.x8bit.bitwarden.data.vault.manager +package com.bitwarden.data.manager.file import android.content.Context import android.net.Uri import com.bitwarden.annotation.OmitFromCoverage import com.bitwarden.core.data.manager.dispatcher.DispatcherManager +import com.bitwarden.core.data.util.sdkAgnosticTransferTo +import com.bitwarden.data.manager.model.DownloadResult +import com.bitwarden.data.manager.model.ZipFileResult import com.bitwarden.network.service.DownloadService -import com.x8bit.bitwarden.data.platform.util.sdkAgnosticTransferTo -import com.x8bit.bitwarden.data.vault.manager.model.DownloadResult -import com.x8bit.bitwarden.data.vault.manager.model.ZipFileResult import kotlinx.coroutines.withContext import java.io.BufferedInputStream import java.io.BufferedOutputStream @@ -29,7 +29,7 @@ private const val BUFFER_SIZE: Int = 1024 /** * The default implementation of the [FileManager] interface. */ -class FileManagerImpl( +internal class FileManagerImpl( private val context: Context, private val downloadService: DownloadService, private val dispatcherManager: DispatcherManager, diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/model/DownloadResult.kt b/data/src/main/kotlin/com/bitwarden/data/manager/model/DownloadResult.kt similarity index 87% rename from app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/model/DownloadResult.kt rename to data/src/main/kotlin/com/bitwarden/data/manager/model/DownloadResult.kt index fb96897f46..8036e8cf10 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/model/DownloadResult.kt +++ b/data/src/main/kotlin/com/bitwarden/data/manager/model/DownloadResult.kt @@ -1,4 +1,4 @@ -package com.x8bit.bitwarden.data.vault.manager.model +package com.bitwarden.data.manager.model import java.io.File diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/model/ZipFileResult.kt b/data/src/main/kotlin/com/bitwarden/data/manager/model/ZipFileResult.kt similarity index 90% rename from app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/model/ZipFileResult.kt rename to data/src/main/kotlin/com/bitwarden/data/manager/model/ZipFileResult.kt index 240ac8d7f0..640e544da2 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/model/ZipFileResult.kt +++ b/data/src/main/kotlin/com/bitwarden/data/manager/model/ZipFileResult.kt @@ -1,4 +1,4 @@ -package com.x8bit.bitwarden.data.vault.manager.model +package com.bitwarden.data.manager.model import java.io.File