Skip to content

Commit

Permalink
ref: move SentryDateProvider to SentryDependencyContainer (#3163)
Browse files Browse the repository at this point in the history
and remove the dedicated static interface that used to deliver it
  • Loading branch information
armcknight authored Jul 18, 2023
1 parent 4946815 commit 879fb28
Show file tree
Hide file tree
Showing 92 changed files with 338 additions and 480 deletions.
20 changes: 4 additions & 16 deletions Sentry.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -542,11 +542,7 @@
7BE1E33224F7E3B6009D3AD0 /* SentryMigrateSessionInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE1E33124F7E3B6009D3AD0 /* SentryMigrateSessionInit.h */; };
7BE1E33424F7E3CB009D3AD0 /* SentryMigrateSessionInit.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BE1E33324F7E3CB009D3AD0 /* SentryMigrateSessionInit.m */; };
7BE2C7F8257000A4003B66C7 /* SentryTestIntegration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BE2C7F72570009F003B66C7 /* SentryTestIntegration.m */; };
7BE3C7672445C0CA00A38442 /* SentryCurrentDate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE3C7662445C0CA00A38442 /* SentryCurrentDate.h */; };
7BE3C7692445C1A800A38442 /* SentryCurrentDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BE3C7682445C1A800A38442 /* SentryCurrentDate.m */; };
7BE3C76B2445C27A00A38442 /* SentryCurrentDateProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE3C76A2445C27A00A38442 /* SentryCurrentDateProvider.h */; };
7BE3C76F2445C2F800A38442 /* SentryDefaultCurrentDateProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE3C76E2445C2F800A38442 /* SentryDefaultCurrentDateProvider.h */; };
7BE3C7712445C30D00A38442 /* SentryDefaultCurrentDateProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BE3C7702445C30D00A38442 /* SentryDefaultCurrentDateProvider.m */; };
7BE3C7752445C82300A38442 /* SentryCurrentDateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BE3C7742445C82300A38442 /* SentryCurrentDateTests.swift */; };
7BE3C77B2446111500A38442 /* SentryRateLimitParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE3C77A2446111500A38442 /* SentryRateLimitParser.h */; };
7BE3C77D2446112C00A38442 /* SentryRateLimitParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BE3C77C2446112C00A38442 /* SentryRateLimitParser.m */; };
Expand Down Expand Up @@ -668,6 +664,7 @@
84B7FA4429B2924000AD93B1 /* TestRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E25C97425F8511A00DC215B /* TestRandom.swift */; };
84B7FA4529B2926900AD93B1 /* TestDisplayLinkWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B30B68126527C55006B2752 /* TestDisplayLinkWrapper.swift */; };
84B7FA4629B2935F00AD93B1 /* ClearTestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BD47B4C268F0B080076A663 /* ClearTestState.swift */; };
84F993C42A62A74000EC0190 /* SentryCurrentDateProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 84F993C32A62A74000EC0190 /* SentryCurrentDateProvider.m */; };
861265F92404EC1500C4AFDE /* NSArray+SentrySanitize.h in Headers */ = {isa = PBXBuildFile; fileRef = 861265F72404EC1500C4AFDE /* NSArray+SentrySanitize.h */; };
861265FA2404EC1500C4AFDE /* NSArray+SentrySanitize.m in Sources */ = {isa = PBXBuildFile; fileRef = 861265F82404EC1500C4AFDE /* NSArray+SentrySanitize.m */; };
8E0551E026A7A63C00400526 /* TestProtocolClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E0551DF26A7A63C00400526 /* TestProtocolClient.swift */; };
Expand Down Expand Up @@ -1460,11 +1457,7 @@
7BE1E33324F7E3CB009D3AD0 /* SentryMigrateSessionInit.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryMigrateSessionInit.m; sourceTree = "<group>"; };
7BE2C7F625700093003B66C7 /* SentryTestIntegration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SentryTestIntegration.h; sourceTree = "<group>"; };
7BE2C7F72570009F003B66C7 /* SentryTestIntegration.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryTestIntegration.m; sourceTree = "<group>"; };
7BE3C7662445C0CA00A38442 /* SentryCurrentDate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryCurrentDate.h; path = include/SentryCurrentDate.h; sourceTree = "<group>"; };
7BE3C7682445C1A800A38442 /* SentryCurrentDate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryCurrentDate.m; sourceTree = "<group>"; };
7BE3C76A2445C27A00A38442 /* SentryCurrentDateProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryCurrentDateProvider.h; path = include/SentryCurrentDateProvider.h; sourceTree = "<group>"; };
7BE3C76E2445C2F800A38442 /* SentryDefaultCurrentDateProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryDefaultCurrentDateProvider.h; path = include/SentryDefaultCurrentDateProvider.h; sourceTree = "<group>"; };
7BE3C7702445C30D00A38442 /* SentryDefaultCurrentDateProvider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryDefaultCurrentDateProvider.m; sourceTree = "<group>"; };
7BE3C7742445C82300A38442 /* SentryCurrentDateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryCurrentDateTests.swift; sourceTree = "<group>"; };
7BE3C7762445E50A00A38442 /* TestCurrentDateProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestCurrentDateProvider.swift; sourceTree = "<group>"; };
7BE3C77A2446111500A38442 /* SentryRateLimitParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryRateLimitParser.h; path = include/SentryRateLimitParser.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1603,6 +1596,7 @@
84B7FA4729B2995A00AD93B1 /* DeploymentTargets.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DeploymentTargets.xcconfig; sourceTree = "<group>"; };
84C47B2B2A09239100DAEB8A /* .codecov.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .codecov.yml; sourceTree = "<group>"; };
84E4F5692914F020004C7358 /* Brewfile */ = {isa = PBXFileReference; indentWidth = 2; lastKnownFileType = text; path = Brewfile; sourceTree = "<group>"; tabWidth = 2; };
84F993C32A62A74000EC0190 /* SentryCurrentDateProvider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryCurrentDateProvider.m; sourceTree = "<group>"; };
861265F72404EC1500C4AFDE /* NSArray+SentrySanitize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "NSArray+SentrySanitize.h"; path = "include/NSArray+SentrySanitize.h"; sourceTree = "<group>"; };
861265F82404EC1500C4AFDE /* NSArray+SentrySanitize.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSArray+SentrySanitize.m"; sourceTree = "<group>"; };
8E0551DF26A7A63C00400526 /* TestProtocolClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestProtocolClient.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2161,11 +2155,8 @@
7BC63F0928081288009D9E37 /* SentrySwizzleWrapper.m */,
632F434E1F581D5400A18A36 /* SentryCrashExceptionApplication.h */,
632F434F1F581D5400A18A36 /* SentryCrashExceptionApplication.m */,
7BE3C7662445C0CA00A38442 /* SentryCurrentDate.h */,
7BE3C7682445C1A800A38442 /* SentryCurrentDate.m */,
7BE3C76A2445C27A00A38442 /* SentryCurrentDateProvider.h */,
7BE3C76E2445C2F800A38442 /* SentryDefaultCurrentDateProvider.h */,
7BE3C7702445C30D00A38442 /* SentryDefaultCurrentDateProvider.m */,
84F993C32A62A74000EC0190 /* SentryCurrentDateProvider.m */,
7BD729952463E83300EA3610 /* SentryDateUtil.h */,
7BD729972463E93500EA3610 /* SentryDateUtil.m */,
7B98D7E325FB7A7200C5A389 /* SentryAppState.h */,
Expand Down Expand Up @@ -3571,11 +3562,9 @@
8E564AEF267AF24400FE117D /* SentryNetworkTracker.h in Headers */,
63FE715120DA4C1100CDBAE8 /* SentryCrashDebug.h in Headers */,
63FE70F520DA4C1000CDBAE8 /* SentryCrashMonitor_System.h in Headers */,
7BE3C7672445C0CA00A38442 /* SentryCurrentDate.h in Headers */,
7B31C291277B04A000337126 /* SentryCrashPlatformSpecificDefines.h in Headers */,
7B77BE3527EC8445003C9020 /* SentryDiscardReasonMapper.h in Headers */,
7B610D602512390E00B0B5D9 /* SentrySDK+Private.h in Headers */,
7BE3C76F2445C2F800A38442 /* SentryDefaultCurrentDateProvider.h in Headers */,
03F84D2327DD414C008FE43F /* SentryThreadHandle.hpp in Headers */,
7B6C5EE0264E8E050010D138 /* SentryFramesTracker.h in Headers */,
63FE715720DA4C1100CDBAE8 /* SentryCrashThread.h in Headers */,
Expand Down Expand Up @@ -4017,7 +4006,6 @@
15360CD62432832400112302 /* SentryAutoSessionTrackingIntegration.m in Sources */,
7B63459F280EBA7200CFA05A /* SentryUIEventTracker.m in Sources */,
7BF9EF782722B35D00B5BBEF /* SentrySubClassFinder.m in Sources */,
7BE3C7692445C1A800A38442 /* SentryCurrentDate.m in Sources */,
7BCFA71627D0BB50008C662C /* SentryANRTracker.m in Sources */,
63EED6C02237923600E02400 /* SentryOptions.m in Sources */,
D8CB741B2947286500A5F964 /* SentryEnvelopeItemHeader.m in Sources */,
Expand Down Expand Up @@ -4122,7 +4110,6 @@
03F84D3227DD4191008FE43F /* SentryProfiler.mm in Sources */,
635B3F391EBC6E2500A6176D /* SentryAsynchronousOperation.m in Sources */,
63FE717520DA4C1100CDBAE8 /* SentryCrash.m in Sources */,
7BE3C7712445C30D00A38442 /* SentryDefaultCurrentDateProvider.m in Sources */,
6344DDB11EC308E400D9160D /* SentryCrashInstallationReporter.m in Sources */,
D85596F3280580F10041FF8B /* SentryScreenshotIntegration.m in Sources */,
7BAF3DCE243DCBFE008A5414 /* SentryTransportFactory.m in Sources */,
Expand Down Expand Up @@ -4181,6 +4168,7 @@
D8603DD6284F8497000E1227 /* SentryBaggage.m in Sources */,
63FE711520DA4C1000CDBAE8 /* SentryCrashJSONCodec.c in Sources */,
03F84D3327DD4191008FE43F /* SentryMachLogging.cpp in Sources */,
84F993C42A62A74000EC0190 /* SentryCurrentDateProvider.m in Sources */,
D85852BA27EDDC5900C6D8AE /* SentryUIApplication.m in Sources */,
7B4E375F258231FC00059C93 /* SentryAttachment.m in Sources */,
636085141ED47BE600E8599E /* SentryFileManager.m in Sources */,
Expand Down
1 change: 0 additions & 1 deletion SentryTestUtils/ClearTestState.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class TestCleanup: NSObject {
SentrySDK.crashedLastRunCalled = false
SentrySDK.startInvocations = 0
PrivateSentrySDKOnly.appStartMeasurementHybridSDKMode = false
CurrentDate.setCurrentDateProvider(nil)
SentryNetworkTracker.sharedInstance.disable()

setTestDefaultLogLevel()
Expand Down
5 changes: 3 additions & 2 deletions SentryTestUtils/SentryProfilerMocksSwiftCompatible.mm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

#if SENTRY_TARGET_PROFILING_SUPPORTED

# import "SentryCurrentDate.h"
# import "SentryCurrentDateProvider.h"
# import "SentryDependencyContainer.h"
# import "SentryProfilerMocks.h"
# import "SentryProfilerState+ObjCpp.h"
# include <vector>
Expand All @@ -28,7 +29,7 @@ + (void)appendMockBacktraceToState:(SentryProfilerState *)state
auto backtrace = mockBacktrace(threadID, threadPriority,
[threadName cStringUsingEncoding:NSUTF8StringEncoding], queueAddress,
[queueLabel cStringUsingEncoding:NSUTF8StringEncoding], backtraceAddresses);
backtrace.absoluteTimestamp = SentryCurrentDate.getCurrentDateProvider.systemTime;
backtrace.absoluteTimestamp = SentryDependencyContainer.sharedInstance.dateProvider.systemTime;
[state appendBacktrace:backtrace];
}

