Skip to content

Commit 68446e7

Browse files
committed
Added room dependency
1 parent ee16d1b commit 68446e7

File tree

8 files changed

+36
-13
lines changed

8 files changed

+36
-13
lines changed

.idea/deploymentTargetSelector.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle.kts

+8
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ dependencies {
9494
implementation(libs.hilt.android)
9595
ksp(libs.hilt.android.compiler)
9696

97+
// Room (Local Database)
98+
implementation(libs.androidx.room.runtime)
99+
implementation(libs.androidx.room.ktx)
100+
ksp(libs.androidx.room.compiler)
101+
97102
// Ktor-Client
98103
implementation(libs.ktor.client.core)
99104
implementation(libs.ktor.client.android) // Engine
@@ -107,6 +112,9 @@ dependencies {
107112
// Coil Compose
108113
implementation(libs.coil.compose)
109114

115+
// Browser
116+
implementation(libs.androidx.browser)
117+
110118
// KotlinX Serialization
111119
implementation(libs.kotlinx.serialization.json)
112120

app/src/main/java/com/mubarak/wikinews/data/sources/NewsRemoteDataSource.kt

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.mubarak.wikinews.data.sources.remote.dto.newsfeed.NewsFeed
55
import com.mubarak.wikinews.data.sources.remote.dto.search.SearchNews
66
import kotlinx.coroutines.CoroutineDispatcher
77
import kotlinx.coroutines.Dispatchers
8+
import kotlinx.coroutines.flow.Flow
89
import kotlinx.coroutines.withContext
910

1011
class NewsRemoteDataSource(

app/src/main/java/com/mubarak/wikinews/data/sources/remote/DefaultNewsFeedApi.kt

+11-10
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,28 @@ class DefaultNewsFeedApi(
1717
) : NewsFeedApi {
1818
override suspend fun getNewsFeed(): NewsFeed {
1919
val currentDate = DateFormatter.formattedDate
20-
return httpClient.get {
21-
url{
22-
appendEncodedPathSegments("feed","v1","wikipedia","en","featured",currentDate)
20+
return httpClient.get {
21+
url {
22+
appendEncodedPathSegments("feed", "v1", "wikipedia", "en", "featured", currentDate)
2323
protocol = URLProtocol.HTTPS
2424
host = "api.wikimedia.org"
2525
}
26-
header("Authorization","Bearer $ACCESS_TOKEN")
26+
header("Authorization", "Bearer $ACCESS_TOKEN")
2727
}.body()
28+
2829
}
2930

30-
override suspend fun getSearchNews(searchQuery:String): SearchNews {
31+
override suspend fun getSearchNews(searchQuery: String): SearchNews {
3132
return httpClient.get {
32-
if (searchQuery.isNotEmpty()){
33+
if (searchQuery.isNotEmpty()) {
3334
url {
34-
appendEncodedPathSegments("core","v1","wikipedia","en","search","title")
35+
appendEncodedPathSegments("core", "v1", "wikipedia", "en", "search", "title")
3536
protocol = URLProtocol.HTTPS
3637
host = "api.wikimedia.org"
3738
}
38-
parameter("q",searchQuery)
39-
parameter("limit",20) // 20 items per pagination
40-
}
39+
parameter("q", searchQuery)
40+
parameter("limit", 20) // 20 items per pagination
41+
}
4142
}.body()
4243
}
4344

app/src/main/java/com/mubarak/wikinews/ui/home/HomeScreen.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ fun HomeRoute(
8181
onSearchActionClick: () -> Unit,
8282
viewModel: HomeViewModel = hiltViewModel()
8383
) {
84-
HomeScreen(modifier = modifier,uiState = viewModel.newsUiState, onSearchActionClick = onSearchActionClick)
84+
val newsUiState = viewModel.newsUiState
85+
HomeScreen(modifier = modifier,uiState = newsUiState, onSearchActionClick = onSearchActionClick)
8586
}
8687

8788
@OptIn(ExperimentalMaterial3Api::class)

app/src/main/java/com/mubarak/wikinews/ui/home/HomeViewModel.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import androidx.lifecycle.viewModelScope
1111
import com.mubarak.wikinews.data.sources.NewsRepository
1212
import com.mubarak.wikinews.data.sources.remote.dto.newsfeed.NewsFeed
1313
import dagger.hilt.android.lifecycle.HiltViewModel
14-
import io.ktor.utils.io.errors.IOException
1514
import kotlinx.coroutines.launch
15+
import java.io.IOException
1616
import javax.inject.Inject
1717

1818
sealed interface HomeUiState {

app/src/main/java/com/mubarak/wikinews/ui/main/MainActivity.kt

+4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package com.mubarak.wikinews.ui.main
22

3+
import android.os.Build
34
import android.os.Bundle
5+
import android.util.Log
46
import androidx.activity.ComponentActivity
57
import androidx.activity.compose.setContent
68
import androidx.activity.enableEdgeToEdge
9+
import androidx.annotation.RequiresExtension
710
import com.mubarak.wikinews.ui.WikiNewsApp
811
import com.mubarak.wikinews.ui.theme.WikiNewsTheme
912
import dagger.hilt.android.AndroidEntryPoint
1013

1114
@AndroidEntryPoint
1215
class MainActivity : ComponentActivity() {
16+
@RequiresExtension(extension = Build.VERSION_CODES.S, version = 7)
1317
override fun onCreate(savedInstanceState: Bundle?) {
1418
super.onCreate(savedInstanceState)
1519
enableEdgeToEdge()

gradle/libs.versions.toml

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[versions]
22
agp = "8.5.0"
3+
browser = "1.8.0"
34
coilCompose = "2.7.0"
45
desugar_jdk_libs = "2.1.2"
56
hiltNavigationCompose = "1.2.0"
@@ -26,13 +27,20 @@ material3AdaptiveNavigationSuite = "1.3.0"
2627
navigationCompose = "2.8.2"
2728
pagingCompose = "3.3.2"
2829
pagingRuntime = "3.3.2"
30+
roomVersion = "2.6.1"
31+
2932

3033
[libraries]
34+
androidx-browser = { module = "androidx.browser:browser", version.ref = "browser" }
3135
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
3236
androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigationCompose" }
3337
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycleRuntimeKtx" }
3438
androidx-material-icons-extended = { module = "androidx.compose.material:material-icons-extended" }
3539
androidx-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite" }
40+
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "roomVersion" }
41+
androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "roomVersion" }
42+
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "roomVersion" }
43+
androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "roomVersion" }
3644
androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" }
3745
androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "pagingCompose" }
3846
androidx-paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "pagingRuntime" }

0 commit comments

Comments
 (0)