Skip to content

Commit

Permalink
feat: Search refresh 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
hogumachu committed Jan 23, 2024
1 parent 7f2b648 commit 63aa482
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,21 @@ import Then
final class SearchReactor: Reactor, Stepper {

enum Action {
case search(String)
case search
case updateKeyword(String?)
case closeDidTap
case itemDidTap(IndexPath)
}

struct State {
var keyword: String?
var isLoading: Bool = false
var isEmpty: Bool = true
var sections: [SearchSection] = []
}

enum Mutation {
case setKeyword(String?)
case setLoading(Bool)
case setSections([Memory], [Emotion], [Todo])
}
Expand All @@ -53,13 +56,17 @@ final class SearchReactor: Reactor, Stepper {

func mutate(action: Action) -> Observable<Mutation> {
switch action {
case .search(let keyword):
case .search:
guard let keyword = currentState.keyword else { return .empty() }
return .concat([
.just(.setLoading(true)),
search(keyword: keyword),
.just(.setLoading(false))
])

case .updateKeyword(let keyword):
return .just(.setKeyword(keyword))

case .closeDidTap:
steps.accept(AppStep.searchIsComplete)
return .empty()
Expand All @@ -85,6 +92,9 @@ final class SearchReactor: Reactor, Stepper {
func reduce(state: State, mutation: Mutation) -> State {
var newState = state
switch mutation {
case .setKeyword(let keyword):
newState.keyword = keyword

case .setLoading(let isLoading):
newState.isLoading = isLoading

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,19 +81,28 @@ final class SearchViewController: BaseViewController<SearchReactor> {
}

override func bind(reactor: SearchReactor) {
bindAction(reactor)
bindState(reactor)
bindAction(reactor)
bindETC(reactor)
}

override func refresh() {
reactor?.action.onNext(.search)
}

private func bindAction(_ reactor: SearchReactor) {
navigationView.rx.leftButtonDidTap
.map { Reactor.Action.closeDidTap }
.bind(to: reactor.action)
.disposed(by: disposeBag)

searchInputView.rx.text
.map { Reactor.Action.updateKeyword($0) }
.bind(to: reactor.action)
.disposed(by: disposeBag)

searchInputView.rx.searchDidTap
.map { Reactor.Action.search($0) }
.map { _ in Reactor.Action.search }
.bind(to: reactor.action)
.disposed(by: disposeBag)

Expand Down

0 comments on commit 63aa482

Please sign in to comment.