mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Debugging
This commit is contained in:
parent
bdf1909eb7
commit
d892e030e0
@ -100,7 +100,7 @@ private final class ContentNode: ASDisplayNode {
|
|||||||
self.updateImage(image: image, size: size, spacing: spacing)
|
self.updateImage(image: image, size: size, spacing: spacing)
|
||||||
|
|
||||||
let disposable = (signal
|
let disposable = (signal
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] imageVersions in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] imageVersions in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -109,7 +109,7 @@ private final class ContentNode: ASDisplayNode {
|
|||||||
strongSelf.updateImage(image: image, size: size, spacing: spacing)
|
strongSelf.updateImage(image: image, size: size, spacing: spacing)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
self.disposable = disposable.strict()
|
self.disposable = disposable
|
||||||
} else {
|
} else {
|
||||||
let image = generateImage(size, rotatedContext: { size, context in
|
let image = generateImage(size, rotatedContext: { size, context in
|
||||||
context.clear(CGRect(origin: CGPoint(), size: size))
|
context.clear(CGRect(origin: CGPoint(), size: size))
|
||||||
@ -333,7 +333,7 @@ public final class AnimatedAvatarSetView: UIView {
|
|||||||
self.updateImage(image: image, size: size, spacing: spacing)
|
self.updateImage(image: image, size: size, spacing: spacing)
|
||||||
|
|
||||||
let disposable = (signal
|
let disposable = (signal
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] imageVersions in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] imageVersions in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -342,7 +342,7 @@ public final class AnimatedAvatarSetView: UIView {
|
|||||||
strongSelf.updateImage(image: image, size: size, spacing: spacing)
|
strongSelf.updateImage(image: image, size: size, spacing: spacing)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
self.disposable = disposable.strict()
|
self.disposable = disposable
|
||||||
} else {
|
} else {
|
||||||
let image = generateImage(size, rotatedContext: { size, context in
|
let image = generateImage(size, rotatedContext: { size, context in
|
||||||
context.clear(CGRect(origin: CGPoint(), size: size))
|
context.clear(CGRect(origin: CGPoint(), size: size))
|
||||||
|
@ -368,12 +368,12 @@ public final class DefaultAnimatedStickerNodeImpl: ASDisplayNode, AnimatedSticke
|
|||||||
}
|
}
|
||||||
self.disposable.set((source.directDataPath(attemptSynchronously: false)
|
self.disposable.set((source.directDataPath(attemptSynchronously: false)
|
||||||
|> filter { $0 != nil }
|
|> filter { $0 != nil }
|
||||||
|> deliverOnMainQueue).start(next: { path in
|
|> deliverOnMainQueue).startStrict(next: { path in
|
||||||
f(path!)
|
f(path!)
|
||||||
}))
|
}))
|
||||||
case .cached:
|
case .cached:
|
||||||
self.disposable.set((source.cachedDataPath(width: width, height: height)
|
self.disposable.set((source.cachedDataPath(width: width, height: height)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] path, complete in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] path, complete in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ public final class DirectAnimatedStickerNode: ASDisplayNode, AnimatedStickerNode
|
|||||||
self.sourceDisposable = (source.directDataPath(attemptSynchronously: false)
|
self.sourceDisposable = (source.directDataPath(attemptSynchronously: false)
|
||||||
|> filter { $0 != nil }
|
|> filter { $0 != nil }
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] path in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] path in
|
||||||
guard let strongSelf = self, let path = path else {
|
guard let strongSelf = self, let path = path else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,9 @@ public final class AppLockContextImpl: AppLockContext {
|
|||||||
private let rootPath: String
|
private let rootPath: String
|
||||||
private let syncQueue = Queue()
|
private let syncQueue = Queue()
|
||||||
|
|
||||||
|
private var disposable: Disposable?
|
||||||
|
private var autolockTimeoutDisposable: Disposable?
|
||||||
|
|
||||||
private let applicationBindings: TelegramApplicationBindings
|
private let applicationBindings: TelegramApplicationBindings
|
||||||
private let accountManager: AccountManager<TelegramAccountManagerTypes>
|
private let accountManager: AccountManager<TelegramAccountManagerTypes>
|
||||||
private let presentationDataSignal: Signal<PresentationData, NoError>
|
private let presentationDataSignal: Signal<PresentationData, NoError>
|
||||||
@ -112,14 +115,14 @@ public final class AppLockContextImpl: AppLockContext {
|
|||||||
}
|
}
|
||||||
self.autolockTimeout.set(self.currentStateValue.autolockTimeout)
|
self.autolockTimeout.set(self.currentStateValue.autolockTimeout)
|
||||||
|
|
||||||
let _ = (combineLatest(queue: .mainQueue(),
|
self.disposable = (combineLatest(queue: .mainQueue(),
|
||||||
accountManager.accessChallengeData(),
|
accountManager.accessChallengeData(),
|
||||||
accountManager.sharedData(keys: Set([ApplicationSpecificSharedDataKeys.presentationPasscodeSettings])),
|
accountManager.sharedData(keys: Set([ApplicationSpecificSharedDataKeys.presentationPasscodeSettings])),
|
||||||
presentationDataSignal,
|
presentationDataSignal,
|
||||||
applicationBindings.applicationIsActive,
|
applicationBindings.applicationIsActive,
|
||||||
self.currentState.get()
|
self.currentState.get()
|
||||||
)
|
)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] accessChallengeData, sharedData, presentationData, appInForeground, state in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] accessChallengeData, sharedData, presentationData, appInForeground, state in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -254,8 +257,8 @@ public final class AppLockContextImpl: AppLockContext {
|
|||||||
|
|
||||||
self.currentState.set(.single(self.currentStateValue))
|
self.currentState.set(.single(self.currentStateValue))
|
||||||
|
|
||||||
let _ = (self.autolockTimeout.get()
|
self.autolockTimeoutDisposable = (self.autolockTimeout.get()
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] autolockTimeout in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] autolockTimeout in
|
||||||
self?.updateLockState { state in
|
self?.updateLockState { state in
|
||||||
var state = state
|
var state = state
|
||||||
state.autolockTimeout = autolockTimeout
|
state.autolockTimeout = autolockTimeout
|
||||||
@ -264,6 +267,11 @@ public final class AppLockContextImpl: AppLockContext {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deinit {
|
||||||
|
self.disposable?.dispose()
|
||||||
|
self.autolockTimeoutDisposable?.dispose()
|
||||||
|
}
|
||||||
|
|
||||||
private func updateTimestampRenewTimer(shouldRun: Bool) {
|
private func updateTimestampRenewTimer(shouldRun: Bool) {
|
||||||
if shouldRun {
|
if shouldRun {
|
||||||
if self.timestampRenewTimer == nil {
|
if self.timestampRenewTimer == nil {
|
||||||
|
@ -442,7 +442,7 @@ public class AttachmentTextInputPanelNode: ASDisplayNode, TGCaptionPanelView, AS
|
|||||||
return .complete()
|
return .complete()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] maxCaptionLength in
|
|> deliverOnMainQueue).startStandalone(next: { [weak self] maxCaptionLength in
|
||||||
self?.maxCaptionLength = maxCaptionLength
|
self?.maxCaptionLength = maxCaptionLength
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -231,19 +231,19 @@ public class AttachmentController: ViewController {
|
|||||||
didSet {
|
didSet {
|
||||||
if let mediaPickerContext = self.mediaPickerContext {
|
if let mediaPickerContext = self.mediaPickerContext {
|
||||||
self.captionDisposable.set((mediaPickerContext.caption
|
self.captionDisposable.set((mediaPickerContext.caption
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] caption in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] caption in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.panel.updateCaption(caption ?? NSAttributedString())
|
strongSelf.panel.updateCaption(caption ?? NSAttributedString())
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
self.mediaSelectionCountDisposable.set((mediaPickerContext.selectionCount
|
self.mediaSelectionCountDisposable.set((mediaPickerContext.selectionCount
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] count in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] count in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.updateSelectionCount(count)
|
strongSelf.updateSelectionCount(count)
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
self.loadingProgressDisposable.set((mediaPickerContext.loadingProgress
|
self.loadingProgressDisposable.set((mediaPickerContext.loadingProgress
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] progress in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] progress in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.panel.updateLoadingProgress(progress)
|
strongSelf.panel.updateLoadingProgress(progress)
|
||||||
if let layout = strongSelf.validLayout {
|
if let layout = strongSelf.validLayout {
|
||||||
@ -252,13 +252,13 @@ public class AttachmentController: ViewController {
|
|||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
self.mainButtonStateDisposable.set((mediaPickerContext.mainButtonState
|
self.mainButtonStateDisposable.set((mediaPickerContext.mainButtonState
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] mainButtonState in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] mainButtonState in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
let _ = (strongSelf.panel.animatingTransitionPromise.get()
|
let _ = (strongSelf.panel.animatingTransitionPromise.get()
|
||||||
|> filter { value in
|
|> filter { value in
|
||||||
return !value
|
return !value
|
||||||
}
|
}
|
||||||
|> take(1)).start(next: { [weak self] _ in
|
|> take(1)).startStandalone(next: { [weak self] _ in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.panel.updateMainButtonState(mainButtonState)
|
strongSelf.panel.updateMainButtonState(mainButtonState)
|
||||||
if let layout = strongSelf.validLayout {
|
if let layout = strongSelf.validLayout {
|
||||||
@ -591,7 +591,7 @@ public class AttachmentController: ViewController {
|
|||||||
$0
|
$0
|
||||||
}
|
}
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self, weak snapshotView] _ in
|
|> deliverOnMainQueue).startStandalone(next: { [weak self, weak snapshotView] _ in
|
||||||
guard let strongSelf = self, let layout = strongSelf.validLayout else {
|
guard let strongSelf = self, let layout = strongSelf.validLayout else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1039,7 +1039,7 @@ public class AttachmentController: ViewController {
|
|||||||
let disposableSet = DisposableSet()
|
let disposableSet = DisposableSet()
|
||||||
let _ = (context.engine.messages.attachMenuBots()
|
let _ = (context.engine.messages.attachMenuBots()
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { bots in
|
|> deliverOnMainQueue).startStandalone(next: { bots in
|
||||||
for bot in bots {
|
for bot in bots {
|
||||||
for (name, file) in bot.icons {
|
for (name, file) in bot.icons {
|
||||||
if [.iOSAnimated, .placeholder].contains(name), let peer = PeerReference(bot.peer._asPeer()) {
|
if [.iOSAnimated, .placeholder].contains(name), let peer = PeerReference(bot.peer._asPeer()) {
|
||||||
|
@ -85,7 +85,7 @@ private final class IconComponent: Component {
|
|||||||
|
|
||||||
self.disposable = (svgIconImageFile(account: component.account, fileReference: fileReference)
|
self.disposable = (svgIconImageFile(account: component.account, fileReference: fileReference)
|
||||||
|> runOn(Queue.concurrentDefaultQueue())
|
|> runOn(Queue.concurrentDefaultQueue())
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] transform in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] transform in
|
||||||
let arguments = TransformImageArguments(corners: ImageCorners(), imageSize: availableSize, boundingSize: availableSize, intrinsicInsets: UIEdgeInsets())
|
let arguments = TransformImageArguments(corners: ImageCorners(), imageSize: availableSize, boundingSize: availableSize, intrinsicInsets: UIEdgeInsets())
|
||||||
let drawingContext = transform(arguments)
|
let drawingContext = transform(arguments)
|
||||||
let image = drawingContext?.generateImage()?.withRenderingMode(.alwaysTemplate)
|
let image = drawingContext?.generateImage()?.withRenderingMode(.alwaysTemplate)
|
||||||
@ -965,7 +965,7 @@ final class AttachmentPanel: ASDisplayNode, UIScrollViewDelegate {
|
|||||||
}
|
}
|
||||||
let _ = (strongSelf.context.account.viewTracker.peerView(peerId)
|
let _ = (strongSelf.context.account.viewTracker.peerView(peerId)
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] peerView in
|
|> deliverOnMainQueue).startStandalone(next: { [weak self] peerView in
|
||||||
guard let strongSelf = self, let peer = peerViewMainPeer(peerView) else {
|
guard let strongSelf = self, let peer = peerViewMainPeer(peerView) else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1029,7 +1029,7 @@ final class AttachmentPanel: ASDisplayNode, UIScrollViewDelegate {
|
|||||||
}, statuses: nil)
|
}, statuses: nil)
|
||||||
|
|
||||||
self.presentationDataDisposable = ((updatedPresentationData?.signal ?? context.sharedContext.presentationData)
|
self.presentationDataDisposable = ((updatedPresentationData?.signal ?? context.sharedContext.presentationData)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] presentationData in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] presentationData in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.presentationData = presentationData
|
strongSelf.presentationData = presentationData
|
||||||
|
|
||||||
@ -1165,7 +1165,7 @@ final class AttachmentPanel: ASDisplayNode, UIScrollViewDelegate {
|
|||||||
self.iconDisposables[file.fileId] = accountFullSizeData.start()
|
self.iconDisposables[file.fileId] = accountFullSizeData.start()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
self.iconDisposables[file.fileId] = freeMediaFileInteractiveFetched(account: self.context.account, userLocation: .other, fileReference: .attachBot(peer: peer, media: file)).start()
|
self.iconDisposables[file.fileId] = freeMediaFileInteractiveFetched(account: self.context.account, userLocation: .other, fileReference: .attachBot(peer: peer, media: file)).startStrict()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -324,7 +324,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
let timeout = min(timeout, 5)
|
let timeout = min(timeout, 5)
|
||||||
#endif
|
#endif
|
||||||
self.currentTimeoutTime = timeout
|
self.currentTimeoutTime = timeout
|
||||||
let disposable = ((Signal<Int, NoError>.single(1) |> delay(1.0, queue: Queue.mainQueue())) |> restart).start(next: { [weak self] _ in
|
let disposable = ((Signal<Int, NoError>.single(1) |> delay(1.0, queue: Queue.mainQueue())) |> restart).startStrict(next: { [weak self] _ in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
if let currentTimeoutTime = strongSelf.currentTimeoutTime, currentTimeoutTime > 0 {
|
if let currentTimeoutTime = strongSelf.currentTimeoutTime, currentTimeoutTime > 0 {
|
||||||
strongSelf.currentTimeoutTime = currentTimeoutTime - 1
|
strongSelf.currentTimeoutTime = currentTimeoutTime - 1
|
||||||
@ -348,7 +348,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
})
|
})
|
||||||
self.countdownDisposable.set(disposable)
|
self.countdownDisposable.set(disposable)
|
||||||
} else if case let .email(_, _, _, pendingDate, _, _) = codeType, let pendingDate {
|
} else if case let .email(_, _, _, pendingDate, _, _) = codeType, let pendingDate {
|
||||||
let disposable = ((Signal<Int, NoError>.single(1) |> delay(1.0, queue: Queue.mainQueue())) |> restart).start(next: { [weak self] _ in
|
let disposable = ((Signal<Int, NoError>.single(1) |> delay(1.0, queue: Queue.mainQueue())) |> restart).startStrict(next: { [weak self] _ in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
let currentTime = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970)
|
let currentTime = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970)
|
||||||
let interval = pendingDate - currentTime
|
let interval = pendingDate - currentTime
|
||||||
|
@ -82,7 +82,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|> distinctUntilChanged
|
|> distinctUntilChanged
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] state in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] state in
|
||||||
self?.updateState(state: state)
|
self?.updateState(state: state)
|
||||||
}).strict()
|
}).strict()
|
||||||
}
|
}
|
||||||
@ -124,7 +124,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
|
|
||||||
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
||||||
|
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: isTestingEnvironment, masterDatacenterId: masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: isTestingEnvironment, masterDatacenterId: masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).startStandalone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,9 +152,9 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
if !strongSelf.otherAccountPhoneNumbers.1.isEmpty {
|
if !strongSelf.otherAccountPhoneNumbers.1.isEmpty {
|
||||||
let _ = (strongSelf.sharedContext.accountManager.transaction { transaction -> Void in
|
let _ = (strongSelf.sharedContext.accountManager.transaction { transaction -> Void in
|
||||||
transaction.removeAuth()
|
transaction.removeAuth()
|
||||||
}).start()
|
}).startStandalone()
|
||||||
} else {
|
} else {
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .empty)).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .empty)).startStandalone()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
if let splashController = splashController {
|
if let splashController = splashController {
|
||||||
@ -175,14 +175,14 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
|> take(1)
|
|> take(1)
|
||||||
|> timeout(2.0, queue: .mainQueue(), alternate: .single(nil))
|
|> timeout(2.0, queue: .mainQueue(), alternate: .single(nil))
|
||||||
let _ = (authorizationPushConfiguration
|
let _ = (authorizationPushConfiguration
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] authorizationPushConfiguration in
|
|> deliverOnMainQueue).startStandalone(next: { [weak self] authorizationPushConfiguration in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.actionDisposable.set((sendAuthorizationCode(accountManager: strongSelf.sharedContext.accountManager, account: strongSelf.account, phoneNumber: number, apiId: strongSelf.apiId, apiHash: strongSelf.apiHash, pushNotificationConfiguration: authorizationPushConfiguration, firebaseSecretStream: strongSelf.sharedContext.firebaseSecretStream, syncContacts: syncContacts, forcedPasswordSetupNotice: { value in
|
strongSelf.actionDisposable.set((sendAuthorizationCode(accountManager: strongSelf.sharedContext.accountManager, account: strongSelf.account, phoneNumber: number, apiId: strongSelf.apiId, apiHash: strongSelf.apiHash, pushNotificationConfiguration: authorizationPushConfiguration, firebaseSecretStream: strongSelf.sharedContext.firebaseSecretStream, syncContacts: syncContacts, forcedPasswordSetupNotice: { value in
|
||||||
guard let entry = CodableEntry(ApplicationSpecificCounterNotice(value: value)) else {
|
guard let entry = CodableEntry(ApplicationSpecificCounterNotice(value: value)) else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return (ApplicationSpecificNotice.forcedPasswordSetupKey(), entry)
|
return (ApplicationSpecificNotice.forcedPasswordSetupKey(), entry)
|
||||||
}) |> deliverOnMainQueue).start(next: { [weak self] result in
|
}) |> deliverOnMainQueue).startStrict(next: { [weak self] result in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
switch result {
|
switch result {
|
||||||
case let .sentCode(account):
|
case let .sentCode(account):
|
||||||
@ -312,12 +312,12 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
||||||
|
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).startStandalone()
|
||||||
})
|
})
|
||||||
controller.retryResetEmail = { [weak self] in
|
controller.retryResetEmail = { [weak self] in
|
||||||
if let self {
|
if let self {
|
||||||
self.actionDisposable.set(
|
self.actionDisposable.set(
|
||||||
resetLoginEmail(account: self.account, phoneNumber: number, phoneCodeHash: phoneCodeHash).start()
|
resetLoginEmail(account: self.account, phoneNumber: number, phoneCodeHash: phoneCodeHash).startStandalone()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -328,7 +328,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
if let _ = resetPendingDate {
|
if let _ = resetPendingDate {
|
||||||
self.actionDisposable.set(
|
self.actionDisposable.set(
|
||||||
(resetLoginEmail(account: self.account, phoneNumber: number, phoneCodeHash: phoneCodeHash)
|
(resetLoginEmail(account: self.account, phoneNumber: number, phoneCodeHash: phoneCodeHash)
|
||||||
|> deliverOnMainQueue).start(error: { [weak self] error in
|
|> deliverOnMainQueue).startStrict(error: { [weak self] error in
|
||||||
if let self, case .alreadyInProgress = error {
|
if let self, case .alreadyInProgress = error {
|
||||||
let formattedNumber = formatPhoneNumber(number)
|
let formattedNumber = formatPhoneNumber(number)
|
||||||
let title = NSAttributedString(string: self.presentationData.strings.Login_Email_PremiumRequiredTitle, font: Font.semibold(self.presentationData.listsFontSize.baseDisplaySize), textColor: self.presentationData.theme.actionSheet.primaryTextColor)
|
let title = NSAttributedString(string: self.presentationData.strings.Login_Email_PremiumRequiredTitle, font: Font.semibold(self.presentationData.listsFontSize.baseDisplaySize), textColor: self.presentationData.theme.actionSheet.primaryTextColor)
|
||||||
@ -342,7 +342,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
} else if let resetAvailablePeriod {
|
} else if let resetAvailablePeriod {
|
||||||
if resetAvailablePeriod == 0 {
|
if resetAvailablePeriod == 0 {
|
||||||
self.actionDisposable.set(
|
self.actionDisposable.set(
|
||||||
resetLoginEmail(account: self.account, phoneNumber: number, phoneCodeHash: phoneCodeHash).start()
|
resetLoginEmail(account: self.account, phoneNumber: number, phoneCodeHash: phoneCodeHash).startStrict()
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
let pattern = pattern.replacingOccurrences(of: "*", with: "#")
|
let pattern = pattern.replacingOccurrences(of: "*", with: "#")
|
||||||
@ -362,7 +362,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
self.actionDisposable.set(
|
self.actionDisposable.set(
|
||||||
(resetLoginEmail(account: self.account, phoneNumber: number, phoneCodeHash: phoneCodeHash)
|
(resetLoginEmail(account: self.account, phoneNumber: number, phoneCodeHash: phoneCodeHash)
|
||||||
|> deliverOnMainQueue).start(error: { [weak self] error in
|
|> deliverOnMainQueue).startStrict(error: { [weak self] error in
|
||||||
Queue.mainQueue().async {
|
Queue.mainQueue().async {
|
||||||
guard let self, let controller = controller else {
|
guard let self, let controller = controller else {
|
||||||
return
|
return
|
||||||
@ -378,7 +378,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
case .codeExpired:
|
case .codeExpired:
|
||||||
text = self.presentationData.strings.Login_CodeExpired
|
text = self.presentationData.strings.Login_CodeExpired
|
||||||
let account = self.account
|
let account = self.account
|
||||||
let _ = TelegramEngineUnauthorized(account: self.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).start()
|
let _ = TelegramEngineUnauthorized(account: self.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).startStandalone()
|
||||||
}
|
}
|
||||||
|
|
||||||
controller.presentInGlobalOverlay(standardTextAlertController(theme: AlertControllerTheme(presentationData: self.presentationData), title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: self.presentationData.strings.Common_OK, action: {})]))
|
controller.presentInGlobalOverlay(standardTextAlertController(theme: AlertControllerTheme(presentationData: self.presentationData), title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: self.presentationData.strings.Common_OK, action: {})]))
|
||||||
@ -405,7 +405,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
|
|
||||||
if case let .email(_, _, _, _, _, setup) = type, setup, case let .emailVerification(emailCode) = authorizationCode {
|
if case let .email(_, _, _, _, _, setup) = type, setup, case let .emailVerification(emailCode) = authorizationCode {
|
||||||
strongSelf.actionDisposable.set(((verifyLoginEmailSetup(account: strongSelf.account, code: emailCode))
|
strongSelf.actionDisposable.set(((verifyLoginEmailSetup(account: strongSelf.account, code: emailCode))
|
||||||
|> deliverOnMainQueue).start(error: { error in
|
|> deliverOnMainQueue).startStrict(error: { error in
|
||||||
Queue.mainQueue().async {
|
Queue.mainQueue().async {
|
||||||
if let strongSelf = self, let controller = controller {
|
if let strongSelf = self, let controller = controller {
|
||||||
controller.inProgress = false
|
controller.inProgress = false
|
||||||
@ -427,7 +427,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
case .codeExpired:
|
case .codeExpired:
|
||||||
text = strongSelf.presentationData.strings.Login_CodeExpired
|
text = strongSelf.presentationData.strings.Login_CodeExpired
|
||||||
let account = strongSelf.account
|
let account = strongSelf.account
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).startStandalone()
|
||||||
case .timeout:
|
case .timeout:
|
||||||
text = strongSelf.presentationData.strings.Login_NetworkError
|
text = strongSelf.presentationData.strings.Login_NetworkError
|
||||||
case .invalidEmailToken:
|
case .invalidEmailToken:
|
||||||
@ -452,7 +452,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
return (ApplicationSpecificNotice.forcedPasswordSetupKey(), entry)
|
return (ApplicationSpecificNotice.forcedPasswordSetupKey(), entry)
|
||||||
})
|
})
|
||||||
|> deliverOnMainQueue).start(next: { result in
|
|> deliverOnMainQueue).startStrict(next: { result in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -474,7 +474,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let _ = beginSignUp(account: strongSelf.account, data: data).start()
|
let _ = beginSignUp(account: strongSelf.account, data: data).startStandalone()
|
||||||
}), TextAlertAction(type: .genericAction, title: strongSelf.presentationData.strings.Login_TermsOfServiceDecline, action: {
|
}), TextAlertAction(type: .genericAction, title: strongSelf.presentationData.strings.Login_TermsOfServiceDecline, action: {
|
||||||
dismissImpl?()
|
dismissImpl?()
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
@ -487,7 +487,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let account = strongSelf.account
|
let account = strongSelf.account
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).startStandalone()
|
||||||
})]), on: .root, blockInteraction: false, completion: {})
|
})]), on: .root, blockInteraction: false, completion: {})
|
||||||
})
|
})
|
||||||
], actionLayout: .vertical, dismissOnOutsideTap: true)
|
], actionLayout: .vertical, dismissOnOutsideTap: true)
|
||||||
@ -508,7 +508,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
presentAlertImpl()
|
presentAlertImpl()
|
||||||
} else {
|
} else {
|
||||||
let _ = beginSignUp(account: strongSelf.account, data: data).start()
|
let _ = beginSignUp(account: strongSelf.account, data: data).startStandalone()
|
||||||
}
|
}
|
||||||
case .loggedIn:
|
case .loggedIn:
|
||||||
controller?.animateSuccess()
|
controller?.animateSuccess()
|
||||||
@ -535,7 +535,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
case .codeExpired:
|
case .codeExpired:
|
||||||
text = strongSelf.presentationData.strings.Login_CodeExpired
|
text = strongSelf.presentationData.strings.Login_CodeExpired
|
||||||
let account = strongSelf.account
|
let account = strongSelf.account
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).startStandalone()
|
||||||
case .invalidEmailToken:
|
case .invalidEmailToken:
|
||||||
text = strongSelf.presentationData.strings.Login_InvalidEmailTokenError
|
text = strongSelf.presentationData.strings.Login_InvalidEmailTokenError
|
||||||
case .invalidEmailAddress:
|
case .invalidEmailAddress:
|
||||||
@ -582,7 +582,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
} else {
|
} else {
|
||||||
controller?.inProgress = true
|
controller?.inProgress = true
|
||||||
strongSelf.actionDisposable.set((resendAuthorizationCode(accountManager: strongSelf.sharedContext.accountManager, account: strongSelf.account, apiId: strongSelf.apiId, apiHash: strongSelf.apiHash, firebaseSecretStream: strongSelf.sharedContext.firebaseSecretStream)
|
strongSelf.actionDisposable.set((resendAuthorizationCode(accountManager: strongSelf.sharedContext.accountManager, account: strongSelf.account, apiId: strongSelf.apiId, apiHash: strongSelf.apiHash, firebaseSecretStream: strongSelf.sharedContext.firebaseSecretStream)
|
||||||
|> deliverOnMainQueue).start(next: { result in
|
|> deliverOnMainQueue).startStrict(next: { result in
|
||||||
controller?.inProgress = false
|
controller?.inProgress = false
|
||||||
}, error: { error in
|
}, error: { error in
|
||||||
if let strongSelf = self, let controller = controller {
|
if let strongSelf = self, let controller = controller {
|
||||||
@ -622,7 +622,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
controller.reset = { [weak self] in
|
controller.reset = { [weak self] in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
let account = strongSelf.account
|
let account = strongSelf.account
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).startStandalone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
controller.signInWithApple = { [weak self] in
|
controller.signInWithApple = { [weak self] in
|
||||||
@ -674,7 +674,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
||||||
|
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).startStandalone()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
controller.proceedWithEmail = { [weak self, weak controller] email in
|
controller.proceedWithEmail = { [weak self, weak controller] email in
|
||||||
@ -687,7 +687,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
strongSelf.currentEmail = email
|
strongSelf.currentEmail = email
|
||||||
|
|
||||||
strongSelf.actionDisposable.set((sendLoginEmailCode(account: strongSelf.account, email: email)
|
strongSelf.actionDisposable.set((sendLoginEmailCode(account: strongSelf.account, email: email)
|
||||||
|> deliverOnMainQueue).start(error: { error in
|
|> deliverOnMainQueue).startStrict(error: { error in
|
||||||
if let strongSelf = self, let controller = controller {
|
if let strongSelf = self, let controller = controller {
|
||||||
controller.inProgress = false
|
controller.inProgress = false
|
||||||
|
|
||||||
@ -747,7 +747,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
|
|
||||||
if self.signInWithAppleSetup {
|
if self.signInWithAppleSetup {
|
||||||
self.actionDisposable.set((verifyLoginEmailSetup(account: self.account, code: .appleToken(token))
|
self.actionDisposable.set((verifyLoginEmailSetup(account: self.account, code: .appleToken(token))
|
||||||
|> deliverOnMainQueue).start(error: { [weak self, weak lastController] error in
|
|> deliverOnMainQueue).startStrict(error: { [weak self, weak lastController] error in
|
||||||
if let strongSelf = self, let lastController = lastController {
|
if let strongSelf = self, let lastController = lastController {
|
||||||
let text: String
|
let text: String
|
||||||
switch error {
|
switch error {
|
||||||
@ -774,13 +774,13 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return (ApplicationSpecificNotice.forcedPasswordSetupKey(), entry)
|
return (ApplicationSpecificNotice.forcedPasswordSetupKey(), entry)
|
||||||
}).start(next: { [weak self] result in
|
}).startStrict(next: { [weak self] result in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch result {
|
switch result {
|
||||||
case let .signUp(data):
|
case let .signUp(data):
|
||||||
let _ = beginSignUp(account: strongSelf.account, data: data).start()
|
let _ = beginSignUp(account: strongSelf.account, data: data).startStandalone()
|
||||||
case .loggedIn:
|
case .loggedIn:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -798,7 +798,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
case .codeExpired:
|
case .codeExpired:
|
||||||
text = strongSelf.presentationData.strings.Login_CodeExpired
|
text = strongSelf.presentationData.strings.Login_CodeExpired
|
||||||
let account = strongSelf.account
|
let account = strongSelf.account
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).startStandalone()
|
||||||
case .invalidEmailToken:
|
case .invalidEmailToken:
|
||||||
text = strongSelf.presentationData.strings.Login_InvalidEmailTokenError
|
text = strongSelf.presentationData.strings.Login_InvalidEmailTokenError
|
||||||
case .invalidEmailAddress:
|
case .invalidEmailAddress:
|
||||||
@ -839,13 +839,13 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
||||||
|
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).startStandalone()
|
||||||
})
|
})
|
||||||
controller.loginWithPassword = { [weak self, weak controller] password in
|
controller.loginWithPassword = { [weak self, weak controller] password in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
controller?.inProgress = true
|
controller?.inProgress = true
|
||||||
|
|
||||||
strongSelf.actionDisposable.set((authorizeWithPassword(accountManager: strongSelf.sharedContext.accountManager, account: strongSelf.account, password: password, syncContacts: syncContacts) |> deliverOnMainQueue).start(error: { error in
|
strongSelf.actionDisposable.set((authorizeWithPassword(accountManager: strongSelf.sharedContext.accountManager, account: strongSelf.account, password: password, syncContacts: syncContacts) |> deliverOnMainQueue).startStrict(error: { error in
|
||||||
Queue.mainQueue().async {
|
Queue.mainQueue().async {
|
||||||
if let strongSelf = self, let controller = controller {
|
if let strongSelf = self, let controller = controller {
|
||||||
controller.inProgress = false
|
controller.inProgress = false
|
||||||
@ -872,18 +872,18 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
if let strongSelf = self, let strongController = controller {
|
if let strongSelf = self, let strongController = controller {
|
||||||
strongController.inProgress = true
|
strongController.inProgress = true
|
||||||
strongSelf.actionDisposable.set((TelegramEngineUnauthorized(account: strongSelf.account).auth.requestTwoStepVerificationPasswordRecoveryCode()
|
strongSelf.actionDisposable.set((TelegramEngineUnauthorized(account: strongSelf.account).auth.requestTwoStepVerificationPasswordRecoveryCode()
|
||||||
|> deliverOnMainQueue).start(next: { pattern in
|
|> deliverOnMainQueue).startStrict(next: { pattern in
|
||||||
if let strongSelf = self, let strongController = controller {
|
if let strongSelf = self, let strongController = controller {
|
||||||
strongController.inProgress = false
|
strongController.inProgress = false
|
||||||
|
|
||||||
let _ = (TelegramEngineUnauthorized(account: strongSelf.account).auth.state()
|
let _ = (TelegramEngineUnauthorized(account: strongSelf.account).auth.state()
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { state in
|
|> deliverOnMainQueue).startStandalone(next: { state in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if case let .unauthorized(state) = state, case let .passwordEntry(hint, number, code, _, syncContacts) = state.contents {
|
if case let .unauthorized(state) = state, case let .passwordEntry(hint, number, code, _, syncContacts) = state.contents {
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .passwordRecovery(hint: hint, number: number, code: code, emailPattern: pattern, syncContacts: syncContacts))).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .passwordRecovery(hint: hint, number: number, code: code, emailPattern: pattern, syncContacts: syncContacts))).startStandalone()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -907,7 +907,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
if let strongSelf = self, let strongController = controller {
|
if let strongSelf = self, let strongController = controller {
|
||||||
strongController.inProgress = true
|
strongController.inProgress = true
|
||||||
strongSelf.actionDisposable.set((performAccountReset(account: strongSelf.account)
|
strongSelf.actionDisposable.set((performAccountReset(account: strongSelf.account)
|
||||||
|> deliverOnMainQueue).start(next: {
|
|> deliverOnMainQueue).startStrict(next: {
|
||||||
if let strongController = controller {
|
if let strongController = controller {
|
||||||
strongController.inProgress = false
|
strongController.inProgress = false
|
||||||
}
|
}
|
||||||
@ -954,12 +954,12 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
|
|
||||||
let _ = (TelegramEngineUnauthorized(account: strongSelf.account).auth.state()
|
let _ = (TelegramEngineUnauthorized(account: strongSelf.account).auth.state()
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { state in
|
|> deliverOnMainQueue).startStandalone(next: { state in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if case let .unauthorized(state) = state, case let .passwordRecovery(hint, number, code, _, syncContacts) = state.contents {
|
if case let .unauthorized(state) = state, case let .passwordRecovery(hint, number, code, _, syncContacts) = state.contents {
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .passwordEntry(hint: hint, number: number, code: code, suggestReset: true, syncContacts: syncContacts))).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .passwordEntry(hint: hint, number: number, code: code, suggestReset: true, syncContacts: syncContacts))).startStandalone()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -984,7 +984,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
||||||
|
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).startStandalone()
|
||||||
})
|
})
|
||||||
controller.reset = { [weak self, weak controller] in
|
controller.reset = { [weak self, weak controller] in
|
||||||
if let strongSelf = self, let strongController = controller {
|
if let strongSelf = self, let strongController = controller {
|
||||||
@ -994,7 +994,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
if let strongSelf = self, let strongController = controller {
|
if let strongSelf = self, let strongController = controller {
|
||||||
strongController.inProgress = true
|
strongController.inProgress = true
|
||||||
strongSelf.actionDisposable.set((performAccountReset(account: strongSelf.account)
|
strongSelf.actionDisposable.set((performAccountReset(account: strongSelf.account)
|
||||||
|> deliverOnMainQueue).start(next: {
|
|> deliverOnMainQueue).startStrict(next: {
|
||||||
if let strongController = controller {
|
if let strongController = controller {
|
||||||
strongController.inProgress = false
|
strongController.inProgress = false
|
||||||
}
|
}
|
||||||
@ -1018,7 +1018,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
controller.logout = { [weak self] in
|
controller.logout = { [weak self] in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
let account = strongSelf.account
|
let account = strongSelf.account
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .empty)).startStandalone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1044,7 +1044,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
let countryCode = AuthorizationSequenceController.defaultCountryCode()
|
||||||
|
|
||||||
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).start()
|
let _ = TelegramEngineUnauthorized(account: strongSelf.account).auth.setState(state: UnauthorizedAccountState(isTestingEnvironment: strongSelf.account.testingEnvironment, masterDatacenterId: strongSelf.account.masterDatacenterId, contents: .phoneEntry(countryCode: countryCode, number: ""))).startStandalone()
|
||||||
}, displayCancel: displayCancel)
|
}, displayCancel: displayCancel)
|
||||||
controller.signUpWithName = { [weak self, weak controller] firstName, lastName, avatarData, avatarAsset, avatarAdjustments in
|
controller.signUpWithName = { [weak self, weak controller] firstName, lastName, avatarData, avatarAsset, avatarAdjustments in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
@ -1112,7 +1112,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail
|
|||||||
}
|
}
|
||||||
return (ApplicationSpecificNotice.forcedPasswordSetupKey(), entry)
|
return (ApplicationSpecificNotice.forcedPasswordSetupKey(), entry)
|
||||||
})
|
})
|
||||||
|> deliverOnMainQueue).start(error: { error in
|
|> deliverOnMainQueue).startStrict(error: { error in
|
||||||
Queue.mainQueue().async {
|
Queue.mainQueue().async {
|
||||||
if let strongSelf = self, let controller = controller {
|
if let strongSelf = self, let controller = controller {
|
||||||
controller.inProgress = false
|
controller.inProgress = false
|
||||||
|
@ -444,7 +444,7 @@ final class AuthorizationSequencePhoneEntryControllerNode: ASDisplayNode {
|
|||||||
|
|
||||||
if let account = account {
|
if let account = account {
|
||||||
self.tokenEventsDisposable.set((account.updateLoginTokenEvents
|
self.tokenEventsDisposable.set((account.updateLoginTokenEvents
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] _ in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] _ in
|
||||||
self?.refreshQrToken()
|
self?.refreshQrToken()
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
@ -672,19 +672,19 @@ final class AuthorizationSequencePhoneEntryControllerNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.exportTokenDisposable.set((tokenSignal
|
self.exportTokenDisposable.set((tokenSignal
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] result in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] result in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch result {
|
switch result {
|
||||||
case let .displayToken(token):
|
case let .displayToken(token):
|
||||||
var tokenString = token.value.base64EncodedString()
|
var tokenString = token.value.base64EncodedString()
|
||||||
print("export token \(tokenString)")
|
//print("export token \(tokenString)")
|
||||||
tokenString = tokenString.replacingOccurrences(of: "+", with: "-")
|
tokenString = tokenString.replacingOccurrences(of: "+", with: "-")
|
||||||
tokenString = tokenString.replacingOccurrences(of: "/", with: "_")
|
tokenString = tokenString.replacingOccurrences(of: "/", with: "_")
|
||||||
let urlString = "tg://login?token=\(tokenString)"
|
let urlString = "tg://login?token=\(tokenString)"
|
||||||
let _ = (qrCode(string: urlString, color: .black, backgroundColor: .white, icon: .none)
|
let _ = (qrCode(string: urlString, color: .black, backgroundColor: .white, icon: .none)
|
||||||
|> deliverOnMainQueue).start(next: { _, generate in
|
|> deliverOnMainQueue).startStrict(next: { _, generate in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -698,7 +698,7 @@ final class AuthorizationSequencePhoneEntryControllerNode: ASDisplayNode {
|
|||||||
let timestamp = Int32(Date().timeIntervalSince1970)
|
let timestamp = Int32(Date().timeIntervalSince1970)
|
||||||
let timeout = max(5, token.validUntil - timestamp)
|
let timeout = max(5, token.validUntil - timestamp)
|
||||||
strongSelf.exportTokenDisposable.set((Signal<Never, NoError>.complete()
|
strongSelf.exportTokenDisposable.set((Signal<Never, NoError>.complete()
|
||||||
|> delay(Double(timeout), queue: .mainQueue())).start(completed: {
|
|> delay(Double(timeout), queue: .mainQueue())).startStrict(completed: {
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -709,7 +709,7 @@ final class AuthorizationSequencePhoneEntryControllerNode: ASDisplayNode {
|
|||||||
strongSelf.account = account
|
strongSelf.account = account
|
||||||
strongSelf.accountUpdated?(account)
|
strongSelf.accountUpdated?(account)
|
||||||
strongSelf.tokenEventsDisposable.set((account.updateLoginTokenEvents
|
strongSelf.tokenEventsDisposable.set((account.updateLoginTokenEvents
|
||||||
|> deliverOnMainQueue).start(next: { _ in
|
|> deliverOnMainQueue).startStrict(next: { _ in
|
||||||
self?.refreshQrToken()
|
self?.refreshQrToken()
|
||||||
}))
|
}))
|
||||||
strongSelf.refreshQrToken()
|
strongSelf.refreshQrToken()
|
||||||
|
@ -76,7 +76,7 @@ public final class AvatarVideoNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.useAnimationNode {
|
if self.useAnimationNode {
|
||||||
self.stickerFetchedDisposable.set(freeMediaFileResourceInteractiveFetched(account: self.context.account, userLocation: .other, fileReference: stickerPackFileReference(animationFile), resource: chatMessageStickerResource(file: animationFile, small: false)).start())
|
self.stickerFetchedDisposable.set(freeMediaFileResourceInteractiveFetched(account: self.context.account, userLocation: .other, fileReference: stickerPackFileReference(animationFile), resource: chatMessageStickerResource(file: animationFile, small: false)).startStrict())
|
||||||
|
|
||||||
let animationNode = DefaultAnimatedStickerNodeImpl()
|
let animationNode = DefaultAnimatedStickerNodeImpl()
|
||||||
animationNode.autoplay = false
|
animationNode.autoplay = false
|
||||||
@ -175,7 +175,7 @@ public final class AvatarVideoNode: ASDisplayNode {
|
|||||||
switch markup.content {
|
switch markup.content {
|
||||||
case let .emoji(fileId):
|
case let .emoji(fileId):
|
||||||
self.fileDisposable = (self.context.engine.stickers.resolveInlineStickers(fileIds: [fileId])
|
self.fileDisposable = (self.context.engine.stickers.resolveInlineStickers(fileIds: [fileId])
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] files in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] files in
|
||||||
if let strongSelf = self, let file = files.values.first {
|
if let strongSelf = self, let file = files.values.first {
|
||||||
strongSelf.animationFile = file
|
strongSelf.animationFile = file
|
||||||
strongSelf.setupAnimation()
|
strongSelf.setupAnimation()
|
||||||
@ -189,7 +189,7 @@ public final class AvatarVideoNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] file in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] file in
|
||||||
if let strongSelf = self, let file {
|
if let strongSelf = self, let file {
|
||||||
strongSelf.animationFile = file
|
strongSelf.animationFile = file
|
||||||
strongSelf.setupAnimation()
|
strongSelf.setupAnimation()
|
||||||
@ -265,7 +265,7 @@ public final class AvatarVideoNode: ASDisplayNode {
|
|||||||
return playing
|
return playing
|
||||||
}
|
}
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(completed: { [weak self] in
|
|> deliverOnMainQueue).startStrict(completed: { [weak self] in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
Queue.mainQueue().after(0.15) {
|
Queue.mainQueue().after(0.15) {
|
||||||
strongSelf.videoNode?.isHidden = false
|
strongSelf.videoNode?.isHidden = false
|
||||||
|
@ -70,7 +70,7 @@ private final class MediaPreviewView: SimpleLayer {
|
|||||||
|> map { image in
|
|> map { image in
|
||||||
return image.flatMap(processImage)
|
return image.flatMap(processImage)
|
||||||
}
|
}
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] image in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] image in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1180,7 +1180,7 @@ public final class CalendarMessageScreen: ViewController {
|
|||||||
self.isLoadingMoreDisposable = (self.calendarSource.isLoadingMore
|
self.isLoadingMoreDisposable = (self.calendarSource.isLoadingMore
|
||||||
|> distinctUntilChanged
|
|> distinctUntilChanged
|
||||||
|> filter { !$0 }
|
|> filter { !$0 }
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] _ in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] _ in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1188,7 +1188,7 @@ public final class CalendarMessageScreen: ViewController {
|
|||||||
}).strict()
|
}).strict()
|
||||||
|
|
||||||
self.stateDisposable = (self.calendarSource.state
|
self.stateDisposable = (self.calendarSource.state
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] state in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] state in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1487,7 +1487,7 @@ public final class CalendarMessageScreen: ViewController {
|
|||||||
mainPeer: chatPeer
|
mainPeer: chatPeer
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] info in
|
|> deliverOnMainQueue).startStandalone(next: { [weak self] info in
|
||||||
guard let strongSelf = self, let info = info else {
|
guard let strongSelf = self, let info = info else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ public final class CallListController: TelegramBaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.presentationDataDisposable = (context.sharedContext.presentationData
|
self.presentationDataDisposable = (context.sharedContext.presentationData
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] presentationData in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] presentationData in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
let previousTheme = strongSelf.presentationData.theme
|
let previousTheme = strongSelf.presentationData.theme
|
||||||
let previousStrings = strongSelf.presentationData.strings
|
let previousStrings = strongSelf.presentationData.strings
|
||||||
@ -217,7 +217,7 @@ public final class CallListController: TelegramBaseController {
|
|||||||
let _ = (strongSelf.context.engine.data.get(
|
let _ = (strongSelf.context.engine.data.get(
|
||||||
TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)
|
TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)
|
||||||
)
|
)
|
||||||
|> deliverOnMainQueue).start(next: { peer in
|
|> deliverOnMainQueue).startStandalone(next: { peer in
|
||||||
if let strongSelf = self, let peer = peer, let controller = strongSelf.context.sharedContext.makePeerInfoController(context: strongSelf.context, updatedPresentationData: nil, peer: peer._asPeer(), mode: .calls(messages: messages.map({ $0._asMessage() })), avatarInitiallyExpanded: false, fromChat: false, requestsContext: nil) {
|
if let strongSelf = self, let peer = peer, let controller = strongSelf.context.sharedContext.makePeerInfoController(context: strongSelf.context, updatedPresentationData: nil, peer: peer._asPeer(), mode: .calls(messages: messages.map({ $0._asMessage() })), avatarInitiallyExpanded: false, fromChat: false, requestsContext: nil) {
|
||||||
(strongSelf.navigationController as? NavigationController)?.pushViewController(controller)
|
(strongSelf.navigationController as? NavigationController)?.pushViewController(controller)
|
||||||
}
|
}
|
||||||
@ -335,7 +335,7 @@ public final class CallListController: TelegramBaseController {
|
|||||||
self?.clearDisposable.set(nil)
|
self?.clearDisposable.set(nil)
|
||||||
}
|
}
|
||||||
strongSelf.clearDisposable.set((signal
|
strongSelf.clearDisposable.set((signal
|
||||||
|> deliverOnMainQueue).start(completed: {
|
|> deliverOnMainQueue).startStrict(completed: {
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,7 +386,7 @@ public final class CallListController: TelegramBaseController {
|
|||||||
controller.navigationPresentation = .modal
|
controller.navigationPresentation = .modal
|
||||||
self.createActionDisposable.set((controller.result
|
self.createActionDisposable.set((controller.result
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { [weak controller, weak self] result in
|
|> deliverOnMainQueue).startStrict(next: { [weak controller, weak self] result in
|
||||||
controller?.dismissSearch()
|
controller?.dismissSearch()
|
||||||
if let strongSelf = self, let (contactPeers, action, _, _, _) = result, let contactPeer = contactPeers.first, case let .peer(peer, _, _) = contactPeer {
|
if let strongSelf = self, let (contactPeers, action, _, _, _) = result, let contactPeer = contactPeers.first, case let .peer(peer, _, _) = contactPeer {
|
||||||
strongSelf.call(peer.id, isVideo: action == .videoCall, began: {
|
strongSelf.call(peer.id, isVideo: action == .videoCall, began: {
|
||||||
@ -396,7 +396,7 @@ public final class CallListController: TelegramBaseController {
|
|||||||
|> timeout(1.0, queue: Queue.mainQueue(), alternate: .single(true))
|
|> timeout(1.0, queue: Queue.mainQueue(), alternate: .single(true))
|
||||||
|> delay(0.5, queue: Queue.mainQueue())
|
|> delay(0.5, queue: Queue.mainQueue())
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { _ in
|
|> deliverOnMainQueue).startStandalone(next: { _ in
|
||||||
if let _ = self, let controller = controller, let navigationController = controller.navigationController as? NavigationController {
|
if let _ = self, let controller = controller, let navigationController = controller.navigationController as? NavigationController {
|
||||||
if navigationController.viewControllers.last === controller {
|
if navigationController.viewControllers.last === controller {
|
||||||
let _ = navigationController.popViewController(animated: true)
|
let _ = navigationController.popViewController(animated: true)
|
||||||
@ -467,7 +467,7 @@ public final class CallListController: TelegramBaseController {
|
|||||||
private func call(_ peerId: EnginePeer.Id, isVideo: Bool, began: (() -> Void)? = nil) {
|
private func call(_ peerId: EnginePeer.Id, isVideo: Bool, began: (() -> Void)? = nil) {
|
||||||
self.peerViewDisposable.set((self.context.account.viewTracker.peerView(peerId)
|
self.peerViewDisposable.set((self.context.account.viewTracker.peerView(peerId)
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] view in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] view in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
guard let peer = peerViewMainPeer(view) else {
|
guard let peer = peerViewMainPeer(view) else {
|
||||||
return
|
return
|
||||||
|
@ -329,7 +329,7 @@ final class CallListControllerNode: ASDisplayNode {
|
|||||||
let _ = (context.engine.data.get(
|
let _ = (context.engine.data.get(
|
||||||
TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)
|
TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)
|
||||||
)
|
)
|
||||||
|> deliverOnMainQueue).start(next: { peer in
|
|> deliverOnMainQueue).startStandalone(next: { peer in
|
||||||
guard let strongSelf = self, let peer = peer else {
|
guard let strongSelf = self, let peer = peer else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -342,7 +342,7 @@ final class CallListControllerNode: ASDisplayNode {
|
|||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let _ = strongSelf.context.engine.messages.deleteMessagesInteractively(messageIds: messageIds, type: .forEveryone).start()
|
let _ = strongSelf.context.engine.messages.deleteMessagesInteractively(messageIds: messageIds, type: .forEveryone).startStandalone()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
items.append(ActionSheetButtonItem(title: strongSelf.presentationData.strings.Conversation_DeleteMessagesForMe, color: .destructive, action: { [weak actionSheet] in
|
items.append(ActionSheetButtonItem(title: strongSelf.presentationData.strings.Conversation_DeleteMessagesForMe, color: .destructive, action: { [weak actionSheet] in
|
||||||
@ -352,7 +352,7 @@ final class CallListControllerNode: ASDisplayNode {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let _ = strongSelf.context.engine.messages.deleteMessagesInteractively(messageIds: messageIds, type: .forLocalPeer).start()
|
let _ = strongSelf.context.engine.messages.deleteMessagesInteractively(messageIds: messageIds, type: .forLocalPeer).startStandalone()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
actionSheet.setItemGroups([
|
actionSheet.setItemGroups([
|
||||||
@ -369,10 +369,10 @@ final class CallListControllerNode: ASDisplayNode {
|
|||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
let _ = updateCallListSettingsInteractively(accountManager: strongSelf.context.sharedContext.accountManager, {
|
let _ = updateCallListSettingsInteractively(accountManager: strongSelf.context.sharedContext.accountManager, {
|
||||||
$0.withUpdatedShowTab(value)
|
$0.withUpdatedShowTab(value)
|
||||||
}).start()
|
}).startStandalone()
|
||||||
|
|
||||||
if value {
|
if value {
|
||||||
let _ = ApplicationSpecificNotice.incrementCallsTabTips(accountManager: strongSelf.context.sharedContext.accountManager, count: 4).start()
|
let _ = ApplicationSpecificNotice.incrementCallsTabTips(accountManager: strongSelf.context.sharedContext.accountManager, count: 4).startStandalone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, openGroupCall: { [weak self] peerId in
|
}, openGroupCall: { [weak self] peerId in
|
||||||
@ -596,7 +596,7 @@ final class CallListControllerNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.callListDisposable.set(appliedTransition.start())
|
self.callListDisposable.set(appliedTransition.startStrict())
|
||||||
|
|
||||||
self.callListLocationAndType.set(self.currentLocationAndType)
|
self.callListLocationAndType.set(self.currentLocationAndType)
|
||||||
|
|
||||||
@ -606,7 +606,7 @@ final class CallListControllerNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
|> distinctUntilChanged
|
|> distinctUntilChanged
|
||||||
|
|
||||||
self.emptyStateDisposable.set((combineLatest(emptySignal, typeSignal, self.statePromise.get()) |> deliverOnMainQueue).start(next: { [weak self] isEmpty, type, state in
|
self.emptyStateDisposable.set((combineLatest(emptySignal, typeSignal, self.statePromise.get()) |> deliverOnMainQueue).startStrict(next: { [weak self] isEmpty, type, state in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.updateEmptyPlaceholder(theme: state.presentationData.theme, strings: state.presentationData.strings, type: type, isHidden: !isEmpty)
|
strongSelf.updateEmptyPlaceholder(theme: state.presentationData.theme, strings: state.presentationData.strings, type: type, isHidden: !isEmpty)
|
||||||
}
|
}
|
||||||
|
@ -371,20 +371,20 @@ private final class CameraContext {
|
|||||||
if #available(iOS 13.0, *), let previewView = self.simplePreviewView {
|
if #available(iOS 13.0, *), let previewView = self.simplePreviewView {
|
||||||
if enabled, let secondaryPreviewView = self.secondaryPreviewView {
|
if enabled, let secondaryPreviewView = self.secondaryPreviewView {
|
||||||
let _ = (combineLatest(previewView.isPreviewing, secondaryPreviewView.isPreviewing)
|
let _ = (combineLatest(previewView.isPreviewing, secondaryPreviewView.isPreviewing)
|
||||||
|> map { first, second in
|
|> map { first, second in
|
||||||
return first && second
|
return first && second
|
||||||
}
|
}
|
||||||
|> filter { $0 }
|
|> filter { $0 }
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> delay(0.1, queue: self.queue)
|
|> delay(0.1, queue: self.queue)
|
||||||
|> deliverOn(self.queue)).start(next: { [weak self] _ in
|
|> deliverOn(self.queue)).startStandalone(next: { [weak self] _ in
|
||||||
self?.modeChange = .none
|
self?.modeChange = .none
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
let _ = (previewView.isPreviewing
|
let _ = (previewView.isPreviewing
|
||||||
|> filter { $0 }
|
|> filter { $0 }
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|> deliverOn(self.queue)).start(next: { [weak self] _ in
|
|> deliverOn(self.queue)).startStandalone(next: { [weak self] _ in
|
||||||
self?.modeChange = .none
|
self?.modeChange = .none
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ private final class ImportManager {
|
|||||||
return .limitExceeded
|
return .limitExceeded
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] session in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] session in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -200,7 +200,7 @@ private final class ImportManager {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
self.disposable.set((TelegramEngine(account: self.account).historyImport.startImport(session: session)
|
self.disposable.set((TelegramEngine(account: self.account).historyImport.startImport(session: session)
|
||||||
|> deliverOnMainQueue).start(error: { [weak self] _ in
|
|> deliverOnMainQueue).startStrict(error: { [weak self] _ in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -848,14 +848,14 @@ public final class ChatImportActivityScreen: ViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.disposable.set((resolvedPeerId
|
self.disposable.set((resolvedPeerId
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] peerId in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] peerId in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let importManager = ImportManager(account: strongSelf.context.account, peerId: peerId, mainFile: strongSelf.mainEntry, archivePath: strongSelf.archivePath, entries: strongSelf.otherEntries)
|
let importManager = ImportManager(account: strongSelf.context.account, peerId: peerId, mainFile: strongSelf.mainEntry, archivePath: strongSelf.archivePath, entries: strongSelf.otherEntries)
|
||||||
strongSelf.importManager = importManager
|
strongSelf.importManager = importManager
|
||||||
strongSelf.progressDisposable.set((importManager.state
|
strongSelf.progressDisposable.set((importManager.state
|
||||||
|> deliverOnMainQueue).start(next: { state in
|
|> deliverOnMainQueue).startStrict(next: { state in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -311,7 +311,7 @@ public final class ChatListSearchRecentPeersNode: ASDisplayNode {
|
|||||||
|
|
||||||
let previous: Atomic<[ChatListSearchRecentPeersEntry]> = Atomic(value: [])
|
let previous: Atomic<[ChatListSearchRecentPeersEntry]> = Atomic(value: [])
|
||||||
let firstTime:Atomic<Bool> = Atomic(value: true)
|
let firstTime:Atomic<Bool> = Atomic(value: true)
|
||||||
peersDisposable.add((combineLatest(queue: .mainQueue(), recent, self.itemCustomWidthValuePromise.get(), self.themeAndStringsPromise.get()) |> deliverOnMainQueue).start(next: { [weak self] peers, itemCustomWidth, themeAndStrings in
|
peersDisposable.add((combineLatest(queue: .mainQueue(), recent, self.itemCustomWidthValuePromise.get(), self.themeAndStringsPromise.get()) |> deliverOnMainQueue).startStrict(next: { [weak self] peers, itemCustomWidth, themeAndStrings in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
var entries: [ChatListSearchRecentPeersEntry] = []
|
var entries: [ChatListSearchRecentPeersEntry] = []
|
||||||
for peer in peers.0 {
|
for peer in peers.0 {
|
||||||
@ -348,7 +348,7 @@ public final class ChatListSearchRecentPeersNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
if case .actionSheet = mode {
|
if case .actionSheet = mode {
|
||||||
peersDisposable.add(_internal_managedUpdatedRecentPeers(accountPeerId: accountPeerId, postbox: postbox, network: network).start())
|
peersDisposable.add(_internal_managedUpdatedRecentPeers(accountPeerId: accountPeerId, postbox: postbox, network: network).startStrict())
|
||||||
}
|
}
|
||||||
self.disposable.set(peersDisposable)
|
self.disposable.set(peersDisposable)
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ public final class ChatSendMessageActionSheetController: ViewController {
|
|||||||
self.blocksBackgroundWhenInOverlay = true
|
self.blocksBackgroundWhenInOverlay = true
|
||||||
|
|
||||||
self.presentationDataDisposable = ((updatedPresentationData?.signal ?? context.sharedContext.presentationData)
|
self.presentationDataDisposable = ((updatedPresentationData?.signal ?? context.sharedContext.presentationData)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] presentationData in
|
|> deliverOnMainQueue).startStrict(next: { [weak self] presentationData in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.presentationData = presentationData
|
strongSelf.presentationData = presentationData
|
||||||
if strongSelf.isNodeLoaded {
|
if strongSelf.isNodeLoaded {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user