Skip to content

Commit 321c711

Browse files
committed
Add network_security_config.xml.
Replace enums with sealed class.
1 parent 09914d2 commit 321c711

File tree

8 files changed

+33
-36
lines changed

8 files changed

+33
-36
lines changed

app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ allOpen {
1212
}
1313

1414
android {
15-
compileSdkVersion 29
15+
compileSdkVersion 30
1616

1717
dataBinding {
1818
enabled = true
@@ -21,7 +21,7 @@ android {
2121
defaultConfig {
2222
applicationId "com.kanchanpal.newsfeed"
2323
minSdkVersion 21
24-
targetSdkVersion 29
24+
targetSdkVersion 30
2525
versionCode 1
2626
versionName "1.0"
2727
testInstrumentationRunner "com.kanchanpal.newsfeed.util.AppTestRunner"

app/src/main/AndroidManifest.xml

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="com.kanchanpal.newsfeed">
44

5-
6-
<uses-permission android:name="android.permission.INTERNET"/>
7-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
5+
<uses-permission android:name="android.permission.INTERNET" />
6+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
87

98
<application
10-
android:name="com.kanchanpal.newsfeed.NewsApp"
9+
android:name=".NewsApp"
1110
android:allowBackup="true"
11+
android:networkSecurityConfig="@xml/network_security_config"
12+
android:hardwareAccelerated="false"
1213
android:icon="@mipmap/ic_launcher"
1314
android:label="@string/app_name"
15+
android:largeHeap="true"
1416
android:roundIcon="@mipmap/ic_launcher_round"
1517
android:supportsRtl="true"
16-
android:largeHeap="true"
17-
android:hardwareAccelerated="false"
1818
android:theme="@style/AppTheme">
1919
<activity android:name="com.kanchanpal.newsfeed.MainActivity">
2020
<intent-filter>
@@ -25,4 +25,4 @@
2525
</activity>
2626
</application>
2727

28-
</manifest>
28+
</manifest>
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,7 @@
11
package com.kanchanpal.newsfeed.api
22

3-
enum class Status {
4-
RUNNING,
5-
SUCCESS,
6-
FAILED
7-
}
8-
9-
@Suppress("DataClassPrivateConstructor")
10-
data class NetworkState private constructor(
11-
val status: Status,
12-
val msg: String? = null) {
13-
companion object {
14-
val LOADED = NetworkState(Status.SUCCESS)
15-
val LOADING = NetworkState(Status.RUNNING)
16-
fun error(msg: String?) = NetworkState(Status.FAILED, msg)
17-
}
3+
sealed class NetworkState {
4+
object LOADED : NetworkState()
5+
object LOADING : NetworkState()
6+
data class ERROR(val msg: String): NetworkState()
187
}

app/src/main/java/com/kanchanpal/newsfeed/data/newsSet/NewsPageDataSource.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.kanchanpal.newsfeed.data.newsSet
22

3+
import android.util.Log
34
import androidx.lifecycle.MutableLiveData
45
import androidx.paging.PageKeyedDataSource
56
import com.kanchanpal.newsfeed.api.NetworkState
@@ -10,7 +11,6 @@ import com.kanchanpal.newsfeed.data.dao.NewsDao
1011
import kotlinx.coroutines.CoroutineExceptionHandler
1112
import kotlinx.coroutines.CoroutineScope
1213
import kotlinx.coroutines.launch
13-
import timber.log.Timber
1414
import javax.inject.Inject
1515

1616
class NewsPageDataSource @Inject constructor(
@@ -49,7 +49,7 @@ class NewsPageDataSource @Inject constructor(
4949
coroutineScope.launch(getJobErrorHandler()) {
5050
when (val response = remoteDataSource.fetchNewsList(apiKey, page, pageSize)) {
5151
is Result.Error -> {
52-
networkState.postValue(NetworkState.error(response.message ?: "Unknown error"))
52+
networkState.postValue(NetworkState.ERROR(response.message ?: "Unknown error"))
5353
postError(response.message)
5454
}
5555
is Result.Success -> {
@@ -67,6 +67,6 @@ class NewsPageDataSource @Inject constructor(
6767
}
6868

6969
private fun postError(message: String?) {
70-
Timber.e("An error happened: $message")
70+
Log.e("NewsPageDataSource","An error happened: $message")
7171
}
7272
}

app/src/main/java/com/kanchanpal/newsfeed/di/AppInjector.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ object AppInjector {
4242

4343
}
4444

45-
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle?) {
46-
45+
override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
4746
}
4847

4948
override fun onActivityDestroyed(activity: Activity) {

app/src/main/java/com/kanchanpal/newsfeed/news/NewsListFragment.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import androidx.fragment.app.Fragment
99
import androidx.fragment.app.viewModels
1010
import androidx.lifecycle.Observer
1111
import androidx.lifecycle.ViewModelProvider
12-
import com.kanchanpal.newsfeed.api.Status
12+
import com.kanchanpal.newsfeed.api.NetworkState
1313
import com.kanchanpal.newsfeed.commonUtil.ConnectivityUtil
1414
import com.kanchanpal.newsfeed.databinding.FragmentNewsListBinding
1515
import com.kanchanpal.newsfeed.di.Injectable
@@ -51,15 +51,15 @@ class NewsListFragment : Fragment(), Injectable {
5151
private fun subscribeUI(adapter: NewsAdapter) {
5252
val data = viewModel.newsList(isConnected)
5353
data?.networkState?.observe(viewLifecycleOwner, Observer {
54-
when(it.status) {
55-
Status.RUNNING -> {
54+
when(it) {
55+
is NetworkState.LOADING -> {
5656
progressBar.visibility = View.VISIBLE
5757
}
58-
Status.FAILED -> {
58+
is NetworkState.ERROR -> {
5959
progressBar.visibility = View.GONE
6060
// Handle fail state
6161
}
62-
Status.SUCCESS -> {
62+
is NetworkState.LOADED -> {
6363
progressBar.visibility = View.GONE
6464
}
6565
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<network-security-config>
3+
<debug-overrides>
4+
<trust-anchors>
5+
<!-- Trust user added CAs while debuggable only -->
6+
<certificates src="user" />
7+
</trust-anchors>
8+
</debug-overrides>
9+
</network-security-config>

build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
buildscript {
44
ext {
55
// Sdk and tools
6-
compileSdkVersion = 28
6+
compileSdkVersion = 30
77
minSdkVersion = 21
8-
targetSdkVersion = 28
8+
targetSdkVersion = 30
99

1010
// App dependencies
1111
appCompatVersion = '1.1.0-beta01'

0 commit comments

Comments
 (0)