Expand Down
1 change: 0 additions & 1 deletion SentryTestUtils/SentryTestUtils-ObjC-BridgingHeader.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
#import "SentryClient+Private.h"
#import "SentryClient+TestInit.h"
#import "SentryCrashWrapper.h"
#import "SentryCurrentDate.h"
#import "SentryCurrentDateProvider.h"
#import "SentryDependencyContainer.h"
#import "SentryDispatchFactory.h"
Expand Down
6 changes: 1 addition & 5 deletions SentryTestUtils/TestClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,7 @@ public class TestFileManager: SentryFileManager {
var deleteTimestampLastInForegroundInvocations: Int = 0

public init(options: Options) throws {
try super.init(options: options, andCurrentDateProvider: TestCurrentDateProvider(), dispatchQueueWrapper: TestSentryDispatchQueueWrapper())
}

public init(options: Options, andCurrentDateProvider currentDateProvider: CurrentDateProvider) throws {
try super.init(options: options, andCurrentDateProvider: currentDateProvider, dispatchQueueWrapper: TestSentryDispatchQueueWrapper())
try super.init(options: options, dispatchQueueWrapper: TestSentryDispatchQueueWrapper())
}

public var deleteOldEnvelopeItemsInvocations = Invocations<Void>()
Expand Down
10 changes: 5 additions & 5 deletions SentryTestUtils/TestCurrentDateProvider.swift
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import Foundation

@objc
public class TestCurrentDateProvider: NSObject, CurrentDateProvider {
public class TestCurrentDateProvider: CurrentDateProvider {
public static let defaultStartingDate = Date(timeIntervalSinceReferenceDate: 0)
private var internalDate = defaultStartingDate
private var internalSystemTime: UInt64 = 0
public var driftTimeForEveryRead = false

public func date() -> Date {
public override func date() -> Date {

defer {
if driftTimeForEveryRead {
Expand Down Expand Up @@ -40,16 +40,16 @@ public class TestCurrentDateProvider: NSObject, CurrentDateProvider {
}

public var internalDispatchNow = DispatchTime.now()
public func dispatchTimeNow() -> dispatch_time_t {
public override func dispatchTimeNow() -> dispatch_time_t {
return internalDispatchNow.rawValue
}

public var timezoneOffsetValue = 0
public func timezoneOffset() -> Int {
public override func timezoneOffset() -> Int {
return timezoneOffsetValue
}

public func systemTime() -> UInt64 {
public override func systemTime() -> UInt64 {
return internalSystemTime
}
}
12 changes: 6 additions & 6 deletions Sources/Sentry/SentryANRTracker.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#import "SentryANRTracker.h"
#import "SentryCrashWrapper.h"
#import "SentryCurrentDateProvider.h"
#import "SentryDependencyContainer.h"
#import "SentryDispatchQueueWrapper.h"
#import "SentryLog.h"
#import "SentryThreadWrapper.h"
Expand All @@ -16,7 +18,6 @@ typedef NS_ENUM(NSInteger, SentryANRTrackerState) {
@interface
SentryANRTracker ()

@property (nonatomic, strong) id<SentryCurrentDateProvider> currentDate;
@property (nonatomic, strong) SentryCrashWrapper *crashWrapper;
@property (nonatomic, strong) SentryDispatchQueueWrapper *dispatchQueueWrapper;
@property (nonatomic, strong) SentryThreadWrapper *threadWrapper;
Expand All @@ -31,14 +32,12 @@ @implementation SentryANRTracker {
}

- (instancetype)initWithTimeoutInterval:(NSTimeInterval)timeoutInterval
currentDateProvider:(id<SentryCurrentDateProvider>)currentDateProvider
crashWrapper:(SentryCrashWrapper *)crashWrapper
dispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper
threadWrapper:(SentryThreadWrapper *)threadWrapper
{
if (self = [super init]) {
self.timeoutInterval = timeoutInterval;
self.currentDate = currentDateProvider;
self.crashWrapper = crashWrapper;
self.dispatchQueueWrapper = dispatchQueueWrapper;
self.threadWrapper = threadWrapper;
Expand Down Expand Up @@ -79,8 +78,8 @@ - (void)detectANRs
}
}

NSDate *blockDeadline =
[[self.currentDate date] dateByAddingTimeInterval:self.timeoutInterval];
NSDate *blockDeadline = [[SentryDependencyContainer.sharedInstance.dateProvider date]
dateByAddingTimeInterval:self.timeoutInterval];

ticksSinceUiUpdate++;

Expand All @@ -107,7 +106,8 @@ - (void)detectANRs
// an ANR. If the app gets suspended this thread could sleep and wake up again. To avoid
// false positives, we don't report ANRs if the delta is too big.
NSTimeInterval deltaFromNowToBlockDeadline =
[[self.currentDate date] timeIntervalSinceDate:blockDeadline];
[[SentryDependencyContainer.sharedInstance.dateProvider date]
timeIntervalSinceDate:blockDeadline];

if (deltaFromNowToBlockDeadline >= self.timeoutInterval) {
SENTRY_LOG_DEBUG(
Expand Down
1 change: 0 additions & 1 deletion Sources/Sentry/SentryANRTrackingIntegration.m
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
#import "SentryClient+Private.h"
#import "SentryCrashMachineContext.h"
#import "SentryCrashWrapper.h"
#import "SentryDefaultCurrentDateProvider.h"
#import "SentryDispatchQueueWrapper.h"
#import "SentryEvent.h"
#import "SentryException.h"
Expand Down
25 changes: 12 additions & 13 deletions Sources/Sentry/SentryAppStartTracker.m
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# import <PrivateSentrySDKOnly.h>
# import <SentryAppState.h>
# import <SentryCurrentDateProvider.h>
# import <SentryDependencyContainer.h>
# import <SentryDispatchQueueWrapper.h>
# import <SentryInternalNotificationNames.h>
# import <SentryLog.h>
Expand All @@ -28,7 +29,6 @@
@interface
SentryAppStartTracker ()

@property (nonatomic, strong) id<SentryCurrentDateProvider> currentDate;
@property (nonatomic, strong) SentryAppState *previousAppState;
@property (nonatomic, strong) SentryDispatchQueueWrapper *dispatchQueue;
@property (nonatomic, strong) SentryAppStateManager *appStateManager;
Expand All @@ -53,20 +53,19 @@ + (void)load
[[NSProcessInfo processInfo].environment[@"ActivePrewarm"] isEqualToString:@"1"];
}

- (instancetype)initWithCurrentDateProvider:(id<SentryCurrentDateProvider>)currentDateProvider
dispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper
appStateManager:(SentryAppStateManager *)appStateManager
sysctl:(SentrySysctl *)sysctl
enablePreWarmedAppStartTracing:(BOOL)enablePreWarmedAppStartTracing
- (instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper
appStateManager:(SentryAppStateManager *)appStateManager
sysctl:(SentrySysctl *)sysctl
enablePreWarmedAppStartTracing:(BOOL)enablePreWarmedAppStartTracing
{
if (self = [super init]) {
self.currentDate = currentDateProvider;
self.dispatchQueue = dispatchQueueWrapper;
self.appStateManager = appStateManager;
self.sysctl = sysctl;
self.previousAppState = [self.appStateManager loadPreviousAppState];
self.wasInBackground = NO;
self.didFinishLaunchingTimestamp = [currentDateProvider date];
self.didFinishLaunchingTimestamp =
[SentryDependencyContainer.sharedInstance.dateProvider date];
self.enablePreWarmedAppStartTracing = enablePreWarmedAppStartTracing;
self.isRunning = NO;
}
Expand Down Expand Up @@ -94,7 +93,7 @@ - (void)start
// or we just don't receive it. In this case the didFinishLaunchingTimestamp would be nil. As
// the SDK should be initialized in application:didFinishLaunchingWithOptions: or in the init of
// @main of a SwiftUI we set the timestamp here.
self.didFinishLaunchingTimestamp = [self.currentDate date];
self.didFinishLaunchingTimestamp = [SentryDependencyContainer.sharedInstance.dateProvider date];

[NSNotificationCenter.defaultCenter addObserver:self
selector:@selector(didFinishLaunching)
Expand Down Expand Up @@ -172,12 +171,12 @@ - (void)buildAppStartMeasurement
NSTimeInterval appStartDuration = 0.0;
NSDate *appStartTimestamp;
if (isPreWarmed) {
appStartDuration = [[self.currentDate date]
appStartDuration = [[SentryDependencyContainer.sharedInstance.dateProvider date]
timeIntervalSinceDate:self.sysctl.moduleInitializationTimestamp];
appStartTimestamp = self.sysctl.moduleInitializationTimestamp;
} else {
appStartDuration =
[[self.currentDate date] timeIntervalSinceDate:self.sysctl.processStartTimestamp];
appStartDuration = [[SentryDependencyContainer.sharedInstance.dateProvider date]
timeIntervalSinceDate:self.sysctl.processStartTimestamp];
appStartTimestamp = self.sysctl.processStartTimestamp;
}

Expand Down Expand Up @@ -266,7 +265,7 @@ - (SentryAppStartType)getStartType

- (void)didFinishLaunching
{
self.didFinishLaunchingTimestamp = [self.currentDate date];
self.didFinishLaunchingTimestamp = [SentryDependencyContainer.sharedInstance.dateProvider date];
}

- (void)didEnterBackground
Expand Down
Loading

0 comments on commit 879fb28

Please sign in to comment.