Skip to content

Commit 0e13207

Browse files
authored
Merge pull request #874 from SimonMarquis/string-decoder
Replace StringDecoder injection with simpler API
2 parents e03294b + 0418997 commit 0e13207

File tree

8 files changed

+9
-145
lines changed

8 files changed

+9
-145
lines changed

core/common/src/main/java/com/google/samples/apps/nowinandroid/core/decoder/StringDecoder.kt

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

core/common/src/main/java/com/google/samples/apps/nowinandroid/core/decoder/UriDecoder.kt

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

core/common/src/main/java/com/google/samples/apps/nowinandroid/core/decoder/di/StringDecoderModule.kt

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

core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/decoder/FakeStringDecoder.kt

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

core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/di/TestStringDecoderModule.kt

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

feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import com.google.samples.apps.nowinandroid.core.data.repository.NewsResourceQue
2323
import com.google.samples.apps.nowinandroid.core.data.repository.TopicsRepository
2424
import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository
2525
import com.google.samples.apps.nowinandroid.core.data.repository.UserNewsResourceRepository
26-
import com.google.samples.apps.nowinandroid.core.decoder.StringDecoder
2726
import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
2827
import com.google.samples.apps.nowinandroid.core.model.data.Topic
2928
import com.google.samples.apps.nowinandroid.core.model.data.UserNewsResource
@@ -43,13 +42,12 @@ import javax.inject.Inject
4342
@HiltViewModel
4443
class TopicViewModel @Inject constructor(
4544
savedStateHandle: SavedStateHandle,
46-
stringDecoder: StringDecoder,
4745
private val userDataRepository: UserDataRepository,
4846
topicsRepository: TopicsRepository,
4947
userNewsResourceRepository: UserNewsResourceRepository,
5048
) : ViewModel() {
5149

52-
private val topicArgs: TopicArgs = TopicArgs(savedStateHandle, stringDecoder)
50+
private val topicArgs: TopicArgs = TopicArgs(savedStateHandle)
5351

5452
val topicId = topicArgs.topicId
5553

feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,30 @@
1616

1717
package com.google.samples.apps.nowinandroid.feature.topic.navigation
1818

19-
import android.net.Uri
2019
import androidx.annotation.VisibleForTesting
2120
import androidx.lifecycle.SavedStateHandle
2221
import androidx.navigation.NavController
2322
import androidx.navigation.NavGraphBuilder
2423
import androidx.navigation.NavType
2524
import androidx.navigation.compose.composable
2625
import androidx.navigation.navArgument
27-
import com.google.samples.apps.nowinandroid.core.decoder.StringDecoder
2826
import com.google.samples.apps.nowinandroid.feature.topic.TopicRoute
27+
import java.net.URLDecoder
28+
import java.net.URLEncoder
29+
import kotlin.text.Charsets.UTF_8
30+
31+
private val URL_CHARACTER_ENCODING = UTF_8.name()
2932

3033
@VisibleForTesting
3134
internal const val topicIdArg = "topicId"
3235

3336
internal class TopicArgs(val topicId: String) {
34-
constructor(savedStateHandle: SavedStateHandle, stringDecoder: StringDecoder) :
35-
this(stringDecoder.decodeString(checkNotNull(savedStateHandle[topicIdArg])))
37+
constructor(savedStateHandle: SavedStateHandle) :
38+
this(URLDecoder.decode(checkNotNull(savedStateHandle[topicIdArg]), URL_CHARACTER_ENCODING))
3639
}
3740

3841
fun NavController.navigateToTopic(topicId: String) {
39-
val encodedId = Uri.encode(topicId)
42+
val encodedId = URLEncoder.encode(topicId, URL_CHARACTER_ENCODING)
4043
this.navigate("topic_route/$encodedId") {
4144
launchSingleTop = true
4245
}

feature/topic/src/test/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
2222
import com.google.samples.apps.nowinandroid.core.model.data.NewsResource
2323
import com.google.samples.apps.nowinandroid.core.model.data.NewsResourceType.Video
2424
import com.google.samples.apps.nowinandroid.core.model.data.Topic
25-
import com.google.samples.apps.nowinandroid.core.testing.decoder.FakeStringDecoder
2625
import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository
2726
import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository
2827
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
@@ -63,7 +62,6 @@ class TopicViewModelTest {
6362
fun setup() {
6463
viewModel = TopicViewModel(
6564
savedStateHandle = SavedStateHandle(mapOf(topicIdArg to testInputTopics[0].topic.id)),
66-
stringDecoder = FakeStringDecoder(),
6765
userDataRepository = userDataRepository,
6866
topicsRepository = topicsRepository,
6967
userNewsResourceRepository = userNewsResourceRepository,

0 commit comments

Comments
 (0)