Code Monkey home page Code Monkey logo

rxactivitytracker's Introduction

RxActivityTracker

Observable 시퀀스를 추적하는 ActivityTracker

RxExample 프로젝트의 ActivityIndicator 참고하여 최소 딜레이 시간을 부여할 수 있도록 개선

ActivityIndicator: https://github.com/ReactiveX/RxSwift/blob/main/RxExample/RxExample/Services/ActivityIndicator.swift

Usage

final class SomeReactor: Reactor {
    ...
    let isLoading = ActivityTracker()
    ...
    func mutate(action: Action) -> Observable<Mutation> {
        switch action {
        case .incrementNumber:
            return incrementNumberTask(fromNumber: currentState.number)
                .map { .setNumber(to: $0) }
                .trackActivity(isLoading, minimumDelay: 1) // ActivityTracker로 이 시퀀스 추적
                .catch { [weak self] error in
                    self?.errorSubject.onNext(error)
                    return .empty()
                }
                .debug()
            
        case .changeColor:
            return makeColorTask()
                .map { .setColor(to: $0) }
                .trackActivity(isLoading, minimumDelay: 1) // ActivityTracker로 이 시퀀스 추적
                .catch { [weak self] error in
                    self?.errorSubject.onNext(error)
                    return .empty()
                }
                .debug()
        }
    }
    ...
}
final class SomeViewController: UIViewController, View {
    ...
    func bind(reactor: SomeReactor) {
        reactor
            .isLoading.debug("isLoading ??")
            .drive(onNext: { isActive in
                if isActive {
                    LoadingIndicator.showLoading()
                } else {
                    LoadingIndicator.hideLoading()
                }
            })
            .disposed(by: disposeBag)
    }
    ...
}

rxactivitytracker's People

Contributors

kyungpyoda avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.