Fixed build issues from the merge

pull/894/head
Morgan Pretty 3 months ago
parent 7b9f8cb45e
commit c414e1b5fc

@ -381,6 +381,7 @@
D2AEACDC16C426DA00C364C0 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2AEACDB16C426DA00C364C0 /* CFNetwork.framework */; };
FC3BD9881A30A790005B96BB /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC3BD9871A30A790005B96BB /* Social.framework */; };
FCB11D8C1A129A76002F93FB /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FCB11D8B1A129A76002F93FB /* CoreMedia.framework */; };
FD00CDCB2D5317A7006B96D3 /* Scheduler+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD00CDCA2D5317A3006B96D3 /* Scheduler+Utilities.swift */; };
FD0150262CA23D5B005B08A1 /* SessionUtilitiesKit.xctestplan in Resources */ = {isa = PBXBuildFile; fileRef = FD0150252CA23D5B005B08A1 /* SessionUtilitiesKit.xctestplan */; };
FD0150282CA23DB7005B08A1 /* GRDBExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0150272CA23DB7005B08A1 /* GRDBExtensions.swift */; };
FD0150292CA23DB7005B08A1 /* GRDBExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0150272CA23DB7005B08A1 /* GRDBExtensions.swift */; };
@ -1665,6 +1666,7 @@
E1A0AD8B16E13FDD0071E604 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
FC3BD9871A30A790005B96BB /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
FCB11D8B1A129A76002F93FB /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
FD00CDCA2D5317A3006B96D3 /* Scheduler+Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Scheduler+Utilities.swift"; sourceTree = "<group>"; };
FD0150252CA23D5B005B08A1 /* SessionUtilitiesKit.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = SessionUtilitiesKit.xctestplan; sourceTree = "<group>"; };
FD0150272CA23DB7005B08A1 /* GRDBExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GRDBExtensions.swift; sourceTree = "<group>"; };
FD01502D2CA24310005B08A1 /* BatchRequestSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatchRequestSpec.swift; sourceTree = "<group>"; };
@ -3735,6 +3737,7 @@
FDF222082818D2B0000A4995 /* NSAttributedString+Utilities.swift */,
FD09797127FAA2F500936362 /* Optional+Utilities.swift */,
FDE519F62AB7CDC700450C53 /* Result+Utilities.swift */,
FD00CDCA2D5317A3006B96D3 /* Scheduler+Utilities.swift */,
FDC0F0032BFECE12002CBFB9 /* TimeUnit.swift */,
FDE755132C9BC169002A2623 /* UIAlertAction+Utilities.swift */,
FDE755152C9BC169002A2623 /* UIApplicationState+Utilities.swift */,
@ -5979,6 +5982,7 @@
FDE755242C9BC1D1002A2623 /* Publisher+Utilities.swift in Sources */,
FDBB25E32988B13800F1508E /* _004_AddJobPriority.swift in Sources */,
7B7CB192271508AD0079FF93 /* CallRingTonePlayer.swift in Sources */,
FD00CDCB2D5317A7006B96D3 /* Scheduler+Utilities.swift in Sources */,
FD848B8B283DC509000E298B /* PagedDatabaseObserver.swift in Sources */,
B8856E09256F1676001CE70E /* UIDevice+featureSupport.swift in Sources */,
FD2272F02C352200004D8A6C /* General.swift in Sources */,

