Skip to content

Commit 149d395

Browse files
committed
Add EmptyDisposable
1 parent 8606126 commit 149d395

File tree

9 files changed

+37
-11
lines changed

9 files changed

+37
-11
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright 2019-2024 Spotify AB.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
import Foundation
16+
17+
/// The `EmptyDisposable` class implements a `Disposable` type for when you don't have anything to dispose of.
18+
public final class EmptyDisposable: MobiusCore.Disposable {
19+
20+
/// Create an `EmptyDisposable`
21+
public init() {}
22+
23+
public func dispose() {
24+
// No-op
25+
}
26+
}

MobiusCore/Source/EffectHandlers/EffectRouterDSL.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public extension _PartialEffectRouter {
4242
return to { parameters, callback in
4343
fireAndForget(parameters)
4444
callback.end()
45-
return AnonymousDisposable {}
45+
return EmptyDisposable()
4646
}
4747
}
4848

@@ -58,7 +58,7 @@ public extension _PartialEffectRouter {
5858
callback.send(event)
5959
}
6060
callback.end()
61-
return AnonymousDisposable {}
61+
return EmptyDisposable()
6262
}
6363
}
6464
}

MobiusCore/Source/EventSources/CompositeEventSourceBuilder.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public struct CompositeEventSourceBuilder<Event> {
4040
public func build() -> AnyEventSource<Event> {
4141
switch eventSources.count {
4242
case 0:
43-
return AnyEventSource { _ in AnonymousDisposable {} }
43+
return AnyEventSource { _ in EmptyDisposable() }
4444
case 1:
4545
return eventSources[0]
4646
default:

MobiusCore/Source/Mobius.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public enum Mobius {
7474
return Builder(
7575
update: update,
7676
effectHandler: effectHandler,
77-
eventSource: AnyEventSource({ _ in AnonymousDisposable(disposer: {}) }),
77+
eventSource: AnyEventSource({ _ in EmptyDisposable() }),
7878
eventConsumerTransformer: { $0 },
7979
logger: AnyMobiusLogger(NoopLogger())
8080
)

MobiusCore/Test/EffectHandlers/EffectHandlerTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,5 @@ private func handleEffect(effect: Effect, callback: EffectCallback<Event>) -> Di
8383
callback.send(.eventForEffect1)
8484
}
8585
callback.end()
86-
return AnonymousDisposable {}
86+
return EmptyDisposable()
8787
}

MobiusCore/Test/EffectHandlers/EffectRouterDSLTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ class EffectRouterDSLTests: QuickSpec {
167167
expect(effect).to(equal(.effect1))
168168
callback.send(.eventForEffect1)
169169
callback.end()
170-
return AnonymousDisposable {}
170+
return EmptyDisposable()
171171
}
172172
.asConnectable
173173
.connect { events.append($0) }

MobiusCore/Test/EffectHandlers/EffectRouterTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class EffectRouterTests: QuickSpec {
9898
.to { _, callback in
9999
callback.send(.eventForEffect2)
100100
callback.end()
101-
return AnonymousDisposable {}
101+
return EmptyDisposable()
102102
}
103103
.asConnectable
104104

@@ -119,7 +119,7 @@ class EffectRouterTests: QuickSpec {
119119

120120
beforeEach {
121121
let handler = AnyEffectHandler<Effect, Event> { _, _ in
122-
AnonymousDisposable {}
122+
EmptyDisposable()
123123
}
124124
let invalidRouter = EffectRouter<Effect, Event>()
125125
.routeEffects(equalTo: .multipleHandlersForThisEffect).to(handler)
@@ -163,7 +163,7 @@ class EffectRouterTests: QuickSpec {
163163
.routeEffects(equalTo: .effect2)
164164
.to { _, callback in
165165
callback.end()
166-
return AnonymousDisposable {}
166+
return EmptyDisposable()
167167
}
168168
.asConnectable
169169

MobiusCore/Test/NonReentrancyTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class NonReentrancyTests: QuickSpec {
6767

6868
let testEffectHandler = AnyEffectHandler<Effect, Event> {
6969
handleEffect($0, $1)
70-
return AnonymousDisposable {}
70+
return EmptyDisposable()
7171
}
7272

7373
let effectConnectable = EffectRouter<Effect, Event>()

MobiusExtras/Test/EventSource+ExtensionsTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class EventSourceExtensionsTests: QuickSpec {
2727
beforeEach {
2828
intEventSource = AnyEventSource { (consumer: @escaping (Int) -> Void) in
2929
subscribedIntConsumer = consumer
30-
return AnonymousDisposable {}
30+
return EmptyDisposable()
3131
}
3232
}
3333

0 commit comments

Comments
 (0)