Skip to content

Commit e62cd6c

Browse files
authored
Merge pull request #152 from JensAyton/deprecated-convenience-connectables
Simplify and deprecate ConnectableConvenienceClasses
2 parents 6ef1e94 + e8bf6af commit e62cd6c

File tree

6 files changed

+13
-30
lines changed

6 files changed

+13
-30
lines changed

Mobius.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@
320320
2D3A6972235737430053C95E /* WorkBag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkBag.swift; sourceTree = "<group>"; };
321321
2D3A69752359EAA00053C95E /* WorkBagTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkBagTests.swift; sourceTree = "<group>"; };
322322
2D3EEB9523FADA9E006E478A /* AsyncStartStopStateMachine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncStartStopStateMachine.swift; sourceTree = "<group>"; };
323-
2D3F26EC237B02B8004C2B75 /* AsyncDispatchQueueConnectable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AsyncDispatchQueueConnectable.swift; path = ConnectableConvenienceClasses/AsyncDispatchQueueConnectable.swift; sourceTree = "<group>"; };
323+
2D3F26EC237B02B8004C2B75 /* AsyncDispatchQueueConnectable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncDispatchQueueConnectable.swift; sourceTree = "<group>"; };
324324
2D58735F238EC60F001F21ED /* EventRouterDisposalLogicalRaceRegressionTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventRouterDisposalLogicalRaceRegressionTest.swift; sourceTree = "<group>"; };
325325
2DA1E89A2449EF6E00D240B7 /* BeginnerLoop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BeginnerLoop.swift; sourceTree = "<group>"; };
326326
2DA1E89D2449F1ED00D240B7 /* WikiTutorialTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WikiTutorialTest.swift; sourceTree = "<group>"; };
@@ -574,15 +574,15 @@
574574
);
575575
sourceTree = "<group>";
576576
};
577-
5B1F1038210F5E7D0067193C /* ConnectableConvenienceClasses */ = {
577+
5B1F1038210F5E7D0067193C /* Deprecated */ = {
578578
isa = PBXGroup;
579579
children = (
580580
5B1F103B210F5EBC0067193C /* ActionConnectable.swift */,
581581
5B1F1039210F5E9A0067193C /* BlockingFunctionConnectable.swift */,
582582
5B1F1042210F5F590067193C /* ClosureConnectable.swift */,
583583
5B1F103E210F5EE40067193C /* ConsumerConnectable.swift */,
584584
);
585-
path = ConnectableConvenienceClasses;
585+
path = Deprecated;
586586
sourceTree = "<group>";
587587
};
588588
5B1F1045211036FC0067193C /* ConnectableConvenienceClassesTests */ = {
@@ -697,7 +697,7 @@
697697
isa = PBXGroup;
698698
children = (
699699
02D0DDBC2366EF8D00A1CE4C /* EffectHandlers */,
700-
5B1F1038210F5E7D0067193C /* ConnectableConvenienceClasses */,
700+
5B1F1038210F5E7D0067193C /* Deprecated */,
701701
5BB287BC209995410043B530 /* Disposables */,
702702
5B4A369821107D0E00279C7D /* EventSources */,
703703
2D3EEB9523FADA9E006E478A /* AsyncStartStopStateMachine.swift */,
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import Foundation
2222
/// Base class for creating an action based `connectable`.
2323
///
2424
/// Invoking the `connection` functions will block the current thread until done.
25+
// swiftlint:disable:next line_length
26+
@available(*, deprecated, message: "ActionConnectable will be removed before Mobius 1.0. If you’re using it with EffectRouter, you probably don’t need an explicit connectable, just route to your action function.")
2527
open class ActionConnectable<Input, Output>: Connectable {
2628
private var innerConnectable: ClosureConnectable<Input, Output>
2729

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import Foundation
2222
/// Base class for creating a function based `connectable`.
2323
///
2424
/// Invoking the `connection` functions will block the current thread until done.
25+
// swiftlint:disable:next line_length
26+
@available(*, deprecated, message: "BlockingFunctionConnectable will be removed before Mobius 1.0. If you’re using it with EffectRouter, you probably don’t need an explicit connectable, just route to your fire-and-forget function.")
2527
open class BlockingFunctionConnectable<Input, Output>: Connectable {
2628
private var innerConnectable: ClosureConnectable<Input, Output>
2729

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,19 @@
2020
import Foundation
2121

2222
final class ClosureConnectable<Input, Output>: Connectable {
23-
private var queue: DispatchQueue?
2423
private var output: Consumer<Output>?
2524
private let closure: (Input) -> Output?
2625
private let lock = Lock()
2726

28-
// If the closure produces output, it will be passed to the consumer. If it doesnt, it wont (see `connect`).
29-
init(_ closure: @escaping (Input) -> Output?, queue: DispatchQueue? = nil) {
30-
self.closure = closure
31-
self.queue = queue
32-
}
33-
34-
init(_ outputClosure: @escaping (Input) -> Output, queue: DispatchQueue? = nil) {
27+
init(_ outputClosure: @escaping (Input) -> Output) {
3528
closure = outputClosure
36-
self.queue = queue
3729
}
3830

39-
init(_ noOutputClosure: @escaping (Input) -> Void, queue: DispatchQueue? = nil) {
31+
init(_ noOutputClosure: @escaping (Input) -> Void) {
4032
closure = { input in
4133
noOutputClosure(input)
4234
return nil
4335
}
44-
self.queue = queue
45-
}
46-
47-
init(_ nothing: @escaping () -> Void, queue: DispatchQueue? = nil) {
48-
closure = { _ in
49-
nothing()
50-
return nil
51-
}
52-
self.queue = queue
5336
}
5437

5538
private func dispatchInput(_ input: Input, consumer: @escaping Consumer<Output>) {
@@ -66,13 +49,7 @@ final class ClosureConnectable<Input, Output>: Connectable {
6649
return Connection(
6750
acceptClosure: { input in
6851
if let consumer = self.output {
69-
if let queue = self.queue {
70-
queue.async {
71-
self.dispatchInput(input, consumer: consumer)
72-
}
73-
} else {
74-
self.dispatchInput(input, consumer: consumer)
75-
}
52+
self.dispatchInput(input, consumer: consumer)
7653
}
7754
},
7855
disposeClosure: {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import Foundation
2222
/// Base class for creating a consumer based `connectable`.
2323
///
2424
/// Invoking the `connection` functions will block the current thread until done.
25+
// swiftlint:disable:next line_length
26+
@available(*, deprecated, message: "ConsumerConnectable will be removed before Mobius 1.0. If you’re using it with EffectRouter, you probably don’t need an explicit connectable, just route to your consumer function.")
2527
open class ConsumerConnectable<Input, Output>: Connectable {
2628
private var innerConnectable: ClosureConnectable<Input, Output>
2729

0 commit comments

Comments
 (0)