Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inject SwissTransferInjection's managers directly #148

Merged
merged 2 commits into from
Nov 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -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 <http://www.gnu.org/licenses/>.
*/
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
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
Expand Down
Loading