diff --git a/Signal/src/util/OWSBackup.m b/Signal/src/util/OWSBackup.m index ad17b895d..51ee9fda9 100644 --- a/Signal/src/util/OWSBackup.m +++ b/Signal/src/util/OWSBackup.m @@ -255,9 +255,8 @@ NS_ASSUME_NONNULL_BEGIN if (!lastExportSuccessDate && !lastExportFailureDate) { backupExportState = OWSBackupState_Idle; } else if (lastExportSuccessDate && lastExportFailureDate) { - backupExportState = (([lastExportSuccessDate compare:lastExportFailureDate] == NSOrderedDescending) - ? OWSBackupState_Succeeded - : OWSBackupState_Failed); + backupExportState = ([lastExportSuccessDate isAfterDate:lastExportFailureDate] ? OWSBackupState_Succeeded + : OWSBackupState_Failed); } else if (lastExportSuccessDate) { backupExportState = OWSBackupState_Succeeded; } else if (lastExportFailureDate) { diff --git a/Signal/test/util/UtilTest.m b/Signal/test/util/UtilTest.m index 9095f7f33..bd052cab0 100644 --- a/Signal/test/util/UtilTest.m +++ b/Signal/test/util/UtilTest.m @@ -87,17 +87,21 @@ - (void)testDateComparison { NSDate *firstDate = [NSDate new]; - [firstDate timeIntervalSince1970]; - NSDate *sameDate = [NSDate dateWithTimeIntervalSince1970:firstDate.timeIntervalSince1970]; - NSDate *laterDate = [NSDate dateWithTimeIntervalSince1970:firstDate.timeIntervalSince1970 + 1.f]; + NSDate *sameDate = [NSDate dateWithTimeIntervalSinceReferenceDate:firstDate.timeIntervalSinceReferenceDate]; + NSDate *laterDate = [NSDate dateWithTimeIntervalSinceReferenceDate:firstDate.timeIntervalSinceReferenceDate + 1.f]; + XCTAssertEqual(firstDate.timeIntervalSinceReferenceDate, sameDate.timeIntervalSinceReferenceDate); + XCTAssertNotEqual(firstDate.timeIntervalSinceReferenceDate, laterDate.timeIntervalSinceReferenceDate); XCTAssertEqualObjects(firstDate, sameDate); XCTAssertNotEqualObjects(firstDate, laterDate); XCTAssertTrue(firstDate.timeIntervalSinceReferenceDate < laterDate.timeIntervalSinceReferenceDate); XCTAssertFalse([firstDate isBeforeDate:sameDate]); XCTAssertTrue([firstDate isBeforeDate:laterDate]); XCTAssertFalse([laterDate isBeforeDate:firstDate]); + XCTAssertFalse([firstDate isAfterDate:sameDate]); + XCTAssertFalse([firstDate isAfterDate:laterDate]); + XCTAssertTrue([laterDate isAfterDate:firstDate]); } @end diff --git a/SignalServiceKit/src/Util/NSDate+OWS.h b/SignalServiceKit/src/Util/NSDate+OWS.h index f912ad59f..d11100340 100755 --- a/SignalServiceKit/src/Util/NSDate+OWS.h +++ b/SignalServiceKit/src/Util/NSDate+OWS.h @@ -24,6 +24,7 @@ extern const NSTimeInterval kMonthInterval; + (NSDate *)ows_dateWithMillisecondsSince1970:(uint64_t)milliseconds; + (uint64_t)ows_millisecondsSince1970ForDate:(NSDate *)date; +- (BOOL)isAfterDate:(NSDate *)otherDate; - (BOOL)isBeforeDate:(NSDate *)otherDate; @end diff --git a/SignalServiceKit/src/Util/NSDate+OWS.mm b/SignalServiceKit/src/Util/NSDate+OWS.mm index 37f5a848d..115ffdc03 100644 --- a/SignalServiceKit/src/Util/NSDate+OWS.mm +++ b/SignalServiceKit/src/Util/NSDate+OWS.mm @@ -32,6 +32,11 @@ const NSTimeInterval kMonthInterval = 30 * kDayInterval; return (uint64_t)(date.timeIntervalSince1970 * 1000); } +- (BOOL)isAfterDate:(NSDate *)otherDate +{ + return [self compare:otherDate] == NSOrderedDescending; +} + - (BOOL)isBeforeDate:(NSDate *)otherDate { return [self compare:otherDate] == NSOrderedAscending;