@ -130,7 +130,7 @@ class DisplayPictureDownloadJobSpec: QuickSpec {
DisplayPictureDownloadJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, runError, runPermanentFailure in
error = runError
@ -516,7 +516,7 @@ class DisplayPictureDownloadJobSpec: QuickSpec {
DisplayPictureDownloadJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -572,7 +572,7 @@ class DisplayPictureDownloadJobSpec: QuickSpec {
DisplayPictureDownloadJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -621,7 +621,7 @@ class DisplayPictureDownloadJobSpec: QuickSpec {
justBeforeEach {
DisplayPictureDownloadJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in jobResult = .succeeded },
failure: { _, error, permanent in jobResult = .failed(error, permanent) },
deferred: { _ in jobResult = .deferred },

@ -96,7 +96,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, runError, runPermanentFailure in
error = runError
@ -124,7 +124,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, runError, runPermanentFailure in
error = runError
@ -200,7 +200,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, runError, runPermanentFailure in
error = runError
@ -231,7 +231,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, runError, runPermanentFailure in
error = runError
@ -264,7 +264,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, runError, runPermanentFailure in
error = runError
@ -304,7 +304,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, runError, runPermanentFailure in
error = runError
@ -336,7 +336,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in didDefer = true },
@ -362,7 +362,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in didDefer = true },
@ -386,7 +386,7 @@ class MessageSendJobSpec: QuickSpec {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -417,7 +417,7 @@ class MessageSendJobSpec: QuickSpec {
it("creates a dependency between the new job and the existing one") {
MessageSendJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },

@ -99,7 +99,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in wasDeferred = true },
@ -115,7 +115,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in wasDeferred = true },
@ -140,7 +140,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
])
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in wasDeferred = true },
@ -158,7 +158,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in wasDeferred = true },
@ -176,7 +176,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -213,7 +213,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -252,7 +252,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
}
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -278,7 +278,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, error_, permanentFailure_ in
error = error_
@ -299,7 +299,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
it("stores the updated capabilities") {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -318,7 +318,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
it("inserts the returned rooms") {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -382,7 +382,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -404,7 +404,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
it("schedules a display picture download") {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -452,7 +452,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -511,7 +511,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -541,7 +541,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },
@ -556,7 +556,7 @@ class RetrieveDefaultOpenGroupRoomsJobSpec: QuickSpec {
it("does not schedule a display picture download if the imageId matches and the image has already been downloaded") {
RetrieveDefaultOpenGroupRoomsJob.run(
job,
queue: .main,
scheduler: DispatchQueue.main,
success: { _, _ in },
failure: { _, _, _ in },
deferred: { _ in },

@ -25,6 +25,7 @@ class ThreadSettingsViewModelSpec: QuickSpec {
@TestState var communityId: String! = "testserver.testRoom"
@TestState var dependencies: TestDependencies! = TestDependencies { dependencies in
dependencies[singleton: .scheduler] = .immediate
dependencies.forceSynchronous = true
}
@TestState(singleton: .storage, in: dependencies) var mockStorage: Storage! = SynchronousStorage(
customWriter: try! DatabaseQueue(),
@ -95,9 +96,10 @@ class ThreadSettingsViewModelSpec: QuickSpec {
.thenReturn(Authentication.Signature.standard(signature: "TestSignature".bytes))
}
)
@TestState var timestampMs: Int64! = 1234567890000
@TestState(cache: .snodeAPI, in: dependencies) var mockSnodeAPICache: MockSnodeAPICache! = MockSnodeAPICache(
initialSetup: { cache in
var timestampMs: Int64 = 1234567890000
cache.when { $0.clockOffsetMs }.thenReturn(0)
cache
.when { $0.currentOffsetTimestampMs() }

@ -322,7 +322,7 @@ public class ConfirmationModal: Modal, UITextFieldDelegate, UITextViewDelegate {
case .dualInput(let explanation, let firstInputInfo, let secondInputInfo, let onTextChanged):
explanationLabel.attributedText = explanation
explanationLabel.canScroll = false
explanationLabel.scrollMode = .never
explanationLabel.isHidden = (explanation == nil)
textField.placeholder = firstInputInfo.placeholder
textField.text = (firstInputInfo.initialValue ?? "")
@ -345,7 +345,7 @@ public class ConfirmationModal: Modal, UITextFieldDelegate, UITextViewDelegate {
case .radio(let explanation, let warning, let options):
mainStackView.spacing = 0
explanationLabel.attributedText = explanation
explanationLabel.canScroll = false
explanationLabel.scrollMode = .never
explanationLabel.isHidden = (explanation == nil)
warningLabel.attributedText = warning
warningLabel.isHidden = (warning == nil)

@ -1425,7 +1425,7 @@ public final class JobQueue: Hashable {
// Ensure this is running on the correct queue
guard DispatchQueue.with(key: queueKey, matches: queueContext, using: dependencies) else {
internalQueue.async { [weak self] in
internalQueue.async(using: dependencies) { [weak self] in
self?.runNextJob()
}
return
@ -1561,7 +1561,7 @@ public final class JobQueue: Hashable {
// If this queue executes concurrently and there are still jobs remaining then immediately attempt
// to start the next job
if executionType == .concurrent && numJobsRemaining > 0 {
internalQueue.async { [weak self] in
internalQueue.async(using: dependencies) { [weak self] in
self?.runNextJob()
}
}
@ -1609,7 +1609,7 @@ public final class JobQueue: Hashable {
// Trigger the 'start' function to load in any pending jobs that aren't already in the
// queue (for concurrent queues we want to force them to load in pending jobs and add
// them to the queue regardless of whether the queue is already running)
internalQueue.async { [weak self] in
internalQueue.async(using: dependencies) { [weak self] in
self?.start(forceWhenAlreadyRunning: (self?.executionType != .concurrent))
}
return
@ -1701,7 +1701,7 @@ public final class JobQueue: Hashable {
// Perform job cleanup and start the next job
performCleanUp(for: job, result: .succeeded)
internalQueue.async { [weak self] in
internalQueue.async(using: dependencies) { [weak self] in
self?.runNextJob()
}
}
@ -1717,7 +1717,7 @@ public final class JobQueue: Hashable {
Log.info(.jobRunner, "\(queueContext) \(job) canceled")
performCleanUp(for: job, result: .failed(error, permanentFailure))
internalQueue.async { [weak self] in
internalQueue.async(using: dependencies) { [weak self] in
self?.runNextJob()
}
return
@ -1743,7 +1743,7 @@ public final class JobQueue: Hashable {
_pendingJobsQueue.performUpdate { $0.inserting(job, at: 0) }
}
internalQueue.async { [weak self] in
internalQueue.async(using: dependencies) { [weak self] in
self?.runNextJob()
}
return
@ -1816,7 +1816,7 @@ public final class JobQueue: Hashable {
Log.error(.jobRunner, "\(queueContext) \(job) \(failureText)")
performCleanUp(for: job, result: .failed(error, permanentFailure))
internalQueue.async { [weak self] in
internalQueue.async(using: dependencies) { [weak self] in
self?.runNextJob()
}
}
@ -1869,7 +1869,7 @@ public final class JobQueue: Hashable {
}
performCleanUp(for: job, result: .deferred)
internalQueue.async { [weak self] in
internalQueue.async(using: dependencies) { [weak self] in
self?.runNextJob()
}
}

@ -0,0 +1,36 @@
// Copyright © 2025 Rangeproof Pty Ltd. All rights reserved.
import Foundation
import Combine
public extension Scheduler {
func schedule(
using dependencies: Dependencies,
_ action: @escaping () -> Void
) {
guard !dependencies.forceSynchronous else { return action() }
return self.schedule(action)
}
func schedule(
after date: Self.SchedulerTimeType,
using dependencies: Dependencies,
_ action: @escaping () -> Void
) {
guard !dependencies.forceSynchronous else { return action() }
self.schedule(after: date, action)
}
func schedule(
after date: Self.SchedulerTimeType,
tolerance: Self.SchedulerTimeType.Stride,
using dependencies: Dependencies,
_ action: @escaping () -> Void
) {
guard !dependencies.forceSynchronous else { return action() }
self.schedule(after: date, tolerance: tolerance, action)
}
}

@ -1,6 +1,7 @@
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
import Foundation
import Combine
import GRDB
import Quick
@ -1787,9 +1788,9 @@ fileprivate enum TestJob: JobExecutor {
static let requiresThreadId: Bool = false
static let requiresInteractionId: Bool = false
static func run(
static func run<S: Scheduler>(
_ job: Job,
queue: DispatchQueue,
scheduler: S,
success: @escaping (Job, Bool) -> Void,
failure: @escaping (Job, Error, Bool) -> Void,
deferred: @escaping (Job) -> Void,
@ -1824,13 +1825,13 @@ fileprivate enum TestJob: JobExecutor {
}
guard dependencies.fixedTime < details.completeTime else {
return queue.async(using: dependencies) {
return scheduler.schedule(using: dependencies) {
completeJob()
}
}
dependencies.async(at: details.completeTime) {
queue.async(using: dependencies) {
scheduler.schedule(using: dependencies) {
completeJob()
}
}

Loading…
Cancel
Save