Skip to content

Commit f087216

Browse files
committed
[BOOK-151] feat: 최근 검색어 emptyScreen 추가
1 parent ab710bf commit f087216

File tree

4 files changed

+81
-35
lines changed

4 files changed

+81
-35
lines changed

feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/SearchScreen.kt

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import com.ninecraft.booket.feature.search.component.BookRegisterBottomSheet
3535
import com.ninecraft.booket.feature.search.component.BookRegisterSuccessBottomSheet
3636
import com.ninecraft.booket.feature.search.component.InfinityLazyColumn
3737
import com.ninecraft.booket.feature.search.component.LoadStateFooter
38+
import com.ninecraft.booket.feature.search.component.RecentSearchTitle
3839
import com.ninecraft.booket.feature.search.component.SearchItem
3940
import com.slack.circuit.codegen.annotations.CircuitInject
4041
import dagger.hilt.android.components.ActivityRetainedComponent
@@ -124,48 +125,52 @@ internal fun SearchContent(
124125
}
125126

126127
is UiState.Idle -> {
127-
LazyColumn {
128-
item {
129-
Column(
130-
modifier = Modifier
131-
.fillMaxWidth()
132-
.padding(horizontal = ReedTheme.spacing.spacing5, vertical = ReedTheme.spacing.spacing2),
133-
) {
134-
Text(
135-
text = stringResource(R.string.recent_search),
136-
color = ReedTheme.colors.contentPrimary,
137-
style = ReedTheme.typography.body1SemiBold,
138-
)
139-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing1))
140-
}
128+
if (state.recentSearches.isEmpty()) {
129+
Box(
130+
modifier = Modifier.fillMaxSize(),
131+
contentAlignment = Alignment.Center,
132+
) {
133+
RecentSearchTitle(modifier = Modifier.align(Alignment.TopCenter))
134+
Text(
135+
text = stringResource(R.string.empty_recent_searches),
136+
modifier = Modifier.align(Alignment.Center),
137+
color = ReedTheme.colors.contentSecondary,
138+
style = ReedTheme.typography.body1Medium,
139+
)
141140
}
141+
} else {
142+
LazyColumn {
143+
item {
144+
RecentSearchTitle()
145+
}
142146

143-
items(
144-
count = state.recentSearches.size,
145-
key = { index -> state.recentSearches[index] },
146-
) { index ->
147-
Column {
148-
SearchItem(
149-
query = state.recentSearches[index],
150-
onQueryClick = { keyword ->
151-
state.eventSink(SearchUiEvent.OnRecentSearchClick(keyword))
152-
},
153-
onRemoveIconClick = { keyword ->
154-
state.eventSink(SearchUiEvent.OnRemoveSearchRemoveClick(keyword))
155-
},
156-
)
157-
HorizontalDivider(
158-
modifier = Modifier.fillMaxWidth(),
159-
thickness = 1.dp,
160-
color = ReedTheme.colors.borderPrimary,
161-
)
147+
items(
148+
count = state.recentSearches.size,
149+
key = { index -> state.recentSearches[index] },
150+
) { index ->
151+
Column {
152+
SearchItem(
153+
query = state.recentSearches[index],
154+
onQueryClick = { keyword ->
155+
state.eventSink(SearchUiEvent.OnRecentSearchClick(keyword))
156+
},
157+
onRemoveIconClick = { keyword ->
158+
state.eventSink(SearchUiEvent.OnRemoveSearchRemoveClick(keyword))
159+
},
160+
)
161+
HorizontalDivider(
162+
modifier = Modifier.fillMaxWidth(),
163+
thickness = 1.dp,
164+
color = ReedTheme.colors.borderPrimary,
165+
)
166+
}
162167
}
163168
}
164169
}
165170
}
166171

167172
is UiState.Success -> {
168-
if (state.isEmptyResult) {
173+
if (state.isEmptySearchResult) {
169174
Box(
170175
modifier = Modifier.fillMaxSize(),
171176
contentAlignment = Alignment.Center,

feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/SearchUiState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ data class SearchUiState(
3939
val sideEffect: SearchSideEffect? = null,
4040
val eventSink: (SearchUiEvent) -> Unit,
4141
) : CircuitUiState {
42-
val isEmptyResult: Boolean get() = uiState is UiState.Success && searchResult.totalResults == 0
42+
val isEmptySearchResult: Boolean get() = uiState is UiState.Success && searchResult.totalResults == 0
4343
}
4444

4545
sealed interface SearchSideEffect {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.ninecraft.booket.feature.search.component
2+
3+
import androidx.compose.foundation.layout.Column
4+
import androidx.compose.foundation.layout.Spacer
5+
import androidx.compose.foundation.layout.fillMaxWidth
6+
import androidx.compose.foundation.layout.height
7+
import androidx.compose.foundation.layout.padding
8+
import androidx.compose.material3.Text
9+
import androidx.compose.runtime.Composable
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.res.stringResource
12+
import com.ninecraft.booket.core.designsystem.ComponentPreview
13+
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
14+
import com.ninecraft.booket.feature.search.R
15+
16+
@Composable
17+
internal fun RecentSearchTitle(
18+
modifier: Modifier = Modifier,
19+
) {
20+
Column(
21+
modifier = modifier
22+
.fillMaxWidth()
23+
.padding(horizontal = ReedTheme.spacing.spacing5, vertical = ReedTheme.spacing.spacing2),
24+
) {
25+
Text(
26+
text = stringResource(R.string.recent_search),
27+
color = ReedTheme.colors.contentPrimary,
28+
style = ReedTheme.typography.body1SemiBold,
29+
)
30+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing1))
31+
}
32+
}
33+
34+
@ComponentPreview
35+
@Composable
36+
private fun RecentSearchTitlePreview() {
37+
ReedTheme {
38+
RecentSearchTitle()
39+
}
40+
}

feature/search/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@
1717
<string name="book_status_before">읽기 전</string>
1818
<string name="book_status_reading">읽는 중</string>
1919
<string name="book_status_completed">독서 완료</string>
20+
<string name="empty_recent_searches">최근 검색어 내역이 없습니다.</string>
2021
</resources>

0 commit comments

Comments
 (0)