diff --git a/submodules/Postbox/Sources/Postbox.swift b/submodules/Postbox/Sources/Postbox.swift index 33201d99a7..666d61f5c2 100644 --- a/submodules/Postbox/Sources/Postbox.swift +++ b/submodules/Postbox/Sources/Postbox.swift @@ -2994,7 +2994,7 @@ final class PostboxImpl { let isInTransaction: Atomic - private func internalTransaction(_ f: (Transaction) -> T) -> (result: T, updatedTransactionStateVersion: Int64?, updatedMasterClientId: Int64?) { + private func internalTransaction(_ f: (Transaction) -> T, file: String = #file, line: Int = #line) -> (result: T, updatedTransactionStateVersion: Int64?, updatedMasterClientId: Int64?) { let _ = self.isInTransaction.swap(true) let startTime = CFAbsoluteTimeGetCurrent() @@ -3010,7 +3010,7 @@ final class PostboxImpl { let endTime = CFAbsoluteTimeGetCurrent() let transactionDuration = endTime - startTime if transactionDuration > 0.1 { - postboxLog("Postbox transaction took \(transactionDuration * 1000.0) ms") + postboxLog("Postbox transaction took \(transactionDuration * 1000.0) ms, from: \(file), on:\(line)") } let _ = self.isInTransaction.swap(false) @@ -3052,13 +3052,14 @@ final class PostboxImpl { } } - public func transaction(userInteractive: Bool = false, ignoreDisabled: Bool = false, _ f: @escaping(Transaction) -> T) -> Signal { + + public func transaction(userInteractive: Bool = false, ignoreDisabled: Bool = false, _ f: @escaping(Transaction) -> T, file: String = #file, line: Int = #line) -> Signal { return Signal { subscriber in let f: () -> Void = { self.beginInternalTransaction(ignoreDisabled: ignoreDisabled, { let (result, updatedTransactionState, updatedMasterClientId) = self.internalTransaction({ transaction in return f(transaction) - }) + }, file: file, line: line) if updatedTransactionState != nil || updatedMasterClientId != nil { //self.pipeNotifier.notify() @@ -4407,12 +4408,12 @@ public class Postbox { } } - public func transaction(userInteractive: Bool = false, ignoreDisabled: Bool = false, _ f: @escaping(Transaction) -> T) -> Signal { + public func transaction(userInteractive: Bool = false, ignoreDisabled: Bool = false, _ f: @escaping(Transaction) -> T, file: String = #file, line: Int = #line) -> Signal { return Signal { subscriber in let disposable = MetaDisposable() self.impl.with { impl in - disposable.set(impl.transaction(userInteractive: userInteractive, ignoreDisabled: ignoreDisabled, f).start(next: subscriber.putNext, error: subscriber.putError, completed: subscriber.putCompletion)) + disposable.set(impl.transaction(userInteractive: userInteractive, ignoreDisabled: ignoreDisabled, f, file: file, line: line).start(next: subscriber.putNext, error: subscriber.putError, completed: subscriber.putCompletion)) } return disposable