iOS Todo Application using RxSwift and ReactorKit

Overview

RxTodo

Swift Build Status

RxTodo is an iOS application developed using ReactorKit. This project is for whom having trouble with learning how to build a RxSwift application due to lack of references. (as I did ๐Ÿ˜› )

Features

  • Using ReactorKit
  • Using RxDataSources
  • Observing model create/update/delete across the view controllers
  • Navigating between view controllers
  • Immutable models
  • Testing with RxExpect

Architecture

reactorkit

Visit ReactorKit for detail.

Requirements

  • iOS 8+
  • Swift 3
  • CocoaPods

Screenshots

rxtodo

Contribution

Discussion and pull requests are welcomed ๐Ÿ’–

License

RxTodo is under MIT license. See the LICENSE for more info.

Comments
  • Deleted unnecessary self and fixed indent in sources

    Deleted unnecessary self and fixed indent in sources

    Hi! I think this project is really really awesome and helps beginners so much to learn about RxSwift and other Rx libraries so I would like to contribute to it๐Ÿ‘

    But before I start, I would like to make some change to your source code if that's okay.

    In this Pull Request I did 2 things

    • Deleted unnecessary self
    • Fixed indent in sources

    I deleted all of unnecessary self to keep the source codes readable and clean. I'm sorry if the indent thing was just your preference but the indent was a little odd and it was kind of hard for me to refactor the source code so I fixed it before I start to contribute to your project.

    If you meant to do the indent things, thats totally fine by me so if so, you can tell me and close this PR.

    Thank you!

    opened by yuzushioh 6
  • Refactor MVVM to a more functional style which avoids Subjects

    Refactor MVVM to a more functional style which avoids Subjects

    As an experiment, I refactored RxTodo a bit to use a somewhat different style of MVVM, would welcome your thoughts on this and its pros and cons.

    The core change is to modify ViewModels into two structs representing inputs and outputs (this can also be done with protocols, but I've found that structs work fine for all cases I've seen so far):

    struct ViewModelInputs {
      var button: Observable<Void>
    }
    
    struct ViewModelOutputs {
      var label: Observable<String>
    }
    

    Then we can define a ViewModel as a function:

    typealias ViewModel = (ViewModelInputs) -> ViewModelOutputs
    

    We avoid Subjects by passing in the inputs directly in the view controller:

    let inputs = ViewModelInputs(button: button.rx.tap.asObservable())
    let viewModel = myViewModel(inputs)
    let outputs = viewModel(inputs)
    
    outputs.label
      .bindTo(...)
      .addDisposableTo(disposeBag)
    

    There are various benefits to this approach, including not needing to bind each observable separately, a very clear input/output structure, and no need for Subjects which can be an avenue for abuse. There were some additional details I changed along the way:

    • Removed the need for deallocated events and subscriptions within view models (at least explicitly)
    • Added a couple of mock structs for view model inputs to get back Subjects for testing

    Overall I think it retains the original structure of RxTodo while making the architecture a bit more purely functional. I'm submitting a pull request as a way to stimulate discussion, I might write a blog post about this if it turns out to be interesting to people.

    opened by acchou 5
  • Memory Leak?

    Memory Leak?

    Hi, So Im following RxSwift examples. The author has mentioned to use

        _ = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
            .subscribe(onNext: { _ in
                print("Resource count \(RxSwift.Resources.total)")
            })
    

    in the AppDelegate to track the resources allocation and deallocation.

    After observing the same on your RxTodo app. When you display the AddTask-ViewController and dismiss it. There is always some amount of resources which are not deallocated and the resource count keeps growing each time we open the view controller. I was wondering if you have any thoughts on fixing it. I tried adding many items to the dispose bag but doesn't seem to do the trick.

    opened by reejosamuel 4
  • Update .travis.yml

    Update .travis.yml

    I found that the state of CI would not be right. Even if the build fails, it shows passing.

    The cause was in xcpretty and I modified it. I refer to xcpretty I added a destination for testing.

    opened by kjisoo 4
  • View doesn't know what ViewModel does.

    View doesn't know what ViewModel does.

    Thanks for the excellent project, I've been studying your code and trying to implement it on my own learning project

    would like your opinion on this: View doesn't know what ViewModel does. View can only communicate to ViewModel about what View did.

    I have mixed feelings regarding this.

    For example How is the first code (implemented using your suggestion) more readable than the second code?

    mailLoginButtonTaps.asObservable()
        .withLatestFrom(Observable.combineLatest(email.asObservable(), password.asObservable()) { ($0, $1) }) .flatMapLatest({ (email, password) in
            return authenticationService.login(withEmail: email, password: password)
                .trackActivity(activityIndicator)
          })
        .asDriver(onErrorJustReturn: false)
    

    viewModel.emailLogin()

    func emailLogin() -> Driver<LoginResult> {
        return authenticationService.login(withEmail: email.value, password: password.value)
                .trackActivity(activityIndicator)
    }
    
    opened by edward-s 4
  • Why TaskListViewModel is dealloc?

    Why TaskListViewModel is dealloc?

    I found TaskListViewController dose not own ViewModel. The TaskListViewModel instance will dealloc soon after TaskListViewModel has inited. Can someone explain it?

    opened by purkylin 3
  • Distinct until changed

    Distinct until changed

    Why not use distinctUntilChanged here https://github.com/devxoul/RxTodo/blob/master/RxTodo/Sources/Rx/RxOperators.swift#L43

    The first publish will set, the second won't as it's not distinct.

    opened by seivan 3
  • Cell State bind and distinctUntilChanged problem

    Cell State bind and distinctUntilChanged problem

    Hello @devxoul , I have a problem that I can not understand.

    In a collection or table when updating a cell I get the impression that all states are bind again for all cells, regardless of whether it is distinctUntilChanged or not.

    To illustrate the problem in this example, simply edit TaskCell.swift

    switch : self.titleLabel.text = reactor.currentState.title

    to:

     reactor.state
            .map { $0.title }
            .distinctUntilChanged()
            .map { result in
                print("test")
                return result
            }
            .bind(to: self.titleLabel.rx.text)
            .disposed(by: self.disposeBag)
    
    

    when you will check or not reactor.currentState.isDone, you will see three print of "test". yet they have not changed, and only the isDone has been changed.

    could someone explain to me? maybe I misunderstood how distinctUntilChanged works

    opened by PierreBrisorgueil 2
  • edit mode : state initialisation not sync with input text

    edit mode : state initialisation not sync with input text

    Hello,

    just a little trouble I met, from the code I saw :

    TaskEditViewReactor.swift

      init(provider: ServiceProviderType, mode: TaskEditViewMode) {
        self.provider = provider
        self.mode = mode
    
        switch mode {
        case .new:
          self.initialState = State(title: "New", taskTitle: "", canSubmit: false)
        case .edit(let task):
          self.initialState = State(title: "Edit", taskTitle: task.title, canSubmit: true)
          print("test 0 \(self.initialState)")
        }
      }
    

    TaskEditViewController

        reactor.state.asObservable().map { $0.taskTitle }
          .distinctUntilChanged()
          .bind(to: self.titleInput.rx.text)
          .disposed(by: self.disposeBag)
    

    I think the goal was to open the new view in edit mode with the input initiated with the text of the task to modify ?

    if I understood everything, it's a bug, the input is empty in edit mode, I had the same problem on my side, I fixed it quickly by the initialization of the controller but I am sure that there is better to do.

    opened by PierreBrisorgueil 2
  • Mutate Action to Observable<Mutation>

    Mutate Action to Observable

    Hi, @devxoul and thanks for great project. I have a question regarding TaskListViewReactor and TaskService structure. We have func mutate(taskEvent: TaskEvent) -> Observable<Mutation> which reacts to var event: PublishSubject<TaskEvent> { get } from TaskServiceType. Why should we have this variable and emit events in every method (so it is side-effect)? I see, that we subscribed in reactor and merge this event and common Mutation. But we can have kind of this method

    private func mutateMarkIsDone(task: Task) -> Observable<Mutation> {
            return self.provider.taskService.markAsDone(taskID: task.id).flatMap { task -> Observable<Mutation> in
                let state = self.currentState
                guard let indexPath = self.indexPath(forTaskID: task.id, from: state) else { return .empty() }
                var task = state.sections[indexPath].currentState
                task.isDone = true
                let reactor = TaskCellReactor(task: task)
                return .just(.updateSectionItem(indexPath, reactor))
            }
        }
    

    and remove event var from TaskServiceType, remove transform(mutation: Observable<Mutation>) -> Observable<Mutation> and func mutate(taskEvent: TaskEvent) -> Observable<Mutation>. Or maybe I missed some important logic?

    opened by vadimue 2
  • Fix #9 with UITest

    Fix #9 with UITest

    RxTodo

    • Fix #9 ISSUE adding viewModel variable to TaskListViewController

    before viewDidLoad called, Task.didCreate, Task.didUpdate, Task.didDelete have been disposed (hasObservers always false) cause cannot create item or edit item (#9)

    adding viewModel variable to TaskListViewController should be passed but I doubt whether this way is correct

    RxTodoTests

    • Change naming import RxTests to RxTest
    • Add cocoapod RxOptional
    • Fix unittest case testTitle to be passed

    RxTodoUITests

    • Add defaultSection UITest case

    • Add taskAdd UITest case

    • Add taskEdit UITest case

    • forked lastest master branch and used 2 space indent convention

    opened by cruisediary 2
  • Bump addressable from 2.6.0 to 2.8.1

    Bump addressable from 2.6.0 to 2.8.1

    Bumps addressable from 2.6.0 to 2.8.1.

    Changelog

    Sourced from addressable's changelog.

    Addressable 2.8.1

    • refactor Addressable::URI.normalize_path to address linter offenses (#430)
    • remove redundant colon in Addressable::URI::CharacterClasses::AUTHORITY regex (#438)
    • update gemspec to reflect supported Ruby versions (#466, #464, #463)
    • compatibility w/ public_suffix 5.x (#466, #465, #460)
    • fixes "invalid byte sequence in UTF-8" exception when unencoding URLs containing non UTF-8 characters (#459)
    • Ractor compatibility (#449)
    • use the whole string instead of a single line for template match (#431)
    • force UTF-8 encoding only if needed (#341)

    #460: sporkmonger/addressable#460 #463: sporkmonger/addressable#463 #464: sporkmonger/addressable#464 #465: sporkmonger/addressable#465 #466: sporkmonger/addressable#466

    Addressable 2.8.0

    • fixes ReDoS vulnerability in Addressable::Template#match
    • no longer replaces + with spaces in queries for non-http(s) schemes
    • fixed encoding ipv6 literals
    • the :compacted flag for normalized_query now dedupes parameters
    • fix broken escape_component alias
    • dropping support for Ruby 2.0 and 2.1
    • adding Ruby 3.0 compatibility for development tasks
    • drop support for rack-mount and remove Addressable::Template#generate
    • performance improvements
    • switch CI/CD to GitHub Actions

    Addressable 2.7.0

    • added :compacted flag to normalized_query
    • heuristic_parse handles mailto: more intuitively
    • dropped explicit support for JRuby 9.0.5.0
    • compatibility w/ public_suffix 4.x
    • performance improvements
    Commits
    • 8657465 Update version, gemspec, and CHANGELOG for 2.8.1 (#474)
    • 4fc5bb6 CI: remove Ubuntu 18.04 job (#473)
    • 860fede Force UTF-8 encoding only if needed (#341)
    • 99810af Merge pull request #431 from ojab/ct-_do_not_parse_multiline_strings
    • 7ce0f48 Merge branch 'main' into ct-_do_not_parse_multiline_strings
    • 7ecf751 Merge pull request #449 from okeeblow/freeze_concatenated_strings
    • 41f12dd Merge branch 'main' into freeze_concatenated_strings
    • 068f673 Merge pull request #459 from jarthod/iso-encoding-problem
    • b4c9882 Merge branch 'main' into iso-encoding-problem
    • 08d27e8 Merge pull request #471 from sporkmonger/sporkmonger-enable-codeql
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump tzinfo from 1.2.5 to 1.2.10

    Bump tzinfo from 1.2.5 to 1.2.10

    Bumps tzinfo from 1.2.5 to 1.2.10.

    Release notes

    Sourced from tzinfo's releases.

    v1.2.10

    TZInfo v1.2.10 on RubyGems.org

    v1.2.9

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    TZInfo v1.2.9 on RubyGems.org

    v1.2.8

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    TZInfo v1.2.8 on RubyGems.org

    v1.2.7

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    TZInfo v1.2.7 on RubyGems.org

    v1.2.6

    • Timezone#strftime('%s', time) will now return the correct number of seconds since the epoch. #91.
    • Removed the unused TZInfo::RubyDataSource::REQUIRE_PATH constant.
    • Fixed "SecurityError: Insecure operation - require" exceptions when loading data with recent Ruby releases in safe mode.
    • Fixed warnings when running on Ruby 2.7. #106 and #111.

    TZInfo v1.2.6 on RubyGems.org

    Changelog

    Sourced from tzinfo's changelog.

    Version 1.2.10 - 19-Jul-2022

    Version 1.2.9 - 16-Dec-2020

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    Version 1.2.8 - 8-Nov-2020

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    Version 1.2.7 - 2-Apr-2020

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    Version 1.2.6 - 24-Dec-2019

    • Timezone#strftime('%s', time) will now return the correct number of seconds since the epoch. #91.
    • Removed the unused TZInfo::RubyDataSource::REQUIRE_PATH constant.
    • Fixed "SecurityError: Insecure operation - require" exceptions when loading data with recent Ruby releases in safe mode.
    • Fixed warnings when running on Ruby 2.7. #106 and #111.
    Commits
    • 0814dcd Fix the release date.
    • fd05e2a Preparing v1.2.10.
    • b98c32e Merge branch 'fix-directory-traversal-1.2' into 1.2
    • ac3ee68 Remove unnecessary escaping of + within regex character classes.
    • 9d49bf9 Fix relative path loading tests.
    • 394c381 Remove private_constant for consistency and compatibility.
    • 5e9f990 Exclude Arch Linux's SECURITY file from the time zone index.
    • 17fc9e1 Workaround for 'Permission denied - NUL' errors with JRuby on Windows.
    • 6bd7a51 Update copyright years.
    • 9905ca9 Fix directory traversal in Timezone.get when using Ruby data source
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump cocoapods-downloader from 1.2.2 to 1.6.3

    Bump cocoapods-downloader from 1.2.2 to 1.6.3

    Bumps cocoapods-downloader from 1.2.2 to 1.6.3.

    Release notes

    Sourced from cocoapods-downloader's releases.

    1.6.3

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1

    Enhancements
    • None.
    Bug Fixes
    • Fix "can't modify frozen string" errors when pods are integrated using the branch option
      buju77 #10920

    1.5.0

    ... (truncated)

    Changelog

    Sourced from cocoapods-downloader's changelog.

    1.6.3 (2022-04-01)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2 (2022-03-28)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1 (2022-03-23)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0 (2022-03-22)

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1 (2021-09-07)

    Enhancements
    • None.

    ... (truncated)

    Commits
    • c03e2ed Release 1.6.3
    • f75bccc Disable Bazaar tests due to macOS 12.3 not including python2
    • 52a0d54 Merge pull request #128 from CocoaPods/validate_before_dl
    • d27c983 Ensure that the git pre-processor doesn't accidentally bail also
    • 3adfe1f [CHANGELOG] Add empty Master section
    • 591167a Release 1.6.2
    • d2564c3 Merge pull request #127 from CocoaPods/validate_before_dl
    • 99fec61 Switches where we check for invalid input, to move it inside the download fun...
    • 96679f2 [CHANGELOG] Add empty Master section
    • 3a7c54b Release 1.6.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump json from 2.2.0 to 2.3.1

    Bump json from 2.2.0 to 2.3.1

    Bumps json from 2.2.0 to 2.3.1.

    Changelog

    Sourced from json's changelog.

    2020-06-30 (2.3.1)

    • Spelling and grammar fixes for comments. Pull request #191 by Josh Kline.
    • Enhance generic JSON and #generate docs. Pull request #347 by Victor Shepelev.
    • Add :nodoc: for GeneratorMethods. Pull request #349 by Victor Shepelev.
    • Baseline changes to help (JRuby) development. Pull request #371 by Karol Bucek.
    • Add metadata for rubygems.org. Pull request #379 by Alexandre ZANNI.
    • Remove invalid JSON.generate description from JSON module rdoc. Pull request #384 by Jeremy Evans.
    • Test with TruffleRuby in CI. Pull request #402 by Benoit Daloze.
    • Rdoc enhancements. Pull request #413 by Burdette Lamar.
    • Fixtures/ are not being tested... Pull request #416 by Marc-Andrรฉ Lafortune.
    • Use frozen string for hash key. Pull request #420 by Marc-Andrรฉ Lafortune.
    • Added :call-seq: to RDoc for some methods. Pull request #422 by Burdette Lamar.
    • Small typo fix. Pull request #423 by Marc-Andrรฉ Lafortune.

    2019-12-11 (2.3.0)

    • Fix default of create_additions to always be false for JSON(user_input) and JSON.parse(user_input, nil). Note that JSON.load remains with default true and is meant for internal serialization of trusted data. [CVE-2020-10663]
    • Fix passing args all #to_json in json/add/*.
    • Fix encoding issues
    • Fix issues of keyword vs positional parameter
    • Fix JSON::Parser against bigdecimal updates
    • Bug fixes to JRuby port
    Commits
    • 0951d77 Bump version to 2.3.1
    • ddc29e2 Merge pull request #429 from flori/remove-generate-task-for-gemspec
    • cee8020 Removed gemspec task from default task on Rakefile
    • 9fd6371 Use VERSION file instead of hard-coded value
    • dc90bcf Removed explicitly date field in gemspec, it will assign by rubygems.org
    • 4c11a40 Removed task for json_pure.gemspec
    • e794ec9 Merge pull request #426 from marcandre/indent
    • 7cc9301 Merge pull request #428 from marcandre/change_fix
    • 9e2a1fb Make changes more precise #424
    • f8fa987 Merge pull request #424 from marcandre/update_changes
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump excon from 0.62.0 to 0.71.0

    Bump excon from 0.62.0 to 0.71.0

    Bumps excon from 0.62.0 to 0.71.0.

    Changelog

    Sourced from excon's changelog.

    0.71.0 2019-12-12

    fix for leftover data with interrupted persistent connections

    0.70.0 2019-12-02

    Update bundled certificates

    0.69.1 2019-11-21

    Fix mistake in proxy connection error handling

    0.69.0 2019-11-21

    Raise better proxy connection errors

    0.68.0 2019-10-25

    Updated bundled certs

    0.67.0 2019-09-24

    Properly redact user/pass info from proxy credentials Update bundled certs

    0.66.0 2019-08-06

    Add remote_ip to datum, enabling usage in middleware redirect follower now raises after following too many redirects (default 10) fixed stub clearing in tests to avoid race conditions

    0.65.0 2019-07-22

    fix yardoc formatting fix creating Proc without a block reduce/refine gem file contents update bundled certs readd bundled certs to gem file contents

    0.64.0 2019-04-15

    ... (truncated)
    Commits
    • 1149d44 v0.71.0
    • ccb57d7 fix for leftover data with interrupted persistent connections
    • f8de8cf v0.70.0
    • 93f4a21 v0.69.1
    • e89bbb7 Merge pull request #709 from jasquat/fix_response_status_check
    • 5647437 fixed response status check when making a request with a valid proxy is set
    • f769176 v0.69.0
    • 20c0748 define ProxyConnectionError
    • f44106a raise on failed proxy connect
    • d7ed5fe be thorough in unsubscribing to notifications in instrumentation tests
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Suyeol Jeon
A lazy developer ๐Ÿ˜ด I write many code to write less code.
Suyeol Jeon
Dribbble for iOS using ReactorKit

Drrrible Unofficial Dribbble iOS application using ReactorKit. IMPORTANT NOTICE Since Dribbble has deprecated public APIs, this app will not work anym

Suyeol Jeon 512 Dec 27, 2022
GitHub iOS client in RxSwift and MVVM-C clean architecture

GitHub iOS client in RxSwift and MVVM-C clean architecture. FlutterHub - Flutter version available at an early stage KotlinHub - Android version is co

Khoren Markosyan 2.7k Jan 7, 2023
Simple REST Client based on RxSwift and Alamofire.

RxRestClient Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements iOS 10.0+ tvOS 10.

STDev 16 Nov 19, 2022
Write clean, concise and declarative network code relying on URLSession, with the power of RxSwift. Inspired by Retrofit.

ReactiveAPI Reactive API library allows you to write clean, concise and declarative network code, with the power of RxSwift and URLSession! iOS Demo A

Sky UK Ltd 79 Nov 19, 2022
Simple REST Client based on RxSwift and Alamofire.

RxRestClient Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements iOS 10.0+ tvOS 10.

STDev 16 Nov 19, 2022
Permission Util for iOS (feat.RxSwift)

EzRxPermission Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements Installation EzR

Yunjae-Na 4 Jun 30, 2022
A testable RxSwift wrapper around MultipeerConnectivity

A testable RxSwift wrapper around MultipeerConnectivity

RxSwift Community 69 Jul 5, 2022
RxSwift+MVVM 4์‹œ๊ฐ„์— ๋๋‚ด๊ธฐ

RxSwift+MVVM 4์‹œ๊ฐ„์— ๋๋‚ด๊ธฐ RxSwift 4์‹œ๊ฐ„์— ๋๋‚ด๊ธฐ (์‹œ์ฆŒ2) Preface ์š”์ฆ˜ ๊ด€์‹ฌ์ด ๋†’์€ RxSwift! RxSwift๋Š”

์ฝ”์ฝ”์ข… 0 Jan 9, 2022
๐Ÿงš RxSwift + Moya + HandyJSON + Plugins.

RxNetworks ?? . RxSwift + Moya + HandyJSON + Plugins. ?? ?? ?? English | ็ฎ€ไฝ“ไธญๆ–‡ This is a set of infrastructure based on RxSwift + Moya MoyaNetwork This

77ใ€‚ 140 Jan 3, 2023
FakeGithub is an iOS application written using Objective-C

FakeGithub FakeGithub is an iOS application written using Objective-C. Opensource this project for learning purpose. Hope this could be a little usefu

FakeCoder 5 Oct 12, 2022
Simple iOS app in Swift to show AQI for some cities using websocket using Combine + MVVM

AQI Simple iOS app in Swift to show AQI for some cities using websocket using Combine + MVVM This app follows MVVM This app uses combine framework The

Amey Vikkram Tiwari 2 Nov 6, 2022
Another network wrapper for URLSession. Built to be simple, small and easy to create tests at the network layer of your application.

Another network wrapper for URLSession. Built to be simple, small and easy to create tests at the network layer of your application. Install Carthage

Ronan Rodrigo Nunes 89 Dec 26, 2022
Simple and user-friendly application for doing the shopping list.

Shlist Simple and user-friendly application for doing the shopping list. Light _ Dark _ Features intuitive interface ability to import/export the list

Pavel Lyskov 12 Aug 20, 2022
Swift Express is a simple, yet unopinionated web application server written in Swift

Documentation <h5 align="right"><a href="http://demo.swiftexpress.io/">Live ?? server running Demo <img src="https://cdn0.iconfinder.com/data/icons/

Crossroad Labs 850 Dec 2, 2022
A macOS application for browsing the IOKit registry.

IOBrowser About A macOS application for browsing the IOKit registry. License Project is released under the terms of the MIT License. Repository Infos

JD Gadina 128 Jan 1, 2023
A sample application to list the movie from API

MovieManager This is sample application to list the movie from API. Xcode 13.2 S

Poonam Yadav 0 Dec 18, 2021
TMDB(The Movie Database) API client application.

TMDB Client App Instructions Instructions for project setup. 1. Clone the project. 2. Go to "TMDB Client App" folder location on terminal and enter "p

Muhammed Karakul 0 Dec 26, 2021
Patchman - A macOS application to test APIs with HTTP methods (Decluttered Postman)

Patchman A macOS application to test APIs with HTTP methods (Decluttered Postman

Praneet 148 Nov 25, 2022
The RKGist application used in the RestKit Guide

RKGist RKGist is an example application built with RestKit for use in conjunction with the Getting Acquainted with RestKit tutorial. Work in Progress

The RestKit Project 82 Feb 8, 2022