diff --git a/app/src/main/java/com/infomaniak/swisstransfer/di/ApplicationModule.kt b/app/src/main/java/com/infomaniak/swisstransfer/di/ApplicationModule.kt index 4c3577e17..cea0b5379 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/di/ApplicationModule.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/di/ApplicationModule.kt @@ -20,7 +20,6 @@ package com.infomaniak.swisstransfer.di import android.app.Application import android.content.Context import androidx.work.WorkManager -import com.infomaniak.multiplatform_swisstransfer.SwissTransferInjection import com.infomaniak.swisstransfer.ui.MainApplication import dagger.Module import dagger.Provides @@ -38,10 +37,6 @@ object ApplicationModule { @Provides fun providesMainApplication(application: Application) = application as MainApplication - @Provides - @Singleton - fun providesSwissTransferInjection() = SwissTransferInjection() - @Provides @Singleton fun providesGlobalCoroutineScope(@DefaultDispatcher defaultDispatcher: CoroutineDispatcher): CoroutineScope { diff --git a/app/src/main/java/com/infomaniak/swisstransfer/di/SwissTransferInjectionModule.kt b/app/src/main/java/com/infomaniak/swisstransfer/di/SwissTransferInjectionModule.kt new file mode 100644 index 000000000..39a3ae158 --- /dev/null +++ b/app/src/main/java/com/infomaniak/swisstransfer/di/SwissTransferInjectionModule.kt @@ -0,0 +1,54 @@ +/* + * Infomaniak SwissTransfer - Android + * Copyright (C) 2024 Infomaniak Network SA + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.infomaniak.swisstransfer.di + +import com.infomaniak.multiplatform_swisstransfer.SwissTransferInjection +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object SwissTransferInjectionModule { + + @Provides + @Singleton + fun providesSwissTransferInjection() = SwissTransferInjection() + + @Provides + @Singleton + fun providesTransferManager(swissTransferInjection: SwissTransferInjection) = swissTransferInjection.transferManager + + @Provides + @Singleton + fun providesAppSettingsManager(swissTransferInjection: SwissTransferInjection) = swissTransferInjection.appSettingsManager + + @Provides + @Singleton + fun providesAccountManager(swissTransferInjection: SwissTransferInjection) = swissTransferInjection.accountManager + + @Provides + @Singleton + fun providesUploadManager(swissTransferInjection: SwissTransferInjection) = swissTransferInjection.uploadManager + + @Provides + @Singleton + fun providesSharedApiUrlCreator(swissTransferInjection: SwissTransferInjection) = swissTransferInjection.sharedApiUrlCreator +} diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/settings/SettingsViewModel.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/settings/SettingsViewModel.kt index 2f647e85e..732d2ce31 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/settings/SettingsViewModel.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/settings/SettingsViewModel.kt @@ -19,11 +19,11 @@ package com.infomaniak.swisstransfer.ui.screen.main.settings import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.infomaniak.multiplatform_swisstransfer.SwissTransferInjection import com.infomaniak.multiplatform_swisstransfer.common.models.DownloadLimit import com.infomaniak.multiplatform_swisstransfer.common.models.EmailLanguage import com.infomaniak.multiplatform_swisstransfer.common.models.Theme import com.infomaniak.multiplatform_swisstransfer.common.models.ValidityPeriod +import com.infomaniak.multiplatform_swisstransfer.managers.AppSettingsManager import com.infomaniak.swisstransfer.di.IoDispatcher import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher @@ -32,10 +32,9 @@ import javax.inject.Inject @HiltViewModel class SettingsViewModel @Inject constructor( - private val swissTransferInjection: SwissTransferInjection, + private val appSettingsManager: AppSettingsManager, @IoDispatcher private val ioDispatcher: CoroutineDispatcher, ) : ViewModel() { - private val appSettingsManager inline get() = swissTransferInjection.appSettingsManager val appSettingsFlow = appSettingsManager.appSettings diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/NewTransferViewModel.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/NewTransferViewModel.kt index 08c801f24..07817b3e8 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/NewTransferViewModel.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/NewTransferViewModel.kt @@ -21,12 +21,12 @@ import android.net.Uri import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.infomaniak.multiplatform_swisstransfer.SwissTransferInjection import com.infomaniak.multiplatform_swisstransfer.common.interfaces.upload.RemoteUploadFile import com.infomaniak.multiplatform_swisstransfer.common.interfaces.upload.UploadFileSession import com.infomaniak.multiplatform_swisstransfer.common.models.EmailLanguage import com.infomaniak.multiplatform_swisstransfer.common.utils.mapToList import com.infomaniak.multiplatform_swisstransfer.data.NewUploadSession +import com.infomaniak.multiplatform_swisstransfer.managers.UploadManager import com.infomaniak.sentry.SentryLog import com.infomaniak.swisstransfer.di.IoDispatcher import com.infomaniak.swisstransfer.ui.screen.newtransfer.importfiles.components.TransferType @@ -42,13 +42,11 @@ import javax.inject.Inject class NewTransferViewModel @Inject constructor( private val savedStateHandle: SavedStateHandle, private val importationFilesManager: ImportationFilesManager, - private val swissTransferInjection: SwissTransferInjection, + private val uploadManager: UploadManager, private val uploadWorkerScheduler: UploadWorker.Scheduler, @IoDispatcher private val ioDispatcher: CoroutineDispatcher, ) : ViewModel() { - private val uploadManager inline get() = swissTransferInjection.uploadManager - @OptIn(FlowPreview::class) val importedFilesDebounced = importationFilesManager.importedFiles .debounce(50) diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/upload/UploadProgressViewModel.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/upload/UploadProgressViewModel.kt index f7a6f7692..6f9d0ab2b 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/upload/UploadProgressViewModel.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/upload/UploadProgressViewModel.kt @@ -19,7 +19,7 @@ package com.infomaniak.swisstransfer.ui.screen.newtransfer.upload import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.infomaniak.multiplatform_swisstransfer.SwissTransferInjection +import com.infomaniak.multiplatform_swisstransfer.managers.UploadManager import com.infomaniak.swisstransfer.di.IoDispatcher import com.infomaniak.swisstransfer.workers.UploadWorker import dagger.hilt.android.lifecycle.HiltViewModel @@ -33,11 +33,9 @@ import javax.inject.Inject @HiltViewModel class UploadProgressViewModel @Inject constructor( private val uploadWorkerScheduler: UploadWorker.Scheduler, - private val swissTransferInjection: SwissTransferInjection, + private val uploadManager: UploadManager, @IoDispatcher private val ioDispatcher: CoroutineDispatcher, ) : ViewModel() { - private val uploadManager inline get() = swissTransferInjection.uploadManager - val progress = uploadWorkerScheduler.trackUploadProgressFlow() .flowOn(ioDispatcher) .stateIn( diff --git a/app/src/main/java/com/infomaniak/swisstransfer/workers/UploadWorker.kt b/app/src/main/java/com/infomaniak/swisstransfer/workers/UploadWorker.kt index f12a4f97c..9fd682a76 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/workers/UploadWorker.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/workers/UploadWorker.kt @@ -21,7 +21,7 @@ import android.content.Context import androidx.compose.runtime.Immutable import androidx.hilt.work.HiltWorker import androidx.work.* -import com.infomaniak.multiplatform_swisstransfer.SwissTransferInjection +import com.infomaniak.multiplatform_swisstransfer.managers.UploadManager import com.infomaniak.sentry.SentryLog import com.infomaniak.swisstransfer.ui.screen.newtransfer.ImportLocalStorage import dagger.assisted.Assisted @@ -38,11 +38,9 @@ class UploadWorker @AssistedInject constructor( @Assisted appContext: Context, @Assisted params: WorkerParameters, private val importLocalStorage: ImportLocalStorage, - private val swissTransferInjection: SwissTransferInjection, + private val uploadManager: UploadManager, ) : BaseCoroutineWorker(appContext, params) { - private val uploadManager inline get() = swissTransferInjection.uploadManager - private val fileChunkSizeManager by lazy { FileChunkSizeManager( chunkMinSize = EXPECTED_CHUNK_SIZE,