Skip to content

Commit bea090a

Browse files
authored
Merge pull request #3 from Farhandroid/Part-2
Part 2
2 parents ba4cea4 + 22061c5 commit bea090a

File tree

79 files changed

+826
-354
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+826
-354
lines changed

.idea/misc.xml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ dependencies {
5656
implementation "androidx.compose.ui:ui:$compose_version"
5757
implementation "androidx.compose.material:material:$compose_version"
5858
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
59-
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
60-
implementation 'androidx.activity:activity-compose:1.3.1'
59+
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0'
60+
implementation 'androidx.activity:activity-compose:1.4.0'
6161
implementation project(path: ':data')
6262
implementation project(path: ':domain')
6363
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
@@ -83,10 +83,20 @@ dependencies {
8383
implementation 'com.google.code.gson:gson:2.8.9'
8484

8585
// Coil
86-
implementation("io.coil-kt:coil-compose:1.3.2")
86+
implementation("io.coil-kt:coil-compose:1.4.0")
8787

8888
// System UI Controller - Accompanist
8989
implementation "com.google.accompanist:accompanist-systemuicontroller:0.17.0"
90+
91+
//ROOM DB
92+
implementation "androidx.room:room-runtime:$room_version"
93+
kapt "androidx.room:room-compiler:$room_version"
94+
implementation "androidx.room:room-ktx:$room_version"
95+
implementation "androidx.room:room-paging:$room_version"
96+
97+
// Paging 3.0
98+
implementation 'androidx.paging:paging-compose:1.0.0-alpha14'
99+
90100
}
91101

92102
kapt {

app/debug/output-metadata.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"version": 3,
3+
"artifactType": {
4+
"type": "APK",
5+
"kind": "Directory"
6+
},
7+
"applicationId": "com.farhan.tanvir.androidcleanarchitecture",
8+
"variantName": "debug",
9+
"elements": [
10+
{
11+
"type": "SINGLE",
12+
"filters": [],
13+
"attributes": [],
14+
"versionCode": 1,
15+
"versionName": "1.0",
16+
"outputFile": "app-debug.apk"
17+
}
18+
],
19+
"elementType": "File"
20+
}
39.2 KB
Loading
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.farhan.tanvir.androidcleanarchitecture.di
2+
3+
import android.app.Application
4+
import androidx.room.Database
5+
import androidx.room.Room
6+
import com.farhan.tanvir.data.db.MovieDB
7+
import com.farhan.tanvir.data.db.MovieDao
8+
import com.farhan.tanvir.data.db.MovieRemoteKeysDao
9+
import dagger.Module
10+
import dagger.Provides
11+
import dagger.hilt.InstallIn
12+
import dagger.hilt.components.SingletonComponent
13+
14+
@Module
15+
@InstallIn(SingletonComponent::class)
16+
object DatabaseModule {
17+
18+
@Provides
19+
fun provideDatabase(app: Application): MovieDB =
20+
Room.databaseBuilder(app, MovieDB::class.java, "movie_db").fallbackToDestructiveMigration()
21+
.build()
22+
23+
@Provides
24+
fun provideMovieDao(movieDB: MovieDB) : MovieDao= movieDB.movieDao()
25+
26+
@Provides
27+
fun provideMovieRemoteKeysDao(movieDB: MovieDB) : MovieRemoteKeysDao = movieDB.movieRemoteKeysDao()
28+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.farhan.tanvir.androidcleanarchitecture.di
2+
3+
import com.farhan.tanvir.data.db.MovieDao
4+
import com.farhan.tanvir.data.repository.dataSource.MovieLocalDataSource
5+
import com.farhan.tanvir.data.repository.dataSourceImpl.MovieLocalDataSourceImpl
6+
import dagger.Module
7+
import dagger.Provides
8+
import dagger.hilt.InstallIn
9+
import dagger.hilt.components.SingletonComponent
10+
11+
12+
@Module
13+
@InstallIn(SingletonComponent::class)
14+
object LocalDataModule {
15+
@Provides
16+
fun provideLocalDataSource(movieDao: MovieDao): MovieLocalDataSource =
17+
MovieLocalDataSourceImpl(movieDao = movieDao)
18+
}

app/src/main/java/com/farhan/tanvir/androidcleanarchitecture/di/RemoteDataModule.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.farhan.tanvir.androidcleanarchitecture.di
22

33
import com.farhan.tanvir.data.api.MovieApi
4+
import com.farhan.tanvir.data.db.MovieDB
45
import com.farhan.tanvir.data.repository.dataSource.MovieRemoteDataSource
56
import com.farhan.tanvir.data.repository.dataSourceImpl.MovieRemoteDataSourceImpl
67
import dagger.Module
@@ -13,6 +14,6 @@ import dagger.hilt.components.SingletonComponent
1314
@InstallIn(SingletonComponent::class)
1415
object RemoteDataModule {
1516
@Provides
16-
fun provideMoviesRemoteDataSource(movieApi: MovieApi) : MovieRemoteDataSource =
17-
MovieRemoteDataSourceImpl(movieApi)
17+
fun provideMoviesRemoteDataSource(movieApi: MovieApi, movieDB: MovieDB) : MovieRemoteDataSource =
18+
MovieRemoteDataSourceImpl(movieApi, movieDB = movieDB)
1819
}

app/src/main/java/com/farhan/tanvir/androidcleanarchitecture/di/RepositoryModule.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.farhan.tanvir.androidcleanarchitecture.di
22

33
import com.farhan.tanvir.data.repository.MovieRepositoryImpl
4+
import com.farhan.tanvir.data.repository.dataSource.MovieLocalDataSource
45
import com.farhan.tanvir.data.repository.dataSource.MovieRemoteDataSource
56
import com.farhan.tanvir.domain.repository.MovieRepository
67
import dagger.Module
@@ -14,6 +15,9 @@ import dagger.hilt.components.SingletonComponent
1415
object RepositoryModule {
1516

1617
@Provides
17-
fun provideMoviesRepository(movieRemoteDataSource: MovieRemoteDataSource) : MovieRepository=
18-
MovieRepositoryImpl(movieRemoteDataSource)
18+
fun provideMoviesRepository(
19+
movieRemoteDataSource: MovieRemoteDataSource,
20+
movieLocalDataSource: MovieLocalDataSource
21+
): MovieRepository =
22+
MovieRepositoryImpl(movieRemoteDataSource, movieLocalDataSource = movieLocalDataSource)
1923
}
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.farhan.tanvir.androidcleanarchitecture.di
22

33
import com.farhan.tanvir.domain.repository.MovieRepository
4+
import com.farhan.tanvir.domain.useCase.GetMoviesFromDBUseCase
45
import com.farhan.tanvir.domain.useCase.GetPopularMoviesUseCase
6+
import com.farhan.tanvir.domain.useCase.MovieUseCases
57
import dagger.Module
68
import dagger.Provides
79
import dagger.hilt.InstallIn
@@ -10,7 +12,10 @@ import dagger.hilt.components.SingletonComponent
1012
@Module
1113
@InstallIn(SingletonComponent::class)
1214
object UseCaseModule {
15+
1316
@Provides
14-
fun provideGetPopularMoviesUseCase(movieRepository: MovieRepository) =
15-
GetPopularMoviesUseCase(movieRepository)
17+
fun provideMovieUseCases(movieRepository: MovieRepository) = MovieUseCases(
18+
getPopularMoviesUseCase = GetPopularMoviesUseCase(movieRepository = movieRepository),
19+
getMoviesFromDBUseCase = GetMoviesFromDBUseCase(movieRepository = movieRepository)
20+
)
1621
}

app/src/main/java/com/farhan/tanvir/androidcleanarchitecture/presentation/components/Progressbar.kt

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)