Use koin in the search module

pull/2064/head
lihenggui 2 years ago
parent 5fdea5ace2
commit 41b0cf19f7

@ -103,6 +103,7 @@ import nowinandroid.feature.search.generated.resources.feature_search_updates
import org.jetbrains.compose.resources.stringResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import org.jetbrains.compose.ui.tooling.preview.PreviewParameter
import org.koin.compose.viewmodel.koinViewModel
import nowinandroid.core.ui.generated.resources.Res as uiR
import nowinandroid.feature.search.generated.resources.Res as searchR
@ -112,7 +113,7 @@ internal fun SearchRoute(
onInterestsClick: () -> Unit,
onTopicClick: (String) -> Unit,
modifier: Modifier = Modifier,
searchViewModel: SearchViewModel,
searchViewModel: SearchViewModel = koinViewModel(),
) {
val recentSearchQueriesUiState by searchViewModel.recentSearchQueriesUiState.collectAsStateWithLifecycle()
val searchResultUiState by searchViewModel.searchResultUiState.collectAsStateWithLifecycle()
@ -256,7 +257,7 @@ fun EmptySearchResultBody(
fontWeight = FontWeight.Bold,
),
) {
append(stringResource(id = searchR.string.feature_search_interests))
append(stringResource(resource = searchR.string.feature_search_interests))
}
}

@ -37,10 +37,9 @@ import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import me.tatarka.inject.annotations.Inject
@OptIn(ExperimentalCoroutinesApi::class)
class SearchViewModel @Inject constructor(
class SearchViewModel(
getSearchContentsUseCase: GetSearchContentsUseCase,
recentSearchQueriesUseCase: GetRecentSearchQueriesUseCase,
private val searchContentsRepository: SearchContentsRepository,

@ -0,0 +1,35 @@
/*
* Copyright 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.samples.apps.nowinandroid.feature.search.di
import com.google.samples.apps.nowinandroid.feature.search.SearchViewModel
import org.koin.core.module.dsl.viewModel
import org.koin.dsl.module
val searchModule = module {
viewModel {
SearchViewModel(
get(),
get(),
get(),
get(),
get(),
get(),
get(),
)
}
}

@ -20,6 +20,7 @@ import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import com.google.samples.apps.nowinandroid.feature.search.SearchRoute
const val SEARCH_ROUTE = "search_route"
@ -33,10 +34,10 @@ fun NavGraphBuilder.searchScreen(
// TODO: Handle back stack for each top-level destination. At the moment each top-level
// destination may have own search screen's back stack.
composable(route = SEARCH_ROUTE) {
// SearchRoute(
// onBackClick = onBackClick,
// onInterestsClick = onInterestsClick,
// onTopicClick = onTopicClick,
// )
SearchRoute(
onBackClick = onBackClick,
onInterestsClick = onInterestsClick,
onTopicClick = onTopicClick,
)
}
}

Loading…
Cancel
Save