Skip to content

Commit 6ffc416

Browse files
authored
refactor: remove redundant async when refreshing (#78)
1 parent cd613b5 commit 6ffc416

File tree

2 files changed

+31
-32
lines changed

2 files changed

+31
-32
lines changed

Diff for: Sources/FeaturevisorSDK/Instance+Refresh.swift

+23-26
Original file line numberDiff line numberDiff line change
@@ -19,38 +19,35 @@ extension FeaturevisorInstance {
1919

2020
statuses.refreshInProgress = true
2121

22-
Task { [weak self] in
23-
try? await self?
24-
.fetchDatafileContent(
25-
from: datafileUrl,
26-
handleDatafileFetch: handleDatafileFetch
27-
) { [weak self] result in
28-
guard let self else {
29-
return
30-
}
22+
try? fetchDatafileContent(
23+
from: datafileUrl,
24+
handleDatafileFetch: handleDatafileFetch
25+
) { [weak self] result in
26+
guard let self else {
27+
return
28+
}
3129

32-
switch result {
33-
case .success(let datafileContent):
34-
let currentRevision = self.getRevision()
35-
let newRevision = datafileContent.revision
36-
let isNotSameRevision = currentRevision != newRevision
30+
switch result {
31+
case .success(let datafileContent):
32+
let currentRevision = self.getRevision()
33+
let newRevision = datafileContent.revision
34+
let isNotSameRevision = currentRevision != newRevision
3735

38-
self.datafileReader = DatafileReader(datafileContent: datafileContent)
39-
logger.info("refreshed datafile")
36+
self.datafileReader = DatafileReader(datafileContent: datafileContent)
37+
logger.info("refreshed datafile")
4038

41-
self.emitter.emit(.refresh)
39+
self.emitter.emit(.refresh)
4240

43-
if isNotSameRevision {
44-
self.emitter.emit(.update)
45-
}
41+
if isNotSameRevision {
42+
self.emitter.emit(.update)
43+
}
4644

47-
self.statuses.refreshInProgress = false
45+
self.statuses.refreshInProgress = false
4846

49-
case .failure(let error):
50-
self.logger.error("failed to refresh datafile", ["error": error])
51-
self.statuses.refreshInProgress = false
52-
}
53-
}
47+
case .failure(let error):
48+
self.logger.error("failed to refresh datafile", ["error": error])
49+
self.statuses.refreshInProgress = false
50+
}
5451
}
5552
}
5653

Diff for: Tests/FeaturevisorSDKTests/InstanceTests.swift

+8-6
Original file line numberDiff line numberDiff line change
@@ -1115,7 +1115,7 @@ class FeaturevisorInstanceTests: XCTestCase {
11151115
func testHandleDatafileFetchReturnsValidResponse() {
11161116

11171117
// GIVEN
1118-
let expectation = expectation(description: "datafile_error_response_expectation")
1118+
let expectation = expectation(description: "datafile_success_response_expectation")
11191119
var options = InstanceOptions.default
11201120
options.datafileUrl = "https://featurevisor.datafilecontent.com"
11211121
options.onReady = { _ in
@@ -1154,11 +1154,8 @@ class FeaturevisorInstanceTests: XCTestCase {
11541154
let expectation = expectation(description: "datafile_error_response_expectation")
11551155
var wasDatafileContentFetchErrorThrown = false
11561156
var errorThrownDetails: String?
1157+
11571158
var options = InstanceOptions.default
1158-
options.datafileUrl = "https://featurevisor.datafilecontent.com"
1159-
options.handleDatafileFetch = { _ in
1160-
return .failure(FeaturevisorError.unparseableJSON(data: nil, errorMessage: "Error :("))
1161-
}
11621159
options.logger = createLogger { level, message, details in
11631160
guard case .error = level else {
11641161
return
@@ -1171,6 +1168,10 @@ class FeaturevisorInstanceTests: XCTestCase {
11711168

11721169
expectation.fulfill()
11731170
}
1171+
options.datafileUrl = "https://featurevisor.datafilecontent.com"
1172+
options.handleDatafileFetch = { _ in
1173+
.failure(FeaturevisorError.unparseableJSON(data: nil, errorMessage: "Error :("))
1174+
}
11741175
options.datafile = DatafileContent(
11751176
schemaVersion: "1",
11761177
revision: "0.0.1",
@@ -1181,9 +1182,10 @@ class FeaturevisorInstanceTests: XCTestCase {
11811182

11821183
// WHEN
11831184
let sdk = try! createInstance(options: options)
1185+
waitForExpectations(timeout: 1)
11841186

11851187
// THEN
1186-
waitForExpectations(timeout: 1)
1188+
XCTAssertFalse(sdk.isReady())
11871189
XCTAssertTrue(wasDatafileContentFetchErrorThrown)
11881190
XCTAssertEqual(
11891191
errorThrownDetails,

0 commit comments

Comments
 (0)