Skip to content

Commit 6c5045e

Browse files
committed
refactor(di): Consolidate repository providers into a single module
Merged `ProvideRepoForService` and `ProvideRepoForViewModels` into a single `RepositoryModule`. This change simplifies the Dagger Hilt setup by providing `SettingsRepository` and `SensorsRepository` as singletons from the `SingletonComponent`, making them accessible to both ViewModels and Services without duplication.
1 parent 86a10ce commit 6c5045e

1 file changed

Lines changed: 30 additions & 48 deletions

File tree

data/src/main/java/com/github/umercodez/sensorspot/data/injection/ProvideRepoForViewModels.kt renamed to data/src/main/java/com/github/umercodez/sensorspot/data/injection/RepositoryModule.kt

Lines changed: 30 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,33 @@
1616
* along with SensorSpot. If not, see <https://www.gnu.org/licenses/>.
1717
*
1818
*/
19-
package com.github.umercodez.sensorspot.data.injection
20-
21-
import android.content.Context
22-
import com.github.umercodez.sensorspot.data.repositories.settings.SettingsRepository
23-
import com.github.umercodez.sensorspot.data.repositories.settings.SettingsRepositoryImp
24-
import com.github.umercodez.sensorspot.data.repositories.settings.sensor.SensorsRepository
25-
import com.github.umercodez.sensorspot.data.repositories.settings.sensor.SensorsRepositoryImp
26-
import dagger.Module
27-
import dagger.Provides
28-
import dagger.hilt.InstallIn
29-
import dagger.hilt.android.components.ServiceComponent
30-
import dagger.hilt.android.components.ViewModelComponent
31-
import dagger.hilt.android.qualifiers.ApplicationContext
32-
import dagger.hilt.android.scopes.ServiceScoped
33-
import dagger.hilt.android.scopes.ViewModelScoped
34-
35-
@Module
36-
@InstallIn(ViewModelComponent::class)
37-
object ProvideRepoForViewModels {
38-
39-
@Provides
40-
@ViewModelScoped
41-
fun provideSettingsRepository(@ApplicationContext context: Context): SettingsRepository {
42-
return SettingsRepositoryImp(context)
43-
}
44-
45-
@Provides
46-
@ViewModelScoped
47-
fun provideSensorsRepository(@ApplicationContext context: Context): SensorsRepository {
48-
return SensorsRepositoryImp(context)
49-
}
50-
}
51-
52-
@Module
53-
@InstallIn(ServiceComponent::class)
54-
object ProvideRepoForService {
55-
@Provides
56-
@ServiceScoped
57-
fun provideSettingsRepository(@ApplicationContext context: Context): SettingsRepository {
58-
return SettingsRepositoryImp(context)
59-
}
60-
61-
@Provides
62-
@ServiceScoped
63-
fun provideSensorsRepository(@ApplicationContext context: Context): SensorsRepository {
64-
return SensorsRepositoryImp(context)
65-
}
66-
}
19+
package com.github.umercodez.sensorspot.data.injection
20+
21+
import android.content.Context
22+
import com.github.umercodez.sensorspot.data.repositories.settings.SettingsRepository
23+
import com.github.umercodez.sensorspot.data.repositories.settings.SettingsRepositoryImp
24+
import com.github.umercodez.sensorspot.data.repositories.settings.sensor.SensorsRepository
25+
import com.github.umercodez.sensorspot.data.repositories.settings.sensor.SensorsRepositoryImp
26+
import dagger.Module
27+
import dagger.Provides
28+
import dagger.hilt.InstallIn
29+
import dagger.hilt.android.qualifiers.ApplicationContext
30+
import dagger.hilt.components.SingletonComponent
31+
import javax.inject.Singleton
32+
33+
@Module
34+
@InstallIn(SingletonComponent::class) // ViewModelComponent and ServiceComponent can both access bindings from SingletonComponent.
35+
object RepositoryModule {
36+
37+
@Provides
38+
@Singleton
39+
fun provideSettingsRepository(@ApplicationContext context: Context): SettingsRepository {
40+
return SettingsRepositoryImp(context)
41+
}
42+
43+
@Provides
44+
@Singleton
45+
fun provideSensorsRepository(@ApplicationContext context: Context): SensorsRepository {
46+
return SensorsRepositoryImp(context)
47+
}
48+
}

0 commit comments

Comments
 (0)