Skip to content

Commit 16a9547

Browse files
committed
ref: Refactor SentryClient init
1 parent 86eb6d5 commit 16a9547

File tree

9 files changed

+44
-92
lines changed

9 files changed

+44
-92
lines changed

SentryTestUtils/TestClient.swift

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,35 @@ public class TestClient: SentryClient {
66
public override init?(options: Options) {
77
super.init(
88
options: options,
9+
transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options),
910
fileManager: try! TestFileManager(
1011
options: options,
1112
dateProvider: TestCurrentDateProvider(),
1213
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
1314
),
14-
deleteOldEnvelopeItems: false,
15-
transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options)
15+
threadInspector: SentryDefaultThreadInspector(options: options),
16+
debugImageProvider: SentryDependencyContainer.sharedInstance().debugImageProvider,
17+
random: SentryDependencyContainer.sharedInstance().random,
18+
locale: NSLocale.autoupdatingCurrent,
19+
timezone: NSCalendar.autoupdatingCurrent.timeZone
1620
)
1721
}
1822

19-
@_spi(Private) public override init?(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool) {
20-
super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options))
21-
}
22-
23-
@_spi(Private) public override init(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool, transportAdapter: SentryTransportAdapter) {
24-
super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: transportAdapter)
25-
}
26-
23+
// @_spi(Private) public override init?(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool) {
24+
// super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options))
25+
// }
26+
//
27+
// @_spi(Private) public override init(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool, transportAdapter: SentryTransportAdapter) {
28+
// super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: transportAdapter)
29+
// }
30+
//
2731
// Without this override we get a fatal error: use of unimplemented initializer
2832
// see https://stackoverflow.com/questions/28187261/ios-swift-fatal-error-use-of-unimplemented-initializer-init
29-
@_spi(Private) public override init(options: Options, transportAdapter: SentryTransportAdapter, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool, threadInspector: SentryDefaultThreadInspector, debugImageProvider: SentryDebugImageProvider, random: SentryRandomProtocol, locale: Locale, timezone: TimeZone) {
33+
@_spi(Private) public override init(options: Options, transportAdapter: SentryTransportAdapter, fileManager: SentryFileManager, threadInspector: SentryDefaultThreadInspector, debugImageProvider: SentryDebugImageProvider, random: SentryRandomProtocol, locale: Locale, timezone: TimeZone) {
3034
super.init(
3135
options: options,
3236
transportAdapter: transportAdapter,
3337
fileManager: fileManager,
34-
deleteOldEnvelopeItems: false,
3538
threadInspector: threadInspector,
3639
debugImageProvider: debugImageProvider,
3740
random: random,

Sources/Sentry/SentryClient.m

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -61,37 +61,17 @@ @interface SentryClient ()
6161
@implementation SentryClient
6262

6363
- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
64-
{
65-
return [self initWithOptions:options
66-
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
67-
dispatchQueue:SentryDependencyContainer.sharedInstance.dispatchQueueWrapper
68-
deleteOldEnvelopeItems:YES];
69-
}
70-
71-
- (nullable instancetype)initWithOptions:(SentryOptions *)options
72-
dateProvider:(id<SentryCurrentDateProvider>)dateProvider
73-
dispatchQueue:(SentryDispatchQueueWrapper *)dispatchQueue
74-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
7564
{
7665
NSError *error;
7766
SentryFileManager *fileManager = [[SentryFileManager alloc] initWithOptions:options
78-
dateProvider:dateProvider
79-
dispatchQueueWrapper:dispatchQueue
67+
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
68+
dispatchQueueWrapper:SentryDependencyContainer.sharedInstance.dispatchQueueWrapper
8069
error:&error];
8170
if (error != nil) {
8271
SENTRY_LOG_FATAL(@"Failed to initialize file system: %@", error.localizedDescription);
8372
return nil;
8473
}
85-
return [self initWithOptions:options
86-
fileManager:fileManager
87-
deleteOldEnvelopeItems:deleteOldEnvelopeItems];
88-
}
8974

90-
/** Internal constructor for testing purposes. */
91-
- (instancetype)initWithOptions:(SentryOptions *)options
92-
fileManager:(SentryFileManager *)fileManager
93-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
94-
{
9575
NSArray<id<SentryTransport>> *transports =
9676
[SentryTransportFactory initTransports:options
9777
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
@@ -101,37 +81,15 @@ - (instancetype)initWithOptions:(SentryOptions *)options
10181
SentryTransportAdapter *transportAdapter =
10282
[[SentryTransportAdapter alloc] initWithTransports:transports options:options];
10383

104-
return [self initWithOptions:options
105-
fileManager:fileManager
106-
deleteOldEnvelopeItems:deleteOldEnvelopeItems
107-
transportAdapter:transportAdapter];
108-
}
109-
110-
/** Internal constructor for testing purposes. */
111-
- (instancetype)initWithOptions:(SentryOptions *)options
112-
fileManager:(SentryFileManager *)fileManager
113-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
114-
transportAdapter:(SentryTransportAdapter *)transportAdapter
115-
116-
{
11784
SentryDefaultThreadInspector *threadInspector =
11885
[[SentryDefaultThreadInspector alloc] initWithOptions:options];
11986

120-
return [self initWithOptions:options
121-
transportAdapter:transportAdapter
122-
fileManager:fileManager
123-
deleteOldEnvelopeItems:deleteOldEnvelopeItems
124-
threadInspector:threadInspector
125-
debugImageProvider:[SentryDependencyContainer sharedInstance].debugImageProvider
126-
random:[SentryDependencyContainer sharedInstance].random
127-
locale:[NSLocale autoupdatingCurrentLocale]
128-
timezone:[NSCalendar autoupdatingCurrentCalendar].timeZone];
87+
return [self initWithOptions:options transportAdapter:transportAdapter fileManager:fileManager threadInspector:threadInspector debugImageProvider:[SentryDependencyContainer sharedInstance].debugImageProvider random:[SentryDependencyContainer sharedInstance].random locale:[NSLocale autoupdatingCurrentLocale] timezone: [NSCalendar autoupdatingCurrentCalendar].timeZone];
12988
}
13089

13190
- (instancetype)initWithOptions:(SentryOptions *)options
13291
transportAdapter:(SentryTransportAdapter *)transportAdapter
13392
fileManager:(SentryFileManager *)fileManager
134-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
13593
threadInspector:(SentryDefaultThreadInspector *)threadInspector
13694
debugImageProvider:(SentryDebugImageProvider *)debugImageProvider
13795
random:(id<SentryRandomProtocol>)random
@@ -154,9 +112,7 @@ - (instancetype)initWithOptions:(SentryOptions *)options
154112
// executing this on the main thread, we cache the installationID async here.
155113
[SentryInstallation cacheIDAsyncWithCacheDirectoryPath:options.cacheDirectoryPath];
156114

157-
if (deleteOldEnvelopeItems) {
158-
[fileManager deleteOldEnvelopeItems];
159-
}
115+
[fileManager deleteOldEnvelopeItems];
160116
}
161117
return self;
162118
}

Tests/SentryTests/Integrations/Feedback/SentryFeedbackTests.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,6 @@ class SentryFeedbackTests: XCTestCase {
207207
dateProvider: TestCurrentDateProvider(),
208208
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
209209
)),
210-
deleteOldEnvelopeItems: false,
211210
threadInspector: TestDefaultThreadInspector.instance,
212211
debugImageProvider: TestDebugImageProvider(),
213212
random: TestRandom(value: 1.0),
@@ -250,7 +249,6 @@ class SentryFeedbackTests: XCTestCase {
250249
dateProvider: TestCurrentDateProvider(),
251250
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
252251
)),
253-
deleteOldEnvelopeItems: false,
254252
threadInspector: TestDefaultThreadInspector.instance,
255253
debugImageProvider: TestDebugImageProvider(),
256254
random: TestRandom(value: 1.0),
@@ -293,7 +291,6 @@ class SentryFeedbackTests: XCTestCase {
293291
dateProvider: TestCurrentDateProvider(),
294292
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
295293
)),
296-
deleteOldEnvelopeItems: false,
297294
threadInspector: TestDefaultThreadInspector.instance,
298295
debugImageProvider: TestDebugImageProvider(),
299296
random: TestRandom(value: 1.0),

