Contents

wjuniorgit/combine-bloc

> An implementation of the ´BLoC´ (Business Logic Component) with Apple's Combine framework.

Installation

Add this project on your Package.swift

import CombineBloc

let package = Package(
    dependencies: [
        .Package(url: "https://github.com/wjuniorgit/combine-bloc", from: "0.2.0"),
    ],
)

Usage example

This package has three use case examples implemented:

  • [Counter App][counter-example]
  • [Login App][login-example]
  • [Todos App][todo-example]

Counter Bloc example

Counter Events
enum CounterEvent: Equatable {
case increment
case decrement
}
Counter State
struct CounterState: Equatable {
let count: Int
}
Counter Bloc
final class CounterBloc: Bloc<CounterEvent, CounterState> {
init() {
    super.init(initialValue: CounterState(count: 0)) {
        event, state, emit in
        switch event {
        case .increment:
            emit(CounterState(count: state.count + 1))
        case .decrement:
            emit(CounterState(count: state.count - 1))
        }
      }
    }
  }

Release History

  • 0.2.0

* The first proper release

  • 0.1.0

* Work in progress

Meta

Wellington Soares

Distributed under the MIT license. See `LICENSE` for more information.

[swift-image]:https://img.shields.io/badge/swift-5.3-orange.svg [swift-url]: https://swift.org/ [license-image]: https://img.shields.io/badge/License-MIT-blue.svg [license-url]: LICENSE [bloc-video-url]: https://youtu.be/PLHln7wHgPE?t=1288 [bloc-lib-url]: https://bloclibrary.dev/ [counter-example]: Examples/Counter/ [login-example]: Examples/login/ [todo-example]: Examples/Todos/

Package Metadata

Repository: wjuniorgit/combine-bloc

Default branch: main

README: README.md