Tests/SentryTests/Integrations/Performance/UIViewController/SentryTimeToDisplayTrackerTest.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class SentryTimeToDisplayTrackerTest: XCTestCase {
3939
dispatchQueueWrapper: dispatchQueue
4040
)
4141

42-
let hub = TestHub(client: SentryClient(options: options, fileManager: fileManager, deleteOldEnvelopeItems: false), andScope: nil)
42+
let hub = TestHub(client: SentryClient(options: options, fileManager: fileManager), andScope: nil)
4343
return SentryTracer(transactionContext: TransactionContext(operation: "ui.load"), hub: hub, configuration: SentryTracerConfiguration(block: {
4444
$0.waitForChildren = true
4545
}))

Tests/SentryTests/Integrations/SentryCrash/SentryCrashIntegrationTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class SentryCrashIntegrationTests: NotificationCenterTestCase {
3030
options: options,
3131
dateProvider: dateProvider,
3232
dispatchQueueWrapper: dispatchQueueWrapper
33-
), deleteOldEnvelopeItems: false)
33+
))
3434
hub = TestHub(client: client, andScope: nil)
3535

3636
fileManager = try TestFileManager(
@@ -398,7 +398,7 @@ class SentryCrashIntegrationTests: NotificationCenterTestCase {
398398
api?.pointee.setEnabled(true)
399399

400400
let transport = TestTransport()
401-
let client = SentryClient(options: fixture.options, fileManager: fixture.fileManager, deleteOldEnvelopeItems: false)
401+
let client = SentryClient(options: fixture.options, fileManager: fixture.fileManager)
402402
Dynamic(client).transportAdapter = TestTransportAdapter(transports: [transport], options: fixture.options)
403403
hub.bindClient(client)
404404

Tests/SentryTests/SentryClient+TestInit.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,9 @@ NS_ASSUME_NONNULL_BEGIN
1313

1414
@interface SentryClient ()
1515

16-
- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
17-
dateProvider:(id<SentryCurrentDateProvider>)dateProvider
18-
dispatchQueue:(SentryDispatchQueueWrapper *)dispatchQueue
19-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems;
20-
21-
- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
22-
fileManager:(SentryFileManager *)fileManager
23-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems;
24-
25-
- (instancetype)initWithOptions:(SentryOptions *)options
26-
fileManager:(SentryFileManager *)fileManager
27-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
28-
transportAdapter:(SentryTransportAdapter *)transportAdapter;
29-
3016
- (instancetype)initWithOptions:(SentryOptions *)options
3117
transportAdapter:(SentryTransportAdapter *)transportAdapter
3218
fileManager:(SentryFileManager *)fileManager
33-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
3419
threadInspector:(SentryDefaultThreadInspector *)threadInspector
3520
debugImageProvider:(SentryDebugImageProvider *)debugImageProvider
3621
random:(id<SentryRandomProtocol>)random

Tests/SentryTests/SentryClientTests.swift

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,24 @@
22
@_spi(Private) import SentryTestUtils
33
import XCTest
44

5+
extension SentryClient {
6+
convenience init(options: Options, fileManager: SentryFileManager) {
7+
let transports = TransportInitializer.initTransports(options, dateProvider: SentryDependencyContainer.sharedInstance().dateProvider, sentryFileManager: fileManager, rateLimits: SentryDependencyContainer.sharedInstance().rateLimits)
8+
9+
let transportAdapter = SentryTransportAdapter(transports: transports, options: options)
10+
11+
self.init(
12+
options: options,
13+
transportAdapter: transportAdapter,
14+
fileManager: fileManager,
15+
threadInspector: SentryDefaultThreadInspector(options: options),
16+
debugImageProvider: SentryDependencyContainer.sharedInstance().debugImageProvider,
17+
random: SentryDependencyContainer.sharedInstance().random,
18+
locale: Locale.autoupdatingCurrent,
19+
timezone: Calendar.autoupdatingCurrent.timeZone)
20+
}
21+
}
22+
523
// swiftlint:disable file_length
624
// We are aware that the client has a lot of logic and we should maybe
725
// move some of it to other classes.
@@ -96,7 +114,6 @@ class SentryClientTests: XCTestCase {
96114
options: options,
97115
transportAdapter: transportAdapter,
98116
fileManager: fileManager,
99-
deleteOldEnvelopeItems: false,
100117
threadInspector: threadInspector,
101118
debugImageProvider: debugImageProvider,
102119
random: random,
@@ -161,7 +178,7 @@ class SentryClientTests: XCTestCase {
161178
}
162179

163180
func testInit_CallsDeleteOldEnvelopeItemsInvocations() throws {
164-
_ = SentryClient(options: Options(), fileManager: fixture.fileManager, deleteOldEnvelopeItems: true)
181+
_ = SentryClient(options: Options(), fileManager: fixture.fileManager)
165182

166183
XCTAssertEqual(1, fixture.fileManager.deleteOldEnvelopeItemsInvocations.count)
167184
}
@@ -1751,12 +1768,7 @@ class SentryClientTests: XCTestCase {
17511768

17521769
let options = Options()
17531770
options.dsn = SentryClientTests.dsn
1754-
let client = SentryClient(
1755-
options: options,
1756-
dateProvider: fixture.dateProvider,
1757-
dispatchQueue: fixture.dispatchQueue,
1758-
deleteOldEnvelopeItems: false
1759-
)
1771+
let client = SentryClient(options: options)
17601772

17611773
XCTAssertNil(client)
17621774
}

Tests/SentryTests/SentryHubTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,6 @@ class SentryHubTests: XCTestCase {
278278
let client = SentryClient(
279279
options: fixture.options,
280280
fileManager: fixture.fileManager,
281-
deleteOldEnvelopeItems: false
282281
)
283282
let hub = SentryHub(client: client, andScope: Scope())
284283

Tests/SentryTests/SentrySDKInternalTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,7 @@ class SentrySDKInternalTests: XCTestCase {
608608

609609
let transport = TestTransport()
610610
let fileManager = try TestFileManager(options: fixture.options, dateProvider: fixture.currentDate, dispatchQueueWrapper: fixture.dispatchQueueWrapper)
611-
let client = SentryClient(options: fixture.options, fileManager: fileManager, deleteOldEnvelopeItems: false)
611+
let client = SentryClient(options: fixture.options, fileManager: fileManager)
612612
Dynamic(client).transportAdapter = TestTransportAdapter(transports: [transport], options: fixture.options)
613613
SentrySDKInternal.currentHub().bindClient(client)
614614
SentrySDK.close()
@@ -693,7 +693,7 @@ class SentrySDKInternalTests: XCTestCase {
693693

694694
let transport = TestTransport()
695695
let fileManager = try TestFileManager(options: fixture.options, dateProvider: fixture.currentDate, dispatchQueueWrapper: fixture.dispatchQueueWrapper)
696-
let client = SentryClient(options: fixture.options, fileManager: fileManager, deleteOldEnvelopeItems: false)
696+
let client = SentryClient(options: fixture.options, fileManager: fileManager)
697697
Dynamic(client).transportAdapter = TestTransportAdapter(transports: [transport], options: fixture.options)
698698
SentrySDKInternal.currentHub().bindClient(client)
699699

0 commit comments

Comments
 (0)