diff --git a/NotificationContent/NotificationContent-Bridging-Header.h b/NotificationContent/NotificationContent-Bridging-Header.h index f207b3b666..aa1e3a7d15 100644 --- a/NotificationContent/NotificationContent-Bridging-Header.h +++ b/NotificationContent/NotificationContent-Bridging-Header.h @@ -1,6 +1,4 @@ #ifndef Share_Bridging_Header_h #define Share_Bridging_Header_h -#import "../Telegram-iOS/BuildConfig.h" - #endif diff --git a/NotificationContent/NotificationViewController.swift b/NotificationContent/NotificationViewController.swift index b1c0f8ec08..36d3cc67d4 100644 --- a/NotificationContent/NotificationViewController.swift +++ b/NotificationContent/NotificationViewController.swift @@ -1,297 +1,58 @@ import UIKit import UserNotifications import UserNotificationsUI -import Display -import TelegramCore import TelegramUI -import SwiftSignalKit -import Postbox - -private enum NotificationContentAuthorizationError { - case unauthorized -} - -private var sharedAccountContext: SharedAccountContext? - -private var installedSharedLogger = false - -private func setupSharedLogger(_ path: String) { - if !installedSharedLogger { - installedSharedLogger = true - Logger.setSharedLogger(Logger(basePath: path)) - } -} - -private func parseFileLocationResource(_ dict: [AnyHashable: Any]) -> TelegramMediaResource? { - guard let datacenterId = dict["datacenterId"] as? Int32 else { - return nil - } - guard let volumeId = dict["volumeId"] as? Int64 else { - return nil - } - guard let localId = dict["localId"] as? Int32 else { - return nil - } - guard let secret = dict["secret"] as? Int64 else { - return nil - } - var fileReference: Data? - if let fileReferenceString = dict["fileReference"] as? String { - fileReference = dataWithHexString(fileReferenceString) - } - return CloudFileMediaResource(datacenterId: Int(datacenterId), volumeId: volumeId, localId: localId, secret: secret, size: nil, fileReference: fileReference) -} +import BuildConfig @objc(NotificationViewController) class NotificationViewController: UIViewController, UNNotificationContentExtension { - private let imageNode = TransformImageNode() - private var imageInfo: (isSticker: Bool, dimensions: CGSize)? - - private let applyDisposable = MetaDisposable() - private let fetchedDisposable = MetaDisposable() - - private var accountsPath: String? - - deinit { - self.applyDisposable.dispose() - self.fetchedDisposable.dispose() - } + private var impl: NotificationViewControllerImpl? override func viewDidLoad() { super.viewDidLoad() - self.view.addSubnode(self.imageNode) - - let appBundleIdentifier = Bundle.main.bundleIdentifier! - guard let lastDotRange = appBundleIdentifier.range(of: ".", options: [.backwards]) else { - return - } - - let baseAppBundleId = String(appBundleIdentifier[.. map { $0.1 }) - return - } - - if let data = try? Data(contentsOf: URL(fileURLWithPath: mediaBoxPath + "/\(thumbnailRepresentation.resource.id.uniqueId)"), options: .mappedRead) { - self.imageNode.setSignal(chatMessagePhotoInternal(photoData: .single((data, nil, false))) - |> map { $0.1 }) - } - - guard let sharedAccountContext = sharedAccountContext else { - return - } - - self.applyDisposable.set((sharedAccountContext.activeAccounts - |> map { _, accounts, _ -> Account? in - return accounts.first(where: { $0.0 == AccountRecordId(rawValue: accountIdValue) })?.1 - } - |> filter { account in - return account != nil - } - |> take(1) - |> mapToSignal { account -> Signal<(Account, ImageMediaReference?), NoError> in - guard let account = account else { - return .complete() - } - return account.postbox.messageAtId(messageId) - |> take(1) - |> map { message in - var imageReference: ImageMediaReference? - if let message = message { - for media in message.media { - if let image = media as? TelegramMediaImage { - imageReference = .message(message: MessageReference(message), media: image) - } - } - } else { - imageReference = .standalone(media: image) - } - return (account, imageReference) - } - } - |> deliverOnMainQueue).start(next: { [weak self] accountAndImage in - guard let strongSelf = self else { - return - } - if let imageReference = accountAndImage.1 { - strongSelf.imageNode.setSignal(chatMessagePhoto(postbox: accountAndImage.0.postbox, photoReference: imageReference)) - - accountAndImage.0.network.shouldExplicitelyKeepWorkerConnections.set(.single(true)) - strongSelf.fetchedDisposable.set(standaloneChatMessagePhotoInteractiveFetched(account: accountAndImage.0, photoReference: imageReference).start()) - } - })) - } else if let file = media as? TelegramMediaFile, let dimensions = file.dimensions { - guard let sharedAccountContext = sharedAccountContext else { - return - } - - let fittedSize = dimensions.fitted(CGSize(width: min(256.0, self.view.bounds.width), height: 256.0)) - self.view.frame = CGRect(origin: self.view.frame.origin, size: fittedSize) - self.preferredContentSize = fittedSize - - self.imageInfo = (true, dimensions) - self.updateImageLayout(boundingSize: self.view.bounds.size) - - self.applyDisposable.set((sharedAccountContext.activeAccounts - |> map { _, accounts, _ -> Account? in - return accounts.first(where: { $0.0 == AccountRecordId(rawValue: accountIdValue) })?.1 - } - |> filter { account in - return account != nil - } - |> take(1) - |> mapToSignal { account -> Signal<(Account, FileMediaReference?), NoError> in - guard let account = account else { - return .complete() - } - return account.postbox.messageAtId(messageId) - |> take(1) - |> map { message in - var fileReference: FileMediaReference? - if let message = message { - for media in message.media { - if let file = media as? TelegramMediaFile { - fileReference = .message(message: MessageReference(message), media: file) - } - } - } else { - fileReference = .standalone(media: file) - } - return (account, fileReference) - } - } - |> deliverOnMainQueue).start(next: { [weak self] accountAndImage in - guard let strongSelf = self else { - return - } - if let fileReference = accountAndImage.1 { - if file.isSticker { - strongSelf.imageNode.setSignal(chatMessageSticker(account: accountAndImage.0, file: file, small: false)) - - accountAndImage.0.network.shouldExplicitelyKeepWorkerConnections.set(.single(true)) - strongSelf.fetchedDisposable.set(freeMediaFileInteractiveFetched(account: accountAndImage.0, fileReference: fileReference).start()) - } - } - })) - } - } + self.impl?.didReceive(notification, view: self.view) } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) - self.updateImageLayout(boundingSize: size) - } - - private func updateImageLayout(boundingSize: CGSize) { - if let (isSticker, dimensions) = self.imageInfo { - let makeLayout = self.imageNode.asyncLayout() - let fittedSize: CGSize - if isSticker { - fittedSize = dimensions.fitted(CGSize(width: min(256.0, boundingSize.width), height: 256.0)) - } else { - fittedSize = dimensions.fitted(CGSize(width: boundingSize.width, height: 1000.0)) - } - let apply = makeLayout(TransformImageArguments(corners: ImageCorners(radius: 0.0), imageSize: fittedSize, boundingSize: fittedSize, intrinsicInsets: UIEdgeInsets())) - apply() - let displaySize = isSticker ? fittedSize : boundingSize - self.imageNode.frame = CGRect(origin: CGPoint(x: floor((boundingSize.width - displaySize.width) / 2.0), y: 0.0), size: displaySize) - } + self.impl?.viewWillTransition(to: size) } } diff --git a/NotificationService/AccountData.swift b/NotificationService/AccountData.swift index 83d5097306..4ad9583d1b 100644 --- a/NotificationService/AccountData.swift +++ b/NotificationService/AccountData.swift @@ -1,5 +1,6 @@ import Foundation import CommonCrypto +import LightweightAccountData private func sha256Digest(_ data: Data) -> Data { let length = data.count diff --git a/NotificationService/ImageData.swift b/NotificationService/ImageData.swift index e0be7d7b2b..fd97b1affe 100644 --- a/NotificationService/ImageData.swift +++ b/NotificationService/ImageData.swift @@ -5,6 +5,9 @@ import MtProtoKit import MtProtoKitDynamic #endif +import BuildConfig +import LightweightAccountData + struct ImageResource { let datacenterId: Int let volumeId: Int64 diff --git a/NotificationService/NotificationService-Bridging-Header.h b/NotificationService/NotificationService-Bridging-Header.h index 0d49aeee92..2f78194d54 100644 --- a/NotificationService/NotificationService-Bridging-Header.h +++ b/NotificationService/NotificationService-Bridging-Header.h @@ -1,7 +1,6 @@ #ifndef NotificationService_BridgingHeader_h #define NotificationService_BridgingHeader_h -#import "../Telegram-iOS/BuildConfig.h" #import "Crypto.h" #endif diff --git a/NotificationService/NotificationService.swift b/NotificationService/NotificationService.swift index 55904efda0..23e0f5bd83 100644 --- a/NotificationService/NotificationService.swift +++ b/NotificationService/NotificationService.swift @@ -6,6 +6,8 @@ import MtProtoKit import MtProtoKitDynamic #endif import WebP +import BuildConfig +import LightweightAccountData private var sharedLogger: Logger? diff --git a/Share/Share-Bridging-Header.h b/Share/Share-Bridging-Header.h index 620e1b0868..aa1e3a7d15 100644 --- a/Share/Share-Bridging-Header.h +++ b/Share/Share-Bridging-Header.h @@ -1,10 +1,4 @@ #ifndef Share_Bridging_Header_h #define Share_Bridging_Header_h -#import "TGContactModel.h" -#import "TGItemProviderSignals.h" -#import "TGShareLocationSignals.h" - -#import "../Telegram-iOS/BuildConfig.h" - #endif diff --git a/Share/ShareRootController.swift b/Share/ShareRootController.swift index b070e2b5e3..76644e2efe 100644 --- a/Share/ShareRootController.swift +++ b/Share/ShareRootController.swift @@ -1,104 +1,15 @@ import UIKit -import Display -import TelegramCore import TelegramUI -import SwiftSignalKit -import Postbox - -private let inForeground = ValuePromise(false, ignoreRepeated: true) - -private final class SharedExtensionContext { - let sharedContext: SharedAccountContext - let wakeupManager: SharedWakeupManager - - init(sharedContext: SharedAccountContext) { - self.sharedContext = sharedContext - self.wakeupManager = SharedWakeupManager(beginBackgroundTask: { _, _ in nil }, endBackgroundTask: { _ in }, backgroundTimeRemaining: { 0.0 }, activeAccounts: sharedContext.activeAccounts |> map { ($0.0, $0.1.map { ($0.0, $0.1) }) }, liveLocationPolling: .single(nil), watchTasks: .single(nil), inForeground: inForeground.get(), hasActiveAudioSession: .single(false), notificationManager: nil, mediaManager: sharedContext.mediaManager, callManager: sharedContext.callManager, accountUserInterfaceInUse: { id in - return sharedContext.accountUserInterfaceInUse(id) - }) - } -} - -private var globalSharedExtensionContext: SharedExtensionContext? - -private var installedSharedLogger = false - -private func setupSharedLogger(_ path: String) { - if !installedSharedLogger { - installedSharedLogger = true - Logger.setSharedLogger(Logger(basePath: path)) - } -} - -private enum ShareAuthorizationError { - case unauthorized -} +import BuildConfig @objc(ShareRootController) class ShareRootController: UIViewController { - private var mainWindow: Window1? - private var currentShareController: ShareController? - private var currentPasscodeController: ViewController? - - private var shouldBeMaster = Promise() - private let disposable = MetaDisposable() - private var observer1: AnyObject? - private var observer2: AnyObject? - - deinit { - self.disposable.dispose() - self.shouldBeMaster.set(.single(false)) - if let observer = self.observer1 { - NotificationCenter.default.removeObserver(observer) - } - if let observer = self.observer2 { - NotificationCenter.default.removeObserver(observer) - } - } + private var impl: ShareRootControllerImpl? override func loadView() { - telegramUIDeclareEncodables() - super.loadView() - self.view.backgroundColor = nil - self.view.isOpaque = false - - if #available(iOSApplicationExtension 8.2, *) { - self.observer1 = NotificationCenter.default.addObserver(forName: NSNotification.Name.NSExtensionHostDidBecomeActive, object: nil, queue: nil, using: { _ in - inForeground.set(true) - }) - - self.observer2 = NotificationCenter.default.addObserver(forName: NSNotification.Name.NSExtensionHostWillResignActive, object: nil, queue: nil, using: { _ in - inForeground.set(false) - }) - } - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - inForeground.set(true) - } - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - - self.disposable.dispose() - inForeground.set(false) - } - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - - if self.mainWindow == nil { - let mainWindow = Window1(hostView: childWindowHostView(parent: self.view), statusBarHost: nil) - mainWindow.hostView.eventView.backgroundColor = UIColor.clear - mainWindow.hostView.eventView.isHidden = false - self.mainWindow = mainWindow - - self.view.addSubview(mainWindow.hostView.containerView) - mainWindow.hostView.containerView.frame = self.view.bounds - + if self.impl == nil { let appBundleIdentifier = Bundle.main.bundleIdentifier! guard let lastDotRange = appBundleIdentifier.range(of: ".", options: [.backwards]) else { return @@ -118,234 +29,33 @@ class ShareRootController: UIViewController { return } - let rootPath = rootPathForBasePath(appGroupUrl.path) - performAppGroupUpgrades(appGroupPath: appGroupUrl.path, rootPath: rootPath) + let rootPath = appGroupUrl.path + "/telegram-data" - TempBox.initializeShared(basePath: rootPath, processType: "share", launchSpecificId: arc4random64()) + let deviceSpecificEncryptionParameters = BuildConfig.deviceSpecificEncryptionParameters(rootPath, baseAppBundleId: baseAppBundleId) + let encryptionParameters: (Data, Data) = (deviceSpecificEncryptionParameters.key, deviceSpecificEncryptionParameters.salt) - let logsPath = rootPath + "/share-logs" - let _ = try? FileManager.default.createDirectory(atPath: logsPath, withIntermediateDirectories: true, attributes: nil) + let appVersion = (Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String) ?? "unknown" - setupSharedLogger(logsPath) - - let applicationBindings = TelegramApplicationBindings(isMainApp: false, containerPath: appGroupUrl.path, appSpecificScheme: buildConfig.appSpecificUrlScheme, openUrl: { _ in - }, openUniversalUrl: { _, completion in - completion.completion(false) - return - }, canOpenUrl: { _ in - return false - }, getTopWindow: { - return nil - }, displayNotification: { _ in - - }, applicationInForeground: .single(false), applicationIsActive: .single(false), clearMessageNotifications: { _ in - }, pushIdleTimerExtension: { - return EmptyDisposable - }, openSettings: {}, openAppStorePage: {}, registerForNotifications: { _ in }, requestSiriAuthorization: { _ in }, siriAuthorization: { return .notDetermined }, getWindowHost: { - return nil - }, presentNativeController: { _ in - }, dismissNativeController: { - }, getAvailableAlternateIcons: { - return [] - }, getAlternateIconName: { - return nil - }, requestSetAlternateIconName: { _, f in - f(false) + self.impl = ShareRootControllerImpl(initializationData: ShareRootControllerInitializationData(appGroupPath: appGroupUrl.path, apiId: buildConfig.apiId, languagesCategory: languagesCategory, encryptionParameters: encryptionParameters, appVersion: appVersion, bundleData: buildConfig.bundleData), getExtensionContext: { [weak self] in + return self?.extensionContext }) - - let sharedExtensionContext: SharedExtensionContext - - if let globalSharedExtensionContext = globalSharedExtensionContext { - sharedExtensionContext = globalSharedExtensionContext - } else { - let appVersion = (Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String) ?? "unknown" - - initializeAccountManagement() - let accountManager = AccountManager(basePath: rootPath + "/accounts-metadata") - var initialPresentationDataAndSettings: InitialPresentationDataAndSettings? - let semaphore = DispatchSemaphore(value: 0) - let _ = currentPresentationDataAndSettings(accountManager: accountManager).start(next: { value in - initialPresentationDataAndSettings = value - semaphore.signal() - }) - semaphore.wait() - - let deviceSpecificEncryptionParameters = BuildConfig.deviceSpecificEncryptionParameters(rootPath, baseAppBundleId: baseAppBundleId) - let encryptionParameters = ValueBoxEncryptionParameters(forceEncryptionIfNoSet: false, key: ValueBoxEncryptionParameters.Key(data: deviceSpecificEncryptionParameters.key)!, salt: ValueBoxEncryptionParameters.Salt(data: deviceSpecificEncryptionParameters.salt)!) - - let sharedContext = SharedAccountContext(mainWindow: nil, basePath: rootPath, encryptionParameters: encryptionParameters, accountManager: accountManager, applicationBindings: applicationBindings, initialPresentationDataAndSettings: initialPresentationDataAndSettings!, networkArguments: NetworkInitializationArguments(apiId: apiId, languagesCategory: languagesCategory, appVersion: appVersion, voipMaxLayer: 0, appData: buildConfig.bundleData), rootPath: rootPath, legacyBasePath: nil, legacyCache: nil, apsNotificationToken: .never(), voipNotificationToken: .never(), setNotificationCall: { _ in }, navigateToChat: { _, _, _ in }) - sharedExtensionContext = SharedExtensionContext(sharedContext: sharedContext) - globalSharedExtensionContext = sharedExtensionContext - } - - let account: Signal<(SharedAccountContext, Account, [AccountWithInfo]), ShareAuthorizationError> = sharedExtensionContext.sharedContext.accountManager.transaction { transaction -> (SharedAccountContext, LoggingSettings) in - return (sharedExtensionContext.sharedContext, transaction.getSharedData(SharedDataKeys.loggingSettings) as? LoggingSettings ?? LoggingSettings.defaultSettings) - } - |> introduceError(ShareAuthorizationError.self) - |> mapToSignal { sharedContext, loggingSettings -> Signal<(SharedAccountContext, Account, [AccountWithInfo]), ShareAuthorizationError> in - Logger.shared.logToFile = loggingSettings.logToFile - Logger.shared.logToConsole = loggingSettings.logToConsole - - Logger.shared.redactSensitiveData = loggingSettings.redactSensitiveData - - return sharedContext.activeAccountsWithInfo - |> introduceError(ShareAuthorizationError.self) - |> take(1) - |> mapToSignal { primary, accounts -> Signal<(SharedAccountContext, Account, [AccountWithInfo]), ShareAuthorizationError> in - guard let primary = primary else { - return .fail(.unauthorized) - } - guard let info = accounts.first(where: { $0.account.id == primary }) else { - return .fail(.unauthorized) - } - return .single((sharedContext, info.account, Array(accounts))) - } - } - |> take(1) - - let applicationInterface = account - |> mapToSignal { sharedContext, account, otherAccounts -> Signal<(AccountContext, PostboxAccessChallengeData, [AccountWithInfo]), ShareAuthorizationError> in - let limitsConfiguration = account.postbox.transaction { transaction -> LimitsConfiguration in - return transaction.getPreferencesEntry(key: PreferencesKeys.limitsConfiguration) as? LimitsConfiguration ?? LimitsConfiguration.defaultValue - } - return combineLatest(sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.presentationPasscodeSettings]), limitsConfiguration, sharedContext.accountManager.accessChallengeData()) - |> take(1) - |> deliverOnMainQueue - |> introduceError(ShareAuthorizationError.self) - |> map { sharedData, limitsConfiguration, data -> (AccountContext, PostboxAccessChallengeData, [AccountWithInfo]) in - updateLegacyLocalization(strings: sharedContext.currentPresentationData.with({ $0 }).strings) - let context = AccountContext(sharedContext: sharedContext, account: account, limitsConfiguration: limitsConfiguration) - return (context, data.data, otherAccounts) - } - } - |> deliverOnMainQueue - |> afterNext { [weak self] context, accessChallengeData, otherAccounts in - setupLegacyComponents(context: context) - initializeLegacyComponents(application: nil, currentSizeClassGetter: { return .compact }, currentHorizontalClassGetter: { return .compact }, documentsPath: "", currentApplicationBounds: { return CGRect() }, canOpenUrl: { _ in return false}, openUrl: { _ in }) - - let displayShare: () -> Void = { - var cancelImpl: (() -> Void)? - - let requestUserInteraction: ([UnpreparedShareItemContent]) -> Signal<[PreparedShareItemContent], NoError> = { content in - return Signal { [weak self] subscriber in - switch content[0] { - case let .contact(data): - let controller = deviceContactInfoController(context: context, subject: .filter(peer: nil, contactId: nil, contactData: data, completion: { peer, contactData in - let phone = contactData.basicData.phoneNumbers[0].value - if let vCardData = contactData.serializedVCard() { - subscriber.putNext([.media(.media(.standalone(media: TelegramMediaContact(firstName: contactData.basicData.firstName, lastName: contactData.basicData.lastName, phoneNumber: phone, peerId: nil, vCardData: vCardData))))]) - } - subscriber.putCompletion() - }), cancelled: { - cancelImpl?() - }) - - if let strongSelf = self, let window = strongSelf.mainWindow { - controller.presentationArguments = ViewControllerPresentationArguments(presentationAnimation: .modalSheet) - window.present(controller, on: .root) - } - break - } - - return ActionDisposable { - } - } |> runOn(Queue.mainQueue()) - } - - let sentItems: ([PeerId], [PreparedShareItemContent], Account) -> Signal = { peerIds, contents, account in - let sentItems = sentShareItems(account: account, to: peerIds, items: contents) - |> `catch` { _ -> Signal< - Float, NoError> in - return .complete() - } - return sentItems - |> map { value -> ShareControllerExternalStatus in - return .progress(value) - } - |> then(.single(.done)) - } - - let shareController = ShareController(context: context, subject: .fromExternal({ peerIds, additionalText, account in - if let strongSelf = self, let inputItems = strongSelf.extensionContext?.inputItems, !inputItems.isEmpty, !peerIds.isEmpty { - let rawSignals = TGItemProviderSignals.itemSignals(forInputItems: inputItems)! - return preparedShareItems(account: account, to: peerIds[0], dataItems: rawSignals, additionalText: additionalText) - |> map(Optional.init) - |> `catch` { _ -> Signal in - return .single(nil) - } - |> mapToSignal { state -> Signal in - guard let state = state else { - return .single(.done) - } - switch state { - case .preparing: - return .single(.preparing) - case let .progress(value): - return .single(.progress(value)) - case let .userInteractionRequired(value): - return requestUserInteraction(value) - |> mapToSignal { contents -> Signal in - return sentItems(peerIds, contents, account) - } - case let .done(contents): - return sentItems(peerIds, contents, account) - } - } - } else { - return .single(.done) - } - }), externalShare: false, switchableAccounts: otherAccounts) - shareController.presentationArguments = ViewControllerPresentationArguments(presentationAnimation: .modalSheet) - shareController.dismissed = { _ in - self?.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) - } - - cancelImpl = { [weak shareController] in - shareController?.dismiss() - } - - if let strongSelf = self { - if let currentShareController = strongSelf.currentShareController { - currentShareController.dismiss() - } - strongSelf.currentShareController = shareController - strongSelf.mainWindow?.present(shareController, on: .root) - } - - context.account.resetStateManagement() - } - - let _ = passcodeEntryController(context: context, animateIn: true, completion: { value in - if value { - displayShare() - } else { - Queue.mainQueue().after(0.5, { - self?.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) - }) - } - }).start(next: { controller in - guard let strongSelf = self, let controller = controller else { - return - } - - if let currentPasscodeController = strongSelf.currentPasscodeController { - currentPasscodeController.dismiss() - } - strongSelf.currentPasscodeController = controller - strongSelf.mainWindow?.present(controller, on: .root) - }) - } - - self.disposable.set(applicationInterface.start(next: { _, _, _ in }, error: { [weak self] error in - guard let strongSelf = self else { - return - } - let presentationData = sharedExtensionContext.sharedContext.currentPresentationData.with { $0 } - let controller = standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: presentationData.strings.Share_AuthTitle, text: presentationData.strings.Share_AuthDescription, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: { - self?.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) - })]) - strongSelf.mainWindow?.present(controller, on: .root) - }, completed: {})) } + + self.impl?.loadView() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.impl?.viewWillAppear() + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + self.impl?.viewWillDisappear() + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + self.impl?.viewDidLayoutSubviews(view: self.view) } } diff --git a/Share/TGMimeTypeMap.h b/Share/TGMimeTypeMap.h deleted file mode 100644 index af8f26570e..0000000000 --- a/Share/TGMimeTypeMap.h +++ /dev/null @@ -1,8 +0,0 @@ -#import - -@interface TGMimeTypeMap : NSObject - -+ (NSString *)mimeTypeForExtension:(NSString *)extension; -+ (NSString *)extensionForMimeType:(NSString *)mimeType; - -@end diff --git a/Share/TGMimeTypeMap.m b/Share/TGMimeTypeMap.m deleted file mode 100644 index 123d880dd3..0000000000 --- a/Share/TGMimeTypeMap.m +++ /dev/null @@ -1,347 +0,0 @@ -#import "TGMimeTypeMap.h" - -static NSDictionary *mimeToExtensionMap = nil; -static NSDictionary *extensionToMimeMap = nil; - -static void initializeMapping() -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^ - { - NSMutableDictionary *mimeToExtension = [[NSMutableDictionary alloc] init]; - NSMutableDictionary *extensionToMime = [[NSMutableDictionary alloc] init]; - - mimeToExtension[@"application/andrew-inset"] = @"ez"; extensionToMime[@"ez"] = @"application/andrew-inset"; - mimeToExtension[@"application/dsptype"] = @"tsp"; extensionToMime[@"tsp"] = @"application/dsptype"; - mimeToExtension[@"application/futuresplash"] = @"spl"; extensionToMime[@"spl"] = @"application/futuresplash"; - mimeToExtension[@"application/hta"] = @"hta"; extensionToMime[@"hta"] = @"application/hta"; - mimeToExtension[@"application/mac-binhex40"] = @"hqx"; extensionToMime[@"hqx"] = @"application/mac-binhex40"; - mimeToExtension[@"application/mac-compactpro"] = @"cpt"; extensionToMime[@"cpt"] = @"application/mac-compactpro"; - mimeToExtension[@"application/mathematica"] = @"nb"; extensionToMime[@"nb"] = @"application/mathematica"; - mimeToExtension[@"application/msaccess"] = @"mdb"; extensionToMime[@"mdb"] = @"application/msaccess"; - mimeToExtension[@"application/oda"] = @"oda"; extensionToMime[@"oda"] = @"application/oda"; - mimeToExtension[@"application/ogg"] = @"ogg"; extensionToMime[@"ogg"] = @"application/ogg"; - mimeToExtension[@"application/pdf"] = @"pdf"; extensionToMime[@"pdf"] = @"application/pdf"; - mimeToExtension[@"application/com.adobe.pdf"] = @"pdf"; - mimeToExtension[@"application/pgp-keys"] = @"key"; extensionToMime[@"key"] = @"application/pgp-keys"; - mimeToExtension[@"application/pgp-signature"] = @"pgp"; extensionToMime[@"pgp"] = @"application/pgp-signature"; - mimeToExtension[@"application/pics-rules"] = @"prf"; extensionToMime[@"prf"] = @"application/pics-rules"; - mimeToExtension[@"application/rar"] = @"rar"; extensionToMime[@"rar"] = @"application/rar"; - mimeToExtension[@"application/rdf+xml"] = @"rdf"; extensionToMime[@"rdf"] = @"application/rdf+xml"; - mimeToExtension[@"application/rss+xml"] = @"rss"; extensionToMime[@"rss"] = @"application/rss+xml"; - mimeToExtension[@"application/zip"] = @"zip"; extensionToMime[@"zip"] = @"application/zip"; - mimeToExtension[@"application/vnd.android.package-archive"] = @"apk"; extensionToMime[@"apk"] = @"application/vnd.android.package-archive"; - mimeToExtension[@"application/vnd.cinderella"] = @"cdy"; extensionToMime[@"cdy"] = @"application/vnd.cinderella"; - mimeToExtension[@"application/vnd.ms-pki.stl"] = @"stl"; extensionToMime[@"stl"] = @"application/vnd.ms-pki.stl"; - mimeToExtension[@"application/vnd.oasis.opendocument.database"] = @"odb"; extensionToMime[@"odb"] = @"application/vnd.oasis.opendocument.database"; - mimeToExtension[@"application/vnd.oasis.opendocument.formula"] = @"odf"; extensionToMime[@"odf"] = @"application/vnd.oasis.opendocument.formula"; - mimeToExtension[@"application/vnd.oasis.opendocument.graphics"] = @"odg"; extensionToMime[@"odg"] = @"application/vnd.oasis.opendocument.graphics"; - mimeToExtension[@"application/vnd.oasis.opendocument.graphics-template"] = @"otg"; extensionToMime[@"otg"] = @"application/vnd.oasis.opendocument.graphics-template"; - mimeToExtension[@"application/vnd.oasis.opendocument.image"] = @"odi"; extensionToMime[@"odi"] = @"application/vnd.oasis.opendocument.image"; - mimeToExtension[@"application/vnd.oasis.opendocument.spreadsheet"] = @"ods"; extensionToMime[@"ods"] = @"application/vnd.oasis.opendocument.spreadsheet"; - mimeToExtension[@"application/vnd.oasis.opendocument.spreadsheet-template"] = @"ots"; extensionToMime[@"ots"] = @"application/vnd.oasis.opendocument.spreadsheet-template"; - mimeToExtension[@"application/vnd.oasis.opendocument.text"] = @"odt"; extensionToMime[@"odt"] = @"application/vnd.oasis.opendocument.text"; - mimeToExtension[@"application/vnd.oasis.opendocument.text-master"] = @"odm"; extensionToMime[@"odm"] = @"application/vnd.oasis.opendocument.text-master"; - mimeToExtension[@"application/vnd.oasis.opendocument.text-template"] = @"ott"; extensionToMime[@"ott"] = @"application/vnd.oasis.opendocument.text-template"; - mimeToExtension[@"application/vnd.oasis.opendocument.text-web"] = @"oth"; extensionToMime[@"oth"] = @"application/vnd.oasis.opendocument.text-web"; - mimeToExtension[@"application/msword"] = @"doc"; extensionToMime[@"doc"] = @"application/msword"; - mimeToExtension[@"application/msword"] = @"dot"; extensionToMime[@"dot"] = @"application/msword"; - mimeToExtension[@"application/vnd.openxmlformats-officedocument.wordprocessingml.document"] = @"docx"; extensionToMime[@"docx"] = @"application/vnd.openxmlformats-officedocument.wordprocessingml.document"; - mimeToExtension[@"application/vnd.openxmlformats-officedocument.wordprocessingml.template"] = @"dotx"; extensionToMime[@"dotx"] = @"application/vnd.openxmlformats-officedocument.wordprocessingml.template"; - mimeToExtension[@"application/vnd.ms-excel"] = @"xls"; extensionToMime[@"xls"] = @"application/vnd.ms-excel"; - mimeToExtension[@"application/vnd.ms-excel"] = @"xlt"; extensionToMime[@"xlt"] = @"application/vnd.ms-excel"; - mimeToExtension[@"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"] = @"xlsx"; extensionToMime[@"xlsx"] = @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; - mimeToExtension[@"application/vnd.openxmlformats-officedocument.spreadsheetml.template"] = @"xltx"; extensionToMime[@"xltx"] = @"application/vnd.openxmlformats-officedocument.spreadsheetml.template"; - mimeToExtension[@"application/vnd.ms-powerpoint"] = @"ppt"; extensionToMime[@"ppt"] = @"application/vnd.ms-powerpoint"; - mimeToExtension[@"application/vnd.ms-powerpoint"] = @"pot"; extensionToMime[@"pot"] = @"application/vnd.ms-powerpoint"; - mimeToExtension[@"application/vnd.ms-powerpoint"] = @"pps"; extensionToMime[@"pps"] = @"application/vnd.ms-powerpoint"; - mimeToExtension[@"application/vnd.openxmlformats-officedocument.presentationml.presentation"] = @"pptx"; extensionToMime[@"pptx"] = @"application/vnd.openxmlformats-officedocument.presentationml.presentation"; - mimeToExtension[@"application/vnd.openxmlformats-officedocument.presentationml.template"] = @"potx"; extensionToMime[@"potx"] = @"application/vnd.openxmlformats-officedocument.presentationml.template"; - mimeToExtension[@"application/vnd.openxmlformats-officedocument.presentationml.slideshow"] = @"ppsx"; extensionToMime[@"ppsx"] = @"application/vnd.openxmlformats-officedocument.presentationml.slideshow"; - mimeToExtension[@"application/vnd.rim.cod"] = @"cod"; extensionToMime[@"cod"] = @"application/vnd.rim.cod"; - mimeToExtension[@"application/vnd.smaf"] = @"mmf"; extensionToMime[@"mmf"] = @"application/vnd.smaf"; - mimeToExtension[@"application/vnd.stardivision.calc"] = @"sdc"; extensionToMime[@"sdc"] = @"application/vnd.stardivision.calc"; - mimeToExtension[@"application/vnd.stardivision.draw"] = @"sda"; extensionToMime[@"sda"] = @"application/vnd.stardivision.draw"; - mimeToExtension[@"application/vnd.stardivision.impress"] = @"sdd"; extensionToMime[@"sdd"] = @"application/vnd.stardivision.impress"; - mimeToExtension[@"application/vnd.stardivision.impress"] = @"sdp"; extensionToMime[@"sdp"] = @"application/vnd.stardivision.impress"; - mimeToExtension[@"application/vnd.stardivision.math"] = @"smf"; extensionToMime[@"smf"] = @"application/vnd.stardivision.math"; - mimeToExtension[@"application/vnd.stardivision.writer"] = @"sdw"; extensionToMime[@"sdw"] = @"application/vnd.stardivision.writer"; - mimeToExtension[@"application/vnd.stardivision.writer"] = @"vor"; extensionToMime[@"vor"] = @"application/vnd.stardivision.writer"; - mimeToExtension[@"application/vnd.stardivision.writer-global"] = @"sgl"; extensionToMime[@"sgl"] = @"application/vnd.stardivision.writer-global"; - mimeToExtension[@"application/vnd.sun.xml.calc"] = @"sxc"; extensionToMime[@"sxc"] = @"application/vnd.sun.xml.calc"; - mimeToExtension[@"application/vnd.sun.xml.calc.template"] = @"stc"; extensionToMime[@"stc"] = @"application/vnd.sun.xml.calc.template"; - mimeToExtension[@"application/vnd.sun.xml.draw"] = @"sxd"; extensionToMime[@"sxd"] = @"application/vnd.sun.xml.draw"; - mimeToExtension[@"application/vnd.sun.xml.draw.template"] = @"std"; extensionToMime[@"std"] = @"application/vnd.sun.xml.draw.template"; - mimeToExtension[@"application/vnd.sun.xml.impress"] = @"sxi"; extensionToMime[@"sxi"] = @"application/vnd.sun.xml.impress"; - mimeToExtension[@"application/vnd.sun.xml.impress.template"] = @"sti"; extensionToMime[@"sti"] = @"application/vnd.sun.xml.impress.template"; - mimeToExtension[@"application/vnd.sun.xml.math"] = @"sxm"; extensionToMime[@"sxm"] = @"application/vnd.sun.xml.math"; - mimeToExtension[@"application/vnd.sun.xml.writer"] = @"sxw"; extensionToMime[@"sxw"] = @"application/vnd.sun.xml.writer"; - mimeToExtension[@"application/vnd.sun.xml.writer.global"] = @"sxg"; extensionToMime[@"sxg"] = @"application/vnd.sun.xml.writer.global"; - mimeToExtension[@"application/vnd.sun.xml.writer.template"] = @"stw"; extensionToMime[@"stw"] = @"application/vnd.sun.xml.writer.template"; - mimeToExtension[@"application/vnd.visio"] = @"vsd"; extensionToMime[@"vsd"] = @"application/vnd.visio"; - mimeToExtension[@"application/x-abiword"] = @"abw"; extensionToMime[@"abw"] = @"application/x-abiword"; - mimeToExtension[@"application/x-apple-diskimage"] = @"dmg"; extensionToMime[@"dmg"] = @"application/x-apple-diskimage"; - mimeToExtension[@"application/x-bcpio"] = @"bcpio"; extensionToMime[@"bcpio"] = @"application/x-bcpio"; - mimeToExtension[@"application/x-bittorrent"] = @"torrent"; extensionToMime[@"torrent"] = @"application/x-bittorrent"; - mimeToExtension[@"application/x-cdf"] = @"cdf"; extensionToMime[@"cdf"] = @"application/x-cdf"; - mimeToExtension[@"application/x-cdlink"] = @"vcd"; extensionToMime[@"vcd"] = @"application/x-cdlink"; - mimeToExtension[@"application/x-chess-pgn"] = @"pgn"; extensionToMime[@"pgn"] = @"application/x-chess-pgn"; - mimeToExtension[@"application/x-cpio"] = @"cpio"; extensionToMime[@"cpio"] = @"application/x-cpio"; - mimeToExtension[@"application/x-debian-package"] = @"deb"; extensionToMime[@"deb"] = @"application/x-debian-package"; - mimeToExtension[@"application/x-debian-package"] = @"udeb"; extensionToMime[@"udeb"] = @"application/x-debian-package"; - mimeToExtension[@"application/x-director"] = @"dcr"; extensionToMime[@"dcr"] = @"application/x-director"; - mimeToExtension[@"application/x-director"] = @"dir"; extensionToMime[@"dir"] = @"application/x-director"; - mimeToExtension[@"application/x-director"] = @"dxr"; extensionToMime[@"dxr"] = @"application/x-director"; - mimeToExtension[@"application/x-dms"] = @"dms"; extensionToMime[@"dms"] = @"application/x-dms"; - mimeToExtension[@"application/x-doom"] = @"wad"; extensionToMime[@"wad"] = @"application/x-doom"; - mimeToExtension[@"application/x-dvi"] = @"dvi"; extensionToMime[@"dvi"] = @"application/x-dvi"; - mimeToExtension[@"application/x-flac"] = @"flac"; extensionToMime[@"flac"] = @"application/x-flac"; - mimeToExtension[@"application/x-font"] = @"pfa"; extensionToMime[@"pfa"] = @"application/x-font"; - mimeToExtension[@"application/x-font"] = @"pfb"; extensionToMime[@"pfb"] = @"application/x-font"; - mimeToExtension[@"application/x-font"] = @"gsf"; extensionToMime[@"gsf"] = @"application/x-font"; - mimeToExtension[@"application/x-font"] = @"pcf"; extensionToMime[@"pcf"] = @"application/x-font"; - mimeToExtension[@"application/x-font"] = @"pcf.Z"; extensionToMime[@"pcf.Z"] = @"application/x-font"; - mimeToExtension[@"application/x-freemind"] = @"mm"; extensionToMime[@"mm"] = @"application/x-freemind"; - mimeToExtension[@"application/x-futuresplash"] = @"spl"; extensionToMime[@"spl"] = @"application/x-futuresplash"; - mimeToExtension[@"application/x-gnumeric"] = @"gnumeric"; extensionToMime[@"gnumeric"] = @"application/x-gnumeric"; - mimeToExtension[@"application/x-go-sgf"] = @"sgf"; extensionToMime[@"sgf"] = @"application/x-go-sgf"; - mimeToExtension[@"application/x-graphing-calculator"] = @"gcf"; extensionToMime[@"gcf"] = @"application/x-graphing-calculator"; - mimeToExtension[@"application/x-gtar"] = @"gtar"; extensionToMime[@"gtar"] = @"application/x-gtar"; - mimeToExtension[@"application/x-gtar"] = @"tgz"; extensionToMime[@"tgz"] = @"application/x-gtar"; - mimeToExtension[@"application/x-gtar"] = @"taz"; extensionToMime[@"taz"] = @"application/x-gtar"; - mimeToExtension[@"application/x-hdf"] = @"hdf"; extensionToMime[@"hdf"] = @"application/x-hdf"; - mimeToExtension[@"application/x-ica"] = @"ica"; extensionToMime[@"ica"] = @"application/x-ica"; - mimeToExtension[@"application/x-internet-signup"] = @"ins"; extensionToMime[@"ins"] = @"application/x-internet-signup"; - mimeToExtension[@"application/x-internet-signup"] = @"isp"; extensionToMime[@"isp"] = @"application/x-internet-signup"; - mimeToExtension[@"application/x-iphone"] = @"iii"; extensionToMime[@"iii"] = @"application/x-iphone"; - mimeToExtension[@"application/x-iso9660-image"] = @"iso"; extensionToMime[@"iso"] = @"application/x-iso9660-image"; - mimeToExtension[@"application/x-jmol"] = @"jmz"; extensionToMime[@"jmz"] = @"application/x-jmol"; - mimeToExtension[@"application/x-kchart"] = @"chrt"; extensionToMime[@"chrt"] = @"application/x-kchart"; - mimeToExtension[@"application/x-killustrator"] = @"kil"; extensionToMime[@"kil"] = @"application/x-killustrator"; - mimeToExtension[@"application/x-koan"] = @"skp"; extensionToMime[@"skp"] = @"application/x-koan"; - mimeToExtension[@"application/x-koan"] = @"skd"; extensionToMime[@"skd"] = @"application/x-koan"; - mimeToExtension[@"application/x-koan"] = @"skt"; extensionToMime[@"skt"] = @"application/x-koan"; - mimeToExtension[@"application/x-koan"] = @"skm"; extensionToMime[@"skm"] = @"application/x-koan"; - mimeToExtension[@"application/x-kpresenter"] = @"kpr"; extensionToMime[@"kpr"] = @"application/x-kpresenter"; - mimeToExtension[@"application/x-kpresenter"] = @"kpt"; extensionToMime[@"kpt"] = @"application/x-kpresenter"; - mimeToExtension[@"application/x-kspread"] = @"ksp"; extensionToMime[@"ksp"] = @"application/x-kspread"; - mimeToExtension[@"application/x-kword"] = @"kwd"; extensionToMime[@"kwd"] = @"application/x-kword"; - mimeToExtension[@"application/x-kword"] = @"kwt"; extensionToMime[@"kwt"] = @"application/x-kword"; - mimeToExtension[@"application/x-latex"] = @"latex"; extensionToMime[@"latex"] = @"application/x-latex"; - mimeToExtension[@"application/x-lha"] = @"lha"; extensionToMime[@"lha"] = @"application/x-lha"; - mimeToExtension[@"application/x-lzh"] = @"lzh"; extensionToMime[@"lzh"] = @"application/x-lzh"; - mimeToExtension[@"application/x-lzx"] = @"lzx"; extensionToMime[@"lzx"] = @"application/x-lzx"; - mimeToExtension[@"application/x-maker"] = @"frm"; extensionToMime[@"frm"] = @"application/x-maker"; - mimeToExtension[@"application/x-maker"] = @"maker"; extensionToMime[@"maker"] = @"application/x-maker"; - mimeToExtension[@"application/x-maker"] = @"frame"; extensionToMime[@"frame"] = @"application/x-maker"; - mimeToExtension[@"application/x-maker"] = @"fb"; extensionToMime[@"fb"] = @"application/x-maker"; - mimeToExtension[@"application/x-maker"] = @"book"; extensionToMime[@"book"] = @"application/x-maker"; - mimeToExtension[@"application/x-maker"] = @"fbdoc"; extensionToMime[@"fbdoc"] = @"application/x-maker"; - mimeToExtension[@"application/x-mif"] = @"mif"; extensionToMime[@"mif"] = @"application/x-mif"; - mimeToExtension[@"application/x-ms-wmd"] = @"wmd"; extensionToMime[@"wmd"] = @"application/x-ms-wmd"; - mimeToExtension[@"application/x-ms-wmz"] = @"wmz"; extensionToMime[@"wmz"] = @"application/x-ms-wmz"; - mimeToExtension[@"application/x-msi"] = @"msi"; extensionToMime[@"msi"] = @"application/x-msi"; - mimeToExtension[@"application/x-ns-proxy-autoconfig"] = @"pac"; extensionToMime[@"pac"] = @"application/x-ns-proxy-autoconfig"; - mimeToExtension[@"application/x-nwc"] = @"nwc"; extensionToMime[@"nwc"] = @"application/x-nwc"; - mimeToExtension[@"application/x-object"] = @"o"; extensionToMime[@"o"] = @"application/x-object"; - mimeToExtension[@"application/x-oz-application"] = @"oza"; extensionToMime[@"oza"] = @"application/x-oz-application"; - mimeToExtension[@"application/x-pkcs12"] = @"p12"; extensionToMime[@"p12"] = @"application/x-pkcs12"; - mimeToExtension[@"application/x-pkcs7-certreqresp"] = @"p7r"; extensionToMime[@"p7r"] = @"application/x-pkcs7-certreqresp"; - mimeToExtension[@"application/x-pkcs7-crl"] = @"crl"; extensionToMime[@"crl"] = @"application/x-pkcs7-crl"; - mimeToExtension[@"application/x-quicktimeplayer"] = @"qtl"; extensionToMime[@"qtl"] = @"application/x-quicktimeplayer"; - mimeToExtension[@"application/x-shar"] = @"shar"; extensionToMime[@"shar"] = @"application/x-shar"; - mimeToExtension[@"application/x-shockwave-flash"] = @"swf"; extensionToMime[@"swf"] = @"application/x-shockwave-flash"; - mimeToExtension[@"application/x-stuffit"] = @"sit"; extensionToMime[@"sit"] = @"application/x-stuffit"; - mimeToExtension[@"application/x-sv4cpio"] = @"sv4cpio"; extensionToMime[@"sv4cpio"] = @"application/x-sv4cpio"; - mimeToExtension[@"application/x-sv4crc"] = @"sv4crc"; extensionToMime[@"sv4crc"] = @"application/x-sv4crc"; - mimeToExtension[@"application/x-tar"] = @"tar"; extensionToMime[@"tar"] = @"application/x-tar"; - mimeToExtension[@"application/x-texinfo"] = @"texinfo"; extensionToMime[@"texinfo"] = @"application/x-texinfo"; - mimeToExtension[@"application/x-texinfo"] = @"texi"; extensionToMime[@"texi"] = @"application/x-texinfo"; - mimeToExtension[@"application/x-troff"] = @"t"; extensionToMime[@"t"] = @"application/x-troff"; - mimeToExtension[@"application/x-troff"] = @"roff"; extensionToMime[@"roff"] = @"application/x-troff"; - mimeToExtension[@"application/x-troff-man"] = @"man"; extensionToMime[@"man"] = @"application/x-troff-man"; - mimeToExtension[@"application/x-ustar"] = @"ustar"; extensionToMime[@"ustar"] = @"application/x-ustar"; - mimeToExtension[@"application/x-wais-source"] = @"src"; extensionToMime[@"src"] = @"application/x-wais-source"; - mimeToExtension[@"application/x-wingz"] = @"wz"; extensionToMime[@"wz"] = @"application/x-wingz"; - mimeToExtension[@"application/x-webarchive"] = @"webarchive"; extensionToMime[@"webarchive"] = @"application/x-webarchive"; - mimeToExtension[@"application/x-x509-ca-cert"] = @"crt"; extensionToMime[@"crt"] = @"application/x-x509-ca-cert"; - mimeToExtension[@"application/x-x509-user-cert"] = @"crt"; extensionToMime[@"crt"] = @"application/x-x509-user-cert"; - mimeToExtension[@"application/x-xcf"] = @"xcf"; extensionToMime[@"xcf"] = @"application/x-xcf"; - mimeToExtension[@"application/x-xfig"] = @"fig"; extensionToMime[@"fig"] = @"application/x-xfig"; - mimeToExtension[@"application/xhtml+xml"] = @"xhtml"; extensionToMime[@"xhtml"] = @"application/xhtml+xml"; - mimeToExtension[@"audio/3gpp"] = @"3gpp"; extensionToMime[@"3gpp"] = @"audio/3gpp"; - mimeToExtension[@"audio/basic"] = @"snd"; extensionToMime[@"snd"] = @"audio/basic"; - mimeToExtension[@"audio/midi"] = @"mid"; extensionToMime[@"mid"] = @"audio/midi"; - mimeToExtension[@"audio/midi"] = @"midi"; extensionToMime[@"midi"] = @"audio/midi"; - mimeToExtension[@"audio/midi"] = @"kar"; extensionToMime[@"kar"] = @"audio/midi"; - mimeToExtension[@"audio/mpeg"] = @"mpga"; extensionToMime[@"mpga"] = @"audio/mpeg"; - mimeToExtension[@"audio/mpeg"] = @"mpega"; extensionToMime[@"mpega"] = @"audio/mpeg"; - mimeToExtension[@"audio/mpeg"] = @"mp2"; extensionToMime[@"mp2"] = @"audio/mpeg"; - mimeToExtension[@"audio/mpeg"] = @"mp3"; extensionToMime[@"mp3"] = @"audio/mpeg"; - mimeToExtension[@"audio/mpeg"] = @"m4a"; extensionToMime[@"m4a"] = @"audio/mpeg"; - mimeToExtension[@"audio/mpegurl"] = @"m3u"; extensionToMime[@"m3u"] = @"audio/mpegurl"; - mimeToExtension[@"audio/prs.sid"] = @"sid"; extensionToMime[@"sid"] = @"audio/prs.sid"; - mimeToExtension[@"audio/x-aiff"] = @"aif"; extensionToMime[@"aif"] = @"audio/x-aiff"; - mimeToExtension[@"audio/x-aiff"] = @"aiff"; extensionToMime[@"aiff"] = @"audio/x-aiff"; - mimeToExtension[@"audio/x-aiff"] = @"aifc"; extensionToMime[@"aifc"] = @"audio/x-aiff"; - mimeToExtension[@"audio/x-gsm"] = @"gsm"; extensionToMime[@"gsm"] = @"audio/x-gsm"; - mimeToExtension[@"audio/x-mpegurl"] = @"m3u"; extensionToMime[@"m3u"] = @"audio/x-mpegurl"; - mimeToExtension[@"audio/x-ms-wma"] = @"wma"; extensionToMime[@"wma"] = @"audio/x-ms-wma"; - mimeToExtension[@"audio/x-ms-wax"] = @"wax"; extensionToMime[@"wax"] = @"audio/x-ms-wax"; - mimeToExtension[@"audio/x-pn-realaudio"] = @"ra"; extensionToMime[@"ra"] = @"audio/x-pn-realaudio"; - mimeToExtension[@"audio/x-pn-realaudio"] = @"rm"; extensionToMime[@"rm"] = @"audio/x-pn-realaudio"; - mimeToExtension[@"audio/x-pn-realaudio"] = @"ram"; extensionToMime[@"ram"] = @"audio/x-pn-realaudio"; - mimeToExtension[@"audio/x-realaudio"] = @"ra"; extensionToMime[@"ra"] = @"audio/x-realaudio"; - mimeToExtension[@"audio/x-scpls"] = @"pls"; extensionToMime[@"pls"] = @"audio/x-scpls"; - mimeToExtension[@"audio/x-sd2"] = @"sd2"; extensionToMime[@"sd2"] = @"audio/x-sd2"; - mimeToExtension[@"audio/x-wav"] = @"wav"; extensionToMime[@"wav"] = @"audio/x-wav"; - mimeToExtension[@"image/bmp"] = @"bmp"; extensionToMime[@"bmp"] = @"image/bmp"; - mimeToExtension[@"image/gif"] = @"gif"; extensionToMime[@"gif"] = @"image/gif"; - mimeToExtension[@"image/ico"] = @"cur"; extensionToMime[@"cur"] = @"image/ico"; - mimeToExtension[@"image/ico"] = @"ico"; extensionToMime[@"ico"] = @"image/ico"; - mimeToExtension[@"image/ief"] = @"ief"; extensionToMime[@"ief"] = @"image/ief"; - mimeToExtension[@"image/jpeg"] = @"jpeg"; extensionToMime[@"jpeg"] = @"image/jpeg"; - mimeToExtension[@"image/jpeg"] = @"jpg"; extensionToMime[@"jpg"] = @"image/jpeg"; - mimeToExtension[@"image/jpeg"] = @"jpe"; extensionToMime[@"jpe"] = @"image/jpeg"; - mimeToExtension[@"image/pcx"] = @"pcx"; extensionToMime[@"pcx"] = @"image/pcx"; - mimeToExtension[@"image/png"] = @"png"; extensionToMime[@"png"] = @"image/png"; - mimeToExtension[@"image/svg+xml"] = @"svg"; extensionToMime[@"svg"] = @"image/svg+xml"; - mimeToExtension[@"image/svg+xml"] = @"svgz"; extensionToMime[@"svgz"] = @"image/svg+xml"; - mimeToExtension[@"image/tiff"] = @"tiff"; extensionToMime[@"tiff"] = @"image/tiff"; - mimeToExtension[@"image/tiff"] = @"tif"; extensionToMime[@"tif"] = @"image/tiff"; - mimeToExtension[@"image/vnd.djvu"] = @"djvu"; extensionToMime[@"djvu"] = @"image/vnd.djvu"; - mimeToExtension[@"image/vnd.djvu"] = @"djv"; extensionToMime[@"djv"] = @"image/vnd.djvu"; - mimeToExtension[@"image/vnd.wap.wbmp"] = @"wbmp"; extensionToMime[@"wbmp"] = @"image/vnd.wap.wbmp"; - mimeToExtension[@"image/x-cmu-raster"] = @"ras"; extensionToMime[@"ras"] = @"image/x-cmu-raster"; - mimeToExtension[@"image/x-coreldraw"] = @"cdr"; extensionToMime[@"cdr"] = @"image/x-coreldraw"; - mimeToExtension[@"image/x-coreldrawpattern"] = @"pat"; extensionToMime[@"pat"] = @"image/x-coreldrawpattern"; - mimeToExtension[@"image/x-coreldrawtemplate"] = @"cdt"; extensionToMime[@"cdt"] = @"image/x-coreldrawtemplate"; - mimeToExtension[@"image/x-corelphotopaint"] = @"cpt"; extensionToMime[@"cpt"] = @"image/x-corelphotopaint"; - mimeToExtension[@"image/x-icon"] = @"ico"; extensionToMime[@"ico"] = @"image/x-icon"; - mimeToExtension[@"image/x-jg"] = @"art"; extensionToMime[@"art"] = @"image/x-jg"; - mimeToExtension[@"image/x-jng"] = @"jng"; extensionToMime[@"jng"] = @"image/x-jng"; - mimeToExtension[@"image/x-ms-bmp"] = @"bmp"; extensionToMime[@"bmp"] = @"image/x-ms-bmp"; - mimeToExtension[@"image/x-photoshop"] = @"psd"; extensionToMime[@"psd"] = @"image/x-photoshop"; - mimeToExtension[@"image/x-portable-anymap"] = @"pnm"; extensionToMime[@"pnm"] = @"image/x-portable-anymap"; - mimeToExtension[@"image/x-portable-bitmap"] = @"pbm"; extensionToMime[@"pbm"] = @"image/x-portable-bitmap"; - mimeToExtension[@"image/x-portable-graymap"] = @"pgm"; extensionToMime[@"pgm"] = @"image/x-portable-graymap"; - mimeToExtension[@"image/x-portable-pixmap"] = @"ppm"; extensionToMime[@"ppm"] = @"image/x-portable-pixmap"; - mimeToExtension[@"image/x-rgb"] = @"rgb"; extensionToMime[@"rgb"] = @"image/x-rgb"; - mimeToExtension[@"image/x-xbitmap"] = @"xbm"; extensionToMime[@"xbm"] = @"image/x-xbitmap"; - mimeToExtension[@"image/x-xpixmap"] = @"xpm"; extensionToMime[@"xpm"] = @"image/x-xpixmap"; - mimeToExtension[@"image/x-xwindowdump"] = @"xwd"; extensionToMime[@"xwd"] = @"image/x-xwindowdump"; - mimeToExtension[@"model/iges"] = @"igs"; extensionToMime[@"igs"] = @"model/iges"; - mimeToExtension[@"model/iges"] = @"iges"; extensionToMime[@"iges"] = @"model/iges"; - mimeToExtension[@"model/mesh"] = @"msh"; extensionToMime[@"msh"] = @"model/mesh"; - mimeToExtension[@"model/mesh"] = @"mesh"; extensionToMime[@"mesh"] = @"model/mesh"; - mimeToExtension[@"model/mesh"] = @"silo"; extensionToMime[@"silo"] = @"model/mesh"; - mimeToExtension[@"text/calendar"] = @"ics"; extensionToMime[@"ics"] = @"text/calendar"; - mimeToExtension[@"text/calendar"] = @"icz"; extensionToMime[@"icz"] = @"text/calendar"; - mimeToExtension[@"text/comma-separated-values"] = @"csv"; extensionToMime[@"csv"] = @"text/comma-separated-values"; - mimeToExtension[@"text/css"] = @"css"; extensionToMime[@"css"] = @"text/css"; - mimeToExtension[@"text/html"] = @"htm"; extensionToMime[@"htm"] = @"text/html"; - mimeToExtension[@"text/html"] = @"html"; extensionToMime[@"html"] = @"text/html"; - mimeToExtension[@"text/h323"] = @"323"; extensionToMime[@"323"] = @"text/h323"; - mimeToExtension[@"text/iuls"] = @"uls"; extensionToMime[@"uls"] = @"text/iuls"; - mimeToExtension[@"text/mathml"] = @"mml"; extensionToMime[@"mml"] = @"text/mathml"; - // add it first so it will be the default for ExtensionFromMimeType - mimeToExtension[@"text/plain"] = @"txt"; extensionToMime[@"txt"] = @"text/plain"; - mimeToExtension[@"text/plain"] = @"asc"; extensionToMime[@"asc"] = @"text/plain"; - mimeToExtension[@"text/plain"] = @"text"; extensionToMime[@"text"] = @"text/plain"; - mimeToExtension[@"text/plain"] = @"diff"; extensionToMime[@"diff"] = @"text/plain"; - mimeToExtension[@"text/plain"] = @"po"; extensionToMime[@"po"] = @"text/plain"; // reserve "pot" for vnd.ms-powerpoint - mimeToExtension[@"text/richtext"] = @"rtx"; extensionToMime[@"rtx"] = @"text/richtext"; - mimeToExtension[@"text/rtf"] = @"rtf"; extensionToMime[@"rtf"] = @"text/rtf"; - mimeToExtension[@"text/texmacs"] = @"ts"; extensionToMime[@"ts"] = @"text/texmacs"; - mimeToExtension[@"text/text"] = @"phps"; extensionToMime[@"phps"] = @"text/text"; - mimeToExtension[@"text/tab-separated-values"] = @"tsv"; extensionToMime[@"tsv"] = @"text/tab-separated-values"; - mimeToExtension[@"text/xml"] = @"xml"; extensionToMime[@"xml"] = @"text/xml"; - mimeToExtension[@"text/x-bibtex"] = @"bib"; extensionToMime[@"bib"] = @"text/x-bibtex"; - mimeToExtension[@"text/x-boo"] = @"boo"; extensionToMime[@"boo"] = @"text/x-boo"; - mimeToExtension[@"text/x-c++hdr"] = @"h++"; extensionToMime[@"h++"] = @"text/x-c++hdr"; - mimeToExtension[@"text/x-c++hdr"] = @"hpp"; extensionToMime[@"hpp"] = @"text/x-c++hdr"; - mimeToExtension[@"text/x-c++hdr"] = @"hxx"; extensionToMime[@"hxx"] = @"text/x-c++hdr"; - mimeToExtension[@"text/x-c++hdr"] = @"hh"; extensionToMime[@"hh"] = @"text/x-c++hdr"; - mimeToExtension[@"text/x-c++src"] = @"c++"; extensionToMime[@"c++"] = @"text/x-c++src"; - mimeToExtension[@"text/x-c++src"] = @"cpp"; extensionToMime[@"cpp"] = @"text/x-c++src"; - mimeToExtension[@"text/x-c++src"] = @"cxx"; extensionToMime[@"cxx"] = @"text/x-c++src"; - mimeToExtension[@"text/x-chdr"] = @"h"; extensionToMime[@"h"] = @"text/x-chdr"; - mimeToExtension[@"text/x-component"] = @"htc"; extensionToMime[@"htc"] = @"text/x-component"; - mimeToExtension[@"text/x-csh"] = @"csh"; extensionToMime[@"csh"] = @"text/x-csh"; - mimeToExtension[@"text/x-csrc"] = @"c"; extensionToMime[@"c"] = @"text/x-csrc"; - mimeToExtension[@"text/x-dsrc"] = @"d"; extensionToMime[@"d"] = @"text/x-dsrc"; - mimeToExtension[@"text/x-haskell"] = @"hs"; extensionToMime[@"hs"] = @"text/x-haskell"; - mimeToExtension[@"text/x-java"] = @"java"; extensionToMime[@"java"] = @"text/x-java"; - mimeToExtension[@"text/x-literate-haskell"] = @"lhs"; extensionToMime[@"lhs"] = @"text/x-literate-haskell"; - mimeToExtension[@"text/x-moc"] = @"moc"; extensionToMime[@"moc"] = @"text/x-moc"; - mimeToExtension[@"text/x-pascal"] = @"p"; extensionToMime[@"p"] = @"text/x-pascal"; - mimeToExtension[@"text/x-pascal"] = @"pas"; extensionToMime[@"pas"] = @"text/x-pascal"; - mimeToExtension[@"text/x-pcs-gcd"] = @"gcd"; extensionToMime[@"gcd"] = @"text/x-pcs-gcd"; - mimeToExtension[@"text/x-setext"] = @"etx"; extensionToMime[@"etx"] = @"text/x-setext"; - mimeToExtension[@"text/x-tcl"] = @"tcl"; extensionToMime[@"tcl"] = @"text/x-tcl"; - mimeToExtension[@"text/x-tex"] = @"tex"; extensionToMime[@"tex"] = @"text/x-tex"; - mimeToExtension[@"text/x-tex"] = @"ltx"; extensionToMime[@"ltx"] = @"text/x-tex"; - mimeToExtension[@"text/x-tex"] = @"sty"; extensionToMime[@"sty"] = @"text/x-tex"; - mimeToExtension[@"text/x-tex"] = @"cls"; extensionToMime[@"cls"] = @"text/x-tex"; - mimeToExtension[@"text/x-vcalendar"] = @"vcs"; extensionToMime[@"vcs"] = @"text/x-vcalendar"; - mimeToExtension[@"text/x-vcard"] = @"vcf"; extensionToMime[@"vcf"] = @"text/x-vcard"; - mimeToExtension[@"video/3gpp"] = @"3gpp"; extensionToMime[@"3gpp"] = @"video/3gpp"; - mimeToExtension[@"video/3gpp"] = @"3gp"; extensionToMime[@"3gp"] = @"video/3gpp"; - mimeToExtension[@"video/3gpp"] = @"3g2"; extensionToMime[@"3g2"] = @"video/3gpp"; - mimeToExtension[@"video/dl"] = @"dl"; extensionToMime[@"dl"] = @"video/dl"; - mimeToExtension[@"video/dv"] = @"dif"; extensionToMime[@"dif"] = @"video/dv"; - mimeToExtension[@"video/dv"] = @"dv"; extensionToMime[@"dv"] = @"video/dv"; - mimeToExtension[@"video/fli"] = @"fli"; extensionToMime[@"fli"] = @"video/fli"; - mimeToExtension[@"video/m4v"] = @"m4v"; extensionToMime[@"m4v"] = @"video/m4v"; - mimeToExtension[@"video/mpeg"] = @"mpeg"; extensionToMime[@"mpeg"] = @"video/mpeg"; - mimeToExtension[@"video/mpeg"] = @"mpg"; extensionToMime[@"mpg"] = @"video/mpeg"; - mimeToExtension[@"video/mpeg"] = @"mpe"; extensionToMime[@"mpe"] = @"video/mpeg"; - mimeToExtension[@"video/mp4"] = @"mp4"; extensionToMime[@"mp4"] = @"video/mp4"; - mimeToExtension[@"video/mpeg"] = @"VOB"; extensionToMime[@"VOB"] = @"video/mpeg"; - mimeToExtension[@"video/quicktime"] = @"qt"; extensionToMime[@"qt"] = @"video/quicktime"; - mimeToExtension[@"video/quicktime"] = @"mov"; extensionToMime[@"mov"] = @"video/quicktime"; - mimeToExtension[@"video/vnd.mpegurl"] = @"mxu"; extensionToMime[@"mxu"] = @"video/vnd.mpegurl"; - mimeToExtension[@"video/x-la-asf"] = @"lsf"; extensionToMime[@"lsf"] = @"video/x-la-asf"; - mimeToExtension[@"video/x-la-asf"] = @"lsx"; extensionToMime[@"lsx"] = @"video/x-la-asf"; - mimeToExtension[@"video/x-mng"] = @"mng"; extensionToMime[@"mng"] = @"video/x-mng"; - mimeToExtension[@"video/x-ms-asf"] = @"asf"; extensionToMime[@"asf"] = @"video/x-ms-asf"; - mimeToExtension[@"video/x-ms-asf"] = @"asx"; extensionToMime[@"asx"] = @"video/x-ms-asf"; - mimeToExtension[@"video/x-ms-wm"] = @"wm"; extensionToMime[@"wm"] = @"video/x-ms-wm"; - mimeToExtension[@"video/x-ms-wmv"] = @"wmv"; extensionToMime[@"wmv"] = @"video/x-ms-wmv"; - mimeToExtension[@"video/x-ms-wmx"] = @"wmx"; extensionToMime[@"wmx"] = @"video/x-ms-wmx"; - mimeToExtension[@"video/x-ms-wvx"] = @"wvx"; extensionToMime[@"wvx"] = @"video/x-ms-wvx"; - mimeToExtension[@"video/x-msvideo"] = @"avi"; extensionToMime[@"avi"] = @"video/x-msvideo"; - mimeToExtension[@"video/x-sgi-movie"] = @"movie"; extensionToMime[@"movie"] = @"video/x-sgi-movie"; - mimeToExtension[@"x-conference/x-cooltalk"] = @"ice"; extensionToMime[@"ice"] = @"x-conference/x-cooltalk"; - mimeToExtension[@"x-epoc/x-sisx-app"] = @"sisx"; extensionToMime[@"sisx"] = @"x-epoc/x-sisx-app"; - mimeToExtension[@"application/epub+zip"] = @"epub"; extensionToMime[@"epub"] = @"application/epub+zip"; - mimeToExtension[@"text/swift"] = @"swift"; extensionToMime[@"swift"] = @"text/swift"; - - mimeToExtensionMap = mimeToExtension; - extensionToMimeMap = extensionToMime; - }); -} - -@implementation TGMimeTypeMap - -+ (NSString *)mimeTypeForExtension:(NSString *)extension -{ - if (extension == nil) - return nil; - - initializeMapping(); - - return extensionToMimeMap[extension]; -} - -+ (NSString *)extensionForMimeType:(NSString *)mimeType -{ - if (mimeType == nil) - return nil; - - initializeMapping(); - - return mimeToExtensionMap[mimeType]; -} - -@end diff --git a/SiriIntents/IntentHandler.swift b/SiriIntents/IntentHandler.swift index 6949f6e261..8300741925 100644 --- a/SiriIntents/IntentHandler.swift +++ b/SiriIntents/IntentHandler.swift @@ -3,6 +3,7 @@ import Intents import TelegramCore import Postbox import SwiftSignalKit +import BuildConfig private var accountCache: Account? diff --git a/SiriIntents/SiriIntents-Bridging-Header.h b/SiriIntents/SiriIntents-Bridging-Header.h index 303f8d1230..fa08975f7d 100644 --- a/SiriIntents/SiriIntents-Bridging-Header.h +++ b/SiriIntents/SiriIntents-Bridging-Header.h @@ -1,6 +1,4 @@ #ifndef SiriIntents_Bridging_Header_h #define SiriIntents_Bridging_Header_h -#import "../Telegram-iOS/BuildConfig.h" - #endif diff --git a/Telegram-iOS.xcodeproj/project.pbxproj b/Telegram-iOS.xcodeproj/project.pbxproj index 3f919860fb..90247c39a3 100644 --- a/Telegram-iOS.xcodeproj/project.pbxproj +++ b/Telegram-iOS.xcodeproj/project.pbxproj @@ -12,7 +12,6 @@ 090E777622A6945900CD99F5 /* BlackClassicIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E777222A6945800CD99F5 /* BlackClassicIcon@3x.png */; }; 090E777722A6945900CD99F5 /* BlueClassicIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E777322A6945800CD99F5 /* BlueClassicIcon@2x.png */; }; 092F368521542D6C001A9F49 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 092F368321542D6C001A9F49 /* Localizable.strings */; }; - 0956AF2C217B4642008106D0 /* WatchCommunicationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0956AF2B217B4642008106D0 /* WatchCommunicationManager.swift */; }; 0956AF2F217B8109008106D0 /* TGNeoUnsupportedMessageViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0956AF2E217B8109008106D0 /* TGNeoUnsupportedMessageViewModel.m */; }; 0972C6E021791D950069E98A /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0972C6DF21791D950069E98A /* UserNotifications.framework */; }; 0972C6E421792D130069E98A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0972C6E221792D120069E98A /* InfoPlist.strings */; }; @@ -40,13 +39,7 @@ 09C50E0321729DB5009E676F /* TGBotCommandController.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C571F6217287EF00BDF00F /* TGBotCommandController.m */; }; 09C50E0421729DB5009E676F /* TGBotKeyboardController.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C571F8217287F000BDF00F /* TGBotKeyboardController.m */; }; 09C50E0521729DE6009E676F /* TGBotKeyboardButtonController.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C571F4217287E500BDF00F /* TGBotKeyboardButtonController.m */; }; - 09C50E7B21738178009E676F /* TGBridgeServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C50E7A21738178009E676F /* TGBridgeServer.m */; }; - 09C50E8321738514009E676F /* TGBridgeContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C573072172953700BDF00F /* TGBridgeContext.m */; }; - 09C50E842173853E009E676F /* TGBridgeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572CE2172939F00BDF00F /* TGBridgeCommon.m */; }; 09C50E88217385CF009E676F /* WatchConnectivity.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09C50E87217385CF009E676F /* WatchConnectivity.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 09C50E8A2173AEDB009E676F /* WatchRequestHandlers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C50E892173AEDB009E676F /* WatchRequestHandlers.swift */; }; - 09C50E912173B247009E676F /* TGBridgeSubscriptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C50E8F2173B247009E676F /* TGBridgeSubscriptions.m */; }; - 09C50E922173B247009E676F /* TGBridgeSubscriptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C50E8F2173B247009E676F /* TGBridgeSubscriptions.m */; }; 09C56F8F2172797200BDF00F /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 09C56F8D2172797200BDF00F /* Interface.storyboard */; }; 09C56F912172797400BDF00F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 09C56F902172797400BDF00F /* Assets.xcassets */; }; 09C56F982172797500BDF00F /* Watch Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 09C56F972172797400BDF00F /* Watch Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; @@ -166,62 +159,14 @@ 09C5728C21728D3700BDF00F /* STimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5726221728CFF00BDF00F /* STimer.m */; }; 09C5728D21728D3700BDF00F /* SVariable.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5725B21728CFE00BDF00F /* SVariable.m */; }; 09C572D2217293D400BDF00F /* TGBridgeClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572D02172939F00BDF00F /* TGBridgeClient.m */; }; - 09C572D3217293D400BDF00F /* TGBridgeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572CE2172939F00BDF00F /* TGBridgeCommon.m */; }; 09C573162172953800BDF00F /* TGBridgeMessage+TGTableItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572D72172953300BDF00F /* TGBridgeMessage+TGTableItem.m */; }; 09C573182172953800BDF00F /* TGBridgeBotReplyMarkup.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572D92172953300BDF00F /* TGBridgeBotReplyMarkup.m */; }; - 09C573192172953800BDF00F /* TGBridgeContactMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572DE2172953300BDF00F /* TGBridgeContactMediaAttachment.m */; }; - 09C5731A2172953800BDF00F /* TGBridgeMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572DF2172953300BDF00F /* TGBridgeMessage.m */; }; - 09C5731B2172953800BDF00F /* TGBridgeAudioMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E02172953300BDF00F /* TGBridgeAudioMediaAttachment.m */; }; - 09C5731C2172953800BDF00F /* TGBridgeActionMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E22172953300BDF00F /* TGBridgeActionMediaAttachment.m */; }; 09C5731D2172953800BDF00F /* TGBridgeStickerPack.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E32172953400BDF00F /* TGBridgeStickerPack.m */; }; - 09C5731E2172953800BDF00F /* TGBridgeVideoMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E42172953400BDF00F /* TGBridgeVideoMediaAttachment.m */; }; - 09C573202172953800BDF00F /* TGBridgeForwardedMessageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E62172953400BDF00F /* TGBridgeForwardedMessageMediaAttachment.m */; }; 09C573212172953800BDF00F /* TGBridgeUser+TGTableItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E92172953400BDF00F /* TGBridgeUser+TGTableItem.m */; }; - 09C573222172953800BDF00F /* TGBridgeUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572ED2172953400BDF00F /* TGBridgeUser.m */; }; - 09C573232172953800BDF00F /* TGBridgeBotCommandInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572EF2172953500BDF00F /* TGBridgeBotCommandInfo.m */; }; - 09C573242172953800BDF00F /* TGBridgeImageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F22172953500BDF00F /* TGBridgeImageMediaAttachment.m */; }; - 09C573252172953800BDF00F /* TGBridgeLocationVenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F32172953500BDF00F /* TGBridgeLocationVenue.m */; }; - 09C573262172953800BDF00F /* TGBridgeMessageEntities.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F42172953500BDF00F /* TGBridgeMessageEntities.m */; }; - 09C573272172953800BDF00F /* TGBridgeWebPageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F52172953500BDF00F /* TGBridgeWebPageMediaAttachment.m */; }; 09C573282172953800BDF00F /* TGBridgeChat+TGTableItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F62172953500BDF00F /* TGBridgeChat+TGTableItem.m */; }; - 09C573292172953900BDF00F /* TGBridgeMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F92172953600BDF00F /* TGBridgeMediaAttachment.m */; }; - 09C5732A2172953900BDF00F /* TGBridgeDocumentMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572FB2172953600BDF00F /* TGBridgeDocumentMediaAttachment.m */; }; - 09C5732B2172953900BDF00F /* TGBridgePeerNotificationSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572FC2172953600BDF00F /* TGBridgePeerNotificationSettings.m */; }; - 09C5732C2172953900BDF00F /* TGBridgeReplyMessageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572FD2172953600BDF00F /* TGBridgeReplyMessageMediaAttachment.m */; }; 09C5732D2172953900BDF00F /* TGBridgeLocationVenue+TGTableItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572FF2172953600BDF00F /* TGBridgeLocationVenue+TGTableItem.m */; }; - 09C5732E2172953900BDF00F /* TGBridgeLocationMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C573002172953600BDF00F /* TGBridgeLocationMediaAttachment.m */; }; - 09C5732F2172953900BDF00F /* TGBridgeContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C573072172953700BDF00F /* TGBridgeContext.m */; }; - 09C573302172953900BDF00F /* TGBridgeChat.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C573092172953700BDF00F /* TGBridgeChat.m */; }; - 09C573312172953900BDF00F /* TGBridgeMessageEntitiesAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5730A2172953700BDF00F /* TGBridgeMessageEntitiesAttachment.m */; }; - 09C573322172953900BDF00F /* TGBridgeChatMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5730C2172953700BDF00F /* TGBridgeChatMessages.m */; }; - 09C573332172953900BDF00F /* TGBridgeReplyMarkupMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5730D2172953800BDF00F /* TGBridgeReplyMarkupMediaAttachment.m */; }; - 09C573342172953900BDF00F /* TGBridgeUnsupportedMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5730F2172953800BDF00F /* TGBridgeUnsupportedMediaAttachment.m */; }; - 09C573352172953900BDF00F /* TGBridgeBotInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C573102172953800BDF00F /* TGBridgeBotInfo.m */; }; 09CFB212217299E80083F7A3 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09CFB211217299E80083F7A3 /* CoreLocation.framework */; }; 09D30420217418EC00C00567 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D09DCBB51D0C856B00F51FFE /* Localizable.strings */; }; - 09D304222174335F00C00567 /* WatchBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D304212174335F00C00567 /* WatchBridge.swift */; }; - 09D304232174340900C00567 /* TGBridgeUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572ED2172953400BDF00F /* TGBridgeUser.m */; }; - 09D304242174340E00C00567 /* TGBridgeMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572DF2172953300BDF00F /* TGBridgeMessage.m */; }; - 09D304252174341200C00567 /* TGBridgeMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F92172953600BDF00F /* TGBridgeMediaAttachment.m */; }; - 09D304262174341A00C00567 /* TGBridgeLocationVenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F32172953500BDF00F /* TGBridgeLocationVenue.m */; }; - 09D304272174341E00C00567 /* TGBridgeChatMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5730C2172953700BDF00F /* TGBridgeChatMessages.m */; }; - 09D304282174342E00C00567 /* TGBridgeChat.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C573092172953700BDF00F /* TGBridgeChat.m */; }; - 09D304292174343300C00567 /* TGBridgeBotInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C573102172953800BDF00F /* TGBridgeBotInfo.m */; }; - 09D3042A2174343B00C00567 /* TGBridgeBotCommandInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572EF2172953500BDF00F /* TGBridgeBotCommandInfo.m */; }; - 09D3042C2174344900C00567 /* TGBridgeActionMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E22172953300BDF00F /* TGBridgeActionMediaAttachment.m */; }; - 09D3042D2174344900C00567 /* TGBridgeAudioMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E02172953300BDF00F /* TGBridgeAudioMediaAttachment.m */; }; - 09D3042E2174344900C00567 /* TGBridgeContactMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572DE2172953300BDF00F /* TGBridgeContactMediaAttachment.m */; }; - 09D3042F2174344900C00567 /* TGBridgeDocumentMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572FB2172953600BDF00F /* TGBridgeDocumentMediaAttachment.m */; }; - 09D304302174344900C00567 /* TGBridgeForwardedMessageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E62172953400BDF00F /* TGBridgeForwardedMessageMediaAttachment.m */; }; - 09D304312174344900C00567 /* TGBridgeImageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F22172953500BDF00F /* TGBridgeImageMediaAttachment.m */; }; - 09D304322174344900C00567 /* TGBridgeLocationMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C573002172953600BDF00F /* TGBridgeLocationMediaAttachment.m */; }; - 09D304332174344900C00567 /* TGBridgeMessageEntitiesAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5730A2172953700BDF00F /* TGBridgeMessageEntitiesAttachment.m */; }; - 09D304342174344900C00567 /* TGBridgeReplyMarkupMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5730D2172953800BDF00F /* TGBridgeReplyMarkupMediaAttachment.m */; }; - 09D304352174344900C00567 /* TGBridgeReplyMessageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572FD2172953600BDF00F /* TGBridgeReplyMessageMediaAttachment.m */; }; - 09D304362174344900C00567 /* TGBridgeUnsupportedMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C5730F2172953800BDF00F /* TGBridgeUnsupportedMediaAttachment.m */; }; - 09D304372174344900C00567 /* TGBridgeVideoMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572E42172953400BDF00F /* TGBridgeVideoMediaAttachment.m */; }; - 09D304382174344900C00567 /* TGBridgeWebPageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F52172953500BDF00F /* TGBridgeWebPageMediaAttachment.m */; }; - 09D304392174344900C00567 /* TGBridgeMessageEntities.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572F42172953500BDF00F /* TGBridgeMessageEntities.m */; }; 09EBE2A522B004EA00F670AB /* BlueFilledIconIpad.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EBE29922B004E800F670AB /* BlueFilledIconIpad.png */; }; 09EBE2A622B004EA00F670AB /* BlueIconIpad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EBE29A22B004E800F670AB /* BlueIconIpad@2x.png */; }; 09EBE2A722B004EA00F670AB /* BlueIconIpad.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EBE29B22B004E900F670AB /* BlueIconIpad.png */; }; @@ -237,7 +182,14 @@ 09FDAEE62140477F00BF856F /* MtProtoKitDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09FDAEE52140477F00BF856F /* MtProtoKitDynamic.framework */; }; D000CACF21FB6E380011B15D /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D000CAC821FB6E370011B15D /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; D001D5AA1F878DA300DF975A /* PhoneCountries.txt in Resources */ = {isa = PBXBuildFile; fileRef = D001D5A91F878DA300DF975A /* PhoneCountries.txt */; }; - D00859A21B28189D00EAF753 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00859A11B28189D00EAF753 /* AppDelegate.swift */; }; + D008184E22B5796E008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008184D22B5796E008A895F /* BuildConfig.framework */; }; + D008185022B5797A008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008184F22B5797A008A895F /* BuildConfig.framework */; }; + D008185222B57986008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185122B57986008A895F /* BuildConfig.framework */; }; + D008185422B57994008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185322B57994008A895F /* BuildConfig.framework */; }; + D008185622B579A1008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185522B579A1008A895F /* BuildConfig.framework */; }; + D008185822B579AD008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185722B579AD008A895F /* BuildConfig.framework */; }; + D00818A522B58CCB008A895F /* WatchCommonWatch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00818A422B58CCB008A895F /* WatchCommonWatch.framework */; }; + D00818CF22B595DB008A895F /* LightweightAccountData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00818CE22B595DB008A895F /* LightweightAccountData.framework */; }; D00859A91B28189D00EAF753 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D00859A81B28189D00EAF753 /* Images.xcassets */; }; D00859AC1B28189D00EAF753 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = D00859AA1B28189D00EAF753 /* LaunchScreen.xib */; }; D00ED75A1FE94630001F38BD /* AppIntentVocabulary.plist in Resources */ = {isa = PBXBuildFile; fileRef = D00ED7581FE94630001F38BD /* AppIntentVocabulary.plist */; }; @@ -257,7 +209,6 @@ D02CF617215DA24900E0F56A /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02CF616215DA24900E0F56A /* Postbox.framework */; }; D02CF619215DA24900E0F56A /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02CF618215DA24900E0F56A /* SwiftSignalKit.framework */; }; D02CF61B215DA24900E0F56A /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02CF61A215DA24900E0F56A /* TelegramCore.framework */; }; - D02CF61C215E51D500E0F56A /* BuildConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D09250011FE52D2A003F693F /* BuildConfig.m */; }; D02E31231BD803E800CD3F01 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D02E31221BD803E800CD3F01 /* main.m */; }; D0338736223A9A9A007A2CE4 /* Config-Hockeyapp-Internal.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D0338735223A9A99007A2CE4 /* Config-Hockeyapp-Internal.xcconfig */; }; D03B0E7B1D63484500955575 /* ShareRootController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03B0E7A1D63484500955575 /* ShareRootController.swift */; }; @@ -297,16 +248,9 @@ D04FA1CF2145E3810006EF45 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D04FA1C32145E3810006EF45 /* InfoPlist.strings */; }; D04FA1D02145E3810006EF45 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D04FA1C62145E3810006EF45 /* InfoPlist.strings */; }; D051DB0B215E5D1C00F30F92 /* TelegramUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0400ED81D5B8F97007931CE /* TelegramUI.framework */; }; - D051DB5D21602D6E00F30F92 /* LegacyDataImportSplash.swift in Sources */ = {isa = PBXBuildFile; fileRef = D051DB5C21602D6E00F30F92 /* LegacyDataImportSplash.swift */; }; D052974622B0073F004ABAF6 /* WhiteFilledIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D052974422B0073E004ABAF6 /* WhiteFilledIcon@3x.png */; }; D052974722B0073F004ABAF6 /* WhiteFilledIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D052974522B0073F004ABAF6 /* WhiteFilledIcon@2x.png */; }; - D053DAD32018ED2B00993D32 /* LockedWindowCoveringView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D053DAD22018ED2B00993D32 /* LockedWindowCoveringView.swift */; }; D055BD441B7E216400F06C0A /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D055BD431B7E216400F06C0A /* MapKit.framework */; }; - D05B37F51FEA5F6E0041D2A5 /* SnapshotEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B37F41FEA5F6E0041D2A5 /* SnapshotEnvironment.swift */; }; - D05B37F71FEA8C640041D2A5 /* SnapshotSecretChat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B37F61FEA8C640041D2A5 /* SnapshotSecretChat.swift */; }; - D05B37F91FEA8CF00041D2A5 /* SnapshotSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B37F81FEA8CF00041D2A5 /* SnapshotSettings.swift */; }; - D05B37FB1FEA8D020041D2A5 /* SnapshotAppearanceSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B37FA1FEA8D020041D2A5 /* SnapshotAppearanceSettings.swift */; }; - D05B37FD1FEA8D870041D2A5 /* SnapshotResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B37FC1FEA8D870041D2A5 /* SnapshotResources.swift */; }; D05B380A1FEA8E3D0041D2A5 /* Bitmap2.png in Resources */ = {isa = PBXBuildFile; fileRef = D05B37FF1FEA8E3D0041D2A5 /* Bitmap2.png */; }; D05B380B1FEA8E3D0041D2A5 /* Bitmap3.png in Resources */ = {isa = PBXBuildFile; fileRef = D05B38001FEA8E3D0041D2A5 /* Bitmap3.png */; }; D05B380C1FEA8E3D0041D2A5 /* Bitmap1.png in Resources */ = {isa = PBXBuildFile; fileRef = D05B38011FEA8E3D0041D2A5 /* Bitmap1.png */; }; @@ -322,15 +266,9 @@ D0612E491D58B478000C8F02 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0612E481D58B478000C8F02 /* Application.swift */; }; D06706611D51185400DED3E3 /* TelegramCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D06706601D51185400DED3E3 /* TelegramCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D06706621D5118F500DED3E3 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D06706601D51185400DED3E3 /* TelegramCore.framework */; }; - D06E4C2F21347D9200088087 /* UIImage+ImageEffects.m in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C2E21347D9200088087 /* UIImage+ImageEffects.m */; }; D073E52021FF7CE900742DDD /* Crypto.m in Sources */ = {isa = PBXBuildFile; fileRef = D073E51F21FF7CE900742DDD /* Crypto.m */; }; D073E52222003E1E00742DDD /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = D073E52122003E1E00742DDD /* Data.swift */; }; - D084023220E1883500065674 /* ApplicationShortcutItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D084023120E1883500065674 /* ApplicationShortcutItem.swift */; }; - D08410451FABDC5D008FFE92 /* TGItemProviderSignals.m in Sources */ = {isa = PBXBuildFile; fileRef = D08410441FABDC5C008FFE92 /* TGItemProviderSignals.m */; }; - D084104E1FABDCFD008FFE92 /* TGContactModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D084104C1FABDCFD008FFE92 /* TGContactModel.m */; }; - D084104F1FABDCFD008FFE92 /* TGMimeTypeMap.m in Sources */ = {isa = PBXBuildFile; fileRef = D084104D1FABDCFD008FFE92 /* TGMimeTypeMap.m */; }; D08410501FABDD54008FFE92 /* MtProtoKitDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08410511FABDD54008FFE92 /* MtProtoKitDynamic.framework */; }; - D08410541FABE428008FFE92 /* ShareItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08410531FABE428008FFE92 /* ShareItems.swift */; }; D08611B21F5711080047111E /* HockeySDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D01A47541F4DBED700383CC1 /* HockeySDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D08984FE2118B3F100918162 /* MtProtoKitDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08984FD2118B3F100918162 /* MtProtoKitDynamic.framework */; }; D08985002118B3F100918162 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08984FF2118B3F100918162 /* Postbox.framework */; }; @@ -364,41 +302,24 @@ D08DB0BE213F4D1D00F2ADBF /* start_arrow_ipad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D050F2331E49DEDE00988324 /* start_arrow_ipad@2x.png */; }; D08DB0BF213F4D1D00F2ADBF /* telegram_plane1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D050F2341E49DEDE00988324 /* telegram_plane1@2x.png */; }; D08DB0C0213F4D1D00F2ADBF /* telegram_sphere@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D050F2351E49DEDE00988324 /* telegram_sphere@2x.png */; }; - D09250021FE52D2A003F693F /* BuildConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D09250011FE52D2A003F693F /* BuildConfig.m */; }; D096C2BE1CC3C021006D814E /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D096C2BD1CC3C021006D814E /* Display.framework */; }; D096C2BF1CC3C021006D814E /* Display.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D096C2BD1CC3C021006D814E /* Display.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D096C2C21CC3C104006D814E /* Postbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D096C2C01CC3C104006D814E /* Postbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D096C2C51CC3C11A006D814E /* SwiftSignalKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D096C2C31CC3C11A006D814E /* SwiftSignalKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D09A59601B5858DB00FC3724 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09A595F1B5858DB00FC3724 /* SystemConfiguration.framework */; }; - D09B79C52219C784003B1F9D /* SharedAccountInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09B79C42219C784003B1F9D /* SharedAccountInfo.swift */; }; - D09B79C62219C784003B1F9D /* SharedAccountInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09B79C42219C784003B1F9D /* SharedAccountInfo.swift */; }; - D09B79C82219C7AE003B1F9D /* ManageSharedAccountInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09B79C72219C7AE003B1F9D /* ManageSharedAccountInfo.swift */; }; D09DCBB71D0C856B00F51FFE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D09DCBB51D0C856B00F51FFE /* Localizable.strings */; }; D0A18D631E149043004C6734 /* PushKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0A18D621E149043004C6734 /* PushKit.framework */; }; - D0A18D651E15C020004C6734 /* WakeupManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A18D641E15C020004C6734 /* WakeupManager.swift */; }; - D0ADF958212B56DC00310BBC /* LegacyUserDataImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ADF957212B56DC00310BBC /* LegacyUserDataImport.swift */; }; - D0ADF95A212B5AC600310BBC /* LegacyResourceImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ADF959212B5AC600310BBC /* LegacyResourceImport.swift */; }; - D0ADF95C212B636D00310BBC /* LegacyChatImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ADF95B212B636D00310BBC /* LegacyChatImport.swift */; }; - D0ADF95E212C818F00310BBC /* LegacyPreferencesImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ADF95D212C818F00310BBC /* LegacyPreferencesImport.swift */; }; - D0ADF961212C8DF600310BBC /* TGAutoDownloadPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = D0ADF95F212C8DF600310BBC /* TGAutoDownloadPreferences.m */; }; - D0ADF964212C9AA900310BBC /* TGProxyItem.m in Sources */ = {isa = PBXBuildFile; fileRef = D0ADF963212C9AA900310BBC /* TGProxyItem.m */; }; D0AF32291FACA1920097362B /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0D17E891CAAD66600C4750B /* Accelerate.framework */; }; D0AF322C1FACA1B00097362B /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B8445F1DACF561005F29E1 /* libc++.tbd */; }; - D0AF322F1FACBA280097362B /* TGShareLocationSignals.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AF322D1FACBA270097362B /* TGShareLocationSignals.m */; }; - D0B21B0D2203A9A1003F741D /* SharedWakeupManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B0C2203A9A1003F741D /* SharedWakeupManager.swift */; }; - D0B21B0F220438E9003F741D /* SharedNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B0E220438E9003F741D /* SharedNotificationManager.swift */; }; D0B2F738204F4C9900D3BFB9 /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0E41A381D65A69C00FBFC00 /* NotificationCenter.framework */; }; D0B2F742204F4C9900D3BFB9 /* Widget.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D0B2F737204F4C9900D3BFB9 /* Widget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; D0B2F74A204F4D6100D3BFB9 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B2F74F204F4D6100D3BFB9 /* Postbox.framework */; }; D0B2F74B204F4D6100D3BFB9 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B2F750204F4D6100D3BFB9 /* SwiftSignalKit.framework */; }; D0B2F74C204F4D6100D3BFB9 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B2F751204F4D6100D3BFB9 /* TelegramCore.framework */; }; - D0B2F755204F4EAF00D3BFB9 /* BuildConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D09250011FE52D2A003F693F /* BuildConfig.m */; }; D0B2F7602050102600D3BFB9 /* PeerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B2F75F2050102600D3BFB9 /* PeerNode.swift */; }; - D0B3B53B21666C0000FC60A0 /* LegacyFileImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B3B53A21666C0000FC60A0 /* LegacyFileImport.swift */; }; D0B4AF8F1EC122A700D51FF6 /* TelegramUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0400ED81D5B8F97007931CE /* TelegramUI.framework */; }; D0B4AF901EC122A700D51FF6 /* TelegramUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D0400ED81D5B8F97007931CE /* TelegramUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D0B844601DACF561005F29E1 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B8445F1DACF561005F29E1 /* libc++.tbd */; }; - D0BEAF731E54C9A900BD963D /* ApplicationContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BEAF721E54C9A900BD963D /* ApplicationContext.swift */; }; D0C2DFF81CC4D1BA0044FF83 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C2DFF71CC4D1BA0044FF83 /* MobileCoreServices.framework */; }; D0CAD6A421C03BEB001E3055 /* FFMpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0CAD6A321C03BEB001E3055 /* FFMpeg.framework */; }; D0CAD6A521C03BEB001E3055 /* FFMpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D0CAD6A321C03BEB001E3055 /* FFMpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -406,7 +327,6 @@ D0CCD61D222EFFB000EE1E08 /* MtProtoKitDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0CCD61C222EFFB000EE1E08 /* MtProtoKitDynamic.framework */; }; D0CD17B51CC3AE14007C5650 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0CD17B41CC3AE14007C5650 /* AsyncDisplayKit.framework */; }; D0CD17B61CC3AE14007C5650 /* AsyncDisplayKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D0CD17B41CC3AE14007C5650 /* AsyncDisplayKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - D0CE6F1C213ED11100BCD44B /* TGPresentationAutoNightPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = D0CE6F1B213ED11100BCD44B /* TGPresentationAutoNightPreferences.m */; }; D0CE6F55213EDA4400BCD44B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0CE6F1E213EDA4200BCD44B /* Localizable.strings */; }; D0CE6F56213EDA4400BCD44B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0CE6F20213EDA4200BCD44B /* InfoPlist.strings */; }; D0CE6F57213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */ = {isa = PBXBuildFile; fileRef = D0CE6F22213EDA4200BCD44B /* AppIntentVocabulary.plist */; }; @@ -432,11 +352,7 @@ D0CE6F6B213EDA4400BCD44B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0CE6F51213EDA4400BCD44B /* InfoPlist.strings */; }; D0CE6F6C213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */ = {isa = PBXBuildFile; fileRef = D0CE6F53213EDA4400BCD44B /* AppIntentVocabulary.plist */; }; D0CFBB931FD88C2900B65C0D /* begin_record.caf in Resources */ = {isa = PBXBuildFile; fileRef = D0CFBB921FD88C2900B65C0D /* begin_record.caf */; }; - D0D102682212E9E6003ADA5E /* SharedWakeupManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B0C2203A9A1003F741D /* SharedWakeupManager.swift */; }; - D0D102692212F719003ADA5E /* SharedNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B0E220438E9003F741D /* SharedNotificationManager.swift */; }; - D0D1026A2212F804003ADA5E /* ClearNotificationsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EB243A201B77C400F6CC13 /* ClearNotificationsManager.swift */; }; D0D17E8A1CAAD66600C4750B /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0D17E891CAAD66600C4750B /* Accelerate.framework */; }; - D0D2276F212739120028F943 /* LegacyDataImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D2276E212739120028F943 /* LegacyDataImport.swift */; }; D0D268791D79A70A00C422DA /* IntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D268781D79A70A00C422DA /* IntentHandler.swift */; }; D0D2688E1D79A70B00C422DA /* SiriIntents.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D0D268761D79A70A00C422DA /* SiriIntents.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; D0E2CE642227F0680084E3DD /* ManagedFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E2CE632227F0680084E3DD /* ManagedFile.swift */; }; @@ -447,14 +363,9 @@ D0E8B8B12044496C00605593 /* voip_busy.caf in Resources */ = {isa = PBXBuildFile; fileRef = D0E8B8AC2044496C00605593 /* voip_busy.caf */; }; D0E8C2DE2285EA55009F26E8 /* BlackIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0E8C2DD2285EA55009F26E8 /* BlackIcon@2x.png */; }; D0E8C2E02285EA6A009F26E8 /* BlackIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0E8C2DF2285EA6A009F26E8 /* BlackIcon@3x.png */; }; - D0EA97941FE84F2D00792DD6 /* BuildConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D09250011FE52D2A003F693F /* BuildConfig.m */; }; - D0EA97951FE84F2E00792DD6 /* BuildConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D09250011FE52D2A003F693F /* BuildConfig.m */; }; - D0EB243B201B77C400F6CC13 /* ClearNotificationsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EB243A201B77C400F6CC13 /* ClearNotificationsManager.swift */; }; D0ECCB7F1FE9C38500609802 /* Telegram_iOS_UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ECCB7E1FE9C38500609802 /* Telegram_iOS_UITests.swift */; }; D0ECCB8A1FE9C4AC00609802 /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ECCB891FE9C4AC00609802 /* SnapshotHelper.swift */; }; - D0ECCB8D1FE9CE3F00609802 /* SnapshotChatList.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ECCB8C1FE9CE3F00609802 /* SnapshotChatList.swift */; }; D0ED633A21FF3EDF001D4648 /* AccountData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ED633921FF3EDF001D4648 /* AccountData.swift */; }; - D0ED633B21FF3EFD001D4648 /* BuildConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D09250011FE52D2A003F693F /* BuildConfig.m */; }; D0ED633D21FF4580001D4648 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0400EE41D5B912E007931CE /* NotificationService.swift */; }; D0ED633F21FF46E4001D4648 /* ImageData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ED633E21FF46E4001D4648 /* ImageData.swift */; }; D0ED634121FF4786001D4648 /* Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ED634021FF4786001D4648 /* Serialization.swift */; }; @@ -604,8 +515,6 @@ 09C50E852173854D009E676F /* WatchKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WatchKit.framework; path = System/Library/Frameworks/WatchKit.framework; sourceTree = SDKROOT; }; 09C50E87217385CF009E676F /* WatchConnectivity.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WatchConnectivity.framework; path = System/Library/Frameworks/WatchConnectivity.framework; sourceTree = SDKROOT; }; 09C50E892173AEDB009E676F /* WatchRequestHandlers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchRequestHandlers.swift; sourceTree = ""; }; - 09C50E8F2173B247009E676F /* TGBridgeSubscriptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeSubscriptions.m; path = Bridge/TGBridgeSubscriptions.m; sourceTree = ""; }; - 09C50E902173B247009E676F /* TGBridgeSubscriptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeSubscriptions.h; path = Bridge/TGBridgeSubscriptions.h; sourceTree = ""; }; 09C56F8B2172797200BDF00F /* Watch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Watch.app; sourceTree = BUILT_PRODUCTS_DIR; }; 09C56F8E2172797200BDF00F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = ""; }; 09C56F902172797400BDF00F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -870,70 +779,19 @@ 09C572C9217292BB00BDF00F /* TGBridgeStateSignal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeStateSignal.m; path = Bridge/TGBridgeStateSignal.m; sourceTree = ""; }; 09C572CA217292BB00BDF00F /* TGBridgeUserInfoSignals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeUserInfoSignals.m; path = Bridge/TGBridgeUserInfoSignals.m; sourceTree = ""; }; 09C572CC2172939F00BDF00F /* TGBridgeClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeClient.h; path = Bridge/TGBridgeClient.h; sourceTree = ""; }; - 09C572CE2172939F00BDF00F /* TGBridgeCommon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeCommon.m; path = Bridge/TGBridgeCommon.m; sourceTree = ""; }; - 09C572CF2172939F00BDF00F /* TGBridgeCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeCommon.h; path = Bridge/TGBridgeCommon.h; sourceTree = ""; }; 09C572D02172939F00BDF00F /* TGBridgeClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeClient.m; path = Bridge/TGBridgeClient.m; sourceTree = ""; }; - 09C572D62172953200BDF00F /* TGBridgeMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeMediaAttachment.h; path = Bridge/TGBridgeMediaAttachment.h; sourceTree = ""; }; 09C572D72172953300BDF00F /* TGBridgeMessage+TGTableItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "TGBridgeMessage+TGTableItem.m"; path = "Bridge/TGBridgeMessage+TGTableItem.m"; sourceTree = ""; }; 09C572D92172953300BDF00F /* TGBridgeBotReplyMarkup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeBotReplyMarkup.m; path = Bridge/TGBridgeBotReplyMarkup.m; sourceTree = ""; }; - 09C572DA2172953300BDF00F /* TGBridgeContactMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeContactMediaAttachment.h; path = Bridge/TGBridgeContactMediaAttachment.h; sourceTree = ""; }; 09C572DB2172953300BDF00F /* TGBridgeChat+TGTableItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "TGBridgeChat+TGTableItem.h"; path = "Bridge/TGBridgeChat+TGTableItem.h"; sourceTree = ""; }; - 09C572DC2172953300BDF00F /* TGBridgeActionMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeActionMediaAttachment.h; path = Bridge/TGBridgeActionMediaAttachment.h; sourceTree = ""; }; 09C572DD2172953300BDF00F /* TGBridgeBotReplyMarkup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeBotReplyMarkup.h; path = Bridge/TGBridgeBotReplyMarkup.h; sourceTree = ""; }; - 09C572DE2172953300BDF00F /* TGBridgeContactMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeContactMediaAttachment.m; path = Bridge/TGBridgeContactMediaAttachment.m; sourceTree = ""; }; - 09C572DF2172953300BDF00F /* TGBridgeMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeMessage.m; path = Bridge/TGBridgeMessage.m; sourceTree = ""; }; - 09C572E02172953300BDF00F /* TGBridgeAudioMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeAudioMediaAttachment.m; path = Bridge/TGBridgeAudioMediaAttachment.m; sourceTree = ""; }; - 09C572E12172953300BDF00F /* TGBridgeReplyMarkupMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeReplyMarkupMediaAttachment.h; path = Bridge/TGBridgeReplyMarkupMediaAttachment.h; sourceTree = ""; }; - 09C572E22172953300BDF00F /* TGBridgeActionMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeActionMediaAttachment.m; path = Bridge/TGBridgeActionMediaAttachment.m; sourceTree = ""; }; 09C572E32172953400BDF00F /* TGBridgeStickerPack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeStickerPack.m; path = Bridge/TGBridgeStickerPack.m; sourceTree = ""; }; - 09C572E42172953400BDF00F /* TGBridgeVideoMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeVideoMediaAttachment.m; path = Bridge/TGBridgeVideoMediaAttachment.m; sourceTree = ""; }; - 09C572E62172953400BDF00F /* TGBridgeForwardedMessageMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeForwardedMessageMediaAttachment.m; path = Bridge/TGBridgeForwardedMessageMediaAttachment.m; sourceTree = ""; }; - 09C572E72172953400BDF00F /* TGBridgeLocationMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeLocationMediaAttachment.h; path = Bridge/TGBridgeLocationMediaAttachment.h; sourceTree = ""; }; - 09C572E82172953400BDF00F /* TGBridgeBotInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeBotInfo.h; path = Bridge/TGBridgeBotInfo.h; sourceTree = ""; }; 09C572E92172953400BDF00F /* TGBridgeUser+TGTableItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "TGBridgeUser+TGTableItem.m"; path = "Bridge/TGBridgeUser+TGTableItem.m"; sourceTree = ""; }; - 09C572EA2172953400BDF00F /* TGBridgeBotCommandInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeBotCommandInfo.h; path = Bridge/TGBridgeBotCommandInfo.h; sourceTree = ""; }; - 09C572EB2172953400BDF00F /* TGBridgeUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeUser.h; path = Bridge/TGBridgeUser.h; sourceTree = ""; }; - 09C572EC2172953400BDF00F /* TGBridgeReplyMessageMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeReplyMessageMediaAttachment.h; path = Bridge/TGBridgeReplyMessageMediaAttachment.h; sourceTree = ""; }; - 09C572ED2172953400BDF00F /* TGBridgeUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeUser.m; path = Bridge/TGBridgeUser.m; sourceTree = ""; }; - 09C572EE2172953400BDF00F /* TGBridgeImageMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeImageMediaAttachment.h; path = Bridge/TGBridgeImageMediaAttachment.h; sourceTree = ""; }; - 09C572EF2172953500BDF00F /* TGBridgeBotCommandInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeBotCommandInfo.m; path = Bridge/TGBridgeBotCommandInfo.m; sourceTree = ""; }; - 09C572F02172953500BDF00F /* TGBridgeDocumentMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeDocumentMediaAttachment.h; path = Bridge/TGBridgeDocumentMediaAttachment.h; sourceTree = ""; }; - 09C572F12172953500BDF00F /* TGBridgeChat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeChat.h; path = Bridge/TGBridgeChat.h; sourceTree = ""; }; - 09C572F22172953500BDF00F /* TGBridgeImageMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeImageMediaAttachment.m; path = Bridge/TGBridgeImageMediaAttachment.m; sourceTree = ""; }; - 09C572F32172953500BDF00F /* TGBridgeLocationVenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeLocationVenue.m; path = Bridge/TGBridgeLocationVenue.m; sourceTree = ""; }; - 09C572F42172953500BDF00F /* TGBridgeMessageEntities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeMessageEntities.m; path = Bridge/TGBridgeMessageEntities.m; sourceTree = ""; }; - 09C572F52172953500BDF00F /* TGBridgeWebPageMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeWebPageMediaAttachment.m; path = Bridge/TGBridgeWebPageMediaAttachment.m; sourceTree = ""; }; 09C572F62172953500BDF00F /* TGBridgeChat+TGTableItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "TGBridgeChat+TGTableItem.m"; path = "Bridge/TGBridgeChat+TGTableItem.m"; sourceTree = ""; }; 09C572F72172953500BDF00F /* TGBridgeMessage+TGTableItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "TGBridgeMessage+TGTableItem.h"; path = "Bridge/TGBridgeMessage+TGTableItem.h"; sourceTree = ""; }; - 09C572F82172953500BDF00F /* TGBridgeMessageEntitiesAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeMessageEntitiesAttachment.h; path = Bridge/TGBridgeMessageEntitiesAttachment.h; sourceTree = ""; }; - 09C572F92172953600BDF00F /* TGBridgeMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeMediaAttachment.m; path = Bridge/TGBridgeMediaAttachment.m; sourceTree = ""; }; - 09C572FA2172953600BDF00F /* TGBridgeMessageEntities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeMessageEntities.h; path = Bridge/TGBridgeMessageEntities.h; sourceTree = ""; }; - 09C572FB2172953600BDF00F /* TGBridgeDocumentMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeDocumentMediaAttachment.m; path = Bridge/TGBridgeDocumentMediaAttachment.m; sourceTree = ""; }; - 09C572FC2172953600BDF00F /* TGBridgePeerNotificationSettings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgePeerNotificationSettings.m; path = Bridge/TGBridgePeerNotificationSettings.m; sourceTree = ""; }; - 09C572FD2172953600BDF00F /* TGBridgeReplyMessageMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeReplyMessageMediaAttachment.m; path = Bridge/TGBridgeReplyMessageMediaAttachment.m; sourceTree = ""; }; - 09C572FE2172953600BDF00F /* TGBridgeForwardedMessageMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeForwardedMessageMediaAttachment.h; path = Bridge/TGBridgeForwardedMessageMediaAttachment.h; sourceTree = ""; }; 09C572FF2172953600BDF00F /* TGBridgeLocationVenue+TGTableItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "TGBridgeLocationVenue+TGTableItem.m"; path = "Bridge/TGBridgeLocationVenue+TGTableItem.m"; sourceTree = ""; }; - 09C573002172953600BDF00F /* TGBridgeLocationMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeLocationMediaAttachment.m; path = Bridge/TGBridgeLocationMediaAttachment.m; sourceTree = ""; }; - 09C573022172953600BDF00F /* TGBridgePeerNotificationSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgePeerNotificationSettings.h; path = Bridge/TGBridgePeerNotificationSettings.h; sourceTree = ""; }; - 09C573032172953600BDF00F /* TGBridgeContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeContext.h; path = Bridge/TGBridgeContext.h; sourceTree = ""; }; - 09C573042172953700BDF00F /* TGBridgeMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeMessage.h; path = Bridge/TGBridgeMessage.h; sourceTree = ""; }; 09C573052172953700BDF00F /* TGBridgeUser+TGTableItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "TGBridgeUser+TGTableItem.h"; path = "Bridge/TGBridgeUser+TGTableItem.h"; sourceTree = ""; }; - 09C573062172953700BDF00F /* TGBridgeVideoMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeVideoMediaAttachment.h; path = Bridge/TGBridgeVideoMediaAttachment.h; sourceTree = ""; }; - 09C573072172953700BDF00F /* TGBridgeContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeContext.m; path = Bridge/TGBridgeContext.m; sourceTree = ""; }; - 09C573082172953700BDF00F /* TGBridgeAudioMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeAudioMediaAttachment.h; path = Bridge/TGBridgeAudioMediaAttachment.h; sourceTree = ""; }; - 09C573092172953700BDF00F /* TGBridgeChat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeChat.m; path = Bridge/TGBridgeChat.m; sourceTree = ""; }; - 09C5730A2172953700BDF00F /* TGBridgeMessageEntitiesAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeMessageEntitiesAttachment.m; path = Bridge/TGBridgeMessageEntitiesAttachment.m; sourceTree = ""; }; - 09C5730B2172953700BDF00F /* TGBridgeLocationVenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeLocationVenue.h; path = Bridge/TGBridgeLocationVenue.h; sourceTree = ""; }; - 09C5730C2172953700BDF00F /* TGBridgeChatMessages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeChatMessages.m; path = Bridge/TGBridgeChatMessages.m; sourceTree = ""; }; - 09C5730D2172953800BDF00F /* TGBridgeReplyMarkupMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeReplyMarkupMediaAttachment.m; path = Bridge/TGBridgeReplyMarkupMediaAttachment.m; sourceTree = ""; }; - 09C5730F2172953800BDF00F /* TGBridgeUnsupportedMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeUnsupportedMediaAttachment.m; path = Bridge/TGBridgeUnsupportedMediaAttachment.m; sourceTree = ""; }; - 09C573102172953800BDF00F /* TGBridgeBotInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TGBridgeBotInfo.m; path = Bridge/TGBridgeBotInfo.m; sourceTree = ""; }; - 09C573112172953800BDF00F /* TGBridgeUnsupportedMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeUnsupportedMediaAttachment.h; path = Bridge/TGBridgeUnsupportedMediaAttachment.h; sourceTree = ""; }; - 09C573122172953800BDF00F /* TGBridgeWebPageMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeWebPageMediaAttachment.h; path = Bridge/TGBridgeWebPageMediaAttachment.h; sourceTree = ""; }; 09C573132172953800BDF00F /* TGBridgeStickerPack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeStickerPack.h; path = Bridge/TGBridgeStickerPack.h; sourceTree = ""; }; - 09C573142172953800BDF00F /* TGBridgeChatMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeChatMessages.h; path = Bridge/TGBridgeChatMessages.h; sourceTree = ""; }; 09C573152172953800BDF00F /* TGBridgeLocationVenue+TGTableItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "TGBridgeLocationVenue+TGTableItem.h"; path = "Bridge/TGBridgeLocationVenue+TGTableItem.h"; sourceTree = ""; }; - 09C573362172974E00BDF00F /* TGBridgePeerIdAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgePeerIdAdapter.h; path = Bridge/TGBridgePeerIdAdapter.h; sourceTree = ""; }; 09CFB211217299E80083F7A3 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS5.0.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; 09D304212174335F00C00567 /* WatchBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchBridge.swift; sourceTree = ""; }; 09EBE29922B004E800F670AB /* BlueFilledIconIpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueFilledIconIpad.png; sourceTree = ""; }; @@ -956,9 +814,18 @@ D000CAC821FB6E370011B15D /* NotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = NotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; }; D001D5A91F878DA300DF975A /* PhoneCountries.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PhoneCountries.txt; path = "Telegram-iOS/Resources/PhoneCountries.txt"; sourceTree = ""; }; D006CFA121A8D12600FDCD32 /* ModernProto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ModernProto.framework; path = "../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-ffbqcdyqpehxdvcwhyaorlehrrdc/Build/Products/Debug Hockeyapp-iphoneos/ModernProto.framework"; sourceTree = ""; }; + D008184B22B578EC008A895F /* WatchCommon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WatchCommon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008184D22B5796E008A895F /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008184F22B5797A008A895F /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008185122B57986008A895F /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008185322B57994008A895F /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008185522B579A1008A895F /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008185722B579AD008A895F /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008185922B57EF5008A895F /* WatchCommon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WatchCommon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D00818A422B58CCB008A895F /* WatchCommonWatch.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WatchCommonWatch.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D00818CE22B595DB008A895F /* LightweightAccountData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LightweightAccountData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D008599C1B28189D00EAF753 /* Telegram.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Telegram.app; sourceTree = BUILT_PRODUCTS_DIR; }; D00859A01B28189D00EAF753 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D00859A11B28189D00EAF753 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; D00859A81B28189D00EAF753 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; D00859AB1B28189D00EAF753 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; D00859B61B28189D00EAF753 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -1061,16 +928,9 @@ D050F2341E49DEDE00988324 /* telegram_plane1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_plane1@2x.png"; sourceTree = ""; }; D050F2351E49DEDE00988324 /* telegram_sphere@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_sphere@2x.png"; sourceTree = ""; }; D051DB0C215E5E2300F30F92 /* NotificationContent.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationContent.entitlements; sourceTree = ""; }; - D051DB5C21602D6E00F30F92 /* LegacyDataImportSplash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyDataImportSplash.swift; sourceTree = ""; }; D052974422B0073E004ABAF6 /* WhiteFilledIcon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "WhiteFilledIcon@3x.png"; sourceTree = ""; }; D052974522B0073F004ABAF6 /* WhiteFilledIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "WhiteFilledIcon@2x.png"; sourceTree = ""; }; - D053DAD22018ED2B00993D32 /* LockedWindowCoveringView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockedWindowCoveringView.swift; sourceTree = ""; }; D055BD431B7E216400F06C0A /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; - D05B37F41FEA5F6E0041D2A5 /* SnapshotEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotEnvironment.swift; sourceTree = ""; }; - D05B37F61FEA8C640041D2A5 /* SnapshotSecretChat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotSecretChat.swift; sourceTree = ""; }; - D05B37F81FEA8CF00041D2A5 /* SnapshotSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotSettings.swift; sourceTree = ""; }; - D05B37FA1FEA8D020041D2A5 /* SnapshotAppearanceSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotAppearanceSettings.swift; sourceTree = ""; }; - D05B37FC1FEA8D870041D2A5 /* SnapshotResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotResources.swift; sourceTree = ""; }; D05B37FF1FEA8E3D0041D2A5 /* Bitmap2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bitmap2.png; sourceTree = ""; }; D05B38001FEA8E3D0041D2A5 /* Bitmap3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bitmap3.png; sourceTree = ""; }; D05B38011FEA8E3D0041D2A5 /* Bitmap1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bitmap1.png; sourceTree = ""; }; @@ -1084,44 +944,27 @@ D05B38091FEA8E3D0041D2A5 /* Bitmap11.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bitmap11.png; sourceTree = ""; }; D0612E481D58B478000C8F02 /* Application.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = ""; }; D06706601D51185400DED3E3 /* TelegramCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D06E4C2D21347D9200088087 /* UIImage+ImageEffects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+ImageEffects.h"; sourceTree = ""; }; - D06E4C2E21347D9200088087 /* UIImage+ImageEffects.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+ImageEffects.m"; sourceTree = ""; }; D073E51E21FF7CE900742DDD /* Crypto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Crypto.h; sourceTree = ""; }; D073E51F21FF7CE900742DDD /* Crypto.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Crypto.m; sourceTree = ""; }; D073E52122003E1E00742DDD /* Data.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Data.swift; sourceTree = ""; }; - D07477B522A72B1F002737C4 /* TempRoot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TempRoot.swift; sourceTree = ""; }; - D07477B722A732F1002737C4 /* TempMain.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TempMain.m; sourceTree = ""; }; D079FD001F06BBD10038FADE /* Telegram-iOS-AppStore.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Telegram-iOS-AppStore.entitlements"; sourceTree = ""; }; - D084023120E1883500065674 /* ApplicationShortcutItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationShortcutItem.swift; sourceTree = ""; }; - D08410431FABDC5B008FFE92 /* TGItemProviderSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGItemProviderSignals.h; sourceTree = ""; }; - D08410441FABDC5C008FFE92 /* TGItemProviderSignals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGItemProviderSignals.m; sourceTree = ""; }; D08410471FABDC7A008FFE92 /* SSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D08410491FABDCF2008FFE92 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D084104A1FABDCFD008FFE92 /* TGContactModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGContactModel.h; sourceTree = ""; }; - D084104B1FABDCFD008FFE92 /* TGMimeTypeMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGMimeTypeMap.h; sourceTree = ""; }; - D084104C1FABDCFD008FFE92 /* TGContactModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGContactModel.m; sourceTree = ""; }; - D084104D1FABDCFD008FFE92 /* TGMimeTypeMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGMimeTypeMap.m; sourceTree = ""; }; D08410511FABDD54008FFE92 /* MtProtoKitDynamic.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MtProtoKitDynamic.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D08410521FABDEC8008FFE92 /* Share-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Share-Bridging-Header.h"; sourceTree = ""; }; - D08410531FABE428008FFE92 /* ShareItems.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareItems.swift; sourceTree = ""; }; D08984FD2118B3F100918162 /* MtProtoKitDynamic.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MtProtoKitDynamic.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D08984FF2118B3F100918162 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D08985012118B3F100918162 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D08985032118B46F00918162 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D08985052118B62400918162 /* SiriIntents-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SiriIntents-Bridging-Header.h"; sourceTree = ""; }; D08985062119B7FE00918162 /* IntentContacts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentContacts.swift; sourceTree = ""; }; - D09250001FE52D2A003F693F /* BuildConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BuildConfig.h; sourceTree = ""; }; - D09250011FE52D2A003F693F /* BuildConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BuildConfig.m; sourceTree = ""; }; D096C2BD1CC3C021006D814E /* Display.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D096C2C01CC3C104006D814E /* Postbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D096C2C31CC3C11A006D814E /* SwiftSignalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D09A595F1B5858DB00FC3724 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; D09A59B71B5876B600FC3724 /* Telegram-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Telegram-Bridging-Header.h"; sourceTree = ""; }; - D09B79C42219C784003B1F9D /* SharedAccountInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedAccountInfo.swift; sourceTree = ""; }; - D09B79C72219C7AE003B1F9D /* ManageSharedAccountInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManageSharedAccountInfo.swift; sourceTree = ""; }; D09DCBB61D0C856B00F51FFE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; D0A18D621E149043004C6734 /* PushKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PushKit.framework; path = System/Library/Frameworks/PushKit.framework; sourceTree = SDKROOT; }; - D0A18D641E15C020004C6734 /* WakeupManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WakeupManager.swift; sourceTree = ""; }; D0AA1A671D568BA400152314 /* UserNotifications.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotifications.framework; path = System/Library/Frameworks/UserNotifications.framework; sourceTree = SDKROOT; }; D0AA1A691D568BA400152314 /* UserNotificationsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotificationsUI.framework; path = System/Library/Frameworks/UserNotificationsUI.framework; sourceTree = SDKROOT; }; D0AB0B9F1D6708B9002C78E7 /* Postbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Postbox.framework; path = "submodules/Postbox/build/Debug-iphoneos/Postbox.framework"; sourceTree = ""; }; @@ -1131,19 +974,7 @@ D0ADF953212B3B4700310BBC /* Share-AppStoreLLC.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Share-AppStoreLLC.entitlements"; sourceTree = ""; }; D0ADF954212B3B5200310BBC /* SiriIntents-AppStoreLLC.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "SiriIntents-AppStoreLLC.entitlements"; sourceTree = ""; }; D0ADF955212B3B6400310BBC /* Widget-AppStoreLLC.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Widget-AppStoreLLC.entitlements"; sourceTree = ""; }; - D0ADF957212B56DC00310BBC /* LegacyUserDataImport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyUserDataImport.swift; sourceTree = ""; }; - D0ADF959212B5AC600310BBC /* LegacyResourceImport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyResourceImport.swift; sourceTree = ""; }; - D0ADF95B212B636D00310BBC /* LegacyChatImport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyChatImport.swift; sourceTree = ""; }; - D0ADF95D212C818F00310BBC /* LegacyPreferencesImport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyPreferencesImport.swift; sourceTree = ""; }; - D0ADF95F212C8DF600310BBC /* TGAutoDownloadPreferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGAutoDownloadPreferences.m; sourceTree = ""; }; - D0ADF960212C8DF600310BBC /* TGAutoDownloadPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGAutoDownloadPreferences.h; sourceTree = ""; }; - D0ADF962212C9AA900310BBC /* TGProxyItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGProxyItem.h; sourceTree = ""; }; - D0ADF963212C9AA900310BBC /* TGProxyItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGProxyItem.m; sourceTree = ""; }; D0AF322A1FACA1A80097362B /* libstdc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.tbd"; path = "usr/lib/libstdc++.tbd"; sourceTree = SDKROOT; }; - D0AF322D1FACBA270097362B /* TGShareLocationSignals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGShareLocationSignals.m; sourceTree = ""; }; - D0AF322E1FACBA270097362B /* TGShareLocationSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGShareLocationSignals.h; sourceTree = ""; }; - D0B21B0C2203A9A1003F741D /* SharedWakeupManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWakeupManager.swift; sourceTree = ""; }; - D0B21B0E220438E9003F741D /* SharedNotificationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedNotificationManager.swift; sourceTree = ""; }; D0B2F737204F4C9900D3BFB9 /* Widget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Widget.appex; sourceTree = BUILT_PRODUCTS_DIR; }; D0B2F74E204F4D6100D3BFB9 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0B2F74F204F4D6100D3BFB9 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1155,11 +986,9 @@ D0B2F75A204F51E400D3BFB9 /* Widget-AppStore.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Widget-AppStore.entitlements"; sourceTree = ""; }; D0B2F75B204F51E500D3BFB9 /* Widget-HockeyApp.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Widget-HockeyApp.entitlements"; sourceTree = ""; }; D0B2F75F2050102600D3BFB9 /* PeerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerNode.swift; sourceTree = ""; }; - D0B3B53A21666C0000FC60A0 /* LegacyFileImport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyFileImport.swift; sourceTree = ""; }; D0B844591DACF507005F29E1 /* HockeySDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HockeySDK.framework; path = "third-party/HockeySDK.framework"; sourceTree = ""; }; D0B8445A1DACF507005F29E1 /* HockeySDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = HockeySDKResources.bundle; path = "third-party/HockeySDKResources.bundle"; sourceTree = ""; }; D0B8445F1DACF561005F29E1 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; - D0BEAF721E54C9A900BD963D /* ApplicationContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplicationContext.swift; sourceTree = ""; }; D0C2DFF51CC4D1B20044FF83 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; D0C2DFF71CC4D1BA0044FF83 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; D0C2DFF91CC4D1C90044FF83 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; }; @@ -1170,8 +999,6 @@ D0CAF3171D76394C0011F558 /* TelegramCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TelegramCore.framework; path = "submodules/TelegramCore/build/Debug-iphoneos/TelegramCore.framework"; sourceTree = ""; }; D0CCD61C222EFFB000EE1E08 /* MtProtoKitDynamic.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MtProtoKitDynamic.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0CD17B41CC3AE14007C5650 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D0CE6F1A213ED11100BCD44B /* TGPresentationAutoNightPreferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TGPresentationAutoNightPreferences.h; sourceTree = ""; }; - D0CE6F1B213ED11100BCD44B /* TGPresentationAutoNightPreferences.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TGPresentationAutoNightPreferences.m; sourceTree = ""; }; D0CE6F1F213EDA4200BCD44B /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = Localizable.strings; sourceTree = ""; }; D0CE6F21213EDA4200BCD44B /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = InfoPlist.strings; sourceTree = ""; }; D0CE6F23213EDA4200BCD44B /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = pt; path = AppIntentVocabulary.plist; sourceTree = ""; }; @@ -1198,7 +1025,6 @@ D0CE6F54213EDA4400BCD44B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = de; path = AppIntentVocabulary.plist; sourceTree = ""; }; D0CFBB921FD88C2900B65C0D /* begin_record.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = begin_record.caf; path = "Telegram-iOS/Resources/begin_record.caf"; sourceTree = ""; }; D0D17E891CAAD66600C4750B /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; - D0D2276E212739120028F943 /* LegacyDataImport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyDataImport.swift; sourceTree = ""; }; D0D268761D79A70A00C422DA /* SiriIntents.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SiriIntents.appex; sourceTree = BUILT_PRODUCTS_DIR; }; D0D268781D79A70A00C422DA /* IntentHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentHandler.swift; sourceTree = ""; }; D0D2687A1D79A70A00C422DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -1223,12 +1049,10 @@ D0EA97961FE8536900792DD6 /* SiriIntents-Hockeyapp.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "SiriIntents-Hockeyapp.entitlements"; sourceTree = ""; }; D0EA97971FE8537000792DD6 /* Share-HockeyApp.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Share-HockeyApp.entitlements"; sourceTree = ""; }; D0EA97981FE8537000792DD6 /* Share-AppStore.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Share-AppStore.entitlements"; sourceTree = ""; }; - D0EB243A201B77C400F6CC13 /* ClearNotificationsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClearNotificationsManager.swift; sourceTree = ""; }; D0ECCB7C1FE9C38500609802 /* Telegram-iOS UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Telegram-iOS UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; D0ECCB7E1FE9C38500609802 /* Telegram_iOS_UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Telegram_iOS_UITests.swift; sourceTree = ""; }; D0ECCB801FE9C38500609802 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; D0ECCB891FE9C4AC00609802 /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotHelper.swift; sourceTree = ""; }; - D0ECCB8C1FE9CE3F00609802 /* SnapshotChatList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotChatList.swift; sourceTree = ""; }; D0ED633921FF3EDF001D4648 /* AccountData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountData.swift; sourceTree = ""; }; D0ED633C21FF3F28001D4648 /* NotificationService-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NotificationService-Bridging-Header.h"; sourceTree = ""; }; D0ED633E21FF46E4001D4648 /* ImageData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageData.swift; sourceTree = ""; }; @@ -1242,6 +1066,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D00818A522B58CCB008A895F /* WatchCommonWatch.framework in Frameworks */, 0972C6E021791D950069E98A /* UserNotifications.framework in Frameworks */, 09CFB212217299E80083F7A3 /* CoreLocation.framework in Frameworks */, 09C5723D21728C0E00BDF00F /* CoreGraphics.framework in Frameworks */, @@ -1252,6 +1077,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D00818CF22B595DB008A895F /* LightweightAccountData.framework in Frameworks */, + D008185822B579AD008A895F /* BuildConfig.framework in Frameworks */, D015E04D225D2D8F00CB9E8A /* WebP.framework in Frameworks */, D0CCD61D222EFFB000EE1E08 /* MtProtoKitDynamic.framework in Frameworks */, ); @@ -1261,6 +1088,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D008184E22B5796E008A895F /* BuildConfig.framework in Frameworks */, D0CAD6A421C03BEB001E3055 /* FFMpeg.framework in Frameworks */, 09C50E88217385CF009E676F /* WatchConnectivity.framework in Frameworks */, 09FDAEE62140477F00BF856F /* MtProtoKitDynamic.framework in Frameworks */, @@ -1284,6 +1112,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D008185622B579A1008A895F /* BuildConfig.framework in Frameworks */, D051DB0B215E5D1C00F30F92 /* TelegramUI.framework in Frameworks */, D02CF615215DA24900E0F56A /* Display.framework in Frameworks */, D02CF617215DA24900E0F56A /* Postbox.framework in Frameworks */, @@ -1298,6 +1127,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D008185022B5797A008A895F /* BuildConfig.framework in Frameworks */, D0AF322C1FACA1B00097362B /* libc++.tbd in Frameworks */, D0AF32291FACA1920097362B /* Accelerate.framework in Frameworks */, D08410501FABDD54008FFE92 /* MtProtoKitDynamic.framework in Frameworks */, @@ -1312,6 +1142,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D008185422B57994008A895F /* BuildConfig.framework in Frameworks */, D0B2F74A204F4D6100D3BFB9 /* Postbox.framework in Frameworks */, D0B2F74B204F4D6100D3BFB9 /* SwiftSignalKit.framework in Frameworks */, D0B2F74C204F4D6100D3BFB9 /* TelegramCore.framework in Frameworks */, @@ -1323,6 +1154,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D008185222B57986008A895F /* BuildConfig.framework in Frameworks */, D08985042118B46F00918162 /* SwiftSignalKit.framework in Frameworks */, D08984FE2118B3F100918162 /* MtProtoKitDynamic.framework in Frameworks */, D08985002118B3F100918162 /* Postbox.framework in Frameworks */, @@ -1340,14 +1172,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 092F368121542CE4001A9F49 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 092F368221542CF2001A9F49 /* en.lproj */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; 092F368221542CF2001A9F49 /* en.lproj */ = { isa = PBXGroup; children = ( @@ -1511,13 +1335,8 @@ children = ( 09C57290217291BC00BDF00F /* Model */, 09C5728E217291AC00BDF00F /* Signals */, - 09C573362172974E00BDF00F /* TGBridgePeerIdAdapter.h */, 09C572CC2172939F00BDF00F /* TGBridgeClient.h */, 09C572D02172939F00BDF00F /* TGBridgeClient.m */, - 09C572CF2172939F00BDF00F /* TGBridgeCommon.h */, - 09C572CE2172939F00BDF00F /* TGBridgeCommon.m */, - 09C50E902173B247009E676F /* TGBridgeSubscriptions.h */, - 09C50E8F2173B247009E676F /* TGBridgeSubscriptions.m */, ); name = Bridge; sourceTree = ""; @@ -1922,78 +1741,22 @@ 09C57290217291BC00BDF00F /* Model */ = { isa = PBXGroup; children = ( - 09C572CB2172938100BDF00F /* Media */, - 09C572EA2172953400BDF00F /* TGBridgeBotCommandInfo.h */, - 09C572EF2172953500BDF00F /* TGBridgeBotCommandInfo.m */, - 09C572E82172953400BDF00F /* TGBridgeBotInfo.h */, - 09C573102172953800BDF00F /* TGBridgeBotInfo.m */, 09C572DD2172953300BDF00F /* TGBridgeBotReplyMarkup.h */, 09C572D92172953300BDF00F /* TGBridgeBotReplyMarkup.m */, - 09C572F12172953500BDF00F /* TGBridgeChat.h */, - 09C573092172953700BDF00F /* TGBridgeChat.m */, 09C572DB2172953300BDF00F /* TGBridgeChat+TGTableItem.h */, 09C572F62172953500BDF00F /* TGBridgeChat+TGTableItem.m */, - 09C573142172953800BDF00F /* TGBridgeChatMessages.h */, - 09C5730C2172953700BDF00F /* TGBridgeChatMessages.m */, - 09C573032172953600BDF00F /* TGBridgeContext.h */, - 09C573072172953700BDF00F /* TGBridgeContext.m */, - 09C5730B2172953700BDF00F /* TGBridgeLocationVenue.h */, - 09C572F32172953500BDF00F /* TGBridgeLocationVenue.m */, 09C573152172953800BDF00F /* TGBridgeLocationVenue+TGTableItem.h */, 09C572FF2172953600BDF00F /* TGBridgeLocationVenue+TGTableItem.m */, - 09C572D62172953200BDF00F /* TGBridgeMediaAttachment.h */, - 09C572F92172953600BDF00F /* TGBridgeMediaAttachment.m */, - 09C573042172953700BDF00F /* TGBridgeMessage.h */, - 09C572DF2172953300BDF00F /* TGBridgeMessage.m */, 09C572F72172953500BDF00F /* TGBridgeMessage+TGTableItem.h */, 09C572D72172953300BDF00F /* TGBridgeMessage+TGTableItem.m */, - 09C573022172953600BDF00F /* TGBridgePeerNotificationSettings.h */, - 09C572FC2172953600BDF00F /* TGBridgePeerNotificationSettings.m */, 09C573132172953800BDF00F /* TGBridgeStickerPack.h */, 09C572E32172953400BDF00F /* TGBridgeStickerPack.m */, - 09C572EB2172953400BDF00F /* TGBridgeUser.h */, - 09C572ED2172953400BDF00F /* TGBridgeUser.m */, 09C573052172953700BDF00F /* TGBridgeUser+TGTableItem.h */, 09C572E92172953400BDF00F /* TGBridgeUser+TGTableItem.m */, ); name = Model; sourceTree = ""; }; - 09C572CB2172938100BDF00F /* Media */ = { - isa = PBXGroup; - children = ( - 09C572DC2172953300BDF00F /* TGBridgeActionMediaAttachment.h */, - 09C572E22172953300BDF00F /* TGBridgeActionMediaAttachment.m */, - 09C573082172953700BDF00F /* TGBridgeAudioMediaAttachment.h */, - 09C572E02172953300BDF00F /* TGBridgeAudioMediaAttachment.m */, - 09C572DA2172953300BDF00F /* TGBridgeContactMediaAttachment.h */, - 09C572DE2172953300BDF00F /* TGBridgeContactMediaAttachment.m */, - 09C572F02172953500BDF00F /* TGBridgeDocumentMediaAttachment.h */, - 09C572FB2172953600BDF00F /* TGBridgeDocumentMediaAttachment.m */, - 09C572FE2172953600BDF00F /* TGBridgeForwardedMessageMediaAttachment.h */, - 09C572E62172953400BDF00F /* TGBridgeForwardedMessageMediaAttachment.m */, - 09C572EE2172953400BDF00F /* TGBridgeImageMediaAttachment.h */, - 09C572F22172953500BDF00F /* TGBridgeImageMediaAttachment.m */, - 09C572E72172953400BDF00F /* TGBridgeLocationMediaAttachment.h */, - 09C573002172953600BDF00F /* TGBridgeLocationMediaAttachment.m */, - 09C572F82172953500BDF00F /* TGBridgeMessageEntitiesAttachment.h */, - 09C5730A2172953700BDF00F /* TGBridgeMessageEntitiesAttachment.m */, - 09C572E12172953300BDF00F /* TGBridgeReplyMarkupMediaAttachment.h */, - 09C5730D2172953800BDF00F /* TGBridgeReplyMarkupMediaAttachment.m */, - 09C572EC2172953400BDF00F /* TGBridgeReplyMessageMediaAttachment.h */, - 09C572FD2172953600BDF00F /* TGBridgeReplyMessageMediaAttachment.m */, - 09C573112172953800BDF00F /* TGBridgeUnsupportedMediaAttachment.h */, - 09C5730F2172953800BDF00F /* TGBridgeUnsupportedMediaAttachment.m */, - 09C573062172953700BDF00F /* TGBridgeVideoMediaAttachment.h */, - 09C572E42172953400BDF00F /* TGBridgeVideoMediaAttachment.m */, - 09C573122172953800BDF00F /* TGBridgeWebPageMediaAttachment.h */, - 09C572F52172953500BDF00F /* TGBridgeWebPageMediaAttachment.m */, - 09C572FA2172953600BDF00F /* TGBridgeMessageEntities.h */, - 09C572F42172953500BDF00F /* TGBridgeMessageEntities.m */, - ); - name = Media; - sourceTree = ""; - }; D00859931B28189D00EAF753 = { isa = PBXGroup; children = ( @@ -2041,23 +1804,9 @@ D079FD001F06BBD10038FADE /* Telegram-iOS-AppStore.entitlements */, D0E3A7071B285B5000A402D9 /* Telegram-iOS-Hockeyapp.entitlements */, D021D4D7219CAEDD0064BEBA /* Telegram-iOS-Fork.entitlements */, - D00859A11B28189D00EAF753 /* AppDelegate.swift */, - D0BEAF721E54C9A900BD963D /* ApplicationContext.swift */, - D053DAD22018ED2B00993D32 /* LockedWindowCoveringView.swift */, - D084023120E1883500065674 /* ApplicationShortcutItem.swift */, - D0A18D641E15C020004C6734 /* WakeupManager.swift */, - D0EB243A201B77C400F6CC13 /* ClearNotificationsManager.swift */, D00859A81B28189D00EAF753 /* Images.xcassets */, D00859AA1B28189D00EAF753 /* LaunchScreen.xib */, - D0ADF956212B56C200310BBC /* Legacy Data Import */, - D0ECCB8B1FE9CE2B00609802 /* Snapshots */, D008599F1B28189D00EAF753 /* Supporting Files */, - D0B21B0C2203A9A1003F741D /* SharedWakeupManager.swift */, - D0B21B0E220438E9003F741D /* SharedNotificationManager.swift */, - D09B79C42219C784003B1F9D /* SharedAccountInfo.swift */, - D09B79C72219C7AE003B1F9D /* ManageSharedAccountInfo.swift */, - D07477B522A72B1F002737C4 /* TempRoot.swift */, - D07477B722A732F1002737C4 /* TempMain.m */, ); path = "Telegram-iOS"; sourceTree = ""; @@ -2065,11 +1814,7 @@ D008599F1B28189D00EAF753 /* Supporting Files */ = { isa = PBXGroup; children = ( - D06E4C2D21347D9200088087 /* UIImage+ImageEffects.h */, - D06E4C2E21347D9200088087 /* UIImage+ImageEffects.m */, D0612E481D58B478000C8F02 /* Application.swift */, - D09250001FE52D2A003F693F /* BuildConfig.h */, - D09250011FE52D2A003F693F /* BuildConfig.m */, D09DCBB41D0C854D00F51FFE /* en.lproj */, D0CE6F47213EDA4400BCD44B /* ar.lproj */, D0CE6F4E213EDA4400BCD44B /* de.lproj */, @@ -2107,6 +1852,16 @@ D00859C21B281E0000EAF753 /* Frameworks */ = { isa = PBXGroup; children = ( + D00818CE22B595DB008A895F /* LightweightAccountData.framework */, + D00818A422B58CCB008A895F /* WatchCommonWatch.framework */, + D008185922B57EF5008A895F /* WatchCommon.framework */, + D008185722B579AD008A895F /* BuildConfig.framework */, + D008185522B579A1008A895F /* BuildConfig.framework */, + D008185322B57994008A895F /* BuildConfig.framework */, + D008185122B57986008A895F /* BuildConfig.framework */, + D008184F22B5797A008A895F /* BuildConfig.framework */, + D008184D22B5796E008A895F /* BuildConfig.framework */, + D008184B22B578EC008A895F /* WatchCommon.framework */, D015E04C225D2D8F00CB9E8A /* WebP.framework */, D0CCD61C222EFFB000EE1E08 /* MtProtoKitDynamic.framework */, D0CAD6A121C03BE2001E3055 /* FFMpeg.framework */, @@ -2234,23 +1989,14 @@ D03B0E791D63484500955575 /* Share */ = { isa = PBXGroup; children = ( - 092F368121542CE4001A9F49 /* Supporting Files */, + 092F368221542CF2001A9F49 /* en.lproj */, D0ADF953212B3B4700310BBC /* Share-AppStoreLLC.entitlements */, D0EA97981FE8537000792DD6 /* Share-AppStore.entitlements */, D0EA97971FE8537000792DD6 /* Share-HockeyApp.entitlements */, D021D4DA219CB0EF0064BEBA /* Share-Fork.entitlements */, - D084104A1FABDCFD008FFE92 /* TGContactModel.h */, - D084104C1FABDCFD008FFE92 /* TGContactModel.m */, - D084104B1FABDCFD008FFE92 /* TGMimeTypeMap.h */, - D084104D1FABDCFD008FFE92 /* TGMimeTypeMap.m */, - D08410431FABDC5B008FFE92 /* TGItemProviderSignals.h */, - D08410441FABDC5C008FFE92 /* TGItemProviderSignals.m */, - D0AF322E1FACBA270097362B /* TGShareLocationSignals.h */, - D0AF322D1FACBA270097362B /* TGShareLocationSignals.m */, D03B0E7A1D63484500955575 /* ShareRootController.swift */, D08410521FABDEC8008FFE92 /* Share-Bridging-Header.h */, D03B0E7F1D63484500955575 /* Info.plist */, - D08410531FABE428008FFE92 /* ShareItems.swift */, ); path = Share; sourceTree = ""; @@ -2435,26 +2181,6 @@ name = en.lproj; sourceTree = ""; }; - D0ADF956212B56C200310BBC /* Legacy Data Import */ = { - isa = PBXGroup; - children = ( - D0D2276E212739120028F943 /* LegacyDataImport.swift */, - D0ADF957212B56DC00310BBC /* LegacyUserDataImport.swift */, - D0ADF95B212B636D00310BBC /* LegacyChatImport.swift */, - D0B3B53A21666C0000FC60A0 /* LegacyFileImport.swift */, - D0ADF959212B5AC600310BBC /* LegacyResourceImport.swift */, - D0ADF95D212C818F00310BBC /* LegacyPreferencesImport.swift */, - D0ADF960212C8DF600310BBC /* TGAutoDownloadPreferences.h */, - D0ADF95F212C8DF600310BBC /* TGAutoDownloadPreferences.m */, - D0CE6F1A213ED11100BCD44B /* TGPresentationAutoNightPreferences.h */, - D0CE6F1B213ED11100BCD44B /* TGPresentationAutoNightPreferences.m */, - D0ADF962212C9AA900310BBC /* TGProxyItem.h */, - D0ADF963212C9AA900310BBC /* TGProxyItem.m */, - D051DB5C21602D6E00F30F92 /* LegacyDataImportSplash.swift */, - ); - name = "Legacy Data Import"; - sourceTree = ""; - }; D0CE6F1D213EDA4200BCD44B /* pt.lproj */ = { isa = PBXGroup; children = ( @@ -2596,19 +2322,6 @@ path = "Telegram-iOS UITests"; sourceTree = ""; }; - D0ECCB8B1FE9CE2B00609802 /* Snapshots */ = { - isa = PBXGroup; - children = ( - D05B37F41FEA5F6E0041D2A5 /* SnapshotEnvironment.swift */, - D05B37FC1FEA8D870041D2A5 /* SnapshotResources.swift */, - D0ECCB8C1FE9CE3F00609802 /* SnapshotChatList.swift */, - D05B37F61FEA8C640041D2A5 /* SnapshotSecretChat.swift */, - D05B37F81FEA8CF00041D2A5 /* SnapshotSettings.swift */, - D05B37FA1FEA8D020041D2A5 /* SnapshotAppearanceSettings.swift */, - ); - name = Snapshots; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -3133,7 +2846,6 @@ 09C5728521728D3700BDF00F /* SSignal+Single.m in Sources */, 09C5728A21728D3700BDF00F /* SThreadPoolQueue.m in Sources */, 09C5727821728D3700BDF00F /* SMetaDisposable.m in Sources */, - 09C5732B2172953900BDF00F /* TGBridgePeerNotificationSettings.m in Sources */, 0956AF2F217B8109008106D0 /* TGNeoUnsupportedMessageViewModel.m in Sources */, 09C50DE821729D7C009E676F /* TGBridgeBotSignals.m in Sources */, 09C571952172806900BDF00F /* TGUserRowController.m in Sources */, @@ -3145,13 +2857,9 @@ 09C5731D2172953800BDF00F /* TGBridgeStickerPack.m in Sources */, 09C50DF321729D7C009E676F /* TGBridgeStateSignal.m in Sources */, 09C5727421728D3700BDF00F /* SAtomic.m in Sources */, - 09C5731C2172953800BDF00F /* TGBridgeActionMediaAttachment.m in Sources */, 09C571D52172875500BDF00F /* TGMessageViewController.m in Sources */, - 09C5732F2172953900BDF00F /* TGBridgeContext.m in Sources */, - 09C573192172953800BDF00F /* TGBridgeContactMediaAttachment.m in Sources */, 09C571EB2172878900BDF00F /* TGStickersHeaderController.m in Sources */, 09C50DED21729D7C009E676F /* TGBridgeLocationSignals.m in Sources */, - 09C573302172953900BDF00F /* TGBridgeChat.m in Sources */, 09C571D72172875A00BDF00F /* TGMessageViewMessageRowController.m in Sources */, 09C571F22172879C00BDF00F /* TGComposeController.m in Sources */, 09C5727621728D3700BDF00F /* SBlockDisposable.m in Sources */, @@ -3159,14 +2867,11 @@ 09C5723021728AA500BDF00F /* TGNeoMessageViewModel.m in Sources */, 09C5728C21728D3700BDF00F /* STimer.m in Sources */, 09C5728221728D3700BDF00F /* SSignal+Multicast.m in Sources */, - 09C573342172953900BDF00F /* TGBridgeUnsupportedMediaAttachment.m in Sources */, 09C573162172953800BDF00F /* TGBridgeMessage+TGTableItem.m in Sources */, 09C571922172806600BDF00F /* TGNeoLabelViewModel.m in Sources */, 09C5723521728AA500BDF00F /* TGNeoStickerMessageViewModel.m in Sources */, 09C50E0421729DB5009E676F /* TGBotKeyboardController.m in Sources */, - 09C5732E2172953900BDF00F /* TGBridgeLocationMediaAttachment.m in Sources */, 09C5722A21728AA500BDF00F /* TGNeoConversationSimpleRowController.m in Sources */, - 09C573262172953800BDF00F /* TGBridgeMessageEntities.m in Sources */, 09C5727E21728D3700BDF00F /* SSignal+Combine.m in Sources */, 09C571D42172875100BDF00F /* TGUserInfoController.m in Sources */, 09C571932172806600BDF00F /* TGNeoRenderableViewModel.m in Sources */, @@ -3175,11 +2880,9 @@ 09C50DF221729D7C009E676F /* TGBridgeSendMessageSignals.m in Sources */, 09C571902172806600BDF00F /* TGNeoAttachmentViewModel.m in Sources */, 09C50DE921729D7C009E676F /* TGBridgeChatListSignals.m in Sources */, - 09C50E922173B247009E676F /* TGBridgeSubscriptions.m in Sources */, 09C5716A21727F1500BDF00F /* TGInterfaceMenu.m in Sources */, 09C571D02172874B00BDF00F /* TGUserHandleRowController.m in Sources */, 09C5727F21728D3700BDF00F /* SSignal+Dispatch.m in Sources */, - 09C573232172953800BDF00F /* TGBridgeBotCommandInfo.m in Sources */, 09C5723121728AA500BDF00F /* TGNeoReplyHeaderViewModel.m in Sources */, 09C571F02172878900BDF00F /* TGStickersController.m in Sources */, 09C5714621727DAA00BDF00F /* TGWatchCommon.m in Sources */, @@ -3196,8 +2899,6 @@ 09C5713E21727D9E00BDF00F /* TGInterfaceController.m in Sources */, 09C571D22172875100BDF00F /* TGGroupInfoController.m in Sources */, 09C50DEA21729D7C009E676F /* TGBridgeChatMessageListSignals.m in Sources */, - 09C573332172953900BDF00F /* TGBridgeReplyMarkupMediaAttachment.m in Sources */, - 09C573352172953900BDF00F /* TGBridgeBotInfo.m in Sources */, 09C571DC2172876C00BDF00F /* TGLocationController.m in Sources */, 09C5727A21728D3700BDF00F /* SQueue.m in Sources */, 09C5714521727DAA00BDF00F /* TGWatchColor.m in Sources */, @@ -3206,7 +2907,6 @@ 09C5728D21728D3700BDF00F /* SVariable.m in Sources */, 09C5714321727DAA00BDF00F /* TGLocationUtils.m in Sources */, 09C5716121727EE700BDF00F /* TGFileCache.m in Sources */, - 09C573202172953800BDF00F /* TGBridgeForwardedMessageMediaAttachment.m in Sources */, 09C5723221728AA500BDF00F /* TGNeoRowController.m in Sources */, 09C5728121728D3700BDF00F /* SSignal+Meta.m in Sources */, 09C5722521728AA500BDF00F /* TGNeoAudioMessageViewModel.m in Sources */, @@ -3219,7 +2919,6 @@ 09C5714821727DAA00BDF00F /* WKInterfaceGroup+Signals.m in Sources */, 09C5714921727DAA00BDF00F /* WKInterfaceImage+Signals.m in Sources */, 09C5728321728D3700BDF00F /* SSignal+Pipe.m in Sources */, - 09C573322172953900BDF00F /* TGBridgeChatMessages.m in Sources */, 09C5728921728D3700BDF00F /* SThreadPool.m in Sources */, 09C5722921728AA500BDF00F /* TGNeoConversationMediaRowController.m in Sources */, 09C571DA2172876300BDF00F /* TGNeoChatViewModel.m in Sources */, @@ -3227,28 +2926,21 @@ 09C571982172807100BDF00F /* TGAudioMicAlertController.m in Sources */, 09C571D12172874B00BDF00F /* TGUserInfoHeaderController.m in Sources */, 09C5723421728AA500BDF00F /* TGNeoSmiliesMessageViewModel.m in Sources */, - 09C5731E2172953800BDF00F /* TGBridgeVideoMediaAttachment.m in Sources */, 09C50DF421729D7C009E676F /* TGBridgeStickersSignals.m in Sources */, - 09C573252172953800BDF00F /* TGBridgeLocationVenue.m in Sources */, 09C5727521728D3700BDF00F /* SBag.m in Sources */, 09C5713F21727DA000BDF00F /* TGExtensionDelegate.m in Sources */, - 09C573292172953900BDF00F /* TGBridgeMediaAttachment.m in Sources */, 09C50DEE21729D7C009E676F /* TGBridgeMediaSignals.m in Sources */, 09C571D82172875A00BDF00F /* TGMessageViewWebPageRowController.m in Sources */, 09C50E0521729DE6009E676F /* TGBotKeyboardButtonController.m in Sources */, 09C5719B217280E900BDF00F /* TGNeoChatsController.m in Sources */, - 09C5731B2172953800BDF00F /* TGBridgeAudioMediaAttachment.m in Sources */, - 09C5731A2172953800BDF00F /* TGBridgeMessage.m in Sources */, 09C5728821728D3700BDF00F /* SSubscriber.m in Sources */, 09C5722D21728AA500BDF00F /* TGNeoFileMessageViewModel.m in Sources */, 09C5723821728AA500BDF00F /* TGConversationFooterController.m in Sources */, 09C571DD2172876F00BDF00F /* TGLocationMapHeaderController.m in Sources */, - 09C573312172953900BDF00F /* TGBridgeMessageEntitiesAttachment.m in Sources */, 09C50DEC21729D7C009E676F /* TGBridgeConversationSignals.m in Sources */, 09C5727B21728D3700BDF00F /* SSignal.m in Sources */, 09C573282172953800BDF00F /* TGBridgeChat+TGTableItem.m in Sources */, 09C5727721728D3700BDF00F /* SDisposableSet.m in Sources */, - 09C573242172953800BDF00F /* TGBridgeImageMediaAttachment.m in Sources */, 09C5723B21728AA500BDF00F /* TGNeoConversationRowController.m in Sources */, 09C5714121727DAA00BDF00F /* TGGeometry.m in Sources */, 09C5714221727DAA00BDF00F /* TGIndexPath.m in Sources */, @@ -3268,23 +2960,18 @@ 09C50DE721729D7C009E676F /* TGBridgeAudioSignals.m in Sources */, 09C5722721728AA500BDF00F /* TGNeoBubbleMessageViewModel.m in Sources */, 09C571CF2172874B00BDF00F /* TGUserHandle.m in Sources */, - 09C572D3217293D400BDF00F /* TGBridgeCommon.m in Sources */, 09C5722821728AA500BDF00F /* TGNeoContactMessageViewModel.m in Sources */, - 09C573222172953800BDF00F /* TGBridgeUser.m in Sources */, 09C571EF2172878900BDF00F /* TGStickersSectionHeaderController.m in Sources */, 09C5714021727DAA00BDF00F /* TGDateUtils.m in Sources */, - 09C5732C2172953900BDF00F /* TGBridgeReplyMessageMediaAttachment.m in Sources */, 09C571942172806600BDF00F /* TGNeoViewModel.m in Sources */, 09C5727C21728D3700BDF00F /* SSignal+Accumulate.m in Sources */, 09C5714A21727DAA00BDF00F /* WKInterfaceTable+TGDataDrivenTable.m in Sources */, 09C571DE2172876F00BDF00F /* TGLocationVenueRowController.m in Sources */, 09C5716921727F1500BDF00F /* TGInputController.m in Sources */, 09C5723921728AA500BDF00F /* TGChatInfo.m in Sources */, - 09C5732A2172953900BDF00F /* TGBridgeDocumentMediaAttachment.m in Sources */, 09C571962172806D00BDF00F /* TGComplicationController.m in Sources */, 09C5723621728AA500BDF00F /* TGNeoTextMessageViewModel.m in Sources */, 09C5722B21728AA500BDF00F /* TGNeoConversationStaticRowController.m in Sources */, - 09C573272172953800BDF00F /* TGBridgeWebPageMediaAttachment.m in Sources */, 09C5718F2172806600BDF00F /* TGMessageViewModel.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3295,8 +2982,6 @@ files = ( D073E52222003E1E00742DDD /* Data.swift in Sources */, D0E2CE642227F0680084E3DD /* ManagedFile.swift in Sources */, - D0ED633B21FF3EFD001D4648 /* BuildConfig.m in Sources */, - D09B79C62219C784003B1F9D /* SharedAccountInfo.swift in Sources */, D0ED633D21FF4580001D4648 /* NotificationService.swift in Sources */, D015E01F225CDF5100CB9E8A /* Api0.swift in Sources */, D0ED633A21FF3EDF001D4648 /* AccountData.swift in Sources */, @@ -3311,64 +2996,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D00859A21B28189D00EAF753 /* AppDelegate.swift in Sources */, - 09C50E7B21738178009E676F /* TGBridgeServer.m in Sources */, - D0ADF95C212B636D00310BBC /* LegacyChatImport.swift in Sources */, - 09D3042E2174344900C00567 /* TGBridgeContactMediaAttachment.m in Sources */, - D05B37F71FEA8C640041D2A5 /* SnapshotSecretChat.swift in Sources */, - 09C50E842173853E009E676F /* TGBridgeCommon.m in Sources */, - 09D3042D2174344900C00567 /* TGBridgeAudioMediaAttachment.m in Sources */, - D05B37F51FEA5F6E0041D2A5 /* SnapshotEnvironment.swift in Sources */, - 0956AF2C217B4642008106D0 /* WatchCommunicationManager.swift in Sources */, - 09D304372174344900C00567 /* TGBridgeVideoMediaAttachment.m in Sources */, - 09C50E912173B247009E676F /* TGBridgeSubscriptions.m in Sources */, - 09D304262174341A00C00567 /* TGBridgeLocationVenue.m in Sources */, - 09D304312174344900C00567 /* TGBridgeImageMediaAttachment.m in Sources */, - 09D304292174343300C00567 /* TGBridgeBotInfo.m in Sources */, - 09D304272174341E00C00567 /* TGBridgeChatMessages.m in Sources */, - D0B21B0F220438E9003F741D /* SharedNotificationManager.swift in Sources */, D02E31231BD803E800CD3F01 /* main.m in Sources */, - D05B37FD1FEA8D870041D2A5 /* SnapshotResources.swift in Sources */, - D0EB243B201B77C400F6CC13 /* ClearNotificationsManager.swift in Sources */, - 09D304242174340E00C00567 /* TGBridgeMessage.m in Sources */, - 09D304362174344900C00567 /* TGBridgeUnsupportedMediaAttachment.m in Sources */, - D0ADF95A212B5AC600310BBC /* LegacyResourceImport.swift in Sources */, - D09B79C52219C784003B1F9D /* SharedAccountInfo.swift in Sources */, - D06E4C2F21347D9200088087 /* UIImage+ImageEffects.m in Sources */, - D0B3B53B21666C0000FC60A0 /* LegacyFileImport.swift in Sources */, - D0ADF95E212C818F00310BBC /* LegacyPreferencesImport.swift in Sources */, - D0B21B0D2203A9A1003F741D /* SharedWakeupManager.swift in Sources */, - 09D304282174342E00C00567 /* TGBridgeChat.m in Sources */, - 09C50E8A2173AEDB009E676F /* WatchRequestHandlers.swift in Sources */, - 09D304302174344900C00567 /* TGBridgeForwardedMessageMediaAttachment.m in Sources */, - D0D2276F212739120028F943 /* LegacyDataImport.swift in Sources */, - D0ADF961212C8DF600310BBC /* TGAutoDownloadPreferences.m in Sources */, - D05B37FB1FEA8D020041D2A5 /* SnapshotAppearanceSettings.swift in Sources */, - D0CE6F1C213ED11100BCD44B /* TGPresentationAutoNightPreferences.m in Sources */, - D053DAD32018ED2B00993D32 /* LockedWindowCoveringView.swift in Sources */, - D09250021FE52D2A003F693F /* BuildConfig.m in Sources */, - 09D304392174344900C00567 /* TGBridgeMessageEntities.m in Sources */, - 09D304352174344900C00567 /* TGBridgeReplyMessageMediaAttachment.m in Sources */, - 09D304322174344900C00567 /* TGBridgeLocationMediaAttachment.m in Sources */, - D084023220E1883500065674 /* ApplicationShortcutItem.swift in Sources */, - D0ADF958212B56DC00310BBC /* LegacyUserDataImport.swift in Sources */, - 09D304332174344900C00567 /* TGBridgeMessageEntitiesAttachment.m in Sources */, - 09D304342174344900C00567 /* TGBridgeReplyMarkupMediaAttachment.m in Sources */, - D0A18D651E15C020004C6734 /* WakeupManager.swift in Sources */, - D09B79C82219C7AE003B1F9D /* ManageSharedAccountInfo.swift in Sources */, - D051DB5D21602D6E00F30F92 /* LegacyDataImportSplash.swift in Sources */, - 09D304382174344900C00567 /* TGBridgeWebPageMediaAttachment.m in Sources */, - 09D3042F2174344900C00567 /* TGBridgeDocumentMediaAttachment.m in Sources */, - 09D3042C2174344900C00567 /* TGBridgeActionMediaAttachment.m in Sources */, - D0ECCB8D1FE9CE3F00609802 /* SnapshotChatList.swift in Sources */, - D0ADF964212C9AA900310BBC /* TGProxyItem.m in Sources */, - 09C50E8321738514009E676F /* TGBridgeContext.m in Sources */, - 09D304222174335F00C00567 /* WatchBridge.swift in Sources */, - 09D304252174341200C00567 /* TGBridgeMediaAttachment.m in Sources */, - 09D304232174340900C00567 /* TGBridgeUser.m in Sources */, - D05B37F91FEA8CF00041D2A5 /* SnapshotSettings.swift in Sources */, - 09D3042A2174343B00C00567 /* TGBridgeBotCommandInfo.m in Sources */, - D0BEAF731E54C9A900BD963D /* ApplicationContext.swift in Sources */, D0612E491D58B478000C8F02 /* Application.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3377,7 +3005,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D02CF61C215E51D500E0F56A /* BuildConfig.m in Sources */, D02CF601215D9ABF00E0F56A /* NotificationViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3386,16 +3013,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D0D1026A2212F804003ADA5E /* ClearNotificationsManager.swift in Sources */, - D08410451FABDC5D008FFE92 /* TGItemProviderSignals.m in Sources */, - D084104F1FABDCFD008FFE92 /* TGMimeTypeMap.m in Sources */, D03B0E7B1D63484500955575 /* ShareRootController.swift in Sources */, - D0D102682212E9E6003ADA5E /* SharedWakeupManager.swift in Sources */, - D0EA97941FE84F2D00792DD6 /* BuildConfig.m in Sources */, - D084104E1FABDCFD008FFE92 /* TGContactModel.m in Sources */, - D08410541FABE428008FFE92 /* ShareItems.swift in Sources */, - D0D102692212F719003ADA5E /* SharedNotificationManager.swift in Sources */, - D0AF322F1FACBA280097362B /* TGShareLocationSignals.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3404,7 +3022,6 @@ buildActionMask = 2147483647; files = ( D0B2F7602050102600D3BFB9 /* PeerNode.swift in Sources */, - D0B2F755204F4EAF00D3BFB9 /* BuildConfig.m in Sources */, D08DB0A4213F42F400F2ADBF /* TodayViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3414,7 +3031,6 @@ buildActionMask = 2147483647; files = ( D08985072119B7FE00918162 /* IntentContacts.swift in Sources */, - D0EA97951FE84F2E00792DD6 /* BuildConfig.m in Sources */, D0D268791D79A70A00C422DA /* IntentHandler.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata index c513513a5c..aa301453ee 100644 --- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata +++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata @@ -1,6 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Telegram-iOS/SharedAccountInfo.swift b/Telegram-iOS/SharedAccountInfo.swift deleted file mode 100644 index 93a804b3f1..0000000000 --- a/Telegram-iOS/SharedAccountInfo.swift +++ /dev/null @@ -1,55 +0,0 @@ -import Foundation - -struct AccountNotificationKey: Codable { - let id: Data - let data: Data -} - -struct AccountDatacenterKey: Codable { - let id: Int64 - let data: Data -} - -struct AccountDatacenterAddress: Codable { - let host: String - let port: Int32 - let isMedia: Bool - let secret: Data? -} - -struct AccountDatacenterInfo: Codable { - let masterKey: AccountDatacenterKey - let addressList: [AccountDatacenterAddress] -} - -struct AccountProxyConnection: Codable { - let host: String - let port: Int32 - let username: String? - let password: String? - let secret: Data? -} - -struct StoredAccountInfo: Codable { - let id: Int64 - let primaryId: Int32 - let isTestingEnvironment: Bool - let peerName: String - let datacenters: [Int32: AccountDatacenterInfo] - let notificationKey: AccountNotificationKey -} - -struct StoredAccountInfos: Codable { - let proxy: AccountProxyConnection? - let accounts: [StoredAccountInfo] -} - -func loadAccountsData(rootPath: String) -> StoredAccountInfos { - guard let data = try? Data(contentsOf: URL(fileURLWithPath: rootPath + "/accounts-shared-data")) else { - return StoredAccountInfos(proxy: nil, accounts: []) - } - guard let value = try? JSONDecoder().decode(StoredAccountInfos.self, from: data) else { - return StoredAccountInfos(proxy: nil, accounts: []) - } - return value -} diff --git a/Telegram-iOS/SnapshotAppearanceSettings.swift b/Telegram-iOS/SnapshotAppearanceSettings.swift deleted file mode 100644 index 9318f4aae4..0000000000 --- a/Telegram-iOS/SnapshotAppearanceSettings.swift +++ /dev/null @@ -1,34 +0,0 @@ -#if DEBUG - -import Foundation -import TelegramCore -import Postbox -import SwiftSignalKit -import Display -import TelegramUI - -func snapshotAppearanceSettings(application: UIApplication, mainWindow: UIWindow, window: Window1, statusBarHost: StatusBarHost) { - let (context, accountManager) = snapshotEnvironment(application: application, mainWindow: mainWindow, statusBarHost: statusBarHost, theme: .day) - context.account.network.mockConnectionStatus = .online(proxyAddress: nil) - - let _ = (context.account.postbox.transaction { transaction -> Void in - if let hole = context.account.postbox.seedConfiguration.initializeChatListWithHole.topLevel { - transaction.replaceChatListHole(groupId: .root, index: hole.index, hole: nil) - } - - let accountPeer = TelegramUser(id: context.account.peerId, accessHash: nil, firstName: "Alena", lastName: "Shy", username: "alenashy", phone: "44321456789", photo: snapshotAvatar(context.account.postbox, 1), botInfo: nil, restrictionInfo: nil, flags: []) - transaction.updatePeersInternal([accountPeer], update: { _, updated in - return updated - }) - }).start() - - let rootController = TelegramRootController(context: context) - rootController.addRootControllers(showCallsTab: true) - window.viewController = rootController - rootController.rootTabController!.selectedIndex = 3 - rootController.pushViewController(themeSettingsController(context: context)) -} - -#endif - - diff --git a/Telegram-iOS/SnapshotChatList.swift b/Telegram-iOS/SnapshotChatList.swift deleted file mode 100644 index a0c24c2cb7..0000000000 --- a/Telegram-iOS/SnapshotChatList.swift +++ /dev/null @@ -1,155 +0,0 @@ -#if DEBUG - -import Foundation -import TelegramCore -import Postbox -import SwiftSignalKit -import Display -import TelegramUI - -private enum SnapshotPeerAvatar { - case none - case id(Int32) -} - -private func avatarImages(_ postbox: Postbox, _ value: SnapshotPeerAvatar) -> [TelegramMediaImageRepresentation] { - switch value { - case .none: - return [] - case let .id(id): - return snapshotAvatar(postbox, id) - } -} - -private enum SnapshotPeer { - case user(Int32, SnapshotPeerAvatar, String?, String?) - case secretChat(Int32, Int32, SnapshotPeerAvatar, String?, String?) - case channel(Int32, SnapshotPeerAvatar, String) - - func additionalPeer(_ postbox: Postbox) -> Peer? { - switch self { - case .user: - return nil - case let .secretChat(_, userId, avatar, first, last): - return TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: userId), accessHash: nil, firstName: first, lastName: last, username: nil, phone: nil, photo: avatarImages(postbox, avatar), botInfo: nil, restrictionInfo: nil, flags: []) - case .channel: - return nil - } - } - - var peerId: PeerId { - switch self { - case let .user(id, _, _, _): - return PeerId(namespace: Namespaces.Peer.CloudUser, id: id) - case let .secretChat(id, _, _, _, _): - return PeerId(namespace: Namespaces.Peer.SecretChat, id: id) - case let .channel(id, _, _): - return PeerId(namespace: Namespaces.Peer.CloudChannel, id: id) - } - } - - func peer(_ postbox: Postbox) -> Peer { - switch self { - case let .user(id, avatar, first, last): - return TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: id), accessHash: nil, firstName: first, lastName: last, username: nil, phone: nil, photo: avatarImages(postbox, avatar), botInfo: nil, restrictionInfo: nil, flags: []) - case let .secretChat(id, userId, _, _, _): - return TelegramSecretChat(id: PeerId(namespace: Namespaces.Peer.SecretChat, id: id), creationDate: 123, regularPeerId: PeerId(namespace: Namespaces.Peer.CloudUser, id: userId), accessHash: 123, role: .creator, embeddedState: .active, messageAutoremoveTimeout: nil) - case let .channel(id, avatar, title): - return TelegramChannel(id: PeerId(namespace: Namespaces.Peer.CloudChannel, id: id), accessHash: 123, title: title, username: nil, photo: avatarImages(postbox, avatar), creationDate: 123, version: 0, participationStatus: .member, info: .broadcast(TelegramChannelBroadcastInfo(flags: [])), flags: [], restrictionInfo: nil, adminRights: nil, bannedRights: nil, defaultBannedRights: nil) - } - } -} - -private struct SnapshotMessage { - let date: Int32 - let peer: SnapshotPeer - let text: String - let outgoing: Bool - - init(_ date: Int32, _ peer: SnapshotPeer, _ text: String, _ outgoing: Bool) { - self.date = date - self.peer = peer - self.text = text - self.outgoing = outgoing - } - - func storeMessage(_ accountPeerId: PeerId, _ baseDate: Int32) -> StoreMessage { - var flags: StoreMessageFlags = [] - if !self.outgoing { - flags.insert(.Incoming) - } - return StoreMessage(id: MessageId(peerId: self.peer.peerId, namespace: Namespaces.Message.Cloud, id: self.date), globallyUniqueId: nil, groupingKey: nil, timestamp: baseDate + self.date, flags: flags, tags: [], globalTags: [], localTags: [], forwardInfo: nil, authorId: outgoing ? accountPeerId : self.peer.peerId, text: self.text, attributes: [], media: []) - } -} - -private struct SnapshotChat { - let message: SnapshotMessage - let unreadCount: Int32 - let isPinned: Bool - let isMuted: Bool - - init(_ message: SnapshotMessage, unreadCount: Int32 = 0, isPinned: Bool = false, isMuted: Bool = false) { - self.message = message - self.unreadCount = unreadCount - self.isPinned = isPinned - self.isMuted = isMuted - } -} - -private let chatList: [SnapshotChat] = [ - .init(.init(100, .user(1, .id(7), "Jane", ""), "Well I do help animals. Maybe I'll have a few cats in my new luxury apartment. 😊", false), isPinned: true), - .init(.init(90, .user(3, .none, "Tyrion", "Lannister"), "Sometimes posession is an abstract concept. They took my purse, but the gold is still mine.", false), unreadCount: 1), - .init(.init(80, .user(2, .id(1), "Alena", "Shy"), "😍 Sticker", true)), - .init(.init(70, .secretChat(4, 4, .id(8), "Heisenberg", ""), "Thanks, Telegram helps me a lot. You have my financial support if you need more servers.", false)), - .init(.init(60, .user(5, .id(9), "Bender", ""), "I looove new iPhones! In fact, they invited me to a focus group.", false)), - .init(.init(50, .channel(6, .id(10), "World News Today"), "LaserBlastSafetyGuide.pdf", false), unreadCount: 1, isMuted: true), - .init(.init(40, .user(7, .id(11), "EVE", ""), "LaserBlastSafetyGuide.pdf", true)), - .init(.init(30, .user(8, .id(12), "Nick", ""), "It's impossible", false)) -] - -func snapshotChatList(application: UIApplication, mainWindow: UIWindow, window: Window1, statusBarHost: StatusBarHost) { - let (context, _) = snapshotEnvironment(application: application, mainWindow: mainWindow, statusBarHost: statusBarHost, theme: .night) - context.account.network.mockConnectionStatus = .online(proxyAddress: nil) - - let _ = (context.account.postbox.transaction { transaction -> Void in - if let hole = context.account.postbox.seedConfiguration.initializeChatListWithHole.topLevel { - transaction.replaceChatListHole(groupId: .root, index: hole.index, hole: nil) - } - - let accountPeer = TelegramUser(id: context.account.peerId, accessHash: nil, firstName: "Alena", lastName: "Shy", username: "alenashy", phone: "44321456789", photo: [], botInfo: nil, restrictionInfo: nil, flags: []) - transaction.updatePeersInternal([accountPeer], update: { _, updated in - return updated - }) - - let baseDate: Int32 = Int32(Date().timeIntervalSince1970) - 10000 - for item in chatList { - let peer = item.message.peer.peer(context.account.postbox) - - transaction.updatePeersInternal([peer], update: { _, updated in - return updated - }) - if let additionalPeer = item.message.peer.additionalPeer(context.account.postbox) { - transaction.updatePeersInternal([additionalPeer], update: { _, updated in - return updated - }) - } - transaction.updatePeerChatListInclusion(peer.id, inclusion: .ifHasMessagesOrOneOf(groupId: .root, pinningIndex: nil, minTimestamp: nil)) - let _ = transaction.addMessages([item.message.storeMessage(context.account.peerId, baseDate)], location: .UpperHistoryBlock) - transaction.resetIncomingReadStates([peer.id: [Namespaces.Message.Cloud: .idBased(maxIncomingReadId: Int32.max - 1, maxOutgoingReadId: Int32.max - 1, maxKnownId: Int32.max - 1, count: item.unreadCount, markedUnread: false)]]) - if item.isMuted { - transaction.updateCurrentPeerNotificationSettings([peer.id: TelegramPeerNotificationSettings.defaultSettings.withUpdatedMuteState(.muted(until: Int32.max - 1))]) - } else { - transaction.updateCurrentPeerNotificationSettings([peer.id: TelegramPeerNotificationSettings.defaultSettings]) - } - } - transaction.setPinnedItemIds(groupId: .root, itemIds: chatList.filter{ $0.isPinned }.map{ .peer($0.message.peer.peerId) }) - }).start() - - let rootController = TelegramRootController(context: context) - rootController.addRootControllers(showCallsTab: true) - window.viewController = rootController - rootController.rootTabController!.selectedIndex = 0 - rootController.rootTabController!.selectedIndex = 2 -} - -#endif diff --git a/Telegram-iOS/SnapshotEnvironment.swift b/Telegram-iOS/SnapshotEnvironment.swift deleted file mode 100644 index 3576520e17..0000000000 --- a/Telegram-iOS/SnapshotEnvironment.swift +++ /dev/null @@ -1,115 +0,0 @@ -#if DEBUG - -import Foundation -import TelegramCore -import Postbox -import SwiftSignalKit -import TelegramUI -import Display - -enum SnapshotEnvironmentTheme { - case night - case day -} - -func snapshotEnvironment(application: UIApplication, mainWindow: UIWindow, statusBarHost: StatusBarHost, theme: SnapshotEnvironmentTheme) -> (AccountContext, AccountManager) { - preconditionFailure() - /*var randomId: Int64 = 0 - arc4random_buf(&randomId, 8) - let path = NSTemporaryDirectory() + "\(randomId)" - - Logger.setSharedLogger(Logger(basePath: path + "/logs")) - Logger.shared.logToFile = false - - let semaphore = DispatchSemaphore(value: 0) - var accountManagerValue: AccountManager? - initializeAccountManagement() - let _ = accountManager(basePath: path).start(next: { value in - accountManagerValue = value - semaphore.signal() - }) - semaphore.wait() - precondition(accountManagerValue != nil) - - var result: Account? - while true { - let account = currentAccount(allocateIfNotExists: true, networkArguments: NetworkInitializationArguments(apiId: 0, languagesCategory: "ios", appVersion: "unknown", voipMaxLayer: 0), supplementary: false, manager: accountManagerValue!, rootPath: path, auxiliaryMethods: AccountAuxiliaryMethods(updatePeerChatInputState: { _, _ in return nil }, fetchResource: { _, _, _, _ in - return .never() - }, fetchResourceMediaReferenceHash: { _ in - return .never() - }, prepareSecretThumbnailData: { _ in - return nil - })) |> take(1) - let semaphore = DispatchSemaphore(value: 0) - let _ = account.start(next: { value in - switch value! { - case .upgrading: - preconditionFailure() - case let .unauthorized(account): - let _ = account.postbox.transaction({ transaction -> Void in - let encoder = PostboxEncoder() - encoder.encodeInt32(1, forKey: "masterDatacenterId") - encoder.encodeInt64(PeerId(namespace: Namespaces.Peer.CloudUser, id: 1234567).toInt64(), forKey: "peerId") - - transaction.setState(AuthorizedAccountState(decoder: PostboxDecoder(buffer: encoder.readBufferNoCopy()))) - }).start() - case let .authorized(account): - result = account - } - semaphore.signal() - }) - semaphore.wait() - if result != nil { - break - } - } - - let applicationBindings = TelegramApplicationBindings(isMainApp: true, containerPath: path, appSpecificScheme: "tg", openUrl: { _ in - }, openUniversalUrl: { _, completion in - completion.completion(false) - }, canOpenUrl: { _ in - return false - }, getTopWindow: { - for window in application.windows.reversed() { - if window === mainWindow || window === statusBarHost.keyboardWindow { - return window - } - } - return application.windows.last - }, displayNotification: { _ in - }, applicationInForeground: .single(true), applicationIsActive: .single(true), clearMessageNotifications: { _ in - }, pushIdleTimerExtension: { - return EmptyDisposable - }, openSettings: { - }, openAppStorePage: { - }, registerForNotifications: { _ in - }, requestSiriAuthorization: { _ in }, siriAuthorization: { return .notDetermined }, getWindowHost: { - return nil - }, presentNativeController: { _ in - }, dismissNativeController: { - }) - - let _ = updatePresentationThemeSettingsInteractively(postbox: result!.postbox, { _ in - switch theme { - case .day: - return PresentationThemeSettings(chatWallpaper: .color(0xffffff), theme: .builtin(.day), themeAccentColor: nil, themeSpecificChatWallpapers: [:], fontSize: .regular, automaticThemeSwitchSetting: AutomaticThemeSwitchSetting(trigger: .none, theme: .nightAccent), disableAnimations: false) - case .night: - return PresentationThemeSettings(chatWallpaper: .color(0x000000), theme: .builtin(.nightAccent), themeAccentColor: nil, themeSpecificChatWallpapers: [:], fontSize: .regular, automaticThemeSwitchSetting: AutomaticThemeSwitchSetting(trigger: .none, theme: .nightAccent), disableAnimations: false) - } - }).start() - - let semaphore1 = DispatchSemaphore(value: 0) - var dataAndSettings: InitialPresentationDataAndSettings? - let _ = currentPresentationDataAndSettings(postbox: result!.postbox).start(next: { value in - dataAndSettings = value - semaphore1.signal() - }) - semaphore1.wait() - precondition(dataAndSettings != nil) - - let context = AccountContext(sharedContext: SharedAccountContext(applicationBindings: applicationBindings, accountManager: accountManagerValue!), account: result!, initialPresentationDataAndSettings: dataAndSettings!) - - return (context, accountManagerValue!)*/ -} - -#endif diff --git a/Telegram-iOS/SnapshotResources.swift b/Telegram-iOS/SnapshotResources.swift deleted file mode 100644 index 298cb8ee7c..0000000000 --- a/Telegram-iOS/SnapshotResources.swift +++ /dev/null @@ -1,32 +0,0 @@ -#if DEBUG - -import Foundation -import Postbox -import SwiftSignalKit -import TelegramCore - -private var dataPath: String? - -func setupSnapshotData(_ path: String) { - dataPath = path -} - -func snapshotAvatar(_ postbox: Postbox, _ id: Int32) -> [TelegramMediaImageRepresentation] { - guard let path = dataPath else { - return [] - } - - guard let data = try? Data(contentsOf: URL(fileURLWithPath: path + "/Bitmap\(id).png")) else { - return [] - } - if let image = UIImage(data: data) { - let resource = LocalFileMediaResource(fileId: arc4random64(), size: data.count) - - postbox.mediaBox.storeResourceData(resource.id, data: data) - return [TelegramMediaImageRepresentation(dimensions: image.size, resource: resource)] - } else { - return [] - } -} - -#endif diff --git a/Telegram-iOS/SnapshotSecretChat.swift b/Telegram-iOS/SnapshotSecretChat.swift deleted file mode 100644 index 0f7a2ad39f..0000000000 --- a/Telegram-iOS/SnapshotSecretChat.swift +++ /dev/null @@ -1,75 +0,0 @@ -#if DEBUG - -import Foundation -import TelegramCore -import Postbox -import SwiftSignalKit -import Display -import TelegramUI - -private enum SnapshotMessage { - case text(String, Bool) - case timer(Int32, Bool) - - func storeMessage(_ postbox: Postbox, peerId: PeerId, userPeerId: PeerId, accountPeerId: PeerId, _ date: Int32) -> StoreMessage { - switch self { - case let .text(text, outgoing): - var flags: StoreMessageFlags = [] - if !outgoing { - flags.insert(.Incoming) - } - return StoreMessage(id: MessageId(peerId: peerId, namespace: Namespaces.Message.Cloud, id: date), globallyUniqueId: nil, groupingKey: nil, timestamp: date, flags: flags, tags: [], globalTags: [], localTags: [], forwardInfo: nil, authorId: outgoing ? accountPeerId : userPeerId, text: text, attributes: [], media: []) - case let .timer(timeout, outgoing): - var flags: StoreMessageFlags = [] - if !outgoing { - flags.insert(.Incoming) - } - return StoreMessage(id: MessageId(peerId: peerId, namespace: Namespaces.Message.Cloud, id: date), globallyUniqueId: nil, groupingKey: nil, timestamp: date, flags: flags, tags: [], globalTags: [], localTags: [], forwardInfo: nil, authorId: outgoing ? accountPeerId : userPeerId, text: "", attributes: [], media: [TelegramMediaAction(action: .messageAutoremoveTimeoutUpdated(timeout))]) - } - } -} - -private let messages: [SnapshotMessage] = [ - .text("Hey Eileen", true), - .text("So, why is Telegram cool?", true), - .text("Well, look. Telegram is superfast and you can use it on all your devices at the same time — phones, tablets, even desktops.", false), - .text("😴", true), - .text("And it has secret chats, like this one, with end-to-end encryption!", false), - .text("End encryption to what end??", true), - .text("Arrgh. Forget it. You can set a timer and send photos that will disappear when the time runs out. Yay!", false), - .timer(15, false) -] - -func snapshotSecretChat(application: UIApplication, mainWindow: UIWindow, window: Window1, statusBarHost: StatusBarHost) { - let (context, _) = snapshotEnvironment(application: application, mainWindow: mainWindow, statusBarHost: statusBarHost, theme: .night) - context.account.network.mockConnectionStatus = .online(proxyAddress: nil) - - let accountPeer = TelegramUser(id: context.account.peerId, accessHash: nil, firstName: "Alena", lastName: "Shy", username: "alenashy", phone: "44321456789", photo: [], botInfo: nil, restrictionInfo: nil, flags: []) - let userPeer = TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: 456), accessHash: nil, firstName: "Eileen", lastName: "Lockhard", username: nil, phone: "44321456789", photo: snapshotAvatar(context.account.postbox, 6), botInfo: nil, restrictionInfo: nil, flags: []) - let secretPeer = TelegramSecretChat(id: PeerId(namespace: Namespaces.Peer.SecretChat, id: 456), creationDate: 123, regularPeerId: userPeer.id, accessHash: 123, role: .creator, embeddedState: .active, messageAutoremoveTimeout: nil) - - let _ = (context.account.postbox.transaction { transaction -> Void in - if let hole = context.account.postbox.seedConfiguration.initializeChatListWithHole.topLevel { - transaction.replaceChatListHole(groupId: .root, index: hole.index, hole: nil) - } - - transaction.updatePeersInternal([accountPeer, userPeer, secretPeer], update: { _, updated in - return updated - }) - - transaction.updatePeerPresencesInternal(presences: [userPeer.id: TelegramUserPresence(status: .present(until: Int32.max - 1), lastActivity: 0)], merge: { _, updated in return updated }) - - var date: Int32 = Int32(Date().timeIntervalSince1970) - 1000 - for message in messages { - let _ = transaction.addMessages([message.storeMessage(context.account.postbox, peerId: secretPeer.id, userPeerId: userPeer.id, accountPeerId: context.account.peerId, date)], location: .UpperHistoryBlock) - date += 10 - } - }).start() - - let rootController = TelegramRootController(context: context) - rootController.addRootControllers(showCallsTab: true) - window.viewController = rootController - navigateToChatController(navigationController: rootController, context: context, chatLocation: .peer(secretPeer.id), animated: false) -} - -#endif diff --git a/Telegram-iOS/SnapshotSettings.swift b/Telegram-iOS/SnapshotSettings.swift deleted file mode 100644 index 30ac6c510b..0000000000 --- a/Telegram-iOS/SnapshotSettings.swift +++ /dev/null @@ -1,33 +0,0 @@ -#if DEBUG - -import Foundation -import TelegramCore -import Postbox -import SwiftSignalKit -import Display -import TelegramUI - -func snapshotSettings(application: UIApplication, mainWindow: UIWindow, window: Window1, statusBarHost: StatusBarHost) { - let (context, accountManager) = snapshotEnvironment(application: application, mainWindow: mainWindow, statusBarHost: statusBarHost, theme: .night) - context.account.network.mockConnectionStatus = .online(proxyAddress: nil) - - let _ = (context.account.postbox.transaction { transaction -> Void in - if let hole = context.account.postbox.seedConfiguration.initializeChatListWithHole.topLevel { - transaction.replaceChatListHole(groupId: .root, index: hole.index, hole: nil) - } - - let accountPeer = TelegramUser(id: context.account.peerId, accessHash: nil, firstName: "Alena", lastName: "Shy", username: "alenashy", phone: "44321456789", photo: snapshotAvatar(context.account.postbox, 1), botInfo: nil, restrictionInfo: nil, flags: []) - transaction.updatePeersInternal([accountPeer], update: { _, updated in - return updated - }) - }).start() - - let rootController = TelegramRootController(context: context) - rootController.addRootControllers(showCallsTab: true) - window.viewController = rootController - rootController.rootTabController!.selectedIndex = 3 - rootController.pushViewController(settingsController(context: context, accountManager: accountManager)) -} - -#endif - diff --git a/Telegram-iOS/Telegram-Bridging-Header.h b/Telegram-iOS/Telegram-Bridging-Header.h index 6d119f44a8..8f9882681c 100644 --- a/Telegram-iOS/Telegram-Bridging-Header.h +++ b/Telegram-iOS/Telegram-Bridging-Header.h @@ -1,17 +1,4 @@ #ifndef Telegram_iOS_Telegram_Bridging_Header_h #define Telegram_iOS_Telegram_Bridging_Header_h -#import "BuildConfig.h" -#import "TGAutoDownloadPreferences.h" -#import "TGPresentationAutoNightPreferences.h" -#import "TGProxyItem.h" -#import "UIImage+ImageEffects.h" - -#import "TGBridgeServer.h" -#import "TGBridgeCommon.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" -#import "TGBridgeLocationVenue.h" - #endif diff --git a/Telegram-iOS/TempMain.m b/Telegram-iOS/TempMain.m deleted file mode 100644 index 81d976a847..0000000000 --- a/Telegram-iOS/TempMain.m +++ /dev/null @@ -1,7 +0,0 @@ -#import - -int main(int argc, char *argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, @"Application", @"AppDelegate"); - } -} diff --git a/Telegram-iOS/TempRoot.swift b/Telegram-iOS/TempRoot.swift deleted file mode 100644 index 2678d48e09..0000000000 --- a/Telegram-iOS/TempRoot.swift +++ /dev/null @@ -1,32 +0,0 @@ -import Foundation -import AsyncDisplayKit -import MtProtoKit -import SwiftSignalKit -import SSignalKit -import Display -import Postbox -import TelegramCore -import LegacyComponents -import HockeySDK -import Lottie -import WebP -import FFMpeg -import TelegramUIPrivateModule - -func test() { - let _ = ASDisplayNode() - let _ = MTProto() - let _ = Signal { subscriber in - return ActionDisposable { - } - } - let _ = SSignal(generator: { subscriber in - return SBlockDisposable { - } - }) - let _ = ListView() - let _ = SqliteValueBox(basePath: "", queue: .mainQueue(), encryptionParameters: nil, upgradeProgress: { _ in }, inMemory: true) - initializeAccountManagement() - BITHockeyManager.shared().crashManager.crashManagerStatus = .alwaysAsk - let _ = LOTComposition(json: [:]) -} diff --git a/Watch/Bridge/TGBridgeAudioSignals.m b/Watch/Bridge/TGBridgeAudioSignals.m index 36a0961e06..045bcdbb1d 100644 --- a/Watch/Bridge/TGBridgeAudioSignals.m +++ b/Watch/Bridge/TGBridgeAudioSignals.m @@ -1,11 +1,10 @@ #import "TGBridgeAudioSignals.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeAudioMediaAttachment.h" + +#import + #import "TGBridgeClient.h" #import "TGFileCache.h" -#import "TGBridgeMessage.h" - #import "TGExtensionDelegate.h" #import diff --git a/Watch/Bridge/TGBridgeBotSignals.m b/Watch/Bridge/TGBridgeBotSignals.m index 9af378c047..d1abf20b67 100644 --- a/Watch/Bridge/TGBridgeBotSignals.m +++ b/Watch/Bridge/TGBridgeBotSignals.m @@ -1,11 +1,10 @@ #import "TGBridgeBotSignals.h" + +#import + #import "TGBridgeUserCache.h" #import "TGBridgeClient.h" -#import "TGBridgeSubscriptions.h" - -#import "TGBridgeUser.h" -#import "TGBridgeBotInfo.h" @implementation TGBridgeBotSignals diff --git a/Watch/Bridge/TGBridgeChat+TGTableItem.h b/Watch/Bridge/TGBridgeChat+TGTableItem.h index 4b036bf928..b5da6b909c 100644 --- a/Watch/Bridge/TGBridgeChat+TGTableItem.h +++ b/Watch/Bridge/TGBridgeChat+TGTableItem.h @@ -1,4 +1,5 @@ -#import "TGBridgeChat.h" +#import + #import "WKInterfaceTable+TGDataDrivenTable.h" @interface TGBridgeChat (TGTableItem) diff --git a/Watch/Bridge/TGBridgeChatListSignals.m b/Watch/Bridge/TGBridgeChatListSignals.m index 61edb4ecec..b32a4ded15 100644 --- a/Watch/Bridge/TGBridgeChatListSignals.m +++ b/Watch/Bridge/TGBridgeChatListSignals.m @@ -1,7 +1,7 @@ #import "TGBridgeChatListSignals.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgeChatListSignals diff --git a/Watch/Bridge/TGBridgeChatMessageListSignals.m b/Watch/Bridge/TGBridgeChatMessageListSignals.m index b06600c807..d5ee468fe2 100644 --- a/Watch/Bridge/TGBridgeChatMessageListSignals.m +++ b/Watch/Bridge/TGBridgeChatMessageListSignals.m @@ -1,7 +1,7 @@ #import "TGBridgeChatMessageListSignals.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeMessage.h" -#import "TGBridgeUser.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgeChatMessageListSignals diff --git a/Watch/Bridge/TGBridgeClient.m b/Watch/Bridge/TGBridgeClient.m index 92bb803261..d2e05a8da1 100644 --- a/Watch/Bridge/TGBridgeClient.m +++ b/Watch/Bridge/TGBridgeClient.m @@ -1,11 +1,11 @@ #import "TGBridgeClient.h" -#import "TGBridgeCommon.h" -#import "TGBridgeChat.h" + +#import + #import "TGWatchCommon.h" #import -#import "TGBridgeContext.h" #import "TGFileCache.h" #import "TGBridgeStickersSignals.h" diff --git a/Watch/Bridge/TGBridgeContactsSignals.m b/Watch/Bridge/TGBridgeContactsSignals.m index 6c16d039ba..e944eb1fd1 100644 --- a/Watch/Bridge/TGBridgeContactsSignals.m +++ b/Watch/Bridge/TGBridgeContactsSignals.m @@ -1,6 +1,7 @@ #import "TGBridgeContactsSignals.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeUser.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgeContactsSignals diff --git a/Watch/Bridge/TGBridgeConversationSignals.m b/Watch/Bridge/TGBridgeConversationSignals.m index 6927c25b2e..e1f68a490a 100644 --- a/Watch/Bridge/TGBridgeConversationSignals.m +++ b/Watch/Bridge/TGBridgeConversationSignals.m @@ -1,7 +1,7 @@ #import "TGBridgeConversationSignals.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgeConversationSignals diff --git a/Watch/Bridge/TGBridgeLocationSignals.m b/Watch/Bridge/TGBridgeLocationSignals.m index fe850eaab7..718a21e858 100644 --- a/Watch/Bridge/TGBridgeLocationSignals.m +++ b/Watch/Bridge/TGBridgeLocationSignals.m @@ -1,7 +1,7 @@ #import "TGBridgeLocationSignals.h" -#import "TGBridgeCommon.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeLocationVenue.h" + +#import + #import "TGBridgeClient.h" #import diff --git a/Watch/Bridge/TGBridgeLocationVenue+TGTableItem.h b/Watch/Bridge/TGBridgeLocationVenue+TGTableItem.h index 06f1293d86..e9ac419be6 100644 --- a/Watch/Bridge/TGBridgeLocationVenue+TGTableItem.h +++ b/Watch/Bridge/TGBridgeLocationVenue+TGTableItem.h @@ -1,4 +1,5 @@ -#import "TGBridgeLocationVenue.h" +#import + #import "WKInterfaceTable+TGDataDrivenTable.h" @interface TGBridgeLocationVenue (TGTableItem) diff --git a/Watch/Bridge/TGBridgeMediaSignals.h b/Watch/Bridge/TGBridgeMediaSignals.h index 0157c31bc8..d7443c8ffc 100644 --- a/Watch/Bridge/TGBridgeMediaSignals.h +++ b/Watch/Bridge/TGBridgeMediaSignals.h @@ -1,5 +1,5 @@ #import -#import "TGBridgeSubscriptions.h" +#import @class TGBridgeImageMediaAttachment; @class TGBridgeVideoMediaAttachment; diff --git a/Watch/Bridge/TGBridgeMediaSignals.m b/Watch/Bridge/TGBridgeMediaSignals.m index d915ed246a..2952737d0a 100644 --- a/Watch/Bridge/TGBridgeMediaSignals.m +++ b/Watch/Bridge/TGBridgeMediaSignals.m @@ -1,7 +1,7 @@ #import "TGBridgeMediaSignals.h" -#import "TGBridgeImageMediaAttachment.h" -#import "TGBridgeVideoMediaAttachment.h" -#import "TGBridgeDocumentMediaAttachment.h" + +#import + #import "TGBridgeClient.h" #import "TGFileCache.h" diff --git a/Watch/Bridge/TGBridgeMessage+TGTableItem.h b/Watch/Bridge/TGBridgeMessage+TGTableItem.h index 253c3d9449..d7da46a6e2 100644 --- a/Watch/Bridge/TGBridgeMessage+TGTableItem.h +++ b/Watch/Bridge/TGBridgeMessage+TGTableItem.h @@ -1,4 +1,5 @@ -#import "TGBridgeMessage.h" +#import + #import "WKInterfaceTable+TGDataDrivenTable.h" @interface TGBridgeMessage (TGTableItem) diff --git a/Watch/Bridge/TGBridgeMessageEntitiesAttachment.h b/Watch/Bridge/TGBridgeMessageEntitiesAttachment.h deleted file mode 100644 index 7913d8316e..0000000000 --- a/Watch/Bridge/TGBridgeMessageEntitiesAttachment.h +++ /dev/null @@ -1,8 +0,0 @@ -#import "TGBridgeMediaAttachment.h" -#import "TGBridgeMessageEntities.h" - -@interface TGBridgeMessageEntitiesAttachment : TGBridgeMediaAttachment - -@property (nonatomic, strong) NSArray *entities; - -@end diff --git a/Watch/Bridge/TGBridgePeerSettingsSignals.h b/Watch/Bridge/TGBridgePeerSettingsSignals.h index be84781194..8078a0a938 100644 --- a/Watch/Bridge/TGBridgePeerSettingsSignals.h +++ b/Watch/Bridge/TGBridgePeerSettingsSignals.h @@ -1,5 +1,4 @@ #import -#import "TGBridgePeerNotificationSettings.h" @interface TGBridgePeerSettingsSignals : NSObject diff --git a/Watch/Bridge/TGBridgePeerSettingsSignals.m b/Watch/Bridge/TGBridgePeerSettingsSignals.m index 1a7978870c..8663181e7c 100644 --- a/Watch/Bridge/TGBridgePeerSettingsSignals.m +++ b/Watch/Bridge/TGBridgePeerSettingsSignals.m @@ -1,5 +1,7 @@ #import "TGBridgePeerSettingsSignals.h" -#import "TGBridgeSubscriptions.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgePeerSettingsSignals diff --git a/Watch/Bridge/TGBridgeRemoteSignals.m b/Watch/Bridge/TGBridgeRemoteSignals.m index 24fa1e0b99..5e8a78739f 100644 --- a/Watch/Bridge/TGBridgeRemoteSignals.m +++ b/Watch/Bridge/TGBridgeRemoteSignals.m @@ -1,5 +1,7 @@ #import "TGBridgeRemoteSignals.h" -#import "TGBridgeSubscriptions.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgeRemoteSignals diff --git a/Watch/Bridge/TGBridgeSendMessageSignals.h b/Watch/Bridge/TGBridgeSendMessageSignals.h index 81eda0f5b6..c76a18808e 100644 --- a/Watch/Bridge/TGBridgeSendMessageSignals.h +++ b/Watch/Bridge/TGBridgeSendMessageSignals.h @@ -1,7 +1,6 @@ #import -#import "TGBridgeDocumentMediaAttachment.h" -#import "TGBridgeLocationMediaAttachment.h" +#import @interface TGBridgeSendMessageSignals : NSObject diff --git a/Watch/Bridge/TGBridgeSendMessageSignals.m b/Watch/Bridge/TGBridgeSendMessageSignals.m index 4a7bfa666d..0c24241f26 100644 --- a/Watch/Bridge/TGBridgeSendMessageSignals.m +++ b/Watch/Bridge/TGBridgeSendMessageSignals.m @@ -1,6 +1,7 @@ #import "TGBridgeSendMessageSignals.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeMessage.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgeSendMessageSignals diff --git a/Watch/Bridge/TGBridgeStateSignal.m b/Watch/Bridge/TGBridgeStateSignal.m index 915e7d0a43..3de0d1514c 100644 --- a/Watch/Bridge/TGBridgeStateSignal.m +++ b/Watch/Bridge/TGBridgeStateSignal.m @@ -1,5 +1,7 @@ #import "TGBridgeStateSignal.h" -#import "TGBridgeSubscriptions.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgeStateSignal diff --git a/Watch/Bridge/TGBridgeStickerPack.h b/Watch/Bridge/TGBridgeStickerPack.h index e37f8b26cc..e372ecc8e0 100644 --- a/Watch/Bridge/TGBridgeStickerPack.h +++ b/Watch/Bridge/TGBridgeStickerPack.h @@ -1,4 +1,4 @@ -#import "TGBridgeCommon.h" +#import @interface TGBridgeStickerPack : NSObject { diff --git a/Watch/Bridge/TGBridgeStickerPack.m b/Watch/Bridge/TGBridgeStickerPack.m index da2711aec8..e0c45bf373 100644 --- a/Watch/Bridge/TGBridgeStickerPack.m +++ b/Watch/Bridge/TGBridgeStickerPack.m @@ -1,5 +1,6 @@ #import "TGBridgeStickerPack.h" -#import "TGBridgeDocumentMediaAttachment.h" + +#import NSString *const TGBridgeStickerPackBuiltInKey = @"builtin"; NSString *const TGBridgeStickerPackTitleKey = @"title"; diff --git a/Watch/Bridge/TGBridgeStickersSignals.m b/Watch/Bridge/TGBridgeStickersSignals.m index dd2e3afde3..b5c7d9e262 100644 --- a/Watch/Bridge/TGBridgeStickersSignals.m +++ b/Watch/Bridge/TGBridgeStickersSignals.m @@ -1,7 +1,8 @@ #import "TGBridgeStickersSignals.h" -#import "TGBridgeSubscriptions.h" + +#import + #import "TGBridgeStickerPack.h" -#import "TGBridgeDocumentMediaAttachment.h" #import "TGBridgeClient.h" @implementation TGBridgeStickersSignals diff --git a/Watch/Bridge/TGBridgeUser+TGTableItem.h b/Watch/Bridge/TGBridgeUser+TGTableItem.h index 4f8c2bdff9..a52adbcc55 100644 --- a/Watch/Bridge/TGBridgeUser+TGTableItem.h +++ b/Watch/Bridge/TGBridgeUser+TGTableItem.h @@ -1,4 +1,5 @@ -#import "TGBridgeUser.h" +#import + #import "WKInterfaceTable+TGDataDrivenTable.h" @interface TGBridgeUser (TGTableItem) diff --git a/Watch/Bridge/TGBridgeUserInfoSignals.m b/Watch/Bridge/TGBridgeUserInfoSignals.m index 753ee5ecfa..bdd2978190 100644 --- a/Watch/Bridge/TGBridgeUserInfoSignals.m +++ b/Watch/Bridge/TGBridgeUserInfoSignals.m @@ -1,6 +1,7 @@ #import "TGBridgeUserInfoSignals.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeUser.h" + +#import + #import "TGBridgeClient.h" @implementation TGBridgeUserInfoSignals diff --git a/Watch/Extension/TGAvatarViewModel.m b/Watch/Extension/TGAvatarViewModel.m index 4b4f31f30a..a841af8629 100644 --- a/Watch/Extension/TGAvatarViewModel.m +++ b/Watch/Extension/TGAvatarViewModel.m @@ -1,8 +1,6 @@ #import "TGAvatarViewModel.h" -#import "TGBridgeContext.h" -#import "TGBridgeUser.h" -#import "TGBridgeChat.h" +#import #import "TGStringUtils.h" #import "TGWatchColor.h" diff --git a/Watch/Extension/TGBotCommandController.m b/Watch/Extension/TGBotCommandController.m index 7ff6606da7..9db41226a4 100644 --- a/Watch/Extension/TGBotCommandController.m +++ b/Watch/Extension/TGBotCommandController.m @@ -1,10 +1,10 @@ #import "TGBotCommandController.h" + +#import + #import "TGWatchCommon.h" #import -#import "TGBridgeUser.h" -#import "TGBridgeBotCommandInfo.h" - #import "WKInterfaceTable+TGDataDrivenTable.h" #import "TGUserRowController.h" diff --git a/Watch/Extension/TGBridgeUserCache.m b/Watch/Extension/TGBridgeUserCache.m index 5477c6bee4..9ba7651bbc 100644 --- a/Watch/Extension/TGBridgeUserCache.m +++ b/Watch/Extension/TGBridgeUserCache.m @@ -1,11 +1,11 @@ #import "TGBridgeUserCache.h" + +#import + #import "TGFileCache.h" #import -#import "TGBridgeUser.h" -#import "TGBridgeBotInfo.h" - @interface TGBridgeUserCache () { NSMutableDictionary *_userByUid; diff --git a/Watch/Extension/TGComposeController.m b/Watch/Extension/TGComposeController.m index a2ab1c9ad6..c14ac8352c 100644 --- a/Watch/Extension/TGComposeController.m +++ b/Watch/Extension/TGComposeController.m @@ -1,7 +1,9 @@ #import "TGComposeController.h" + +#import + #import "TGWatchCommon.h" #import "TGBridgeSendMessageSignals.h" -#import "TGBridgeUser.h" #import "WKInterfaceGroup+Signals.h" #import "TGBridgeMediaSignals.h" diff --git a/Watch/Extension/TGGroupInfoController.m b/Watch/Extension/TGGroupInfoController.m index 1d56836583..77117a8f45 100644 --- a/Watch/Extension/TGGroupInfoController.m +++ b/Watch/Extension/TGGroupInfoController.m @@ -1,13 +1,13 @@ #import "TGGroupInfoController.h" + +#import + #import "TGWatchCommon.h" #import "TGStringUtils.h" -#import "TGBridgeContext.h" #import "TGBridgeConversationSignals.h" #import "TGBridgePeerSettingsSignals.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" #import "WKInterfaceTable+TGDataDrivenTable.h" #import "TGTableDeltaUpdater.h" diff --git a/Watch/Extension/TGGroupInfoHeaderController.m b/Watch/Extension/TGGroupInfoHeaderController.m index 4432e7599b..b70959ae42 100644 --- a/Watch/Extension/TGGroupInfoHeaderController.m +++ b/Watch/Extension/TGGroupInfoHeaderController.m @@ -1,15 +1,13 @@ #import "TGGroupInfoHeaderController.h" + +#import + #import "TGWatchCommon.h" #import "TGStringUtils.h" #import "WKInterfaceGroup+Signals.h" #import "TGBridgeMediaSignals.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" - -#import "TGBridgeContext.h" - NSString *const TGGroupInfoHeaderIdentifier = @"TGGroupInfoHeader"; @interface TGGroupInfoHeaderController () diff --git a/Watch/Extension/TGInputController.m b/Watch/Extension/TGInputController.m index e9e3f32367..238d0ac387 100644 --- a/Watch/Extension/TGInputController.m +++ b/Watch/Extension/TGInputController.m @@ -1,6 +1,8 @@ #import "TGInputController.h" + +#import + #import "TGWatchCommon.h" -#import "TGBridgeCommon.h" #import "TGInterfaceController.h" #import "TGFileCache.h" diff --git a/Watch/Extension/TGLocationController.m b/Watch/Extension/TGLocationController.m index a92e9b1c1d..2eaee71eb5 100644 --- a/Watch/Extension/TGLocationController.m +++ b/Watch/Extension/TGLocationController.m @@ -1,10 +1,12 @@ #import "TGLocationController.h" + +#import + #import "TGWatchCommon.h" #import "TGBridgeLocationSignals.h" #import "TGBridgeLocationVenue+TGTableItem.h" -#import "TGBridgeLocationMediaAttachment.h" #import "WKInterfaceTable+TGDataDrivenTable.h" #import "TGTableDeltaUpdater.h" diff --git a/Watch/Extension/TGLocationVenueRowController.m b/Watch/Extension/TGLocationVenueRowController.m index c9607d1ab0..a00135ca9d 100644 --- a/Watch/Extension/TGLocationVenueRowController.m +++ b/Watch/Extension/TGLocationVenueRowController.m @@ -1,6 +1,6 @@ #import "TGLocationVenueRowController.h" -#import "TGBridgeLocationVenue.h" +#import NSString *const TGLocationVenueRowIdentifier = @"TGLocationVenueRow"; diff --git a/Watch/Extension/TGMessageViewController.m b/Watch/Extension/TGMessageViewController.m index eafa9cfc0d..f6929f7b37 100644 --- a/Watch/Extension/TGMessageViewController.m +++ b/Watch/Extension/TGMessageViewController.m @@ -1,14 +1,12 @@ #import "TGMessageViewController.h" + +#import + #import "TGWatchCommon.h" #import "TGBridgeSendMessageSignals.h" #import "TGBridgeRemoteSignals.h" #import "TGBridgeAudioSignals.h" -#import "TGBridgePeerIdAdapter.h" - -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" -#import "TGBridgeMessage.h" #import "TGBridgeUserCache.h" #import "WKInterfaceTable+TGDataDrivenTable.h" diff --git a/Watch/Extension/TGMessageViewFooterController.m b/Watch/Extension/TGMessageViewFooterController.m index d0aaaa7caa..190a1d5cb7 100644 --- a/Watch/Extension/TGMessageViewFooterController.m +++ b/Watch/Extension/TGMessageViewFooterController.m @@ -1,9 +1,10 @@ #import "TGMessageViewFooterController.h" + +#import + #import "TGWatchCommon.h" #import "TGDateUtils.h" -#import "TGBridgeMessage.h" - NSString *const TGMessageViewFooterIdentifier = @"TGMessageViewFooter"; @implementation TGMessageViewFooterController diff --git a/Watch/Extension/TGMessageViewMessageRowController.m b/Watch/Extension/TGMessageViewMessageRowController.m index ce10c48756..a377a119cc 100644 --- a/Watch/Extension/TGMessageViewMessageRowController.m +++ b/Watch/Extension/TGMessageViewMessageRowController.m @@ -1,4 +1,7 @@ #import "TGMessageViewMessageRowController.h" + +#import + #import "TGWatchCommon.h" #import "TGExtensionDelegate.h" @@ -11,14 +14,8 @@ #import "TGBridgeMediaSignals.h" -#import "TGBridgeUser.h" -#import "TGBridgeMessage.h" #import "TGBridgeUserCache.h" -#import "TGBridgeContext.h" - -#import "TGBridgePeerIdAdapter.h" - NSString *const TGMessageViewMessageRowIdentifier = @"TGMessageViewMessageRow"; @interface TGMessageViewMessageRowController () diff --git a/Watch/Extension/TGMessageViewModel.m b/Watch/Extension/TGMessageViewModel.m index ff4f47e1f8..052cba63ec 100644 --- a/Watch/Extension/TGMessageViewModel.m +++ b/Watch/Extension/TGMessageViewModel.m @@ -1,4 +1,7 @@ #import "TGMessageViewModel.h" + +#import + #import "TGWatchCommon.h" #import "TGStringUtils.h" #import "TGGeometry.h" @@ -6,13 +9,8 @@ #import "WKInterfaceImage+Signals.h" #import "WKInterfaceGroup+Signals.h" -#import "TGBridgeUser.h" -#import "TGBridgeChat.h" -#import "TGBridgeMessage.h" #import "TGBridgeUserCache.h" -#import "TGBridgeContext.h" - #import "TGBridgeMediaSignals.h" @implementation TGMessageViewModel diff --git a/Watch/Extension/TGMessageViewWebPageRowController.m b/Watch/Extension/TGMessageViewWebPageRowController.m index ce3db6fea6..2988c9f886 100644 --- a/Watch/Extension/TGMessageViewWebPageRowController.m +++ b/Watch/Extension/TGMessageViewWebPageRowController.m @@ -1,12 +1,11 @@ #import "TGMessageViewWebPageRowController.h" +#import + #import "WKInterfaceGroup+Signals.h" #import "TGBridgeMediaSignals.h" -#import "TGBridgeMessage.h" #import "TGMessageViewModel.h" -#import "TGBridgeImageMediaAttachment.h" -#import "TGBridgeWebPageMediaAttachment.h" NSString *const TGMessageViewWebPageRowIdentifier = @"TGMessageViewWebPageRow"; diff --git a/Watch/Extension/TGNeoAttachmentViewModel.m b/Watch/Extension/TGNeoAttachmentViewModel.m index 9af87799d1..5829e8a35f 100644 --- a/Watch/Extension/TGNeoAttachmentViewModel.m +++ b/Watch/Extension/TGNeoAttachmentViewModel.m @@ -1,13 +1,13 @@ #import "TGNeoAttachmentViewModel.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoImageViewModel.h" #import "TGNeoLabelViewModel.h" #import "TGStringUtils.h" -#import "TGBridgeMessage.h" -#import "TGBridgeUser.h" - @interface TGNeoAttachmentViewModel () { TGNeoImageViewModel *_iconModel; diff --git a/Watch/Extension/TGNeoAudioMessageViewModel.m b/Watch/Extension/TGNeoAudioMessageViewModel.m index b42693ad06..1ac4c08923 100644 --- a/Watch/Extension/TGNeoAudioMessageViewModel.m +++ b/Watch/Extension/TGNeoAudioMessageViewModel.m @@ -1,6 +1,8 @@ #import "TGNeoAudioMessageViewModel.h" + +#import + #import "TGWatchCommon.h" -#import "TGBridgeMessage.h" @interface TGNeoAudioMessageViewModel () { diff --git a/Watch/Extension/TGNeoBubbleMessageViewModel.m b/Watch/Extension/TGNeoBubbleMessageViewModel.m index 660c890fa2..fa07d55b9d 100644 --- a/Watch/Extension/TGNeoBubbleMessageViewModel.m +++ b/Watch/Extension/TGNeoBubbleMessageViewModel.m @@ -1,15 +1,12 @@ #import "TGNeoBubbleMessageViewModel.h" + +#import + #import "TGNeoBackgroundViewModel.h" #import "TGExtensionDelegate.h" #import "TGWatchColor.h" -#import "TGBridgeContext.h" -#import "TGBridgeMessage.h" -#import "TGBridgeUser.h" - -#import "TGBridgePeerIdAdapter.h" - const UIEdgeInsets TGNeoBubbleMessageViewModelInsets = { 4.5, 11, 9, 11 }; const CGFloat TGNeoBubbleMessageMetaSpacing = 5.0f; const CGFloat TGNeoBubbleHeaderSpacing = 2.0f; diff --git a/Watch/Extension/TGNeoChatRowController.m b/Watch/Extension/TGNeoChatRowController.m index 540c9d21b8..9b0dcf4e30 100644 --- a/Watch/Extension/TGNeoChatRowController.m +++ b/Watch/Extension/TGNeoChatRowController.m @@ -1,8 +1,8 @@ #import "TGNeoChatRowController.h" + +#import + #import "TGWatchCommon.h" -#import "TGBridgeContext.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" #import "TGBridgeUserCache.h" #import "TGNeoChatViewModel.h" diff --git a/Watch/Extension/TGNeoChatViewModel.m b/Watch/Extension/TGNeoChatViewModel.m index 266f7e9014..ccdc0de8af 100644 --- a/Watch/Extension/TGNeoChatViewModel.m +++ b/Watch/Extension/TGNeoChatViewModel.m @@ -1,13 +1,12 @@ #import "TGNeoChatViewModel.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoLabelViewModel.h" #import "TGNeoImageViewModel.h" #import "TGNeoAttachmentViewModel.h" -#import "TGBridgeContext.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" - #import "TGExtensionDelegate.h" #import "TGStringUtils.h" #import "TGDateUtils.h" diff --git a/Watch/Extension/TGNeoChatsController.m b/Watch/Extension/TGNeoChatsController.m index 333c97ac41..9a546a3762 100644 --- a/Watch/Extension/TGNeoChatsController.m +++ b/Watch/Extension/TGNeoChatsController.m @@ -1,12 +1,12 @@ #import "TGNeoChatsController.h" + +#import + #import "TGWatchCommon.h" #import "WKInterfaceTable+TGDataDrivenTable.h" #import "TGTableDeltaUpdater.h" #import "TGInterfaceMenu.h" -#import "TGBridgeContext.h" -#import "TGBridgeUser.h" -#import "TGBridgeChat.h" #import "TGBridgeUserCache.h" #import "TGBridgeClient.h" diff --git a/Watch/Extension/TGNeoContactMessageViewModel.m b/Watch/Extension/TGNeoContactMessageViewModel.m index 396573a1aa..a67c90e6b8 100644 --- a/Watch/Extension/TGNeoContactMessageViewModel.m +++ b/Watch/Extension/TGNeoContactMessageViewModel.m @@ -1,11 +1,10 @@ #import "TGNeoContactMessageViewModel.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoLabelViewModel.h" -#import "TGBridgeContext.h" -#import "TGBridgeMessage.h" -#import "TGBridgeUser.h" - #import "TGStringUtils.h" @interface TGNeoContactMessageViewModel () diff --git a/Watch/Extension/TGNeoConversationController.m b/Watch/Extension/TGNeoConversationController.m index e904d6160e..4c099a70c3 100644 --- a/Watch/Extension/TGNeoConversationController.m +++ b/Watch/Extension/TGNeoConversationController.m @@ -1,4 +1,7 @@ #import "TGNeoConversationController.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoChatsController.h" @@ -10,12 +13,7 @@ #import "TGInterfaceMenu.h" #import "TGBridgeClient.h" -#import "TGBridgeContext.h" -#import "TGBridgeUser.h" -#import "TGBridgeChat.h" -#import "TGBridgeChatMessages.h" #import "TGBridgeMessage+TGTableItem.h" -#import "TGBridgeBotInfo.h" #import "TGBridgeBotReplyMarkup.h" #import "TGBridgeUserCache.h" diff --git a/Watch/Extension/TGNeoConversationStaticRowController.m b/Watch/Extension/TGNeoConversationStaticRowController.m index 04803dc660..ad7dc6a847 100644 --- a/Watch/Extension/TGNeoConversationStaticRowController.m +++ b/Watch/Extension/TGNeoConversationStaticRowController.m @@ -1,5 +1,7 @@ #import "TGNeoConversationStaticRowController.h" -#import "TGBridgeMessage.h" + +#import + #import "TGBridgeUserCache.h" #import "TGChatInfo.h" diff --git a/Watch/Extension/TGNeoFileMessageViewModel.m b/Watch/Extension/TGNeoFileMessageViewModel.m index 8da4a3f15e..e68f0ce0f9 100644 --- a/Watch/Extension/TGNeoFileMessageViewModel.m +++ b/Watch/Extension/TGNeoFileMessageViewModel.m @@ -1,6 +1,8 @@ #import "TGNeoFileMessageViewModel.h" + +#import + #import "TGNeoImageViewModel.h" -#import "TGBridgeMessage.h" #import "TGStringUtils.h" diff --git a/Watch/Extension/TGNeoForwardHeaderViewModel.m b/Watch/Extension/TGNeoForwardHeaderViewModel.m index 9d0f03167e..177119eb55 100644 --- a/Watch/Extension/TGNeoForwardHeaderViewModel.m +++ b/Watch/Extension/TGNeoForwardHeaderViewModel.m @@ -1,10 +1,10 @@ #import "TGNeoForwardHeaderViewModel.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoLabelViewModel.h" -#import "TGBridgeUser.h" -#import "TGBridgeChat.h" - const CGFloat TGNeoForwardHeaderHeight = 29; @interface TGNeoForwardHeaderViewModel () diff --git a/Watch/Extension/TGNeoMediaMessageViewModel.m b/Watch/Extension/TGNeoMediaMessageViewModel.m index 17a048a7c3..078c46f35d 100644 --- a/Watch/Extension/TGNeoMediaMessageViewModel.m +++ b/Watch/Extension/TGNeoMediaMessageViewModel.m @@ -1,6 +1,8 @@ #import "TGNeoMediaMessageViewModel.h" + +#import + #import "TGWatchCommon.h" -#import "TGBridgeMessage.h" #import "TGGeometry.h" diff --git a/Watch/Extension/TGNeoMessageViewModel.m b/Watch/Extension/TGNeoMessageViewModel.m index fa4f83e79c..555211c67f 100644 --- a/Watch/Extension/TGNeoMessageViewModel.m +++ b/Watch/Extension/TGNeoMessageViewModel.m @@ -1,4 +1,7 @@ #import "TGNeoMessageViewModel.h" + +#import + #import "TGNeoTextMessageViewModel.h" #import "TGNeoSmiliesMessageViewModel.h" #import "TGNeoMediaMessageViewModel.h" @@ -16,8 +19,6 @@ #import "TGStringUtils.h" -#import "TGBridgePeerIdAdapter.h" -#import "TGBridgeMessage.h" #import "TGBridgeUserCache.h" NSString *const TGNeoContentInset = @"contentInset"; diff --git a/Watch/Extension/TGNeoReplyHeaderViewModel.m b/Watch/Extension/TGNeoReplyHeaderViewModel.m index 8eb5b98bbf..f1e6f58e95 100644 --- a/Watch/Extension/TGNeoReplyHeaderViewModel.m +++ b/Watch/Extension/TGNeoReplyHeaderViewModel.m @@ -1,14 +1,11 @@ #import "TGNeoReplyHeaderViewModel.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoLabelViewModel.h" #import "TGNeoAttachmentViewModel.h" -#import "TGBridgeMessage.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" -#import "TGBridgeReplyMessageMediaAttachment.h" -#import "TGBridgeVideoMediaAttachment.h" - const CGFloat TGNeoReplyHeaderHeight = 29.0f; const CGFloat TGNeoReplyHeaderLineWidth = 2.0f; const CGFloat TGNeoReplyHeaderSpacing = 4.0f; diff --git a/Watch/Extension/TGNeoRowController.m b/Watch/Extension/TGNeoRowController.m index 0fcc0433f9..6ac19ec741 100644 --- a/Watch/Extension/TGNeoRowController.m +++ b/Watch/Extension/TGNeoRowController.m @@ -1,4 +1,7 @@ #import "TGNeoRowController.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoConversationRowController.h" #import "TGNeoConversationSimpleRowController.h" @@ -12,8 +15,6 @@ #import "TGNeoBubbleMessageViewModel.h" #import "TGNeoStickerMessageViewModel.h" -#import "TGBridgeMessage.h" - #import "WKInterfaceGroup+Signals.h" #import "TGBridgeMediaSignals.h" diff --git a/Watch/Extension/TGNeoServiceMessageViewModel.m b/Watch/Extension/TGNeoServiceMessageViewModel.m index 71f0d88372..2fa384c081 100644 --- a/Watch/Extension/TGNeoServiceMessageViewModel.m +++ b/Watch/Extension/TGNeoServiceMessageViewModel.m @@ -1,13 +1,11 @@ #import "TGNeoServiceMessageViewModel.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoLabelViewModel.h" - -#import "TGBridgeMessage.h" -#import "TGBridgeUser.h" #import "TGChatInfo.h" -#import "TGBridgePeerIdAdapter.h" - const UIEdgeInsets TGNeoServiceMessageInsets = { 2, 0, 6, 0 }; const UIEdgeInsets TGNeoChatInfoInsets = { 12, 0, 12, 0 }; diff --git a/Watch/Extension/TGNeoSmiliesMessageViewModel.m b/Watch/Extension/TGNeoSmiliesMessageViewModel.m index fd97837015..6fec0fd0c3 100644 --- a/Watch/Extension/TGNeoSmiliesMessageViewModel.m +++ b/Watch/Extension/TGNeoSmiliesMessageViewModel.m @@ -1,14 +1,12 @@ #import "TGNeoSmiliesMessageViewModel.h" + +#import + #import "TGNeoBubbleMessageViewModel.h" #import "TGNeoLabelViewModel.h" -#import "TGBridgeContext.h" -#import "TGBridgeMessage.h" - #import "TGWatchColor.h" -#import "TGBridgePeerIdAdapter.h" - const CGFloat TGNeoSmiliesMessageHeight = 39; @interface TGNeoSmiliesMessageViewModel () diff --git a/Watch/Extension/TGNeoStickerMessageViewModel.m b/Watch/Extension/TGNeoStickerMessageViewModel.m index 56bf7ddfc6..69e878d415 100644 --- a/Watch/Extension/TGNeoStickerMessageViewModel.m +++ b/Watch/Extension/TGNeoStickerMessageViewModel.m @@ -1,4 +1,7 @@ #import "TGNeoStickerMessageViewModel.h" + +#import + #import "TGWatchCommon.h" #import "TGNeoLabelViewModel.h" @@ -6,11 +9,7 @@ #import "TGGeometry.h" -#import "TGBridgeContext.h" -#import "TGBridgeMessage.h" - #import "../Extension/TGStringUtils.h" -#import "TGBridgePeerIdAdapter.h" @interface TGNeoStickerMessageViewModel () { diff --git a/Watch/Extension/TGNeoTextMessageViewModel.m b/Watch/Extension/TGNeoTextMessageViewModel.m index 2efe822100..2fb4e2da08 100644 --- a/Watch/Extension/TGNeoTextMessageViewModel.m +++ b/Watch/Extension/TGNeoTextMessageViewModel.m @@ -1,9 +1,10 @@ #import "TGNeoTextMessageViewModel.h" + +#import + #import "TGNeoLabelViewModel.h" #import "TGMessageViewModel.h" -#import "TGBridgeMessage.h" - @interface TGNeoTextMessageViewModel () { TGNeoLabelViewModel *_textModel; diff --git a/Watch/Extension/TGNeoUnsupportedMessageViewModel.m b/Watch/Extension/TGNeoUnsupportedMessageViewModel.m index 01d19f2676..4e15abe51a 100644 --- a/Watch/Extension/TGNeoUnsupportedMessageViewModel.m +++ b/Watch/Extension/TGNeoUnsupportedMessageViewModel.m @@ -1,6 +1,6 @@ #import "TGNeoUnsupportedMessageViewModel.h" #import "TGWatchCommon.h" -#import "TGBridgeMessage.h" +#import @interface TGNeoUnsupportedMessageViewModel () { diff --git a/Watch/Extension/TGNeoVenueMessageViewModel.m b/Watch/Extension/TGNeoVenueMessageViewModel.m index 8cb4cc3bdf..c32842fcdf 100644 --- a/Watch/Extension/TGNeoVenueMessageViewModel.m +++ b/Watch/Extension/TGNeoVenueMessageViewModel.m @@ -1,6 +1,8 @@ #import "TGNeoVenueMessageViewModel.h" + +#import + #import "TGNeoImageViewModel.h" -#import "TGBridgeMessage.h" @interface TGNeoVenueMessageViewModel () { diff --git a/Watch/Extension/TGNotificationController.m b/Watch/Extension/TGNotificationController.m index 9e3a1e3f65..d5260db5f2 100644 --- a/Watch/Extension/TGNotificationController.m +++ b/Watch/Extension/TGNotificationController.m @@ -1,4 +1,7 @@ #import "TGNotificationController.h" + +#import + #import "TGWatchCommon.h" #import "TGStringUtils.h" #import "TGLocationUtils.h" @@ -10,15 +13,8 @@ #import "TGBridgeMediaSignals.h" #import "TGBridgeClient.h" -#import "TGBridgeSubscriptions.h" -#import "TGBridgeChatMessages.h" -#import "TGBridgeMessage.h" -#import "TGBridgeChat.h" -#import "TGBridgeUser.h" #import "TGBridgeUserCache.h" -#import "TGBridgePeerIdAdapter.h" - #import #import diff --git a/Watch/Extension/TGStickersRowController.m b/Watch/Extension/TGStickersRowController.m index ca206876eb..70a7b9a051 100644 --- a/Watch/Extension/TGStickersRowController.m +++ b/Watch/Extension/TGStickersRowController.m @@ -1,8 +1,9 @@ #import "TGStickersRowController.h" +#import + #import "WKInterfaceGroup+Signals.h" #import "TGBridgeMediaSignals.h" -#import "TGBridgeDocumentMediaAttachment.h" NSString *const TGStickersRowIdentifier = @"TGStickersRow"; diff --git a/Watch/Extension/TGUserInfoController.m b/Watch/Extension/TGUserInfoController.m index b1b00e300c..c3eb9d87e0 100644 --- a/Watch/Extension/TGUserInfoController.m +++ b/Watch/Extension/TGUserInfoController.m @@ -2,17 +2,13 @@ #import "TGWatchCommon.h" #import "TGStringUtils.h" -#import "TGBridgeContext.h" +#import #import "TGBridgeBotSignals.h" #import "TGBridgeUserInfoSignals.h" #import "TGBridgePeerSettingsSignals.h" -#import "TGBridgeUser.h" -#import "TGBridgeBotInfo.h" #import "TGBridgeUserCache.h" #import "TGUserHandle.h" -#import "TGBridgeChat.h" - #import "TGTableDeltaUpdater.h" #import "WKInterfaceTable+TGDataDrivenTable.h" diff --git a/Watch/Extension/TGUserInfoHeaderController.m b/Watch/Extension/TGUserInfoHeaderController.m index 05b72ae420..d4805e7250 100644 --- a/Watch/Extension/TGUserInfoHeaderController.m +++ b/Watch/Extension/TGUserInfoHeaderController.m @@ -1,4 +1,7 @@ #import "TGUserInfoHeaderController.h" + +#import + #import "TGWatchCommon.h" #import "TGDateUtils.h" #import "TGStringUtils.h" @@ -7,11 +10,6 @@ #import "TGBridgeMediaSignals.h" -#import "TGBridgeUser.h" -#import "TGBridgeChat.h" - -#import "TGBridgeContext.h" - NSString *const TGUserInfoHeaderIdentifier = @"TGUserInfoHeader"; @interface TGUserInfoHeaderController () diff --git a/Watch/Extension/TGUserRowController.m b/Watch/Extension/TGUserRowController.m index 4fdd5e6a61..8264c144e2 100644 --- a/Watch/Extension/TGUserRowController.m +++ b/Watch/Extension/TGUserRowController.m @@ -1,4 +1,7 @@ #import "TGUserRowController.h" + +#import + #import "TGWatchCommon.h" #import "TGDateUtils.h" #import "TGStringUtils.h" @@ -7,11 +10,6 @@ #import "TGBridgeMediaSignals.h" -#import "TGBridgeUser.h" -#import "TGBridgeChat.h" -#import "TGBridgeBotCommandInfo.h" -#import "TGBridgeContext.h" - NSString *const TGUserRowIdentifier = @"TGUserRow"; @interface TGUserRowController () diff --git a/Watch/Extension/TGWatchColor.m b/Watch/Extension/TGWatchColor.m index 515141dbb3..fcbf7d1776 100644 --- a/Watch/Extension/TGWatchColor.m +++ b/Watch/Extension/TGWatchColor.m @@ -1,5 +1,5 @@ #import "TGWatchColor.h" -#import "TGBridgePeerIdAdapter.h" +#import #import @implementation UIColor (TGColor) diff --git a/Widget/TodayViewController.swift b/Widget/TodayViewController.swift index f8c91c295f..a06923c2c7 100644 --- a/Widget/TodayViewController.swift +++ b/Widget/TodayViewController.swift @@ -3,6 +3,7 @@ import TelegramCore import SwiftSignalKit import Postbox import NotificationCenter +import BuildConfig private var installedSharedLogger = false diff --git a/Widget/Widget-Bridging-Header.h b/Widget/Widget-Bridging-Header.h index fd2b66c5aa..16747def3f 100644 --- a/Widget/Widget-Bridging-Header.h +++ b/Widget/Widget-Bridging-Header.h @@ -1,6 +1,4 @@ #ifndef Widget_Bridging_Header_h #define Widget_Bridging_Header_h -#import "../Telegram-iOS/BuildConfig.h" - #endif diff --git a/submodules/BuildConfig/BuildConfig_Xcode.xcodeproj/project.pbxproj b/submodules/BuildConfig/BuildConfig_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..dda441fdac --- /dev/null +++ b/submodules/BuildConfig/BuildConfig_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,354 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D008179222B4786B008A895F /* BuildConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = D008179022B4786B008A895F /* BuildConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008179A22B4792C008A895F /* BuildConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D008179922B4792C008A895F /* BuildConfig.m */; }; + D00818B222B59067008A895F /* Config-Fork.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D00818AF22B59067008A895F /* Config-Fork.xcconfig */; }; + D00818B322B59067008A895F /* Config-Hockeyapp-Internal.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D00818B022B59067008A895F /* Config-Hockeyapp-Internal.xcconfig */; }; + D00818B422B59067008A895F /* Config-AppStoreLLC.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D00818B122B59067008A895F /* Config-AppStoreLLC.xcconfig */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D008178D22B4786B008A895F /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008179022B4786B008A895F /* BuildConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BuildConfig.h; sourceTree = ""; }; + D008179122B4786B008A895F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D008179922B4792C008A895F /* BuildConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BuildConfig.m; sourceTree = ""; }; + D00818AF22B59067008A895F /* Config-Fork.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Config-Fork.xcconfig"; sourceTree = ""; }; + D00818B022B59067008A895F /* Config-Hockeyapp-Internal.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Config-Hockeyapp-Internal.xcconfig"; sourceTree = ""; }; + D00818B122B59067008A895F /* Config-AppStoreLLC.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "Config-AppStoreLLC.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D008178A22B4786B008A895F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D008178322B4786B008A895F = { + isa = PBXGroup; + children = ( + D00818B122B59067008A895F /* Config-AppStoreLLC.xcconfig */, + D00818AF22B59067008A895F /* Config-Fork.xcconfig */, + D00818B022B59067008A895F /* Config-Hockeyapp-Internal.xcconfig */, + D008179122B4786B008A895F /* Info.plist */, + D008178F22B4786B008A895F /* Sources */, + D008178E22B4786B008A895F /* Products */, + ); + sourceTree = ""; + }; + D008178E22B4786B008A895F /* Products */ = { + isa = PBXGroup; + children = ( + D008178D22B4786B008A895F /* BuildConfig.framework */, + ); + name = Products; + sourceTree = ""; + }; + D008178F22B4786B008A895F /* Sources */ = { + isa = PBXGroup; + children = ( + D008179022B4786B008A895F /* BuildConfig.h */, + D008179922B4792C008A895F /* BuildConfig.m */, + ); + path = Sources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D008178822B4786B008A895F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D008179222B4786B008A895F /* BuildConfig.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D008178C22B4786B008A895F /* BuildConfig */ = { + isa = PBXNativeTarget; + buildConfigurationList = D008179522B4786B008A895F /* Build configuration list for PBXNativeTarget "BuildConfig" */; + buildPhases = ( + D008178822B4786B008A895F /* Headers */, + D008178922B4786B008A895F /* Sources */, + D008178A22B4786B008A895F /* Frameworks */, + D008178B22B4786B008A895F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = BuildConfig; + productName = BuildConfig; + productReference = D008178D22B4786B008A895F /* BuildConfig.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D008178422B4786B008A895F /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D008178C22B4786B008A895F = { + CreatedOnToolsVersion = 10.1; + }; + }; + }; + buildConfigurationList = D008178722B4786B008A895F /* Build configuration list for PBXProject "BuildConfig_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D008178322B4786B008A895F; + productRefGroup = D008178E22B4786B008A895F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D008178C22B4786B008A895F /* BuildConfig */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D008178B22B4786B008A895F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D00818B422B59067008A895F /* Config-AppStoreLLC.xcconfig in Resources */, + D00818B322B59067008A895F /* Config-Hockeyapp-Internal.xcconfig in Resources */, + D00818B222B59067008A895F /* Config-Fork.xcconfig in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D008178922B4786B008A895F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D008179A22B4792C008A895F /* BuildConfig.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D008179322B4786B008A895F /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D00818B122B59067008A895F /* Config-AppStoreLLC.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D008179422B4786B008A895F /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D00818B122B59067008A895F /* Config-AppStoreLLC.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D008179622B4786B008A895F /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D00818B122B59067008A895F /* Config-AppStoreLLC.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.BuildConfig; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D008179722B4786B008A895F /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D00818B122B59067008A895F /* Config-AppStoreLLC.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.BuildConfig; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D008178722B4786B008A895F /* Build configuration list for PBXProject "BuildConfig_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D008179322B4786B008A895F /* DebugAppStoreLLC */, + D008179422B4786B008A895F /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D008179522B4786B008A895F /* Build configuration list for PBXNativeTarget "BuildConfig" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D008179622B4786B008A895F /* DebugAppStoreLLC */, + D008179722B4786B008A895F /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D008178422B4786B008A895F /* Project object */; +} diff --git a/submodules/BuildConfig/Config-AppStoreLLC.xcconfig b/submodules/BuildConfig/Config-AppStoreLLC.xcconfig new file mode 100644 index 0000000000..d6449fc612 --- /dev/null +++ b/submodules/BuildConfig/Config-AppStoreLLC.xcconfig @@ -0,0 +1 @@ +#include "../../Telegram-iOS/Config-AppStoreLLC.xcconfig" diff --git a/submodules/BuildConfig/Config-Fork.xcconfig b/submodules/BuildConfig/Config-Fork.xcconfig new file mode 100644 index 0000000000..efe0d66c5c --- /dev/null +++ b/submodules/BuildConfig/Config-Fork.xcconfig @@ -0,0 +1 @@ +#include "../../Telegram-iOS/Config-Fork.xcconfig" diff --git a/submodules/BuildConfig/Config-Hockeyapp-Internal.xcconfig b/submodules/BuildConfig/Config-Hockeyapp-Internal.xcconfig new file mode 100644 index 0000000000..82f97730ed --- /dev/null +++ b/submodules/BuildConfig/Config-Hockeyapp-Internal.xcconfig @@ -0,0 +1 @@ +#include "../../Telegram-iOS/Config-Hockeyapp-Internal.xcconfig" diff --git a/submodules/BuildConfig/Info.plist b/submodules/BuildConfig/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/BuildConfig/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Telegram-iOS/BuildConfig.h b/submodules/BuildConfig/Sources/BuildConfig.h similarity index 100% rename from Telegram-iOS/BuildConfig.h rename to submodules/BuildConfig/Sources/BuildConfig.h diff --git a/Telegram-iOS/BuildConfig.m b/submodules/BuildConfig/Sources/BuildConfig.m similarity index 100% rename from Telegram-iOS/BuildConfig.m rename to submodules/BuildConfig/Sources/BuildConfig.m diff --git a/submodules/DeviceAccess/DeviceAccess_Xcode.xcodeproj/project.pbxproj b/submodules/DeviceAccess/DeviceAccess_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..4423ca8062 --- /dev/null +++ b/submodules/DeviceAccess/DeviceAccess_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,376 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0AE31FE22B281300058D3BC /* DeviceAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE31FC22B281300058D3BC /* DeviceAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE320522B2818D0058D3BC /* DeviceAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE320422B2818D0058D3BC /* DeviceAccess.swift */; }; + D0AE320A22B281CA0058D3BC /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE320922B281CA0058D3BC /* Display.framework */; }; + D0AE320C22B281CE0058D3BC /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE320B22B281CE0058D3BC /* TelegramCore.framework */; }; + D0AE320E22B281D30058D3BC /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE320D22B281D30058D3BC /* SwiftSignalKit.framework */; }; + D0AE321022B281E50058D3BC /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE320F22B281E50058D3BC /* LegacyComponents.framework */; }; + D0AE321222B2821B0058D3BC /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE321122B2821B0058D3BC /* TelegramPresentationData.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0AE31F922B281300058D3BC /* DeviceAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DeviceAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE31FC22B281300058D3BC /* DeviceAccess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceAccess.h; sourceTree = ""; }; + D0AE31FD22B281300058D3BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0AE320422B2818D0058D3BC /* DeviceAccess.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceAccess.swift; sourceTree = ""; }; + D0AE320922B281CA0058D3BC /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE320B22B281CE0058D3BC /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE320D22B281D30058D3BC /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE320F22B281E50058D3BC /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE321122B2821B0058D3BC /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE31F622B281300058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE321222B2821B0058D3BC /* TelegramPresentationData.framework in Frameworks */, + D0AE321022B281E50058D3BC /* LegacyComponents.framework in Frameworks */, + D0AE320E22B281D30058D3BC /* SwiftSignalKit.framework in Frameworks */, + D0AE320C22B281CE0058D3BC /* TelegramCore.framework in Frameworks */, + D0AE320A22B281CA0058D3BC /* Display.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0AE31EF22B281300058D3BC = { + isa = PBXGroup; + children = ( + D0AE31FD22B281300058D3BC /* Info.plist */, + D0AE31FB22B281300058D3BC /* Sources */, + D0AE31FA22B281300058D3BC /* Products */, + D0AE320822B281CA0058D3BC /* Frameworks */, + ); + sourceTree = ""; + }; + D0AE31FA22B281300058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE31F922B281300058D3BC /* DeviceAccess.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE31FB22B281300058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0AE320422B2818D0058D3BC /* DeviceAccess.swift */, + D0AE31FC22B281300058D3BC /* DeviceAccess.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0AE320822B281CA0058D3BC /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0AE321122B2821B0058D3BC /* TelegramPresentationData.framework */, + D0AE320F22B281E50058D3BC /* LegacyComponents.framework */, + D0AE320D22B281D30058D3BC /* SwiftSignalKit.framework */, + D0AE320B22B281CE0058D3BC /* TelegramCore.framework */, + D0AE320922B281CA0058D3BC /* Display.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE31F422B281300058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE31FE22B281300058D3BC /* DeviceAccess.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE31F822B281300058D3BC /* DeviceAccess */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE320122B281300058D3BC /* Build configuration list for PBXNativeTarget "DeviceAccess" */; + buildPhases = ( + D0AE31F422B281300058D3BC /* Headers */, + D0AE31F522B281300058D3BC /* Sources */, + D0AE31F622B281300058D3BC /* Frameworks */, + D0AE31F722B281300058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DeviceAccess; + productName = DeviceAccess; + productReference = D0AE31F922B281300058D3BC /* DeviceAccess.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE31F022B281300058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE31F822B281300058D3BC = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + }; + }; + }; + buildConfigurationList = D0AE31F322B281300058D3BC /* Build configuration list for PBXProject "DeviceAccess_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE31EF22B281300058D3BC; + productRefGroup = D0AE31FA22B281300058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE31F822B281300058D3BC /* DeviceAccess */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE31F722B281300058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE31F522B281300058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE320522B2818D0058D3BC /* DeviceAccess.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE31FF22B281300058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE320022B281300058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE320222B281300058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.DeviceAccess; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE320322B281300058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.DeviceAccess; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE31F322B281300058D3BC /* Build configuration list for PBXProject "DeviceAccess_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE31FF22B281300058D3BC /* DebugAppStoreLLC */, + D0AE320022B281300058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE320122B281300058D3BC /* Build configuration list for PBXNativeTarget "DeviceAccess" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE320222B281300058D3BC /* DebugAppStoreLLC */, + D0AE320322B281300058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE31F022B281300058D3BC /* Project object */; +} diff --git a/submodules/DeviceAccess/Info.plist b/submodules/DeviceAccess/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/DeviceAccess/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/DeviceAccess/Sources/DeviceAccess.h b/submodules/DeviceAccess/Sources/DeviceAccess.h new file mode 100644 index 0000000000..bfb7ce3a32 --- /dev/null +++ b/submodules/DeviceAccess/Sources/DeviceAccess.h @@ -0,0 +1,19 @@ +// +// DeviceAccess.h +// DeviceAccess +// +// Created by Peter on 6/13/19. +// Copyright © 2019 Telegram LLP. All rights reserved. +// + +#import + +//! Project version number for DeviceAccess. +FOUNDATION_EXPORT double DeviceAccessVersionNumber; + +//! Project version string for DeviceAccess. +FOUNDATION_EXPORT const unsigned char DeviceAccessVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramUI/TelegramUI/CheckDeviceAccess.swift b/submodules/DeviceAccess/Sources/DeviceAccess.swift similarity index 93% rename from submodules/TelegramUI/TelegramUI/CheckDeviceAccess.swift rename to submodules/DeviceAccess/Sources/DeviceAccess.swift index 898473c2d9..c6e4ee45bd 100644 --- a/submodules/TelegramUI/TelegramUI/CheckDeviceAccess.swift +++ b/submodules/DeviceAccess/Sources/DeviceAccess.swift @@ -10,7 +10,7 @@ import Contacts import AddressBook import UserNotifications import CoreTelephony - +import TelegramPresentationData import LegacyComponents public enum DeviceAccessMicrophoneSubject { @@ -52,7 +52,7 @@ public enum AccessType { private let cachedMediaLibraryAccessStatus = Atomic(value: nil) -func shouldDisplayNotificationsPermissionWarning(status: AccessType, suppressed: Bool) -> Bool { +public func shouldDisplayNotificationsPermissionWarning(status: AccessType, suppressed: Bool) -> Bool { switch (status, suppressed) { case (.allowed, _), (.unreachable, true), (.notDetermined, true): return false @@ -79,10 +79,10 @@ public final class DeviceAccess { } public static func isMicrophoneAccessAuthorized() -> Bool? { - return AVAudioSession.sharedInstance().recordPermission() == .granted + return AVAudioSession.sharedInstance().recordPermission == .granted } - public static func authorizationStatus(context: AccountContext? = nil, subject: DeviceAccessSubject) -> Signal { + public static func authorizationStatus(applicationInForeground: Signal? = nil, siriAuthorization: (() -> AccessType)? = nil, subject: DeviceAccessSubject) -> Signal { switch subject { case .notifications: let status = (Signal { subscriber in @@ -125,8 +125,8 @@ public final class DeviceAccess { return .complete() } }) - if let context = context { - return context.sharedContext.applicationBindings.applicationInForeground + if let applicationInForeground = applicationInForeground { + return applicationInForeground |> distinctUntilChanged |> mapToSignal { inForeground -> Signal in return status @@ -197,9 +197,9 @@ public final class DeviceAccess { return EmptyDisposable } case .siri: - if let context = context { + if let siriAuthorization = siriAuthorization { return Signal { subscriber in - let status = context.sharedContext.applicationBindings.siriAuthorization() + let status = siriAuthorization() subscriber.putNext(status) subscriber.putCompletion() return EmptyDisposable @@ -220,7 +220,7 @@ public final class DeviceAccess { } } - public static func authorizeAccess(to subject: DeviceAccessSubject, context: AccountContext? = nil, presentationData: PresentationData? = nil, present: @escaping (ViewController, Any?) -> Void = { _, _ in }, openSettings: @escaping () -> Void = { }, displayNotificationFromBackground: @escaping (String) -> Void = { _ in }, _ completion: @escaping (Bool) -> Void = { _ in }) { + public static func authorizeAccess(to subject: DeviceAccessSubject, registerForNotifications: ((@escaping (Bool) -> Void) -> Void)? = nil, requestSiriAuthorization: ((@escaping (Bool) -> Void) -> Void)? = nil, presentationData: PresentationData? = nil, present: @escaping (ViewController, Any?) -> Void = { _, _ in }, openSettings: @escaping () -> Void = { }, displayNotificationFromBackground: @escaping (String) -> Void = { _ in }, _ completion: @escaping (Bool) -> Void = { _ in }) { switch subject { case .camera: let status = PGCamera.cameraAuthorizationStatus() @@ -254,7 +254,7 @@ public final class DeviceAccess { completion(true) } case let .microphone(microphoneSubject): - if AVAudioSession.sharedInstance().recordPermission() == .granted { + if AVAudioSession.sharedInstance().recordPermission == .granted { completion(true) } else { AVAudioSession.sharedInstance().requestRecordPermission({ granted in @@ -405,15 +405,15 @@ public final class DeviceAccess { } }) case .notifications: - if let context = context { - context.sharedContext.applicationBindings.registerForNotifications { result in + if let registerForNotifications = registerForNotifications { + registerForNotifications { result in self.notificationsPromise.set(.single(result)) completion(result) } } case .siri: - if let context = context { - context.sharedContext.applicationBindings.requestSiriAuthorization { result in + if let requestSiriAuthorization = requestSiriAuthorization { + requestSiriAuthorization { result in self.siriPromise.set(.single(result)) completion(result) } diff --git a/submodules/TelegramUI/TelegramUI/ImageNode.swift b/submodules/Display/Display/ImageNode.swift similarity index 97% rename from submodules/TelegramUI/TelegramUI/ImageNode.swift rename to submodules/Display/Display/ImageNode.swift index 8ebc6e2157..99192e4895 100644 --- a/submodules/TelegramUI/TelegramUI/ImageNode.swift +++ b/submodules/Display/Display/ImageNode.swift @@ -2,7 +2,6 @@ import Foundation import UIKit import AsyncDisplayKit import SwiftSignalKit -import Display public let displayLinkDispatcher = DisplayLinkDispatcher() private let dispatcher = displayLinkDispatcher @@ -66,7 +65,7 @@ public func ==(lhs: ImageCorner, rhs: ImageCorner) -> Bool { } } -func isRoundEqualCorners(_ corners: ImageCorners) -> Bool { +public func isRoundEqualCorners(_ corners: ImageCorners) -> Bool { if case .Corner = corners.topLeft, case .Corner = corners.topRight, case .Corner = corners.bottomLeft, case .Corner = corners.bottomRight { if corners.topLeft.radius == corners.topRight.radius && corners.topRight.radius == corners.bottomLeft.radius && corners.bottomLeft.radius == corners.bottomRight.radius { return true @@ -141,7 +140,7 @@ public class ImageNode: ASDisplayNode { private var first = true private let enableEmpty: Bool - var ready: Signal { + public var ready: Signal { if let hasImage = self.hasImage { return hasImage.get() } else { @@ -149,7 +148,7 @@ public class ImageNode: ASDisplayNode { } } - init(enableHasImage: Bool = false, enableEmpty: Bool = false) { + public init(enableHasImage: Bool = false, enableEmpty: Bool = false) { if enableHasImage { self.hasImage = ValuePromise(false, ignoreRepeated: true) } else { diff --git a/submodules/TelegramUI/TelegramUI/TransformImageArguments.swift b/submodules/Display/Display/TransformImageArguments.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/TransformImageArguments.swift rename to submodules/Display/Display/TransformImageArguments.swift diff --git a/submodules/TelegramUI/TelegramUI/TransformImageNode.swift b/submodules/Display/Display/TransformImageNode.swift similarity index 91% rename from submodules/TelegramUI/TelegramUI/TransformImageNode.swift rename to submodules/Display/Display/TransformImageNode.swift index 117f5fa6a7..36e72a6568 100644 --- a/submodules/TelegramUI/TelegramUI/TransformImageNode.swift +++ b/submodules/Display/Display/TransformImageNode.swift @@ -2,8 +2,6 @@ import Foundation import UIKit import AsyncDisplayKit import SwiftSignalKit -import Display -import TelegramCore public struct TransformImageNodeContentAnimations: OptionSet { public var rawValue: Int32 @@ -16,7 +14,7 @@ public struct TransformImageNodeContentAnimations: OptionSet { public static let subsequentUpdates = TransformImageNodeContentAnimations(rawValue: 1 << 1) } -public class TransformImageNode: ASDisplayNode { +open class TransformImageNode: ASDisplayNode { public var imageUpdated: ((UIImage?) -> Void)? public var contentAnimations: TransformImageNodeContentAnimations = [] private var disposable = MetaDisposable() @@ -32,7 +30,7 @@ public class TransformImageNode: ASDisplayNode { self.disposable.dispose() } - override public func didLoad() { + override open func didLoad() { super.didLoad() if #available(iOSApplicationExtension 11.0, iOS 11.0, *), !self.isLayerBacked { @@ -40,7 +38,7 @@ public class TransformImageNode: ASDisplayNode { } } - override public var frame: CGRect { + override open var frame: CGRect { didSet { if let overlayNode = self.overlayNode { overlayNode.frame = self.bounds @@ -52,16 +50,6 @@ public class TransformImageNode: ASDisplayNode { let argumentsPromise = self.argumentsPromise let data = combineLatest(signal, argumentsPromise.get()) - /*|> mapToSignal { transform, arguments -> Signal<((TransformImageArguments) -> DrawingContext?, TransformImageArguments), NoError> in - let result: Signal<((TransformImageArguments) -> DrawingContext?, TransformImageArguments), NoError> = .single((transform, arguments)) - if shouldAttemptSynchronously { - shouldAttemptSynchronously = false - return result - } else { - return result - |> deliverOn(Queue.concurrentDefaultQueue()) - } - }*/ let resultData: Signal<((TransformImageArguments) -> DrawingContext?, TransformImageArguments), NoError> if attemptSynchronously { diff --git a/submodules/Display/Display_Xcode.xcodeproj/project.pbxproj b/submodules/Display/Display_Xcode.xcodeproj/project.pbxproj index 8edc164afd..332ed54bec 100644 --- a/submodules/Display/Display_Xcode.xcodeproj/project.pbxproj +++ b/submodules/Display/Display_Xcode.xcodeproj/project.pbxproj @@ -104,6 +104,9 @@ D06B76DB20592A97006E9EEA /* LayoutSizes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06B76DA20592A97006E9EEA /* LayoutSizes.swift */; }; D06D37A220779C82009219B6 /* VolumeControlStatusBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06D37A120779C82009219B6 /* VolumeControlStatusBar.swift */; }; D06EE8451B7140FF00837186 /* Font.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06EE8441B7140FF00837186 /* Font.swift */; }; + D0750C7322B2931900BE5F6E /* TransformImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0750C7122B2931900BE5F6E /* TransformImageNode.swift */; }; + D0750C7422B2931900BE5F6E /* TransformImageArguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0750C7222B2931900BE5F6E /* TransformImageArguments.swift */; }; + D0750C7622B2934800BE5F6E /* ImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0750C7522B2934800BE5F6E /* ImageNode.swift */; }; D077B8E91F4637040046D27A /* NavigationBarBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = D077B8E81F4637040046D27A /* NavigationBarBadge.swift */; }; D081229D1D19AA1C005F7395 /* ContainerViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081229C1D19AA1C005F7395 /* ContainerViewLayout.swift */; }; D087BFB51F75181D003FD209 /* ChildWindowHostView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D087BFB41F75181D003FD209 /* ChildWindowHostView.swift */; }; @@ -279,6 +282,9 @@ D06B76DA20592A97006E9EEA /* LayoutSizes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutSizes.swift; sourceTree = ""; }; D06D37A120779C82009219B6 /* VolumeControlStatusBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VolumeControlStatusBar.swift; sourceTree = ""; }; D06EE8441B7140FF00837186 /* Font.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Font.swift; sourceTree = ""; }; + D0750C7122B2931900BE5F6E /* TransformImageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransformImageNode.swift; sourceTree = ""; }; + D0750C7222B2931900BE5F6E /* TransformImageArguments.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransformImageArguments.swift; sourceTree = ""; }; + D0750C7522B2934800BE5F6E /* ImageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageNode.swift; sourceTree = ""; }; D077B8E81F4637040046D27A /* NavigationBarBadge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationBarBadge.swift; sourceTree = ""; }; D081229C1D19AA1C005F7395 /* ContainerViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContainerViewLayout.swift; sourceTree = ""; }; D087BFB41F75181D003FD209 /* ChildWindowHostView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChildWindowHostView.swift; sourceTree = ""; }; @@ -577,6 +583,9 @@ D05CC3001B6955D500E235A3 /* Utils */ = { isa = PBXGroup; children = ( + D0750C7522B2934800BE5F6E /* ImageNode.swift */, + D0750C7222B2931900BE5F6E /* TransformImageArguments.swift */, + D0750C7122B2931900BE5F6E /* TransformImageNode.swift */, D05CC2EB1B69558A00E235A3 /* RuntimeUtils.h */, D05CC2EA1B69558A00E235A3 /* RuntimeUtils.m */, D05CC2F01B6955D000E235A3 /* UIViewController+Navigation.h */, @@ -889,6 +898,7 @@ D05174B41EAA833200A1BF36 /* CASeeThroughTracingLayer.m in Sources */, D03AA4D9202D8E5E0056C405 /* GlobalOverlayPresentationContext.swift in Sources */, D0076F2221ACA5020059500A /* Toolbar.swift in Sources */, + D0750C7422B2931900BE5F6E /* TransformImageArguments.swift in Sources */, D0F8C3932014FB7C00236FC5 /* ListView.swift in Sources */, D03E7DE61C96B96E00C07816 /* NavigationBarTransitionContainer.swift in Sources */, D0C85DD01D1C082E00124894 /* ActionSheetItemGroupsContainerNode.swift in Sources */, @@ -946,6 +956,7 @@ D0DA44521E4DCC11005FDCA7 /* TextAlertController.swift in Sources */, D081229D1D19AA1C005F7395 /* ContainerViewLayout.swift in Sources */, D0C2DFC71CC4431D0044FF83 /* ListViewItemNode.swift in Sources */, + D0750C7322B2931900BE5F6E /* TransformImageNode.swift in Sources */, D0FF9B301E7196F6000C66DB /* KeyboardManager.swift in Sources */, D01E2BE21D9049F60066BF65 /* GridItemNode.swift in Sources */, D08E903A1D24159200533158 /* ActionSheetItem.swift in Sources */, @@ -964,6 +975,7 @@ D0C2DFCD1CC4431D0044FF83 /* ListViewTransactionQueue.swift in Sources */, D0AA84101FED2887005C6E91 /* ListViewOverscrollBackgroundNode.swift in Sources */, D02383821DDF798E004018B6 /* LegacyPresentedControllerNode.swift in Sources */, + D0750C7622B2934800BE5F6E /* ImageNode.swift in Sources */, D05CC2FC1B6955D000E235A3 /* UIKitUtils.m in Sources */, D0C2DFC61CC4431D0044FF83 /* ASTransformLayerNode.swift in Sources */, D03AA4DD202DB1840056C405 /* PeekControllerGestureRecognizer.swift in Sources */, diff --git a/submodules/TelegramUI/TelegramUI/GZip.h b/submodules/GZip/GZip.h similarity index 100% rename from submodules/TelegramUI/TelegramUI/GZip.h rename to submodules/GZip/GZip.h diff --git a/submodules/GZip/GZip_Xcode.xcodeproj/project.pbxproj b/submodules/GZip/GZip_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..035a8b1d0e --- /dev/null +++ b/submodules/GZip/GZip_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,340 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0AE30E822B1DB2E0058D3BC /* GZip.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE30E622B1DB2E0058D3BC /* GZip.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE30E922B1DB2E0058D3BC /* GZip.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE30E722B1DB2E0058D3BC /* GZip.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0AE30DA22B1DAE20058D3BC /* GZip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GZip.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE30E622B1DB2E0058D3BC /* GZip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GZip.h; sourceTree = ""; }; + D0AE30E722B1DB2E0058D3BC /* GZip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GZip.m; sourceTree = ""; }; + D0AE310722B1DCB00058D3BC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE30D722B1DAE20058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0AE30D022B1DAE20058D3BC = { + isa = PBXGroup; + children = ( + D0AE310722B1DCB00058D3BC /* Info.plist */, + D0AE30E522B1DB2E0058D3BC /* Sources */, + D0AE30DB22B1DAE20058D3BC /* Products */, + ); + sourceTree = ""; + }; + D0AE30DB22B1DAE20058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE30DA22B1DAE20058D3BC /* GZip.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE30E522B1DB2E0058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0AE30E622B1DB2E0058D3BC /* GZip.h */, + D0AE30E722B1DB2E0058D3BC /* GZip.m */, + ); + path = Sources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE30D522B1DAE20058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE30E822B1DB2E0058D3BC /* GZip.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE30D922B1DAE20058D3BC /* GZip */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE30E222B1DAE20058D3BC /* Build configuration list for PBXNativeTarget "GZip" */; + buildPhases = ( + D0AE30D522B1DAE20058D3BC /* Headers */, + D0AE30D622B1DAE20058D3BC /* Sources */, + D0AE30D722B1DAE20058D3BC /* Frameworks */, + D0AE30D822B1DAE20058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GZip; + productName = GZip; + productReference = D0AE30DA22B1DAE20058D3BC /* GZip.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE30D122B1DAE20058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE30D922B1DAE20058D3BC = { + CreatedOnToolsVersion = 10.1; + }; + }; + }; + buildConfigurationList = D0AE30D422B1DAE20058D3BC /* Build configuration list for PBXProject "GZip_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE30D022B1DAE20058D3BC; + productRefGroup = D0AE30DB22B1DAE20058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE30D922B1DAE20058D3BC /* GZip */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE30D822B1DAE20058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE30D622B1DAE20058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE30E922B1DB2E0058D3BC /* GZip.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE30E022B1DAE20058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE30E122B1DAE20058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE30E322B1DAE20058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.GZip; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE30E422B1DAE20058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.GZip; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE30D422B1DAE20058D3BC /* Build configuration list for PBXProject "GZip_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE30E022B1DAE20058D3BC /* DebugAppStoreLLC */, + D0AE30E122B1DAE20058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE30E222B1DAE20058D3BC /* Build configuration list for PBXNativeTarget "GZip" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE30E322B1DAE20058D3BC /* DebugAppStoreLLC */, + D0AE30E422B1DAE20058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE30D122B1DAE20058D3BC /* Project object */; +} diff --git a/submodules/GZip/Info.plist b/submodules/GZip/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/GZip/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/GZip/Sources/GZip.h b/submodules/GZip/Sources/GZip.h new file mode 100644 index 0000000000..1558cbbdf9 --- /dev/null +++ b/submodules/GZip/Sources/GZip.h @@ -0,0 +1,19 @@ +#import + +//! Project version number for GZip. +FOUNDATION_EXPORT double GZipVersionNumber; + +//! Project version string for GZip. +FOUNDATION_EXPORT const unsigned char GZipVersionString[]; + +#ifdef __cplusplus +extern "C" { +#endif + +NSData *TGGZipData(NSData *data, float level); +NSData *TGGUnzipData(NSData *data); + +#ifdef __cplusplus +} +#endif + diff --git a/submodules/TelegramUI/TelegramUI/GZip.m b/submodules/GZip/Sources/GZip.m similarity index 100% rename from submodules/TelegramUI/TelegramUI/GZip.m rename to submodules/GZip/Sources/GZip.m diff --git a/submodules/LightweightAccountData/Info.plist b/submodules/LightweightAccountData/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/LightweightAccountData/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/LightweightAccountData/LightweightAccountData_Xcode.xcodeproj/project.pbxproj b/submodules/LightweightAccountData/LightweightAccountData_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..70aa986c36 --- /dev/null +++ b/submodules/LightweightAccountData/LightweightAccountData_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,348 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D00818C422B59409008A895F /* LightweightAccountData.h in Headers */ = {isa = PBXBuildFile; fileRef = D00818C222B59409008A895F /* LightweightAccountData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D00818CB22B594B7008A895F /* SharedAccountInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00818CA22B594B7008A895F /* SharedAccountInfo.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D00818BF22B59409008A895F /* LightweightAccountData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LightweightAccountData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D00818C222B59409008A895F /* LightweightAccountData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LightweightAccountData.h; sourceTree = ""; }; + D00818C322B59409008A895F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D00818CA22B594B7008A895F /* SharedAccountInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedAccountInfo.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D00818BC22B59409008A895F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D00818B522B59409008A895F = { + isa = PBXGroup; + children = ( + D00818C322B59409008A895F /* Info.plist */, + D00818C122B59409008A895F /* Sources */, + D00818C022B59409008A895F /* Products */, + ); + sourceTree = ""; + }; + D00818C022B59409008A895F /* Products */ = { + isa = PBXGroup; + children = ( + D00818BF22B59409008A895F /* LightweightAccountData.framework */, + ); + name = Products; + sourceTree = ""; + }; + D00818C122B59409008A895F /* Sources */ = { + isa = PBXGroup; + children = ( + D00818C222B59409008A895F /* LightweightAccountData.h */, + D00818CA22B594B7008A895F /* SharedAccountInfo.swift */, + ); + path = Sources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D00818BA22B59409008A895F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D00818C422B59409008A895F /* LightweightAccountData.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D00818BE22B59409008A895F /* LightweightAccountData */ = { + isa = PBXNativeTarget; + buildConfigurationList = D00818C722B59409008A895F /* Build configuration list for PBXNativeTarget "LightweightAccountData" */; + buildPhases = ( + D00818BA22B59409008A895F /* Headers */, + D00818BB22B59409008A895F /* Sources */, + D00818BC22B59409008A895F /* Frameworks */, + D00818BD22B59409008A895F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LightweightAccountData; + productName = LightweightAccountData; + productReference = D00818BF22B59409008A895F /* LightweightAccountData.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D00818B622B59409008A895F /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D00818BE22B59409008A895F = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + }; + }; + }; + buildConfigurationList = D00818B922B59409008A895F /* Build configuration list for PBXProject "LightweightAccountData_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D00818B522B59409008A895F; + productRefGroup = D00818C022B59409008A895F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D00818BE22B59409008A895F /* LightweightAccountData */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D00818BD22B59409008A895F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D00818BB22B59409008A895F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D00818CB22B594B7008A895F /* SharedAccountInfo.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D00818C522B59409008A895F /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D00818C622B59409008A895F /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D00818C822B59409008A895F /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.LightweightAccountData; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D00818C922B59409008A895F /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.LightweightAccountData; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D00818B922B59409008A895F /* Build configuration list for PBXProject "LightweightAccountData_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D00818C522B59409008A895F /* DebugAppStoreLLC */, + D00818C622B59409008A895F /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D00818C722B59409008A895F /* Build configuration list for PBXNativeTarget "LightweightAccountData" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D00818C822B59409008A895F /* DebugAppStoreLLC */, + D00818C922B59409008A895F /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D00818B622B59409008A895F /* Project object */; +} diff --git a/submodules/LightweightAccountData/Sources/LightweightAccountData.h b/submodules/LightweightAccountData/Sources/LightweightAccountData.h new file mode 100644 index 0000000000..e3be399fb1 --- /dev/null +++ b/submodules/LightweightAccountData/Sources/LightweightAccountData.h @@ -0,0 +1,19 @@ +// +// LightweightAccountData.h +// LightweightAccountData +// +// Created by Peter on 6/15/19. +// Copyright © 2019 Telegram LLP. All rights reserved. +// + +#import + +//! Project version number for LightweightAccountData. +FOUNDATION_EXPORT double LightweightAccountDataVersionNumber; + +//! Project version string for LightweightAccountData. +FOUNDATION_EXPORT const unsigned char LightweightAccountDataVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/LightweightAccountData/Sources/SharedAccountInfo.swift b/submodules/LightweightAccountData/Sources/SharedAccountInfo.swift new file mode 100644 index 0000000000..846aada6a6 --- /dev/null +++ b/submodules/LightweightAccountData/Sources/SharedAccountInfo.swift @@ -0,0 +1,99 @@ +import Foundation + +public struct AccountNotificationKey: Codable { + public let id: Data + public let data: Data + + public init(id: Data, data: Data) { + self.id = id + self.data = data + } +} + +public struct AccountDatacenterKey: Codable { + public let id: Int64 + public let data: Data + + public init(id: Int64, data: Data) { + self.id = id + self.data = data + } +} + +public struct AccountDatacenterAddress: Codable { + public let host: String + public let port: Int32 + public let isMedia: Bool + public let secret: Data? + + public init(host: String, port: Int32, isMedia: Bool, secret: Data?) { + self.host = host + self.port = port + self.isMedia = isMedia + self.secret = secret + } +} + +public struct AccountDatacenterInfo: Codable { + public let masterKey: AccountDatacenterKey + public let addressList: [AccountDatacenterAddress] + + public init(masterKey: AccountDatacenterKey, addressList: [AccountDatacenterAddress]) { + self.masterKey = masterKey + self.addressList = addressList + } +} + +public struct AccountProxyConnection: Codable { + public let host: String + public let port: Int32 + public let username: String? + public let password: String? + public let secret: Data? + + public init(host: String, port: Int32, username: String?, password: String?, secret: Data?) { + self.host = host + self.port = port + self.username = username + self.password = password + self.secret = secret + } +} + +public struct StoredAccountInfo: Codable { + public let id: Int64 + public let primaryId: Int32 + public let isTestingEnvironment: Bool + public let peerName: String + public let datacenters: [Int32: AccountDatacenterInfo] + public let notificationKey: AccountNotificationKey + + public init(id: Int64, primaryId: Int32, isTestingEnvironment: Bool, peerName: String, datacenters: [Int32: AccountDatacenterInfo], notificationKey: AccountNotificationKey) { + self.id = id + self.primaryId = primaryId + self.isTestingEnvironment = isTestingEnvironment + self.peerName = peerName + self.datacenters = datacenters + self.notificationKey = notificationKey + } +} + +public struct StoredAccountInfos: Codable { + public let proxy: AccountProxyConnection? + public let accounts: [StoredAccountInfo] + + public init(proxy: AccountProxyConnection?, accounts: [StoredAccountInfo]) { + self.proxy = proxy + self.accounts = accounts + } +} + +public func loadAccountsData(rootPath: String) -> StoredAccountInfos { + guard let data = try? Data(contentsOf: URL(fileURLWithPath: rootPath + "/accounts-shared-data")) else { + return StoredAccountInfos(proxy: nil, accounts: []) + } + guard let value = try? JSONDecoder().decode(StoredAccountInfos.self, from: data) else { + return StoredAccountInfos(proxy: nil, accounts: []) + } + return value +} diff --git a/submodules/MediaPlayer/Info.plist b/submodules/MediaPlayer/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/MediaPlayer/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TelegramUI/TelegramUI/FFMpegAudioFrameDecoder.swift b/submodules/MediaPlayer/Sources/FFMpegAudioFrameDecoder.swift similarity index 79% rename from submodules/TelegramUI/TelegramUI/FFMpegAudioFrameDecoder.swift rename to submodules/MediaPlayer/Sources/FFMpegAudioFrameDecoder.swift index 52a5687f9e..725051e022 100644 --- a/submodules/TelegramUI/TelegramUI/FFMpegAudioFrameDecoder.swift +++ b/submodules/MediaPlayer/Sources/FFMpegAudioFrameDecoder.swift @@ -40,7 +40,7 @@ final class FFMpegAudioFrameDecoder: MediaTrackFrameDecoder { let bytes = malloc(data.count)! data.copyBytes(to: bytes.assumingMemoryBound(to: UInt8.self), count: data.count) - let status = CMBlockBufferCreateWithMemoryBlock(nil, bytes, data.count, nil, nil, 0, data.count, 0, &blockBuffer) + let status = CMBlockBufferCreateWithMemoryBlock(allocator: nil, memoryBlock: bytes, blockLength: data.count, blockAllocator: nil, customBlockSource: nil, offsetToData: 0, dataLength: data.count, flags: 0, blockBufferOut: &blockBuffer) if status != noErr { return nil } @@ -48,7 +48,7 @@ final class FFMpegAudioFrameDecoder: MediaTrackFrameDecoder { var timingInfo = CMSampleTimingInfo(duration: duration, presentationTimeStamp: pts, decodeTimeStamp: pts) var sampleBuffer: CMSampleBuffer? var sampleSize = data.count - guard CMSampleBufferCreate(nil, blockBuffer, true, nil, nil, nil, 1, 1, &timingInfo, 1, &sampleSize, &sampleBuffer) == noErr else { + guard CMSampleBufferCreate(allocator: nil, dataBuffer: blockBuffer, dataReady: true, makeDataReadyCallback: nil, refcon: nil, formatDescription: nil, sampleCount: 1, sampleTimingEntryCount: 1, sampleTimingArray: &timingInfo, sampleSizeEntryCount: 1, sampleSizeArray: &sampleSize, sampleBufferOut: &sampleBuffer) == noErr else { return nil } diff --git a/submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSource.swift b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSource.swift similarity index 93% rename from submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSource.swift rename to submodules/MediaPlayer/Sources/FFMpegMediaFrameSource.swift index cdf8313ec1..0212c47b8e 100644 --- a/submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSource.swift +++ b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSource.swift @@ -65,7 +65,7 @@ private func contextForCurrentThread() -> FFMpegMediaFrameSourceContext? { return Thread.current.threadDictionary["FFMpegMediaFrameSourceContext"] as? FFMpegMediaFrameSourceContext } -final class FFMpegMediaFrameSource: NSObject, MediaFrameSource { +public final class FFMpegMediaFrameSource: NSObject, MediaFrameSource { private let queue: Queue private let postbox: Postbox private let resourceReference: MediaResourceReference @@ -98,7 +98,7 @@ final class FFMpegMediaFrameSource: NSObject, MediaFrameSource { } } - init(queue: Queue, postbox: Postbox, resourceReference: MediaResourceReference, tempFilePath: String?, streamable: Bool, video: Bool, preferSoftwareDecoding: Bool, fetchAutomatically: Bool, maximumFetchSize: Int? = nil, stallDuration: Double = 1.0, lowWaterDuration: Double = 2.0, highWaterDuration: Double = 3.0) { + public init(queue: Queue, postbox: Postbox, resourceReference: MediaResourceReference, tempFilePath: String?, streamable: Bool, video: Bool, preferSoftwareDecoding: Bool, fetchAutomatically: Bool, maximumFetchSize: Int? = nil, stallDuration: Double = 1.0, lowWaterDuration: Double = 2.0, highWaterDuration: Double = 3.0) { self.queue = queue self.postbox = postbox self.resourceReference = resourceReference @@ -127,19 +127,19 @@ final class FFMpegMediaFrameSource: NSObject, MediaFrameSource { self.taskQueue.terminate() } - func addEventSink(_ f: @escaping (MediaTrackEvent) -> Void) -> Int { + public func addEventSink(_ f: @escaping (MediaTrackEvent) -> Void) -> Int { assert(self.queue.isCurrent()) return self.eventSinkBag.add(f) } - func removeEventSink(_ index: Int) { + public func removeEventSink(_ index: Int) { assert(self.queue.isCurrent()) self.eventSinkBag.remove(index) } - func generateFrames(until timestamp: Double) { + public func generateFrames(until timestamp: Double) { assert(self.queue.isCurrent()) if self.requestedFrameGenerationTimestamp == nil || !self.requestedFrameGenerationTimestamp!.isEqual(to: timestamp) { @@ -149,7 +149,7 @@ final class FFMpegMediaFrameSource: NSObject, MediaFrameSource { } } - func ensureHasFrames(until timestamp: Double) -> Signal { + public func ensureHasFrames(until timestamp: Double) -> Signal { assert(self.queue.isCurrent()) return Signal { subscriber in @@ -220,7 +220,7 @@ final class FFMpegMediaFrameSource: NSObject, MediaFrameSource { } } - func seek(timestamp: Double) -> Signal, MediaFrameSourceSeekError> { + public func seek(timestamp: Double) -> Signal, MediaFrameSourceSeekError> { assert(self.queue.isCurrent()) return Signal { subscriber in diff --git a/submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSourceContext.swift b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift similarity index 94% rename from submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSourceContext.swift rename to submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift index a6b8b0c6fe..3c4187814a 100644 --- a/submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSourceContext.swift +++ b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift @@ -2,7 +2,6 @@ import Foundation import SwiftSignalKit import Postbox import CoreMedia -import TelegramUIPrivateModule import TelegramCore import FFMpeg @@ -370,10 +369,10 @@ final class FFMpegMediaFrameSourceContext: NSObject { let codecId = avFormatContext.codecId(atStreamIndex: streamIndex) - let fpsAndTimebase = avFormatContext.fpsAndTimebase(forStreamIndex: streamIndex, defaultTimeBase: CMTimeMake(1, 40000)) + let fpsAndTimebase = avFormatContext.fpsAndTimebase(forStreamIndex: streamIndex, defaultTimeBase: CMTimeMake(value: 1, timescale: 40000)) let (fps, timebase) = (fpsAndTimebase.fps, fpsAndTimebase.timebase) - let duration = CMTimeMake(avFormatContext.duration(atStreamIndex: streamIndex), timebase.timescale) + let duration = CMTimeMake(value: avFormatContext.duration(atStreamIndex: streamIndex), timescale: timebase.timescale) let metrics = avFormatContext.metricsForStream(at: streamIndex) @@ -422,10 +421,10 @@ final class FFMpegMediaFrameSourceContext: NSObject { let codecContext = FFMpegAVCodecContext(codec: codec) if avFormatContext.codecParams(atStreamIndex: streamIndex, to: codecContext) { if codecContext.open() { - let fpsAndTimebase = avFormatContext.fpsAndTimebase(forStreamIndex: streamIndex, defaultTimeBase: CMTimeMake(1, 40000)) + let fpsAndTimebase = avFormatContext.fpsAndTimebase(forStreamIndex: streamIndex, defaultTimeBase: CMTimeMake(value: 1, timescale: 40000)) let (fps, timebase) = (fpsAndTimebase.fps, fpsAndTimebase.timebase) - let duration = CMTimeMake(avFormatContext.duration(atStreamIndex: streamIndex), timebase.timescale) + let duration = CMTimeMake(value: avFormatContext.duration(atStreamIndex: streamIndex), timescale: timebase.timescale) audioStream = StreamContext(index: Int(streamIndex), codecContext: codecContext, fps: fps, timebase: timebase, duration: duration, decoder: FFMpegAudioFrameDecoder(codecContext: codecContext), rotationAngle: 0.0, aspect: 1.0) break @@ -499,14 +498,14 @@ final class FFMpegMediaFrameSourceContext: NSObject { } else if let audioStream = initializedState.audioStream, Int(packet.streamIndex) == audioStream.index { let packetPts = packet.pts - let pts = CMTimeMake(packetPts, audioStream.timebase.timescale) - let dts = CMTimeMake(packet.dts, audioStream.timebase.timescale) + let pts = CMTimeMake(value: packetPts, timescale: audioStream.timebase.timescale) + let dts = CMTimeMake(value: packet.dts, timescale: audioStream.timebase.timescale) let duration: CMTime let frameDuration = packet.duration if frameDuration != 0 { - duration = CMTimeMake(frameDuration * audioStream.timebase.value, audioStream.timebase.timescale) + duration = CMTimeMake(value: frameDuration * audioStream.timebase.value, timescale: audioStream.timebase.timescale) } else { duration = audioStream.fps } @@ -551,7 +550,7 @@ final class FFMpegMediaFrameSourceContext: NSObject { for stream in [initializedState.videoStream, initializedState.audioStream] { if let stream = stream { - let pts = CMTimeMakeWithSeconds(timestamp, stream.timebase.timescale) + let pts = CMTimeMakeWithSeconds(timestamp, preferredTimescale: stream.timebase.timescale) initializedState.avFormatContext.seekFrame(forStreamIndex: Int32(stream.index), pts: pts.value) break } @@ -568,19 +567,19 @@ final class FFMpegMediaFrameSourceContext: NSObject { videoDescription = FFMpegMediaFrameSourceDescription(duration: videoStream.duration, decoder: videoStream.decoder, rotationAngle: videoStream.rotationAngle, aspect: videoStream.aspect) } - var actualPts: CMTime = CMTimeMake(0, 1) + var actualPts: CMTime = CMTimeMake(value: 0, timescale: 1) var extraVideoFrames: [MediaTrackDecodableFrame] = [] if timestamp.isZero || initializedState.videoStream == nil { for _ in 0 ..< 24 { if let packet = self.readPacketInternal() { if let videoStream = initializedState.videoStream, Int(packet.streamIndex) == videoStream.index { self.packetQueue.append(packet) - let pts = CMTimeMake(packet.pts, videoStream.timebase.timescale) + let pts = CMTimeMake(value: packet.pts, timescale: videoStream.timebase.timescale) actualPts = pts break } else if let audioStream = initializedState.audioStream, Int(packet.streamIndex) == audioStream.index { self.packetQueue.append(packet) - let pts = CMTimeMake(packet.pts, audioStream.timebase.timescale) + let pts = CMTimeMake(value: packet.pts, timescale: audioStream.timebase.timescale) actualPts = pts break } @@ -589,8 +588,8 @@ final class FFMpegMediaFrameSourceContext: NSObject { } } } else if let videoStream = initializedState.videoStream { - let targetPts = CMTimeMakeWithSeconds(Float64(timestamp), videoStream.timebase.timescale) - let limitPts = CMTimeMakeWithSeconds(Float64(timestamp + 0.5), videoStream.timebase.timescale) + let targetPts = CMTimeMakeWithSeconds(Float64(timestamp), preferredTimescale: videoStream.timebase.timescale) + let limitPts = CMTimeMakeWithSeconds(Float64(timestamp + 0.5), preferredTimescale: videoStream.timebase.timescale) var audioPackets: [FFMpegPacket] = [] while !self.readingError { if let packet = self.readPacket() { @@ -627,7 +626,7 @@ final class FFMpegMediaFrameSourceContext: NSObject { } if let audioStream = initializedState.audioStream { self.packetQueue.append(contentsOf: audioPackets.filter({ packet in - let pts = CMTimeMake(packet.pts, audioStream.timebase.timescale) + let pts = CMTimeMake(value: packet.pts, timescale: audioStream.timebase.timescale) if CMTimeCompare(pts, actualPts) >= 0 { return true } else { @@ -651,14 +650,14 @@ final class FFMpegMediaFrameSourceContext: NSObject { private func videoFrameFromPacket(_ packet: FFMpegPacket, videoStream: StreamContext) -> MediaTrackDecodableFrame { let packetPts = packet.pts - let pts = CMTimeMake(packetPts, videoStream.timebase.timescale) - let dts = CMTimeMake(packet.dts, videoStream.timebase.timescale) + let pts = CMTimeMake(value: packetPts, timescale: videoStream.timebase.timescale) + let dts = CMTimeMake(value: packet.dts, timescale: videoStream.timebase.timescale) let duration: CMTime let frameDuration = packet.duration if frameDuration != 0 { - duration = CMTimeMake(frameDuration * videoStream.timebase.value, videoStream.timebase.timescale) + duration = CMTimeMake(value: frameDuration * videoStream.timebase.value, timescale: videoStream.timebase.timescale) } else { duration = videoStream.fps } diff --git a/submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSourceContextHelpers.swift b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContextHelpers.swift similarity index 87% rename from submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSourceContextHelpers.swift rename to submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContextHelpers.swift index 3fd1681e8c..5252375acd 100644 --- a/submodules/TelegramUI/TelegramUI/FFMpegMediaFrameSourceContextHelpers.swift +++ b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContextHelpers.swift @@ -2,8 +2,8 @@ import Foundation import CoreMedia import FFMpeg -final class FFMpegMediaFrameSourceContextHelpers { - static let registerFFMpegGlobals: Void = { +public final class FFMpegMediaFrameSourceContextHelpers { + public static let registerFFMpegGlobals: Void = { FFMpegGlobals.initializeGlobals() return }() @@ -30,7 +30,7 @@ final class FFMpegMediaFrameSourceContextHelpers { extensions.setObject(24 as NSNumber, forKey: "Depth" as NSString) var formatDescription: CMFormatDescription? - CMVideoFormatDescriptionCreate(nil, CMVideoCodecType(formatId), width, height, extensions, &formatDescription) + CMVideoFormatDescriptionCreate(allocator: nil, codecType: CMVideoCodecType(formatId), width: width, height: height, extensions: extensions, formatDescriptionOut: &formatDescription) return formatDescription } @@ -57,7 +57,7 @@ final class FFMpegMediaFrameSourceContextHelpers { extensions.setObject(24 as NSNumber, forKey: "Depth" as NSString) var formatDescription: CMFormatDescription? - guard CMVideoFormatDescriptionCreate(nil, kCMVideoCodecType_MPEG4Video, width, height, extensions, &formatDescription) == noErr else { + guard CMVideoFormatDescriptionCreate(allocator: nil, codecType: kCMVideoCodecType_MPEG4Video, width: width, height: height, extensions: extensions, formatDescriptionOut: &formatDescription) == noErr else { return nil } @@ -86,7 +86,7 @@ final class FFMpegMediaFrameSourceContextHelpers { extensions.setObject(24 as NSNumber, forKey: "Depth" as NSString) var formatDescription: CMFormatDescription? - CMVideoFormatDescriptionCreate(nil, CMVideoCodecType(formatId), width, height, extensions, &formatDescription) + CMVideoFormatDescriptionCreate(allocator: nil, codecType: CMVideoCodecType(formatId), width: width, height: height, extensions: extensions, formatDescriptionOut: &formatDescription) return formatDescription } diff --git a/submodules/TelegramUI/TelegramUI/FFMpegMediaPassthroughVideoFrameDecoder.swift b/submodules/MediaPlayer/Sources/FFMpegMediaPassthroughVideoFrameDecoder.swift similarity index 71% rename from submodules/TelegramUI/TelegramUI/FFMpegMediaPassthroughVideoFrameDecoder.swift rename to submodules/MediaPlayer/Sources/FFMpegMediaPassthroughVideoFrameDecoder.swift index f4291ba09f..f417d3d40a 100644 --- a/submodules/TelegramUI/TelegramUI/FFMpegMediaPassthroughVideoFrameDecoder.swift +++ b/submodules/MediaPlayer/Sources/FFMpegMediaPassthroughVideoFrameDecoder.swift @@ -15,7 +15,7 @@ final class FFMpegMediaPassthroughVideoFrameDecoder: MediaTrackFrameDecoder { let bytes = malloc(Int(frame.packet.size))! memcpy(bytes, frame.packet.data, Int(frame.packet.size)) - guard CMBlockBufferCreateWithMemoryBlock(nil, bytes, Int(frame.packet.size), nil, nil, 0, Int(frame.packet.size), 0, &blockBuffer) == noErr else { + guard CMBlockBufferCreateWithMemoryBlock(allocator: nil, memoryBlock: bytes, blockLength: Int(frame.packet.size), blockAllocator: nil, customBlockSource: nil, offsetToData: 0, dataLength: Int(frame.packet.size), flags: 0, blockBufferOut: &blockBuffer) == noErr else { free(bytes) return nil } @@ -23,14 +23,14 @@ final class FFMpegMediaPassthroughVideoFrameDecoder: MediaTrackFrameDecoder { var timingInfo = CMSampleTimingInfo(duration: frame.duration, presentationTimeStamp: frame.pts, decodeTimeStamp: frame.dts) var sampleBuffer: CMSampleBuffer? var sampleSize = Int(frame.packet.size) - guard CMSampleBufferCreate(nil, blockBuffer, true, nil, nil, self.videoFormat, 1, 1, &timingInfo, 1, &sampleSize, &sampleBuffer) == noErr else { + guard CMSampleBufferCreate(allocator: nil, dataBuffer: blockBuffer, dataReady: true, makeDataReadyCallback: nil, refcon: nil, formatDescription: self.videoFormat, sampleCount: 1, sampleTimingEntryCount: 1, sampleTimingArray: &timingInfo, sampleSizeEntryCount: 1, sampleSizeArray: &sampleSize, sampleBufferOut: &sampleBuffer) == noErr else { return nil } let resetDecoder = self.resetDecoderOnNextFrame if self.resetDecoderOnNextFrame { self.resetDecoderOnNextFrame = false - let attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer!, true)! as NSArray + let attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer!, createIfNecessary: true)! as NSArray let dict = attachments[0] as! NSMutableDictionary dict.setValue(kCFBooleanTrue as AnyObject, forKey: kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding as NSString as String) diff --git a/submodules/TelegramUI/TelegramUI/FFMpegMediaVideoFrameDecoder.swift b/submodules/MediaPlayer/Sources/FFMpegMediaVideoFrameDecoder.swift similarity index 91% rename from submodules/TelegramUI/TelegramUI/FFMpegMediaVideoFrameDecoder.swift rename to submodules/MediaPlayer/Sources/FFMpegMediaVideoFrameDecoder.swift index 1a7be7c32d..29c84c0193 100644 --- a/submodules/TelegramUI/TelegramUI/FFMpegMediaVideoFrameDecoder.swift +++ b/submodules/MediaPlayer/Sources/FFMpegMediaVideoFrameDecoder.swift @@ -4,7 +4,7 @@ import FFMpeg private let bufferCount = 32 -final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { +public final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { private let codecContext: FFMpegAVCodecContext private let videoFrame: FFMpegAVFrame @@ -14,7 +14,7 @@ final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { private var delayedFrames: [MediaTrackFrame] = [] - init(codecContext: FFMpegAVCodecContext) { + public init(codecContext: FFMpegAVCodecContext) { self.codecContext = codecContext self.videoFrame = FFMpegAVFrame() @@ -44,15 +44,15 @@ final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { } - func decode(frame: MediaTrackDecodableFrame) -> MediaTrackFrame? { + public func decode(frame: MediaTrackDecodableFrame) -> MediaTrackFrame? { return self.decode(frame: frame, ptsOffset: nil) } - func decode(frame: MediaTrackDecodableFrame, ptsOffset: CMTime?) -> MediaTrackFrame? { + public func decode(frame: MediaTrackDecodableFrame, ptsOffset: CMTime?) -> MediaTrackFrame? { let status = frame.packet.send(toDecoder: self.codecContext) if status == 0 { if self.codecContext.receive(into: self.videoFrame) { - var pts = CMTimeMake(self.videoFrame.pts, frame.pts.timescale) + var pts = CMTimeMake(value: self.videoFrame.pts, timescale: frame.pts.timescale) if let ptsOffset = ptsOffset { pts = CMTimeAdd(pts, ptsOffset) } @@ -63,7 +63,7 @@ final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { return nil } - func takeRemainingFrame() -> MediaTrackFrame? { + public func takeRemainingFrame() -> MediaTrackFrame? { if !self.delayedFrames.isEmpty { var minFrameIndex = 0 var minPosition = self.delayedFrames[0].position @@ -170,7 +170,7 @@ final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { CVPixelBufferUnlockBaseAddress(pixelBuffer, []) var formatRef: CMVideoFormatDescription? - let formatStatus = CMVideoFormatDescriptionCreateForImageBuffer(kCFAllocatorDefault, pixelBuffer, &formatRef) + let formatStatus = CMVideoFormatDescriptionCreateForImageBuffer(allocator: kCFAllocatorDefault, imageBuffer: pixelBuffer, formatDescriptionOut: &formatRef) guard let format = formatRef, formatStatus == 0 else { return nil @@ -179,11 +179,11 @@ final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { var timingInfo = CMSampleTimingInfo(duration: duration, presentationTimeStamp: pts, decodeTimeStamp: pts) var sampleBuffer: CMSampleBuffer? - guard CMSampleBufferCreateReadyWithImageBuffer(kCFAllocatorDefault, pixelBuffer, format, &timingInfo, &sampleBuffer) == noErr else { + guard CMSampleBufferCreateReadyWithImageBuffer(allocator: kCFAllocatorDefault, imageBuffer: pixelBuffer, formatDescription: format, sampleTiming: &timingInfo, sampleBufferOut: &sampleBuffer) == noErr else { return nil } - let attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer!, true)! as NSArray + let attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer!, createIfNecessary: true)! as NSArray let dict = attachments[0] as! NSMutableDictionary let resetDecoder = self.resetDecoderOnNextFrame @@ -220,7 +220,7 @@ final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { } - func reset() { + public func reset() { self.codecContext.flushBuffers() self.resetDecoderOnNextFrame = true } diff --git a/submodules/TelegramUI/TelegramUI/MediaFrameSource.swift b/submodules/MediaPlayer/Sources/MediaFrameSource.swift similarity index 58% rename from submodules/TelegramUI/TelegramUI/MediaFrameSource.swift rename to submodules/MediaPlayer/Sources/MediaFrameSource.swift index 37c70372fc..24eaec7b90 100644 --- a/submodules/TelegramUI/TelegramUI/MediaFrameSource.swift +++ b/submodules/MediaPlayer/Sources/MediaFrameSource.swift @@ -2,28 +2,28 @@ import Foundation import SwiftSignalKit import CoreMedia -enum MediaTrackEvent { +public enum MediaTrackEvent { case frames([MediaTrackDecodableFrame]) case endOfStream } -final class MediaFrameSourceSeekResult { - let buffers: MediaPlaybackBuffers - let extraDecodedVideoFrames: [MediaTrackFrame] - let timestamp: CMTime +public final class MediaFrameSourceSeekResult { + public let buffers: MediaPlaybackBuffers + public let extraDecodedVideoFrames: [MediaTrackFrame] + public let timestamp: CMTime - init(buffers: MediaPlaybackBuffers, extraDecodedVideoFrames: [MediaTrackFrame], timestamp: CMTime) { + public init(buffers: MediaPlaybackBuffers, extraDecodedVideoFrames: [MediaTrackFrame], timestamp: CMTime) { self.buffers = buffers self.extraDecodedVideoFrames = extraDecodedVideoFrames self.timestamp = timestamp } } -enum MediaFrameSourceSeekError { +public enum MediaFrameSourceSeekError { case generic } -protocol MediaFrameSource { +public protocol MediaFrameSource { func addEventSink(_ f: @escaping (MediaTrackEvent) -> Void) -> Int func removeEventSink(_ index: Int) func generateFrames(until timestamp: Double) diff --git a/submodules/TelegramUI/TelegramUI/MediaPlaybackData.swift b/submodules/MediaPlayer/Sources/MediaPlaybackData.swift similarity index 60% rename from submodules/TelegramUI/TelegramUI/MediaPlaybackData.swift rename to submodules/MediaPlayer/Sources/MediaPlaybackData.swift index 687daac556..b1cff7fd5f 100644 --- a/submodules/TelegramUI/TelegramUI/MediaPlaybackData.swift +++ b/submodules/MediaPlayer/Sources/MediaPlaybackData.swift @@ -1,9 +1,9 @@ import Foundation import SwiftSignalKit -final class MediaPlaybackBuffers { - let audioBuffer: MediaTrackFrameBuffer? - let videoBuffer: MediaTrackFrameBuffer? +public final class MediaPlaybackBuffers { + public let audioBuffer: MediaTrackFrameBuffer? + public let videoBuffer: MediaTrackFrameBuffer? init(audioBuffer: MediaTrackFrameBuffer?, videoBuffer: MediaTrackFrameBuffer?) { self.audioBuffer = audioBuffer diff --git a/submodules/TelegramUI/TelegramUI/MediaPlayer.swift b/submodules/MediaPlayer/Sources/MediaPlayer.swift similarity index 93% rename from submodules/TelegramUI/TelegramUI/MediaPlayer.swift rename to submodules/MediaPlayer/Sources/MediaPlayer.swift index c0244d6fdc..1c4075e03e 100644 --- a/submodules/TelegramUI/TelegramUI/MediaPlayer.swift +++ b/submodules/MediaPlayer/Sources/MediaPlayer.swift @@ -4,6 +4,7 @@ import SwiftSignalKit import Postbox import CoreMedia import TelegramCore +import TelegramAudio private let traceEvents = false @@ -42,33 +43,33 @@ private enum MediaPlayerState { case playing(MediaPlayerLoadedState) } -enum MediaPlayerActionAtEnd { +public enum MediaPlayerActionAtEnd { case loop((() -> Void)?) case action(() -> Void) case loopDisablingSound(() -> Void) case stop } -enum MediaPlayerPlayOnceWithSoundActionAtEnd { +public enum MediaPlayerPlayOnceWithSoundActionAtEnd { case loop case loopDisablingSound case stop case repeatIfNeeded } -enum MediaPlayerSeek { +public enum MediaPlayerSeek { case none case start case automatic case timecode(Double) } -enum MediaPlayerStreaming { +public enum MediaPlayerStreaming { case none case conservative case earlierStart - var enabled: Bool { + public var enabled: Bool { if case .none = self { return false } else { @@ -76,7 +77,7 @@ enum MediaPlayerStreaming { } } - var parameters: (Double, Double, Double) { + public var parameters: (Double, Double, Double) { switch self { case .none, .conservative: return (1.0, 2.0, 3.0) @@ -270,7 +271,7 @@ private final class MediaPlayerContext { self.audioRenderer?.renderer.setRate(0.0) } else { if !CMTimebaseGetRate(loadedState.controlTimebase.timebase).isEqual(to: 0.0) { - CMTimebaseSetRate(loadedState.controlTimebase.timebase, 0.0) + CMTimebaseSetRate(loadedState.controlTimebase.timebase, rate: 0.0) } } let currentTimestamp = CMTimeGetSeconds(CMTimebaseGetTime(loadedState.controlTimebase.timebase)) @@ -392,9 +393,9 @@ private final class MediaPlayerContext { self.audioRenderer = nil var timebase: CMTimebase? - CMTimebaseCreateWithMasterClock(nil, CMClockGetHostTimeClock(), &timebase) + CMTimebaseCreateWithMasterClock(allocator: nil, masterClock: CMClockGetHostTimeClock(), timebaseOut: &timebase) controlTimebase = MediaPlayerControlTimebase(timebase: timebase!, isAudio: false) - CMTimebaseSetTime(timebase!, seekResult.timestamp) + CMTimebaseSetTime(timebase!, time: seekResult.timestamp) } let loadedState = MediaPlayerLoadedState(frameSource: frameSource, mediaBuffers: buffers, controlTimebase: controlTimebase) @@ -819,7 +820,7 @@ private final class MediaPlayerContext { } } else { if !CMTimebaseGetRate(loadedState.controlTimebase.timebase).isEqual(to: rate) { - CMTimebaseSetRate(loadedState.controlTimebase.timebase, rate) + CMTimebaseSetRate(loadedState.controlTimebase.timebase, rate: rate) } } @@ -894,12 +895,12 @@ private final class MediaPlayerContext { } } -enum MediaPlayerPlaybackStatus: Equatable { +public enum MediaPlayerPlaybackStatus: Equatable { case playing case paused case buffering(initial: Bool, whilePlaying: Bool) - static func ==(lhs: MediaPlayerPlaybackStatus, rhs: MediaPlayerPlaybackStatus) -> Bool { + public static func ==(lhs: MediaPlayerPlaybackStatus, rhs: MediaPlayerPlaybackStatus) -> Bool { switch lhs { case .playing: if case .playing = rhs { @@ -923,28 +924,39 @@ enum MediaPlayerPlaybackStatus: Equatable { } } -struct MediaPlayerStatus: Equatable { - let generationTimestamp: Double - let duration: Double - let dimensions: CGSize - let timestamp: Double - let baseRate: Double - let seekId: Int - let status: MediaPlayerPlaybackStatus - let soundEnabled: Bool +public struct MediaPlayerStatus: Equatable { + public let generationTimestamp: Double + public let duration: Double + public let dimensions: CGSize + public let timestamp: Double + public let baseRate: Double + public let seekId: Int + public let status: MediaPlayerPlaybackStatus + public let soundEnabled: Bool + + public init(generationTimestamp: Double, duration: Double, dimensions: CGSize, timestamp: Double, baseRate: Double, seekId: Int, status: MediaPlayerPlaybackStatus, soundEnabled: Bool) { + self.generationTimestamp = generationTimestamp + self.duration = duration + self.dimensions = dimensions + self.timestamp = timestamp + self.baseRate = baseRate + self.seekId = seekId + self.status = status + self.soundEnabled = soundEnabled + } } -final class MediaPlayer { +public final class MediaPlayer { private let queue = Queue() private var contextRef: Unmanaged? private let statusValue = Promise() - var status: Signal { + public var status: Signal { return self.statusValue.get() } - var actionAtEnd: MediaPlayerActionAtEnd = .stop { + public var actionAtEnd: MediaPlayerActionAtEnd = .stop { didSet { let value = self.actionAtEnd self.queue.async { @@ -955,7 +967,7 @@ final class MediaPlayer { } } - init(audioSessionManager: ManagedAudioSession, postbox: Postbox, resourceReference: MediaResourceReference, tempFilePath: String? = nil, streamable: MediaPlayerStreaming, video: Bool, preferSoftwareDecoding: Bool, playAutomatically: Bool = false, enableSound: Bool, baseRate: Double = 1.0, fetchAutomatically: Bool, playAndRecord: Bool = false, keepAudioSessionWhilePaused: Bool = false, continuePlayingWithoutSoundOnLostAudioSession: Bool = false) { + public init(audioSessionManager: ManagedAudioSession, postbox: Postbox, resourceReference: MediaResourceReference, tempFilePath: String? = nil, streamable: MediaPlayerStreaming, video: Bool, preferSoftwareDecoding: Bool, playAutomatically: Bool = false, enableSound: Bool, baseRate: Double = 1.0, fetchAutomatically: Bool, playAndRecord: Bool = false, keepAudioSessionWhilePaused: Bool = false, continuePlayingWithoutSoundOnLostAudioSession: Bool = false) { self.queue.async { let context = MediaPlayerContext(queue: self.queue, audioSessionManager: audioSessionManager, playerStatus: self.statusValue, postbox: postbox, resourceReference: resourceReference, tempFilePath: tempFilePath, streamable: streamable, video: video, preferSoftwareDecoding: preferSoftwareDecoding, playAutomatically: playAutomatically, enableSound: enableSound, baseRate: baseRate, fetchAutomatically: fetchAutomatically, playAndRecord: playAndRecord, keepAudioSessionWhilePaused: keepAudioSessionWhilePaused, continuePlayingWithoutSoundOnLostAudioSession: continuePlayingWithoutSoundOnLostAudioSession) self.contextRef = Unmanaged.passRetained(context) @@ -969,7 +981,7 @@ final class MediaPlayer { } } - func play() { + public func play() { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.play() @@ -977,7 +989,7 @@ final class MediaPlayer { } } - func playOnceWithSound(playAndRecord: Bool, seek: MediaPlayerSeek = .start) { + public func playOnceWithSound(playAndRecord: Bool, seek: MediaPlayerSeek = .start) { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.playOnceWithSound(playAndRecord: playAndRecord, seek: seek) @@ -985,7 +997,7 @@ final class MediaPlayer { } } - func continuePlayingWithoutSound() { + public func continuePlayingWithoutSound() { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.continuePlayingWithoutSound() @@ -993,7 +1005,7 @@ final class MediaPlayer { } } - func setContinuePlayingWithoutSoundOnLostAudioSession(_ value: Bool) { + public func setContinuePlayingWithoutSoundOnLostAudioSession(_ value: Bool) { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.setContinuePlayingWithoutSoundOnLostAudioSession(value) @@ -1001,7 +1013,7 @@ final class MediaPlayer { } } - func setForceAudioToSpeaker(_ value: Bool) { + public func setForceAudioToSpeaker(_ value: Bool) { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.setForceAudioToSpeaker(value) @@ -1009,7 +1021,7 @@ final class MediaPlayer { } } - func setKeepAudioSessionWhilePaused(_ value: Bool) { + public func setKeepAudioSessionWhilePaused(_ value: Bool) { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.setKeepAudioSessionWhilePaused(value) @@ -1017,7 +1029,7 @@ final class MediaPlayer { } } - func pause() { + public func pause() { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.pause(lostAudioSession: false) @@ -1025,7 +1037,7 @@ final class MediaPlayer { } } - func togglePlayPause() { + public func togglePlayPause() { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.togglePlayPause() @@ -1033,7 +1045,7 @@ final class MediaPlayer { } } - func seek(timestamp: Double, play: Bool? = nil) { + public func seek(timestamp: Double, play: Bool? = nil) { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { if let play = play { @@ -1045,7 +1057,7 @@ final class MediaPlayer { } } - func setBaseRate(_ baseRate: Double) { + public func setBaseRate(_ baseRate: Double) { self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { context.setBaseRate(baseRate) @@ -1053,7 +1065,7 @@ final class MediaPlayer { } } - func attachPlayerNode(_ node: MediaPlayerNode) { + public func attachPlayerNode(_ node: MediaPlayerNode) { let nodeRef: Unmanaged = Unmanaged.passRetained(node) self.queue.async { if let context = self.contextRef?.takeUnretainedValue() { diff --git a/submodules/TelegramUI/TelegramUI/MediaPlayerAudioRenderer.swift b/submodules/MediaPlayer/Sources/MediaPlayerAudioRenderer.swift similarity index 94% rename from submodules/TelegramUI/TelegramUI/MediaPlayerAudioRenderer.swift rename to submodules/MediaPlayer/Sources/MediaPlayerAudioRenderer.swift index 4c2ee07c4d..6d972fed1e 100644 --- a/submodules/TelegramUI/TelegramUI/MediaPlayerAudioRenderer.swift +++ b/submodules/MediaPlayer/Sources/MediaPlayerAudioRenderer.swift @@ -3,6 +3,7 @@ import SwiftSignalKit import CoreMedia import AVFoundation import TelegramCore +import TelegramAudio private enum AudioPlayerRendererState { case paused @@ -91,18 +92,18 @@ private func rendererInputProc(refCon: UnsafeMutableRawPointer, ioActionFlags: U context.state = .playing(rate: rate, didSetRate: true) let masterClock: CMClockOrTimebase if #available(iOS 9.0, *) { - masterClock = CMTimebaseCopyMaster(context.timebase)! + masterClock = CMTimebaseCopyMaster(context.timebase) } else { masterClock = CMTimebaseGetMaster(context.timebase)! } - CMTimebaseSetRateAndAnchorTime(context.timebase, rate, CMTimeMake(sampleIndex, 44100), CMSyncGetTime(masterClock)) + CMTimebaseSetRateAndAnchorTime(context.timebase, rate: rate, anchorTime: CMTimeMake(value: sampleIndex, timescale: 44100), immediateMasterTime: CMSyncGetTime(masterClock)) updatedRate = context.updatedRate } else { context.renderTimestampTick += 1 if context.renderTimestampTick % 1000 == 0 { let delta = (Double(sampleIndex) / 44100.0) - CMTimeGetSeconds(CMTimebaseGetTime(context.timebase)) if delta > 0.01 { - CMTimebaseSetTime(context.timebase, CMTimeMake(sampleIndex, 44100)) + CMTimebaseSetTime(context.timebase, time: CMTimeMake(value: sampleIndex, timescale: 44100)) updatedRate = context.updatedRate } } @@ -283,7 +284,7 @@ private final class AudioPlayerRendererContext { } } else { context.state = .paused - CMTimebaseSetRate(context.timebase, 0.0) + CMTimebaseSetRate(context.timebase, rate: 0.0) } } } @@ -297,7 +298,7 @@ private final class AudioPlayerRendererContext { context.notifiedLowWater = false context.overflowData = Data() context.overflowDataMaxChannelSampleIndex = 0 - CMTimebaseSetTime(context.timebase, timestamp) + CMTimebaseSetTime(context.timebase, time: timestamp) switch context.state { case let .playing(rate, _): @@ -592,10 +593,10 @@ private final class AudioPlayerRendererContext { let takeLength = min(dataLength, bytesToRequest) let pts = CMSampleBufferGetPresentationTimeStamp(frame.sampleBuffer) - let bufferSampleIndex = CMTimeConvertScale(pts, 44100, .roundAwayFromZero).value + let bufferSampleIndex = CMTimeConvertScale(pts, timescale: 44100, method: .roundAwayFromZero).value let bytes = malloc(takeLength)! - CMBlockBufferCopyDataBytes(dataBuffer, 0, takeLength, bytes) + CMBlockBufferCopyDataBytes(dataBuffer, atOffset: 0, dataLength: takeLength, destination: bytes) strongSelf.enqueueSamples(Data(bytesNoCopy: bytes.assumingMemoryBound(to: UInt8.self), count: takeLength, deallocator: .free), sampleIndex: bufferSampleIndex) if takeLength < dataLength { @@ -603,7 +604,7 @@ private final class AudioPlayerRendererContext { let copyOffset = context.overflowData.count context.overflowData.count += dataLength - takeLength context.overflowData.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer) -> Void in - CMBlockBufferCopyDataBytes(dataBuffer, takeLength, dataLength - takeLength, bytes.advanced(by: copyOffset)) + CMBlockBufferCopyDataBytes(dataBuffer, atOffset: takeLength, dataLength: dataLength - takeLength, destination: bytes.advanced(by: copyOffset)) } } } @@ -678,34 +679,34 @@ private func audioRendererNativeStreamDescription() -> AudioStreamBasicDescripti return canonicalBasicStreamDescription } -final class MediaPlayerAudioSessionCustomControl { - let activate: () -> Void - let deactivate: () -> Void +public final class MediaPlayerAudioSessionCustomControl { + public let activate: () -> Void + public let deactivate: () -> Void - init(activate: @escaping () -> Void, deactivate: @escaping () -> Void) { + public init(activate: @escaping () -> Void, deactivate: @escaping () -> Void) { self.activate = activate self.deactivate = deactivate } } -enum MediaPlayerAudioSessionControl { +public enum MediaPlayerAudioSessionControl { case manager(ManagedAudioSession) case custom((MediaPlayerAudioSessionCustomControl) -> Disposable) } -final class MediaPlayerAudioRenderer { +public final class MediaPlayerAudioRenderer { private var contextRef: Unmanaged? private let audioClock: CMClock - let audioTimebase: CMTimebase + public let audioTimebase: CMTimebase - init(audioSession: MediaPlayerAudioSessionControl, playAndRecord: Bool, forceAudioToSpeaker: Bool, baseRate: Double, updatedRate: @escaping () -> Void, audioPaused: @escaping () -> Void) { + public init(audioSession: MediaPlayerAudioSessionControl, playAndRecord: Bool, forceAudioToSpeaker: Bool, baseRate: Double, updatedRate: @escaping () -> Void, audioPaused: @escaping () -> Void) { var audioClock: CMClock? - CMAudioClockCreate(nil, &audioClock) + CMAudioClockCreate(allocator: nil, clockOut: &audioClock) self.audioClock = audioClock! var audioTimebase: CMTimebase? - CMTimebaseCreateWithMasterClock(nil, audioClock!, &audioTimebase) + CMTimebaseCreateWithMasterClock(allocator: nil, masterClock: audioClock!, timebaseOut: &audioTimebase) self.audioTimebase = audioTimebase! audioPlayerRendererQueue.async { @@ -721,7 +722,7 @@ final class MediaPlayerAudioRenderer { } } - func start() { + public func start() { audioPlayerRendererQueue.async { if let contextRef = self.contextRef { let context = contextRef.takeUnretainedValue() @@ -730,7 +731,7 @@ final class MediaPlayerAudioRenderer { } } - func stop() { + public func stop() { audioPlayerRendererQueue.async { if let contextRef = self.contextRef { let context = contextRef.takeUnretainedValue() @@ -739,7 +740,7 @@ final class MediaPlayerAudioRenderer { } } - func setRate(_ rate: Double) { + public func setRate(_ rate: Double) { audioPlayerRendererQueue.async { if let contextRef = self.contextRef { let context = contextRef.takeUnretainedValue() @@ -748,7 +749,7 @@ final class MediaPlayerAudioRenderer { } } - func setBaseRate(_ baseRate: Double) { + public func setBaseRate(_ baseRate: Double) { audioPlayerRendererQueue.async { if let contextRef = self.contextRef { let context = contextRef.takeUnretainedValue() @@ -757,7 +758,7 @@ final class MediaPlayerAudioRenderer { } } - func beginRequestingFrames(queue: DispatchQueue, takeFrame: @escaping () -> MediaTrackFrameResult) { + public func beginRequestingFrames(queue: DispatchQueue, takeFrame: @escaping () -> MediaTrackFrameResult) { audioPlayerRendererQueue.async { if let contextRef = self.contextRef { let context = contextRef.takeUnretainedValue() @@ -766,7 +767,7 @@ final class MediaPlayerAudioRenderer { } } - func flushBuffers(at timestamp: CMTime, completion: @escaping () -> Void) { + public func flushBuffers(at timestamp: CMTime, completion: @escaping () -> Void) { audioPlayerRendererQueue.async { if let contextRef = self.contextRef { let context = contextRef.takeUnretainedValue() @@ -775,7 +776,7 @@ final class MediaPlayerAudioRenderer { } } - func setForceAudioToSpeaker(_ value: Bool) { + public func setForceAudioToSpeaker(_ value: Bool) { audioPlayerRendererQueue.async { if let contextRef = self.contextRef { let context = contextRef.takeUnretainedValue() diff --git a/submodules/TelegramUI/TelegramUI/MediaPlayerNode.swift b/submodules/MediaPlayer/Sources/MediaPlayerNode.swift similarity index 93% rename from submodules/TelegramUI/TelegramUI/MediaPlayerNode.swift rename to submodules/MediaPlayer/Sources/MediaPlayerNode.swift index ddb23cff20..bb310b7a9f 100644 --- a/submodules/TelegramUI/TelegramUI/MediaPlayerNode.swift +++ b/submodules/MediaPlayer/Sources/MediaPlayerNode.swift @@ -1,5 +1,6 @@ import Foundation import UIKit +import Display import AsyncDisplayKit import SwiftSignalKit import AVFoundation @@ -50,9 +51,9 @@ private enum PollStatus: CustomStringConvertible { } } -final class MediaPlayerNode: ASDisplayNode { - var videoInHierarchy: Bool = false - var updateVideoInHierarchy: ((Bool) -> Void)? +public final class MediaPlayerNode: ASDisplayNode { + public var videoInHierarchy: Bool = false + public var updateVideoInHierarchy: ((Bool) -> Void)? private var videoNode: MediaPlayerNodeDisplayNode @@ -60,7 +61,7 @@ final class MediaPlayerNode: ASDisplayNode { private let videoQueue: Queue - var snapshotNode: ASDisplayNode? { + public var snapshotNode: ASDisplayNode? { didSet { if let snapshotNode = oldValue { snapshotNode.removeFromSupernode() @@ -80,7 +81,7 @@ final class MediaPlayerNode: ASDisplayNode { var currentRotationAngle = 0.0 var currentAspect = 1.0 - var state: (timebase: CMTimebase, requestFrames: Bool, rotationAngle: Double, aspect: Double)? { + public var state: (timebase: CMTimebase, requestFrames: Bool, rotationAngle: Double, aspect: Double)? { didSet { self.updateState() } @@ -171,11 +172,11 @@ final class MediaPlayerNode: ASDisplayNode { let frame = frames[i] let frameTime = CMTimeGetSeconds(frame.position) maxTakenTime = frameTime - let attachments = CMSampleBufferGetSampleAttachmentsArray(frame.sampleBuffer, true)! as NSArray + let attachments = CMSampleBufferGetSampleAttachmentsArray(frame.sampleBuffer, createIfNecessary: true)! as NSArray let dict = attachments[0] as! NSMutableDictionary if i == 0 { - CMSetAttachment(frame.sampleBuffer, kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding as NSString, kCFBooleanTrue as AnyObject, kCMAttachmentMode_ShouldPropagate) - CMSetAttachment(frame.sampleBuffer, kCMSampleBufferAttachmentKey_EndsPreviousSampleDuration as NSString, kCFBooleanTrue as AnyObject, kCMAttachmentMode_ShouldPropagate) + CMSetAttachment(frame.sampleBuffer, key: kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding as NSString, value: kCFBooleanTrue as AnyObject, attachmentMode: kCMAttachmentMode_ShouldPropagate) + CMSetAttachment(frame.sampleBuffer, key: kCMSampleBufferAttachmentKey_EndsPreviousSampleDuration as NSString, value: kCFBooleanTrue as AnyObject, attachmentMode: kCMAttachmentMode_ShouldPropagate) } if CMTimeCompare(frame.position, atTime) < 0 { dict.setValue(kCFBooleanTrue as AnyObject, forKey: kCMSampleAttachmentKey_DoNotDisplay as NSString as String) @@ -233,7 +234,7 @@ final class MediaPlayerNode: ASDisplayNode { } } - var transformArguments: TransformImageArguments? { + public var transformArguments: TransformImageArguments? { didSet { var cornerRadius: CGFloat = 0.0 if let transformArguments = self.transformArguments { @@ -251,7 +252,7 @@ final class MediaPlayerNode: ASDisplayNode { } } - init(backgroundThread: Bool = false) { + public init(backgroundThread: Bool = false) { self.videoNode = MediaPlayerNodeDisplayNode() if false && backgroundThread { @@ -307,7 +308,7 @@ final class MediaPlayerNode: ASDisplayNode { } } - override var frame: CGRect { + override public var frame: CGRect { didSet { if !oldValue.size.equalTo(self.frame.size) { self.updateLayout() @@ -341,7 +342,7 @@ final class MediaPlayerNode: ASDisplayNode { self.snapshotNode?.frame = fittedRect } - func reset() { + public func reset() { self.videoLayer?.flush() } } diff --git a/submodules/TelegramUI/TelegramUI/MediaPlayerScrubbingNode.swift b/submodules/MediaPlayer/Sources/MediaPlayerScrubbingNode.swift similarity index 96% rename from submodules/TelegramUI/TelegramUI/MediaPlayerScrubbingNode.swift rename to submodules/MediaPlayer/Sources/MediaPlayerScrubbingNode.swift index abd427a18b..66fa8112da 100644 --- a/submodules/TelegramUI/TelegramUI/MediaPlayerScrubbingNode.swift +++ b/submodules/MediaPlayer/Sources/MediaPlayerScrubbingNode.swift @@ -3,7 +3,7 @@ import AsyncDisplayKit import Display import SwiftSignalKit -enum MediaPlayerScrubbingNodeCap { +public enum MediaPlayerScrubbingNodeCap { case square case round } @@ -74,13 +74,13 @@ private final class MediaPlayerScrubbingForegroundNode: ASDisplayNode { } } -enum MediaPlayerScrubbingNodeHandle { +public enum MediaPlayerScrubbingNodeHandle { case none case line case circle } -enum MediaPlayerScrubbingNodeContent { +public enum MediaPlayerScrubbingNodeContent { case standard(lineHeight: CGFloat, lineCap: MediaPlayerScrubbingNodeCap, scrubberHandle: MediaPlayerScrubbingNodeHandle, backgroundColor: UIColor, foregroundColor: UIColor) case custom(backgroundNode: ASDisplayNode, foregroundContentNode: ASDisplayNode) } @@ -175,7 +175,7 @@ private final class MediaPlayerScrubbingBufferingNode: ASDisplayNode { } } -final class MediaPlayerScrubbingNode: ASDisplayNode { +public final class MediaPlayerScrubbingNode: ASDisplayNode { private var contentNodes: MediaPlayerScrubbingNodeContentNodes private var displayLink: CADisplayLink? @@ -185,18 +185,18 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { private var scrubbingBeginTimestamp: Double? private var scrubbingTimestampValue: Double? - var playbackStatusUpdated: ((MediaPlayerPlaybackStatus?) -> Void)? - var playerStatusUpdated: ((MediaPlayerStatus?) -> Void)? - var seek: ((Double) -> Void)? + public var playbackStatusUpdated: ((MediaPlayerPlaybackStatus?) -> Void)? + public var playerStatusUpdated: ((MediaPlayerStatus?) -> Void)? + public var seek: ((Double) -> Void)? private let _scrubbingTimestamp = Promise(nil) - var scrubbingTimestamp: Signal { + public var scrubbingTimestamp: Signal { return self._scrubbingTimestamp.get() } - var ignoreSeekId: Int? + public var ignoreSeekId: Int? - var enableScrubbing: Bool = true { + public var enableScrubbing: Bool = true { didSet { switch self.contentNodes { case let .standard(node): @@ -235,7 +235,7 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { private var statusDisposable: Disposable? private var statusValuePromise = Promise() - var status: Signal? { + public var status: Signal? { didSet { if let status = self.status { self.statusValuePromise.set(status |> map { $0 }) @@ -248,7 +248,7 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { private var bufferingStatusDisposable: Disposable? private var bufferingStatusValuePromise = Promise<(IndexSet, Int)?>() - var bufferingStatus: Signal<(IndexSet, Int)?, NoError>? { + public var bufferingStatus: Signal<(IndexSet, Int)?, NoError>? { didSet { if let bufferingStatus = self.bufferingStatus { self.bufferingStatusValuePromise.set(bufferingStatus) @@ -327,7 +327,7 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { } } - init(content: MediaPlayerScrubbingNodeContent) { + public init(content: MediaPlayerScrubbingNodeContent) { self.contentNodes = MediaPlayerScrubbingNode.contentNodesFromContent(content, enableScrubbing: self.enableScrubbing) super.init() @@ -469,7 +469,7 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { } } - func updateContent(_ content: MediaPlayerScrubbingNodeContent) { + public func updateContent(_ content: MediaPlayerScrubbingNodeContent) { self.contentNodes = MediaPlayerScrubbingNode.contentNodesFromContent(content, enableScrubbing: self.enableScrubbing) self.setupContentNodes() @@ -483,7 +483,7 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { self.bufferingStatusDisposable?.dispose() } - override var frame: CGRect { + override public var frame: CGRect { didSet { if self.frame.size != oldValue.size { self.updateProgressAnimations() @@ -491,7 +491,7 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { } } - func updateColors(backgroundColor: UIColor, foregroundColor: UIColor) { + public func updateColors(backgroundColor: UIColor, foregroundColor: UIColor) { switch self.contentNodes { case let .standard(node): switch node.lineCap { @@ -546,7 +546,7 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { let displayLink = CADisplayLink(target: DisplayLinkProxy({ [weak self] in self?.updateProgress() }), selector: #selector(DisplayLinkProxy.displayLinkEvent)) - displayLink.add(to: .main, forMode: .commonModes) + displayLink.add(to: .main, forMode: RunLoop.Mode.common) self.displayLink = displayLink } self.displayLink?.isPaused = false @@ -690,7 +690,7 @@ final class MediaPlayerScrubbingNode: ASDisplayNode { } } - override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { + override public func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { var hitBounds = self.bounds let hitTestSlop = self.hitTestSlop hitBounds.origin.x += hitTestSlop.left diff --git a/submodules/TelegramUI/TelegramUI/MediaPlayerTimeTextNode.swift b/submodules/MediaPlayer/Sources/MediaPlayerTimeTextNode.swift similarity index 90% rename from submodules/TelegramUI/TelegramUI/MediaPlayerTimeTextNode.swift rename to submodules/MediaPlayer/Sources/MediaPlayerTimeTextNode.swift index d88db91dc3..e69b7de216 100644 --- a/submodules/TelegramUI/TelegramUI/MediaPlayerTimeTextNode.swift +++ b/submodules/MediaPlayer/Sources/MediaPlayerTimeTextNode.swift @@ -5,7 +5,7 @@ import Display private let textFont = Font.regular(13.0) -enum MediaPlayerTimeTextNodeMode { +public enum MediaPlayerTimeTextNodeMode { case normal case reversed } @@ -51,15 +51,15 @@ private final class MediaPlayerTimeTextNodeParameters: NSObject { } } -final class MediaPlayerTimeTextNode: ASDisplayNode { - var alignment: NSTextAlignment = .left - var mode: MediaPlayerTimeTextNodeMode = .normal - var textColor: UIColor { +public final class MediaPlayerTimeTextNode: ASDisplayNode { + public var alignment: NSTextAlignment = .left + public var mode: MediaPlayerTimeTextNodeMode = .normal + public var textColor: UIColor { didSet { self.updateTimestamp() } } - var defaultDuration: Double? { + public var defaultDuration: Double? { didSet { self.updateTimestamp() } @@ -91,7 +91,7 @@ final class MediaPlayerTimeTextNode: ASDisplayNode { private var statusDisposable: Disposable? private var statusValuePromise = Promise() - var status: Signal? { + public var status: Signal? { didSet { if let status = self.status { self.statusValuePromise.set(status) @@ -101,7 +101,7 @@ final class MediaPlayerTimeTextNode: ASDisplayNode { } } - init(textColor: UIColor) { + public init(textColor: UIColor) { self.textColor = textColor super.init() @@ -109,11 +109,11 @@ final class MediaPlayerTimeTextNode: ASDisplayNode { self.isOpaque = false self.statusDisposable = (self.statusValuePromise.get() - |> deliverOnMainQueue).start(next: { [weak self] status in - if let strongSelf = self { - strongSelf.statusValue = status - } - }) + |> deliverOnMainQueue).start(next: { [weak self] status in + if let strongSelf = self { + strongSelf.statusValue = status + } + }) } deinit { @@ -160,7 +160,7 @@ final class MediaPlayerTimeTextNode: ASDisplayNode { } } - override func drawParameters(forAsyncLayer layer: _ASDisplayLayer) -> NSObjectProtocol? { + override public func drawParameters(forAsyncLayer layer: _ASDisplayLayer) -> NSObjectProtocol? { return MediaPlayerTimeTextNodeParameters(state: self.state, alignment: self.alignment, mode: self.mode, textColor: self.textColor) } diff --git a/submodules/MediaPlayer/Sources/MediaTrackDecodableFrame.swift b/submodules/MediaPlayer/Sources/MediaTrackDecodableFrame.swift new file mode 100644 index 0000000000..846c71bdb5 --- /dev/null +++ b/submodules/MediaPlayer/Sources/MediaTrackDecodableFrame.swift @@ -0,0 +1,26 @@ +import Foundation +import CoreMedia +import FFMpeg + +public enum MediaTrackFrameType { + case video + case audio +} + +public final class MediaTrackDecodableFrame { + public let type: MediaTrackFrameType + public let packet: FFMpegPacket + public let pts: CMTime + public let dts: CMTime + public let duration: CMTime + + public init(type: MediaTrackFrameType, packet: FFMpegPacket, pts: CMTime, dts: CMTime, duration: CMTime) { + self.type = type + + self.pts = pts + self.dts = dts + self.duration = duration + + self.packet = packet + } +} diff --git a/submodules/MediaPlayer/Sources/MediaTrackFrame.swift b/submodules/MediaPlayer/Sources/MediaTrackFrame.swift new file mode 100644 index 0000000000..7ddd0d1417 --- /dev/null +++ b/submodules/MediaPlayer/Sources/MediaTrackFrame.swift @@ -0,0 +1,26 @@ +import Foundation +import CoreMedia + +public final class MediaTrackFrame { + public let type: MediaTrackFrameType + public let sampleBuffer: CMSampleBuffer + public let resetDecoder: Bool + public let decoded: Bool + public let rotationAngle: Double + + public init(type: MediaTrackFrameType, sampleBuffer: CMSampleBuffer, resetDecoder: Bool, decoded: Bool, rotationAngle: Double = 0.0) { + self.type = type + self.sampleBuffer = sampleBuffer + self.resetDecoder = resetDecoder + self.decoded = decoded + self.rotationAngle = rotationAngle + } + + public var position: CMTime { + return CMSampleBufferGetPresentationTimeStamp(self.sampleBuffer) + } + + public var duration: CMTime { + return CMSampleBufferGetDuration(self.sampleBuffer) + } +} diff --git a/submodules/TelegramUI/TelegramUI/MediaTrackFrameBuffer.swift b/submodules/MediaPlayer/Sources/MediaTrackFrameBuffer.swift similarity index 94% rename from submodules/TelegramUI/TelegramUI/MediaTrackFrameBuffer.swift rename to submodules/MediaPlayer/Sources/MediaTrackFrameBuffer.swift index 63419f843a..60643ab0f6 100644 --- a/submodules/TelegramUI/TelegramUI/MediaTrackFrameBuffer.swift +++ b/submodules/MediaPlayer/Sources/MediaTrackFrameBuffer.swift @@ -2,13 +2,13 @@ import Foundation import SwiftSignalKit import CoreMedia -enum MediaTrackFrameBufferStatus { +public enum MediaTrackFrameBufferStatus { case buffering case full(until: Double) case finished(at: Double) } -enum MediaTrackFrameResult { +public enum MediaTrackFrameResult { case noFrames case skipFrame case restoreState([MediaTrackFrame], CMTime) @@ -18,7 +18,7 @@ enum MediaTrackFrameResult { private let traceEvents = false -final class MediaTrackFrameBuffer { +public final class MediaTrackFrameBuffer { private let stallDuration: Double private let lowWaterDuration: Double private let highWaterDuration: Double @@ -26,7 +26,7 @@ final class MediaTrackFrameBuffer { private let frameSource: MediaFrameSource private let decoder: MediaTrackFrameDecoder private let type: MediaTrackFrameType - let duration: CMTime + public let duration: CMTime let rotationAngle: Double let aspect: Double @@ -100,7 +100,7 @@ final class MediaTrackFrameBuffer { self.statusUpdated() } - func status(at timestamp: Double) -> MediaTrackFrameBufferStatus { + public func status(at timestamp: Double) -> MediaTrackFrameBufferStatus { var bufferedDuration = 0.0 if let bufferedUntilTime = self.bufferedUntilTime { if CMTimeCompare(bufferedUntilTime, self.duration) >= 0 || self.endOfStream { @@ -139,11 +139,11 @@ final class MediaTrackFrameBuffer { } } - var hasFrames: Bool { + public var hasFrames: Bool { return !self.frames.isEmpty } - func takeFrame() -> MediaTrackFrameResult { + public func takeFrame() -> MediaTrackFrameResult { if !self.frames.isEmpty { let frame = self.frames.removeFirst() if let decodedFrame = self.decoder.decode(frame: frame) { diff --git a/submodules/TelegramUI/TelegramUI/MediaTrackFrameDecoder.swift b/submodules/MediaPlayer/Sources/MediaTrackFrameDecoder.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/MediaTrackFrameDecoder.swift rename to submodules/MediaPlayer/Sources/MediaTrackFrameDecoder.swift diff --git a/submodules/TelegramUI/TelegramUI/RingBuffer.h b/submodules/MediaPlayer/Sources/RingBuffer.h similarity index 100% rename from submodules/TelegramUI/TelegramUI/RingBuffer.h rename to submodules/MediaPlayer/Sources/RingBuffer.h diff --git a/submodules/TelegramUI/TelegramUI/RingBuffer.m b/submodules/MediaPlayer/Sources/RingBuffer.m similarity index 100% rename from submodules/TelegramUI/TelegramUI/RingBuffer.m rename to submodules/MediaPlayer/Sources/RingBuffer.m diff --git a/submodules/TelegramUI/TelegramUI/RingByteBuffer.swift b/submodules/MediaPlayer/Sources/RingByteBuffer.swift similarity index 98% rename from submodules/TelegramUI/TelegramUI/RingByteBuffer.swift rename to submodules/MediaPlayer/Sources/RingByteBuffer.swift index 1d48fbfd5e..8ce25943d3 100644 --- a/submodules/TelegramUI/TelegramUI/RingByteBuffer.swift +++ b/submodules/MediaPlayer/Sources/RingByteBuffer.swift @@ -1,6 +1,5 @@ import Foundation import Darwin -import TelegramUIPrivateModule public final class RingByteBuffer { public let size: Int diff --git a/submodules/MediaPlayer/Sources/UniversalMediaPlayer.h b/submodules/MediaPlayer/Sources/UniversalMediaPlayer.h new file mode 100644 index 0000000000..0a450ef9f3 --- /dev/null +++ b/submodules/MediaPlayer/Sources/UniversalMediaPlayer.h @@ -0,0 +1,9 @@ +#import + +//! Project version number for MediaPlayer. +FOUNDATION_EXPORT double MediaPlayerVersionNumber; + +//! Project version string for MediaPlayer. +FOUNDATION_EXPORT const unsigned char MediaPlayerVersionString[]; + +#import diff --git a/submodules/TelegramUI/TelegramUI/VideoPlayerProxy.swift b/submodules/MediaPlayer/Sources/VideoPlayerProxy.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/VideoPlayerProxy.swift rename to submodules/MediaPlayer/Sources/VideoPlayerProxy.swift diff --git a/submodules/MediaPlayer/UniversalMediaPlayer_Xcode.xcodeproj/project.pbxproj b/submodules/MediaPlayer/UniversalMediaPlayer_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..acaf208341 --- /dev/null +++ b/submodules/MediaPlayer/UniversalMediaPlayer_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,468 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0750C6E22B28E6600BE5F6E /* RingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = D0750C6B22B28E6500BE5F6E /* RingBuffer.m */; }; + D0750C6F22B28E6600BE5F6E /* RingByteBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0750C6C22B28E6600BE5F6E /* RingByteBuffer.swift */; }; + D0750C7022B28E6600BE5F6E /* RingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = D0750C6D22B28E6600BE5F6E /* RingBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE322422B285F70058D3BC /* UniversalMediaPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE322222B285F70058D3BC /* UniversalMediaPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE322C22B2863A0058D3BC /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE322B22B2863A0058D3BC /* Display.framework */; }; + D0AE322E22B2863D0058D3BC /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE322D22B2863D0058D3BC /* AsyncDisplayKit.framework */; }; + D0AE323022B286420058D3BC /* FFMpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE322F22B286420058D3BC /* FFMpeg.framework */; }; + D0AE323222B286450058D3BC /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE323122B286450058D3BC /* Postbox.framework */; }; + D0AE323422B2864A0058D3BC /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE323322B2864A0058D3BC /* TelegramCore.framework */; }; + D0AE323622B286520058D3BC /* TelegramAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE323522B286520058D3BC /* TelegramAudio.framework */; }; + D0AE323822B2865A0058D3BC /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE323722B2865A0058D3BC /* SwiftSignalKit.framework */; }; + D0AE324B22B286A70058D3BC /* MediaFrameSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE323922B286A50058D3BC /* MediaFrameSource.swift */; }; + D0AE324C22B286A70058D3BC /* FFMpegMediaFrameSourceContextHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE323A22B286A50058D3BC /* FFMpegMediaFrameSourceContextHelpers.swift */; }; + D0AE324D22B286A70058D3BC /* FFMpegMediaFrameSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE323B22B286A50058D3BC /* FFMpegMediaFrameSource.swift */; }; + D0AE324E22B286A70058D3BC /* VideoPlayerProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE323C22B286A50058D3BC /* VideoPlayerProxy.swift */; }; + D0AE324F22B286A70058D3BC /* MediaPlayerTimeTextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE323D22B286A60058D3BC /* MediaPlayerTimeTextNode.swift */; }; + D0AE325022B286A70058D3BC /* MediaTrackFrameBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE323E22B286A60058D3BC /* MediaTrackFrameBuffer.swift */; }; + D0AE325122B286A70058D3BC /* MediaPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE323F22B286A60058D3BC /* MediaPlayer.swift */; }; + D0AE325222B286A70058D3BC /* FFMpegMediaFrameSourceContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324022B286A60058D3BC /* FFMpegMediaFrameSourceContext.swift */; }; + D0AE325322B286A70058D3BC /* MediaPlayerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324122B286A60058D3BC /* MediaPlayerNode.swift */; }; + D0AE325422B286A70058D3BC /* MediaTrackFrameDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324222B286A60058D3BC /* MediaTrackFrameDecoder.swift */; }; + D0AE325522B286A70058D3BC /* FFMpegAudioFrameDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324322B286A60058D3BC /* FFMpegAudioFrameDecoder.swift */; }; + D0AE325622B286A70058D3BC /* MediaPlayerAudioRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324422B286A60058D3BC /* MediaPlayerAudioRenderer.swift */; }; + D0AE325722B286A70058D3BC /* MediaPlaybackData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324522B286A70058D3BC /* MediaPlaybackData.swift */; }; + D0AE325822B286A70058D3BC /* FFMpegMediaPassthroughVideoFrameDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324622B286A70058D3BC /* FFMpegMediaPassthroughVideoFrameDecoder.swift */; }; + D0AE325922B286A70058D3BC /* MediaPlayerScrubbingNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324722B286A70058D3BC /* MediaPlayerScrubbingNode.swift */; }; + D0AE325A22B286A70058D3BC /* FFMpegMediaVideoFrameDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324822B286A70058D3BC /* FFMpegMediaVideoFrameDecoder.swift */; }; + D0AE325B22B286A70058D3BC /* MediaTrackDecodableFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324922B286A70058D3BC /* MediaTrackDecodableFrame.swift */; }; + D0AE325C22B286A70058D3BC /* MediaTrackFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE324A22B286A70058D3BC /* MediaTrackFrame.swift */; }; + D0AE325E22B286C30058D3BC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE325D22B286C30058D3BC /* AVFoundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0750C6B22B28E6500BE5F6E /* RingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RingBuffer.m; sourceTree = ""; }; + D0750C6C22B28E6600BE5F6E /* RingByteBuffer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RingByteBuffer.swift; sourceTree = ""; }; + D0750C6D22B28E6600BE5F6E /* RingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RingBuffer.h; sourceTree = ""; }; + D0AE321F22B285F70058D3BC /* UniversalMediaPlayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = UniversalMediaPlayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE322222B285F70058D3BC /* UniversalMediaPlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UniversalMediaPlayer.h; sourceTree = ""; }; + D0AE322322B285F70058D3BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0AE322B22B2863A0058D3BC /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE322D22B2863D0058D3BC /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE322F22B286420058D3BC /* FFMpeg.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = FFMpeg.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE323122B286450058D3BC /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE323322B2864A0058D3BC /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE323522B286520058D3BC /* TelegramAudio.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramAudio.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE323722B2865A0058D3BC /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE323922B286A50058D3BC /* MediaFrameSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaFrameSource.swift; sourceTree = ""; }; + D0AE323A22B286A50058D3BC /* FFMpegMediaFrameSourceContextHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaFrameSourceContextHelpers.swift; sourceTree = ""; }; + D0AE323B22B286A50058D3BC /* FFMpegMediaFrameSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaFrameSource.swift; sourceTree = ""; }; + D0AE323C22B286A50058D3BC /* VideoPlayerProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoPlayerProxy.swift; sourceTree = ""; }; + D0AE323D22B286A60058D3BC /* MediaPlayerTimeTextNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayerTimeTextNode.swift; sourceTree = ""; }; + D0AE323E22B286A60058D3BC /* MediaTrackFrameBuffer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTrackFrameBuffer.swift; sourceTree = ""; }; + D0AE323F22B286A60058D3BC /* MediaPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayer.swift; sourceTree = ""; }; + D0AE324022B286A60058D3BC /* FFMpegMediaFrameSourceContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaFrameSourceContext.swift; sourceTree = ""; }; + D0AE324122B286A60058D3BC /* MediaPlayerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayerNode.swift; sourceTree = ""; }; + D0AE324222B286A60058D3BC /* MediaTrackFrameDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTrackFrameDecoder.swift; sourceTree = ""; }; + D0AE324322B286A60058D3BC /* FFMpegAudioFrameDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegAudioFrameDecoder.swift; sourceTree = ""; }; + D0AE324422B286A60058D3BC /* MediaPlayerAudioRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayerAudioRenderer.swift; sourceTree = ""; }; + D0AE324522B286A70058D3BC /* MediaPlaybackData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlaybackData.swift; sourceTree = ""; }; + D0AE324622B286A70058D3BC /* FFMpegMediaPassthroughVideoFrameDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaPassthroughVideoFrameDecoder.swift; sourceTree = ""; }; + D0AE324722B286A70058D3BC /* MediaPlayerScrubbingNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayerScrubbingNode.swift; sourceTree = ""; }; + D0AE324822B286A70058D3BC /* FFMpegMediaVideoFrameDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaVideoFrameDecoder.swift; sourceTree = ""; }; + D0AE324922B286A70058D3BC /* MediaTrackDecodableFrame.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTrackDecodableFrame.swift; sourceTree = ""; }; + D0AE324A22B286A70058D3BC /* MediaTrackFrame.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTrackFrame.swift; sourceTree = ""; }; + D0AE325D22B286C30058D3BC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE321C22B285F70058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE325E22B286C30058D3BC /* AVFoundation.framework in Frameworks */, + D0AE323822B2865A0058D3BC /* SwiftSignalKit.framework in Frameworks */, + D0AE323622B286520058D3BC /* TelegramAudio.framework in Frameworks */, + D0AE323422B2864A0058D3BC /* TelegramCore.framework in Frameworks */, + D0AE323222B286450058D3BC /* Postbox.framework in Frameworks */, + D0AE323022B286420058D3BC /* FFMpeg.framework in Frameworks */, + D0AE322E22B2863D0058D3BC /* AsyncDisplayKit.framework in Frameworks */, + D0AE322C22B2863A0058D3BC /* Display.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0AE321522B285F70058D3BC = { + isa = PBXGroup; + children = ( + D0AE322322B285F70058D3BC /* Info.plist */, + D0AE322122B285F70058D3BC /* Sources */, + D0AE322022B285F70058D3BC /* Products */, + D0AE322A22B2863A0058D3BC /* Frameworks */, + ); + sourceTree = ""; + }; + D0AE322022B285F70058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE321F22B285F70058D3BC /* UniversalMediaPlayer.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE322122B285F70058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0750C6D22B28E6600BE5F6E /* RingBuffer.h */, + D0750C6B22B28E6500BE5F6E /* RingBuffer.m */, + D0750C6C22B28E6600BE5F6E /* RingByteBuffer.swift */, + D0AE324322B286A60058D3BC /* FFMpegAudioFrameDecoder.swift */, + D0AE323B22B286A50058D3BC /* FFMpegMediaFrameSource.swift */, + D0AE324022B286A60058D3BC /* FFMpegMediaFrameSourceContext.swift */, + D0AE323A22B286A50058D3BC /* FFMpegMediaFrameSourceContextHelpers.swift */, + D0AE324622B286A70058D3BC /* FFMpegMediaPassthroughVideoFrameDecoder.swift */, + D0AE324822B286A70058D3BC /* FFMpegMediaVideoFrameDecoder.swift */, + D0AE323922B286A50058D3BC /* MediaFrameSource.swift */, + D0AE324522B286A70058D3BC /* MediaPlaybackData.swift */, + D0AE323F22B286A60058D3BC /* MediaPlayer.swift */, + D0AE324422B286A60058D3BC /* MediaPlayerAudioRenderer.swift */, + D0AE324122B286A60058D3BC /* MediaPlayerNode.swift */, + D0AE324722B286A70058D3BC /* MediaPlayerScrubbingNode.swift */, + D0AE323D22B286A60058D3BC /* MediaPlayerTimeTextNode.swift */, + D0AE324922B286A70058D3BC /* MediaTrackDecodableFrame.swift */, + D0AE324A22B286A70058D3BC /* MediaTrackFrame.swift */, + D0AE323E22B286A60058D3BC /* MediaTrackFrameBuffer.swift */, + D0AE324222B286A60058D3BC /* MediaTrackFrameDecoder.swift */, + D0AE323C22B286A50058D3BC /* VideoPlayerProxy.swift */, + D0AE322222B285F70058D3BC /* UniversalMediaPlayer.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0AE322A22B2863A0058D3BC /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0AE325D22B286C30058D3BC /* AVFoundation.framework */, + D0AE323722B2865A0058D3BC /* SwiftSignalKit.framework */, + D0AE323522B286520058D3BC /* TelegramAudio.framework */, + D0AE323322B2864A0058D3BC /* TelegramCore.framework */, + D0AE323122B286450058D3BC /* Postbox.framework */, + D0AE322F22B286420058D3BC /* FFMpeg.framework */, + D0AE322D22B2863D0058D3BC /* AsyncDisplayKit.framework */, + D0AE322B22B2863A0058D3BC /* Display.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE321A22B285F70058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0750C7022B28E6600BE5F6E /* RingBuffer.h in Headers */, + D0AE322422B285F70058D3BC /* UniversalMediaPlayer.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE321E22B285F70058D3BC /* UniversalMediaPlayer */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE322722B285F70058D3BC /* Build configuration list for PBXNativeTarget "UniversalMediaPlayer" */; + buildPhases = ( + D0AE321A22B285F70058D3BC /* Headers */, + D0AE321B22B285F70058D3BC /* Sources */, + D0AE321C22B285F70058D3BC /* Frameworks */, + D0AE321D22B285F70058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = UniversalMediaPlayer; + productName = MediaPlayer; + productReference = D0AE321F22B285F70058D3BC /* UniversalMediaPlayer.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE321622B285F70058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE321E22B285F70058D3BC = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + }; + }; + }; + buildConfigurationList = D0AE321922B285F70058D3BC /* Build configuration list for PBXProject "UniversalMediaPlayer_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE321522B285F70058D3BC; + productRefGroup = D0AE322022B285F70058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE321E22B285F70058D3BC /* UniversalMediaPlayer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE321D22B285F70058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE321B22B285F70058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE325522B286A70058D3BC /* FFMpegAudioFrameDecoder.swift in Sources */, + D0AE324C22B286A70058D3BC /* FFMpegMediaFrameSourceContextHelpers.swift in Sources */, + D0AE325A22B286A70058D3BC /* FFMpegMediaVideoFrameDecoder.swift in Sources */, + D0750C6E22B28E6600BE5F6E /* RingBuffer.m in Sources */, + D0AE325422B286A70058D3BC /* MediaTrackFrameDecoder.swift in Sources */, + D0AE325322B286A70058D3BC /* MediaPlayerNode.swift in Sources */, + D0AE325122B286A70058D3BC /* MediaPlayer.swift in Sources */, + D0AE325722B286A70058D3BC /* MediaPlaybackData.swift in Sources */, + D0AE324D22B286A70058D3BC /* FFMpegMediaFrameSource.swift in Sources */, + D0AE324B22B286A70058D3BC /* MediaFrameSource.swift in Sources */, + D0AE325922B286A70058D3BC /* MediaPlayerScrubbingNode.swift in Sources */, + D0AE325622B286A70058D3BC /* MediaPlayerAudioRenderer.swift in Sources */, + D0AE325222B286A70058D3BC /* FFMpegMediaFrameSourceContext.swift in Sources */, + D0AE324E22B286A70058D3BC /* VideoPlayerProxy.swift in Sources */, + D0AE325022B286A70058D3BC /* MediaTrackFrameBuffer.swift in Sources */, + D0AE325C22B286A70058D3BC /* MediaTrackFrame.swift in Sources */, + D0AE324F22B286A70058D3BC /* MediaPlayerTimeTextNode.swift in Sources */, + D0750C6F22B28E6600BE5F6E /* RingByteBuffer.swift in Sources */, + D0AE325822B286A70058D3BC /* FFMpegMediaPassthroughVideoFrameDecoder.swift in Sources */, + D0AE325B22B286A70058D3BC /* MediaTrackDecodableFrame.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE322522B285F70058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE322622B285F70058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE322822B285F70058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.UniversalMediaPlayer; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE322922B285F70058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.UniversalMediaPlayer; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE321922B285F70058D3BC /* Build configuration list for PBXProject "UniversalMediaPlayer_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE322522B285F70058D3BC /* DebugAppStoreLLC */, + D0AE322622B285F70058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE322722B285F70058D3BC /* Build configuration list for PBXNativeTarget "UniversalMediaPlayer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE322822B285F70058D3BC /* DebugAppStoreLLC */, + D0AE322922B285F70058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE321622B285F70058D3BC /* Project object */; +} diff --git a/submodules/RMIntro/Info.plist b/submodules/RMIntro/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/RMIntro/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/RMIntro/RMIntro_Xcode.xcodeproj/project.pbxproj b/submodules/RMIntro/RMIntro_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..3803a86d57 --- /dev/null +++ b/submodules/RMIntro/RMIntro_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,622 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0AE304922B1D77E0058D3BC /* RMIntro.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE304722B1D77E0058D3BC /* RMIntro.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE309522B1D8ED0058D3BC /* rngs.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE305622B1D8ED0058D3BC /* rngs.h */; }; + D0AE309622B1D8ED0058D3BC /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = D0AE305722B1D8ED0058D3BC /* buffer.c */; }; + D0AE309722B1D8ED0058D3BC /* shader.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE305822B1D8ED0058D3BC /* shader.h */; }; + D0AE309822B1D8ED0058D3BC /* program.c in Sources */ = {isa = PBXBuildFile; fileRef = D0AE305922B1D8ED0058D3BC /* program.c */; }; + D0AE309922B1D8ED0058D3BC /* animations.c in Sources */ = {isa = PBXBuildFile; fileRef = D0AE305A22B1D8ED0058D3BC /* animations.c */; }; + D0AE309A22B1D8ED0058D3BC /* timing.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE305B22B1D8ED0058D3BC /* timing.h */; }; + D0AE309B22B1D8ED0058D3BC /* matrix.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE305C22B1D8ED0058D3BC /* matrix.h */; }; + D0AE309C22B1D8ED0058D3BC /* objects.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE305D22B1D8ED0058D3BC /* objects.h */; }; + D0AE309D22B1D8ED0058D3BC /* buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE305E22B1D8ED0058D3BC /* buffer.h */; }; + D0AE309E22B1D8ED0058D3BC /* rngs.c in Sources */ = {isa = PBXBuildFile; fileRef = D0AE305F22B1D8ED0058D3BC /* rngs.c */; }; + D0AE309F22B1D8ED0058D3BC /* macros.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE306022B1D8ED0058D3BC /* macros.h */; }; + D0AE30A022B1D8ED0058D3BC /* math_helper.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE306122B1D8ED0058D3BC /* math_helper.h */; }; + D0AE30A122B1D8ED0058D3BC /* shader.c in Sources */ = {isa = PBXBuildFile; fileRef = D0AE306222B1D8ED0058D3BC /* shader.c */; }; + D0AE30A222B1D8ED0058D3BC /* timing.c in Sources */ = {isa = PBXBuildFile; fileRef = D0AE306322B1D8ED0058D3BC /* timing.c */; }; + D0AE30A322B1D8ED0058D3BC /* animations.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE306422B1D8ED0058D3BC /* animations.h */; }; + D0AE30A422B1D8ED0058D3BC /* program.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE306522B1D8ED0058D3BC /* program.h */; }; + D0AE30A522B1D8ED0058D3BC /* objects.c in Sources */ = {isa = PBXBuildFile; fileRef = D0AE306622B1D8ED0058D3BC /* objects.c */; }; + D0AE30A622B1D8ED0058D3BC /* RMIntroViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE306922B1D8ED0058D3BC /* RMIntroViewController.m */; }; + D0AE30A722B1D8ED0058D3BC /* RMGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE306A22B1D8ED0058D3BC /* RMGeometry.h */; }; + D0AE30A822B1D8ED0058D3BC /* platform_gl.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE306B22B1D8ED0058D3BC /* platform_gl.h */; }; + D0AE30A922B1D8ED0058D3BC /* RMIntroPageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE306C22B1D8ED0058D3BC /* RMIntroPageView.h */; }; + D0AE30AA22B1D8ED0058D3BC /* texture_helper.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE306D22B1D8ED0058D3BC /* texture_helper.m */; }; + D0AE30AB22B1D8ED0058D3BC /* ic_bubble_dot@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE306F22B1D8ED0058D3BC /* ic_bubble_dot@2x.png */; }; + D0AE30AC22B1D8ED0058D3BC /* powerful_mask@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307022B1D8ED0058D3BC /* powerful_mask@2x.png */; }; + D0AE30AD22B1D8ED0058D3BC /* telegram_sphere@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307122B1D8ED0058D3BC /* telegram_sphere@2x.png */; }; + D0AE30AE22B1D8ED0058D3BC /* powerful_star@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307222B1D8ED0058D3BC /* powerful_star@2x.png */; }; + D0AE30AF22B1D8ED0058D3BC /* private_door@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307322B1D8ED0058D3BC /* private_door@2x.png */; }; + D0AE30B022B1D8ED0058D3BC /* start_arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307422B1D8ED0058D3BC /* start_arrow@2x.png */; }; + D0AE30B122B1D8ED0058D3BC /* knot_up@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307522B1D8ED0058D3BC /* knot_up@2x.png */; }; + D0AE30B222B1D8ED0058D3BC /* start_arrow_ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307622B1D8ED0058D3BC /* start_arrow_ipad.png */; }; + D0AE30B322B1D8ED0058D3BC /* fast_arrow_shadow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307722B1D8ED0058D3BC /* fast_arrow_shadow@2x.png */; }; + D0AE30B422B1D8ED0058D3BC /* ic_cam@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307822B1D8ED0058D3BC /* ic_cam@2x.png */; }; + D0AE30B522B1D8ED0058D3BC /* start_arrow_ipad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307922B1D8ED0058D3BC /* start_arrow_ipad@2x.png */; }; + D0AE30B622B1D8ED0058D3BC /* fast_body@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307A22B1D8ED0058D3BC /* fast_body@2x.png */; }; + D0AE30B722B1D8ED0058D3BC /* knot_down@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307B22B1D8ED0058D3BC /* knot_down@2x.png */; }; + D0AE30B822B1D8ED0058D3BC /* fast_arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307C22B1D8ED0058D3BC /* fast_arrow@2x.png */; }; + D0AE30B922B1D8ED0058D3BC /* ic_pencil@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307D22B1D8ED0058D3BC /* ic_pencil@2x.png */; }; + D0AE30BA22B1D8ED0058D3BC /* ic_smile_eye@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307E22B1D8ED0058D3BC /* ic_smile_eye@2x.png */; }; + D0AE30BB22B1D8ED0058D3BC /* ic_bubble@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE307F22B1D8ED0058D3BC /* ic_bubble@2x.png */; }; + D0AE30BC22B1D8ED0058D3BC /* ic_pin@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308022B1D8ED0058D3BC /* ic_pin@2x.png */; }; + D0AE30BD22B1D8ED0058D3BC /* fast_spiral@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308122B1D8ED0058D3BC /* fast_spiral@2x.png */; }; + D0AE30BE22B1D8ED0058D3BC /* ic_cam_lens@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308222B1D8ED0058D3BC /* ic_cam_lens@2x.png */; }; + D0AE30BF22B1D8ED0058D3BC /* ic_videocam@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308322B1D8ED0058D3BC /* ic_videocam@2x.png */; }; + D0AE30C022B1D8ED0058D3BC /* powerful_infinity_white@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308422B1D8ED0058D3BC /* powerful_infinity_white@2x.png */; }; + D0AE30C122B1D8ED0058D3BC /* private_screw@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308522B1D8ED0058D3BC /* private_screw@2x.png */; }; + D0AE30C222B1D8ED0058D3BC /* powerful_infinity@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308622B1D8ED0058D3BC /* powerful_infinity@2x.png */; }; + D0AE30C322B1D8ED0058D3BC /* telegram_plane@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308722B1D8ED0058D3BC /* telegram_plane@2x.png */; }; + D0AE30C422B1D8ED0058D3BC /* ic_smile@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0AE308822B1D8ED0058D3BC /* ic_smile@2x.png */; }; + D0AE30C522B1D8ED0058D3BC /* RMGeometry.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE308922B1D8ED0058D3BC /* RMGeometry.m */; }; + D0AE30C622B1D8ED0058D3BC /* RMIntroViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE308A22B1D8ED0058D3BC /* RMIntroViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE30C722B1D8ED0058D3BC /* texture_helper.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE308B22B1D8ED0058D3BC /* texture_helper.h */; }; + D0AE30C822B1D8ED0058D3BC /* RMIntroPageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE308C22B1D8ED0058D3BC /* RMIntroPageView.m */; }; + D0AE30C922B1D8ED0058D3BC /* platform_log.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE308E22B1D8ED0058D3BC /* platform_log.h */; }; + D0AE30CA22B1D8ED0058D3BC /* platform_macros.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE308F22B1D8ED0058D3BC /* platform_macros.h */; }; + D0AE30CB22B1D8ED0058D3BC /* platform_log.c in Sources */ = {isa = PBXBuildFile; fileRef = D0AE309022B1D8ED0058D3BC /* platform_log.c */; }; + D0AE30CC22B1D8ED0058D3BC /* linmath.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE309322B1D8ED0058D3BC /* linmath.h */; }; + D0AE30CD22B1D8ED0058D3BC /* .gitignore in Resources */ = {isa = PBXBuildFile; fileRef = D0AE309422B1D8ED0058D3BC /* .gitignore */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0AE304422B1D77E0058D3BC /* RMIntro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RMIntro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE304722B1D77E0058D3BC /* RMIntro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RMIntro.h; sourceTree = ""; }; + D0AE304822B1D77E0058D3BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0AE305622B1D8ED0058D3BC /* rngs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rngs.h; sourceTree = ""; }; + D0AE305722B1D8ED0058D3BC /* buffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = buffer.c; sourceTree = ""; }; + D0AE305822B1D8ED0058D3BC /* shader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shader.h; sourceTree = ""; }; + D0AE305922B1D8ED0058D3BC /* program.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = program.c; sourceTree = ""; }; + D0AE305A22B1D8ED0058D3BC /* animations.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = animations.c; sourceTree = ""; }; + D0AE305B22B1D8ED0058D3BC /* timing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timing.h; sourceTree = ""; }; + D0AE305C22B1D8ED0058D3BC /* matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; + D0AE305D22B1D8ED0058D3BC /* objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objects.h; sourceTree = ""; }; + D0AE305E22B1D8ED0058D3BC /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = ""; }; + D0AE305F22B1D8ED0058D3BC /* rngs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rngs.c; sourceTree = ""; }; + D0AE306022B1D8ED0058D3BC /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + D0AE306122B1D8ED0058D3BC /* math_helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = math_helper.h; sourceTree = ""; }; + D0AE306222B1D8ED0058D3BC /* shader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shader.c; sourceTree = ""; }; + D0AE306322B1D8ED0058D3BC /* timing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = timing.c; sourceTree = ""; }; + D0AE306422B1D8ED0058D3BC /* animations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = animations.h; sourceTree = ""; }; + D0AE306522B1D8ED0058D3BC /* program.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = program.h; sourceTree = ""; }; + D0AE306622B1D8ED0058D3BC /* objects.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = objects.c; sourceTree = ""; }; + D0AE306922B1D8ED0058D3BC /* RMIntroViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMIntroViewController.m; sourceTree = ""; }; + D0AE306A22B1D8ED0058D3BC /* RMGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMGeometry.h; sourceTree = ""; }; + D0AE306B22B1D8ED0058D3BC /* platform_gl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_gl.h; sourceTree = ""; }; + D0AE306C22B1D8ED0058D3BC /* RMIntroPageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMIntroPageView.h; sourceTree = ""; }; + D0AE306D22B1D8ED0058D3BC /* texture_helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = texture_helper.m; sourceTree = ""; }; + D0AE306F22B1D8ED0058D3BC /* ic_bubble_dot@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_bubble_dot@2x.png"; sourceTree = ""; }; + D0AE307022B1D8ED0058D3BC /* powerful_mask@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_mask@2x.png"; sourceTree = ""; }; + D0AE307122B1D8ED0058D3BC /* telegram_sphere@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_sphere@2x.png"; sourceTree = ""; }; + D0AE307222B1D8ED0058D3BC /* powerful_star@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_star@2x.png"; sourceTree = ""; }; + D0AE307322B1D8ED0058D3BC /* private_door@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "private_door@2x.png"; sourceTree = ""; }; + D0AE307422B1D8ED0058D3BC /* start_arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "start_arrow@2x.png"; sourceTree = ""; }; + D0AE307522B1D8ED0058D3BC /* knot_up@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "knot_up@2x.png"; sourceTree = ""; }; + D0AE307622B1D8ED0058D3BC /* start_arrow_ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = start_arrow_ipad.png; sourceTree = ""; }; + D0AE307722B1D8ED0058D3BC /* fast_arrow_shadow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_arrow_shadow@2x.png"; sourceTree = ""; }; + D0AE307822B1D8ED0058D3BC /* ic_cam@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_cam@2x.png"; sourceTree = ""; }; + D0AE307922B1D8ED0058D3BC /* start_arrow_ipad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "start_arrow_ipad@2x.png"; sourceTree = ""; }; + D0AE307A22B1D8ED0058D3BC /* fast_body@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_body@2x.png"; sourceTree = ""; }; + D0AE307B22B1D8ED0058D3BC /* knot_down@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "knot_down@2x.png"; sourceTree = ""; }; + D0AE307C22B1D8ED0058D3BC /* fast_arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_arrow@2x.png"; sourceTree = ""; }; + D0AE307D22B1D8ED0058D3BC /* ic_pencil@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_pencil@2x.png"; sourceTree = ""; }; + D0AE307E22B1D8ED0058D3BC /* ic_smile_eye@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_smile_eye@2x.png"; sourceTree = ""; }; + D0AE307F22B1D8ED0058D3BC /* ic_bubble@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_bubble@2x.png"; sourceTree = ""; }; + D0AE308022B1D8ED0058D3BC /* ic_pin@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_pin@2x.png"; sourceTree = ""; }; + D0AE308122B1D8ED0058D3BC /* fast_spiral@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_spiral@2x.png"; sourceTree = ""; }; + D0AE308222B1D8ED0058D3BC /* ic_cam_lens@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_cam_lens@2x.png"; sourceTree = ""; }; + D0AE308322B1D8ED0058D3BC /* ic_videocam@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_videocam@2x.png"; sourceTree = ""; }; + D0AE308422B1D8ED0058D3BC /* powerful_infinity_white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_infinity_white@2x.png"; sourceTree = ""; }; + D0AE308522B1D8ED0058D3BC /* private_screw@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "private_screw@2x.png"; sourceTree = ""; }; + D0AE308622B1D8ED0058D3BC /* powerful_infinity@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_infinity@2x.png"; sourceTree = ""; }; + D0AE308722B1D8ED0058D3BC /* telegram_plane@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_plane@2x.png"; sourceTree = ""; }; + D0AE308822B1D8ED0058D3BC /* ic_smile@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_smile@2x.png"; sourceTree = ""; }; + D0AE308922B1D8ED0058D3BC /* RMGeometry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMGeometry.m; sourceTree = ""; }; + D0AE308A22B1D8ED0058D3BC /* RMIntroViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMIntroViewController.h; sourceTree = ""; }; + D0AE308B22B1D8ED0058D3BC /* texture_helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = texture_helper.h; sourceTree = ""; }; + D0AE308C22B1D8ED0058D3BC /* RMIntroPageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMIntroPageView.m; sourceTree = ""; }; + D0AE308E22B1D8ED0058D3BC /* platform_log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_log.h; sourceTree = ""; }; + D0AE308F22B1D8ED0058D3BC /* platform_macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_macros.h; sourceTree = ""; }; + D0AE309022B1D8ED0058D3BC /* platform_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform_log.c; sourceTree = ""; }; + D0AE309322B1D8ED0058D3BC /* linmath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linmath.h; sourceTree = ""; }; + D0AE309422B1D8ED0058D3BC /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE304122B1D77E0058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0AE303A22B1D77E0058D3BC = { + isa = PBXGroup; + children = ( + D0AE304822B1D77E0058D3BC /* Info.plist */, + D0AE304622B1D77E0058D3BC /* Sources */, + D0AE304522B1D77E0058D3BC /* Products */, + ); + sourceTree = ""; + }; + D0AE304522B1D77E0058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE304422B1D77E0058D3BC /* RMIntro.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE304622B1D77E0058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0AE309122B1D8ED0058D3BC /* 3rdparty */, + D0AE305522B1D8ED0058D3BC /* core */, + D0AE306722B1D8ED0058D3BC /* platform */, + D0AE304722B1D77E0058D3BC /* RMIntro.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0AE305522B1D8ED0058D3BC /* core */ = { + isa = PBXGroup; + children = ( + D0AE305622B1D8ED0058D3BC /* rngs.h */, + D0AE305722B1D8ED0058D3BC /* buffer.c */, + D0AE305822B1D8ED0058D3BC /* shader.h */, + D0AE305922B1D8ED0058D3BC /* program.c */, + D0AE305A22B1D8ED0058D3BC /* animations.c */, + D0AE305B22B1D8ED0058D3BC /* timing.h */, + D0AE305C22B1D8ED0058D3BC /* matrix.h */, + D0AE305D22B1D8ED0058D3BC /* objects.h */, + D0AE305E22B1D8ED0058D3BC /* buffer.h */, + D0AE305F22B1D8ED0058D3BC /* rngs.c */, + D0AE306022B1D8ED0058D3BC /* macros.h */, + D0AE306122B1D8ED0058D3BC /* math_helper.h */, + D0AE306222B1D8ED0058D3BC /* shader.c */, + D0AE306322B1D8ED0058D3BC /* timing.c */, + D0AE306422B1D8ED0058D3BC /* animations.h */, + D0AE306522B1D8ED0058D3BC /* program.h */, + D0AE306622B1D8ED0058D3BC /* objects.c */, + ); + path = core; + sourceTree = ""; + }; + D0AE306722B1D8ED0058D3BC /* platform */ = { + isa = PBXGroup; + children = ( + D0AE306822B1D8ED0058D3BC /* ios */, + D0AE308D22B1D8ED0058D3BC /* common */, + ); + path = platform; + sourceTree = ""; + }; + D0AE306822B1D8ED0058D3BC /* ios */ = { + isa = PBXGroup; + children = ( + D0AE306922B1D8ED0058D3BC /* RMIntroViewController.m */, + D0AE306A22B1D8ED0058D3BC /* RMGeometry.h */, + D0AE306B22B1D8ED0058D3BC /* platform_gl.h */, + D0AE306C22B1D8ED0058D3BC /* RMIntroPageView.h */, + D0AE306D22B1D8ED0058D3BC /* texture_helper.m */, + D0AE306E22B1D8ED0058D3BC /* Resources */, + D0AE308922B1D8ED0058D3BC /* RMGeometry.m */, + D0AE308A22B1D8ED0058D3BC /* RMIntroViewController.h */, + D0AE308B22B1D8ED0058D3BC /* texture_helper.h */, + D0AE308C22B1D8ED0058D3BC /* RMIntroPageView.m */, + ); + path = ios; + sourceTree = ""; + }; + D0AE306E22B1D8ED0058D3BC /* Resources */ = { + isa = PBXGroup; + children = ( + D0AE306F22B1D8ED0058D3BC /* ic_bubble_dot@2x.png */, + D0AE307022B1D8ED0058D3BC /* powerful_mask@2x.png */, + D0AE307122B1D8ED0058D3BC /* telegram_sphere@2x.png */, + D0AE307222B1D8ED0058D3BC /* powerful_star@2x.png */, + D0AE307322B1D8ED0058D3BC /* private_door@2x.png */, + D0AE307422B1D8ED0058D3BC /* start_arrow@2x.png */, + D0AE307522B1D8ED0058D3BC /* knot_up@2x.png */, + D0AE307622B1D8ED0058D3BC /* start_arrow_ipad.png */, + D0AE307722B1D8ED0058D3BC /* fast_arrow_shadow@2x.png */, + D0AE307822B1D8ED0058D3BC /* ic_cam@2x.png */, + D0AE307922B1D8ED0058D3BC /* start_arrow_ipad@2x.png */, + D0AE307A22B1D8ED0058D3BC /* fast_body@2x.png */, + D0AE307B22B1D8ED0058D3BC /* knot_down@2x.png */, + D0AE307C22B1D8ED0058D3BC /* fast_arrow@2x.png */, + D0AE307D22B1D8ED0058D3BC /* ic_pencil@2x.png */, + D0AE307E22B1D8ED0058D3BC /* ic_smile_eye@2x.png */, + D0AE307F22B1D8ED0058D3BC /* ic_bubble@2x.png */, + D0AE308022B1D8ED0058D3BC /* ic_pin@2x.png */, + D0AE308122B1D8ED0058D3BC /* fast_spiral@2x.png */, + D0AE308222B1D8ED0058D3BC /* ic_cam_lens@2x.png */, + D0AE308322B1D8ED0058D3BC /* ic_videocam@2x.png */, + D0AE308422B1D8ED0058D3BC /* powerful_infinity_white@2x.png */, + D0AE308522B1D8ED0058D3BC /* private_screw@2x.png */, + D0AE308622B1D8ED0058D3BC /* powerful_infinity@2x.png */, + D0AE308722B1D8ED0058D3BC /* telegram_plane@2x.png */, + D0AE308822B1D8ED0058D3BC /* ic_smile@2x.png */, + ); + path = Resources; + sourceTree = ""; + }; + D0AE308D22B1D8ED0058D3BC /* common */ = { + isa = PBXGroup; + children = ( + D0AE308E22B1D8ED0058D3BC /* platform_log.h */, + D0AE308F22B1D8ED0058D3BC /* platform_macros.h */, + D0AE309022B1D8ED0058D3BC /* platform_log.c */, + ); + path = common; + sourceTree = ""; + }; + D0AE309122B1D8ED0058D3BC /* 3rdparty */ = { + isa = PBXGroup; + children = ( + D0AE309222B1D8ED0058D3BC /* linmath */, + D0AE309422B1D8ED0058D3BC /* .gitignore */, + ); + path = 3rdparty; + sourceTree = ""; + }; + D0AE309222B1D8ED0058D3BC /* linmath */ = { + isa = PBXGroup; + children = ( + D0AE309322B1D8ED0058D3BC /* linmath.h */, + ); + path = linmath; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE303F22B1D77E0058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE309B22B1D8ED0058D3BC /* matrix.h in Headers */, + D0AE309C22B1D8ED0058D3BC /* objects.h in Headers */, + D0AE30A822B1D8ED0058D3BC /* platform_gl.h in Headers */, + D0AE309522B1D8ED0058D3BC /* rngs.h in Headers */, + D0AE30CC22B1D8ED0058D3BC /* linmath.h in Headers */, + D0AE309F22B1D8ED0058D3BC /* macros.h in Headers */, + D0AE304922B1D77E0058D3BC /* RMIntro.h in Headers */, + D0AE30C722B1D8ED0058D3BC /* texture_helper.h in Headers */, + D0AE30A922B1D8ED0058D3BC /* RMIntroPageView.h in Headers */, + D0AE30C922B1D8ED0058D3BC /* platform_log.h in Headers */, + D0AE30A022B1D8ED0058D3BC /* math_helper.h in Headers */, + D0AE309D22B1D8ED0058D3BC /* buffer.h in Headers */, + D0AE30A322B1D8ED0058D3BC /* animations.h in Headers */, + D0AE30C622B1D8ED0058D3BC /* RMIntroViewController.h in Headers */, + D0AE30A422B1D8ED0058D3BC /* program.h in Headers */, + D0AE30CA22B1D8ED0058D3BC /* platform_macros.h in Headers */, + D0AE30A722B1D8ED0058D3BC /* RMGeometry.h in Headers */, + D0AE309A22B1D8ED0058D3BC /* timing.h in Headers */, + D0AE309722B1D8ED0058D3BC /* shader.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE304322B1D77E0058D3BC /* RMIntro */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE304C22B1D77E0058D3BC /* Build configuration list for PBXNativeTarget "RMIntro" */; + buildPhases = ( + D0AE303F22B1D77E0058D3BC /* Headers */, + D0AE304022B1D77E0058D3BC /* Sources */, + D0AE304122B1D77E0058D3BC /* Frameworks */, + D0AE304222B1D77E0058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RMIntro; + productName = RMIntro; + productReference = D0AE304422B1D77E0058D3BC /* RMIntro.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE303B22B1D77E0058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE304322B1D77E0058D3BC = { + CreatedOnToolsVersion = 10.1; + }; + }; + }; + buildConfigurationList = D0AE303E22B1D77E0058D3BC /* Build configuration list for PBXProject "RMIntro_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE303A22B1D77E0058D3BC; + productRefGroup = D0AE304522B1D77E0058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE304322B1D77E0058D3BC /* RMIntro */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE304222B1D77E0058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE30B122B1D8ED0058D3BC /* knot_up@2x.png in Resources */, + D0AE30BF22B1D8ED0058D3BC /* ic_videocam@2x.png in Resources */, + D0AE30C222B1D8ED0058D3BC /* powerful_infinity@2x.png in Resources */, + D0AE30C022B1D8ED0058D3BC /* powerful_infinity_white@2x.png in Resources */, + D0AE30BB22B1D8ED0058D3BC /* ic_bubble@2x.png in Resources */, + D0AE30B522B1D8ED0058D3BC /* start_arrow_ipad@2x.png in Resources */, + D0AE30BD22B1D8ED0058D3BC /* fast_spiral@2x.png in Resources */, + D0AE30CD22B1D8ED0058D3BC /* .gitignore in Resources */, + D0AE30B822B1D8ED0058D3BC /* fast_arrow@2x.png in Resources */, + D0AE30AC22B1D8ED0058D3BC /* powerful_mask@2x.png in Resources */, + D0AE30B322B1D8ED0058D3BC /* fast_arrow_shadow@2x.png in Resources */, + D0AE30AB22B1D8ED0058D3BC /* ic_bubble_dot@2x.png in Resources */, + D0AE30BE22B1D8ED0058D3BC /* ic_cam_lens@2x.png in Resources */, + D0AE30C122B1D8ED0058D3BC /* private_screw@2x.png in Resources */, + D0AE30B722B1D8ED0058D3BC /* knot_down@2x.png in Resources */, + D0AE30BA22B1D8ED0058D3BC /* ic_smile_eye@2x.png in Resources */, + D0AE30AE22B1D8ED0058D3BC /* powerful_star@2x.png in Resources */, + D0AE30B222B1D8ED0058D3BC /* start_arrow_ipad.png in Resources */, + D0AE30C422B1D8ED0058D3BC /* ic_smile@2x.png in Resources */, + D0AE30B922B1D8ED0058D3BC /* ic_pencil@2x.png in Resources */, + D0AE30C322B1D8ED0058D3BC /* telegram_plane@2x.png in Resources */, + D0AE30B422B1D8ED0058D3BC /* ic_cam@2x.png in Resources */, + D0AE30B622B1D8ED0058D3BC /* fast_body@2x.png in Resources */, + D0AE30BC22B1D8ED0058D3BC /* ic_pin@2x.png in Resources */, + D0AE30B022B1D8ED0058D3BC /* start_arrow@2x.png in Resources */, + D0AE30AF22B1D8ED0058D3BC /* private_door@2x.png in Resources */, + D0AE30AD22B1D8ED0058D3BC /* telegram_sphere@2x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE304022B1D77E0058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE309822B1D8ED0058D3BC /* program.c in Sources */, + D0AE30CB22B1D8ED0058D3BC /* platform_log.c in Sources */, + D0AE309E22B1D8ED0058D3BC /* rngs.c in Sources */, + D0AE30C522B1D8ED0058D3BC /* RMGeometry.m in Sources */, + D0AE30A522B1D8ED0058D3BC /* objects.c in Sources */, + D0AE309922B1D8ED0058D3BC /* animations.c in Sources */, + D0AE30A622B1D8ED0058D3BC /* RMIntroViewController.m in Sources */, + D0AE30A222B1D8ED0058D3BC /* timing.c in Sources */, + D0AE30C822B1D8ED0058D3BC /* RMIntroPageView.m in Sources */, + D0AE30A122B1D8ED0058D3BC /* shader.c in Sources */, + D0AE309622B1D8ED0058D3BC /* buffer.c in Sources */, + D0AE30AA22B1D8ED0058D3BC /* texture_helper.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE304A22B1D77E0058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE304B22B1D77E0058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE304D22B1D77E0058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.RMIntro; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE304E22B1D77E0058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.RMIntro; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE303E22B1D77E0058D3BC /* Build configuration list for PBXProject "RMIntro_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE304A22B1D77E0058D3BC /* DebugAppStoreLLC */, + D0AE304B22B1D77E0058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE304C22B1D77E0058D3BC /* Build configuration list for PBXNativeTarget "RMIntro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE304D22B1D77E0058D3BC /* DebugAppStoreLLC */, + D0AE304E22B1D77E0058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE303B22B1D77E0058D3BC /* Project object */; +} diff --git a/submodules/TelegramUI/third-party/RMIntro/3rdparty/.gitignore b/submodules/RMIntro/Sources/3rdparty/.gitignore similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/3rdparty/.gitignore rename to submodules/RMIntro/Sources/3rdparty/.gitignore diff --git a/submodules/TelegramUI/third-party/RMIntro/3rdparty/linmath/linmath.h b/submodules/RMIntro/Sources/3rdparty/linmath/linmath.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/3rdparty/linmath/linmath.h rename to submodules/RMIntro/Sources/3rdparty/linmath/linmath.h diff --git a/submodules/RMIntro/Sources/RMIntro.h b/submodules/RMIntro/Sources/RMIntro.h new file mode 100644 index 0000000000..80d982ff62 --- /dev/null +++ b/submodules/RMIntro/Sources/RMIntro.h @@ -0,0 +1,10 @@ +#import + +//! Project version number for RMIntro. +FOUNDATION_EXPORT double RMIntroVersionNumber; + +//! Project version string for RMIntro. +FOUNDATION_EXPORT const unsigned char RMIntroVersionString[]; + +#import + diff --git a/submodules/TelegramUI/third-party/RMIntro/core/animations.c b/submodules/RMIntro/Sources/core/animations.c similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/animations.c rename to submodules/RMIntro/Sources/core/animations.c diff --git a/submodules/TelegramUI/third-party/RMIntro/core/animations.h b/submodules/RMIntro/Sources/core/animations.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/animations.h rename to submodules/RMIntro/Sources/core/animations.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/buffer.c b/submodules/RMIntro/Sources/core/buffer.c similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/buffer.c rename to submodules/RMIntro/Sources/core/buffer.c diff --git a/submodules/TelegramUI/third-party/RMIntro/core/buffer.h b/submodules/RMIntro/Sources/core/buffer.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/buffer.h rename to submodules/RMIntro/Sources/core/buffer.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/macros.h b/submodules/RMIntro/Sources/core/macros.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/macros.h rename to submodules/RMIntro/Sources/core/macros.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/math_helper.h b/submodules/RMIntro/Sources/core/math_helper.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/math_helper.h rename to submodules/RMIntro/Sources/core/math_helper.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/matrix.h b/submodules/RMIntro/Sources/core/matrix.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/matrix.h rename to submodules/RMIntro/Sources/core/matrix.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/objects.c b/submodules/RMIntro/Sources/core/objects.c similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/objects.c rename to submodules/RMIntro/Sources/core/objects.c diff --git a/submodules/TelegramUI/third-party/RMIntro/core/objects.h b/submodules/RMIntro/Sources/core/objects.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/objects.h rename to submodules/RMIntro/Sources/core/objects.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/program.c b/submodules/RMIntro/Sources/core/program.c similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/program.c rename to submodules/RMIntro/Sources/core/program.c diff --git a/submodules/TelegramUI/third-party/RMIntro/core/program.h b/submodules/RMIntro/Sources/core/program.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/program.h rename to submodules/RMIntro/Sources/core/program.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/rngs.c b/submodules/RMIntro/Sources/core/rngs.c similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/rngs.c rename to submodules/RMIntro/Sources/core/rngs.c diff --git a/submodules/TelegramUI/third-party/RMIntro/core/rngs.h b/submodules/RMIntro/Sources/core/rngs.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/rngs.h rename to submodules/RMIntro/Sources/core/rngs.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/shader.c b/submodules/RMIntro/Sources/core/shader.c similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/shader.c rename to submodules/RMIntro/Sources/core/shader.c diff --git a/submodules/TelegramUI/third-party/RMIntro/core/shader.h b/submodules/RMIntro/Sources/core/shader.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/shader.h rename to submodules/RMIntro/Sources/core/shader.h diff --git a/submodules/TelegramUI/third-party/RMIntro/core/timing.c b/submodules/RMIntro/Sources/core/timing.c similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/timing.c rename to submodules/RMIntro/Sources/core/timing.c diff --git a/submodules/TelegramUI/third-party/RMIntro/core/timing.h b/submodules/RMIntro/Sources/core/timing.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/core/timing.h rename to submodules/RMIntro/Sources/core/timing.h diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/common/platform_log.c b/submodules/RMIntro/Sources/platform/common/platform_log.c similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/common/platform_log.c rename to submodules/RMIntro/Sources/platform/common/platform_log.c diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/common/platform_log.h b/submodules/RMIntro/Sources/platform/common/platform_log.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/common/platform_log.h rename to submodules/RMIntro/Sources/platform/common/platform_log.h diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/common/platform_macros.h b/submodules/RMIntro/Sources/platform/common/platform_macros.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/common/platform_macros.h rename to submodules/RMIntro/Sources/platform/common/platform_macros.h diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGeometry.h b/submodules/RMIntro/Sources/platform/ios/RMGeometry.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGeometry.h rename to submodules/RMIntro/Sources/platform/ios/RMGeometry.h diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGeometry.m b/submodules/RMIntro/Sources/platform/ios/RMGeometry.m similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGeometry.m rename to submodules/RMIntro/Sources/platform/ios/RMGeometry.m diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMIntroPageView.h b/submodules/RMIntro/Sources/platform/ios/RMIntroPageView.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/RMIntroPageView.h rename to submodules/RMIntro/Sources/platform/ios/RMIntroPageView.h diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMIntroPageView.m b/submodules/RMIntro/Sources/platform/ios/RMIntroPageView.m similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/RMIntroPageView.m rename to submodules/RMIntro/Sources/platform/ios/RMIntroPageView.m diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMIntroViewController.h b/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/RMIntroViewController.h rename to submodules/RMIntro/Sources/platform/ios/RMIntroViewController.h diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMIntroViewController.m b/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/RMIntroViewController.m rename to submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/fast_arrow@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/fast_arrow@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/fast_arrow@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/fast_arrow@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/fast_arrow_shadow@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/fast_arrow_shadow@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/fast_arrow_shadow@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/fast_arrow_shadow@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/fast_body@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/fast_body@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/fast_body@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/fast_body@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/fast_spiral@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/fast_spiral@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/fast_spiral@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/fast_spiral@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_bubble@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_bubble@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_bubble@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_bubble@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_bubble_dot@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_bubble_dot@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_bubble_dot@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_bubble_dot@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_cam@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_cam@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_cam@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_cam@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_cam_lens@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_cam_lens@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_cam_lens@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_cam_lens@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_pencil@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_pencil@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_pencil@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_pencil@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_pin@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_pin@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_pin@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_pin@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_smile@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_smile@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_smile@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_smile@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_smile_eye@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_smile_eye@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_smile_eye@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_smile_eye@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_videocam@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/ic_videocam@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/ic_videocam@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/ic_videocam@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/knot_down@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/knot_down@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/knot_down@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/knot_down@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/knot_up@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/knot_up@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/knot_up@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/knot_up@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/powerful_infinity@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/powerful_infinity@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/powerful_infinity@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/powerful_infinity@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/powerful_infinity_white@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/powerful_infinity_white@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/powerful_infinity_white@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/powerful_infinity_white@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/powerful_mask@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/powerful_mask@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/powerful_mask@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/powerful_mask@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/powerful_star@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/powerful_star@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/powerful_star@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/powerful_star@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/private_door@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/private_door@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/private_door@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/private_door@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/private_screw@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/private_screw@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/private_screw@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/private_screw@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/start_arrow@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/start_arrow@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/start_arrow@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/start_arrow@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/start_arrow_ipad.png b/submodules/RMIntro/Sources/platform/ios/Resources/start_arrow_ipad.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/start_arrow_ipad.png rename to submodules/RMIntro/Sources/platform/ios/Resources/start_arrow_ipad.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/start_arrow_ipad@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/start_arrow_ipad@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/start_arrow_ipad@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/start_arrow_ipad@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/telegram_plane@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/telegram_plane@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/telegram_plane@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/telegram_plane@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/telegram_sphere@2x.png b/submodules/RMIntro/Sources/platform/ios/Resources/telegram_sphere@2x.png similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/Resources/telegram_sphere@2x.png rename to submodules/RMIntro/Sources/platform/ios/Resources/telegram_sphere@2x.png diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/platform_gl.h b/submodules/RMIntro/Sources/platform/ios/platform_gl.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/platform_gl.h rename to submodules/RMIntro/Sources/platform/ios/platform_gl.h diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/texture_helper.h b/submodules/RMIntro/Sources/platform/ios/texture_helper.h similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/texture_helper.h rename to submodules/RMIntro/Sources/platform/ios/texture_helper.h diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/texture_helper.m b/submodules/RMIntro/Sources/platform/ios/texture_helper.m similarity index 100% rename from submodules/TelegramUI/third-party/RMIntro/platform/ios/texture_helper.m rename to submodules/RMIntro/Sources/platform/ios/texture_helper.m diff --git a/submodules/TelegramAudio/Info.plist b/submodules/TelegramAudio/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/TelegramAudio/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TelegramUI/TelegramUI/ManagedAudioSession.swift b/submodules/TelegramAudio/Sources/ManagedAudioSession.swift similarity index 91% rename from submodules/TelegramUI/TelegramUI/ManagedAudioSession.swift rename to submodules/TelegramAudio/Sources/ManagedAudioSession.swift index 322333b6e1..88b7ce10ae 100644 --- a/submodules/TelegramUI/TelegramUI/ManagedAudioSession.swift +++ b/submodules/TelegramAudio/Sources/ManagedAudioSession.swift @@ -3,7 +3,7 @@ import SwiftSignalKit import AVFoundation import UIKit -enum ManagedAudioSessionType: Equatable { +public enum ManagedAudioSessionType: Equatable { case play case playWithPossiblePortOverride case record(speaker: Bool) @@ -19,17 +19,17 @@ enum ManagedAudioSessionType: Equatable { } } -private func nativeCategoryForType(_ type: ManagedAudioSessionType, headphones: Bool) -> String { +private func nativeCategoryForType(_ type: ManagedAudioSessionType, headphones: Bool) -> AVAudioSession.Category { switch type { case .play: - return AVAudioSessionCategoryPlayback + return .playback case .record, .voiceCall: - return AVAudioSessionCategoryPlayAndRecord + return .playAndRecord case .playWithPossiblePortOverride: if headphones { - return AVAudioSessionCategoryPlayback + return .playback } else { - return AVAudioSessionCategoryPlayAndRecord + return .playAndRecord } } } @@ -52,7 +52,7 @@ public enum AudioSessionOutput: Equatable { case port(AudioSessionPort) } -private let bluetoothPortTypes = Set([AVAudioSessionPortBluetoothA2DP, AVAudioSessionPortBluetoothLE, AVAudioSessionPortBluetoothHFP]) +private let bluetoothPortTypes = Set([.bluetoothA2DP, .bluetoothLE, .bluetoothHFP]) private extension AudioSessionOutput { init(description: AVAudioSessionPortDescription) { @@ -174,20 +174,20 @@ public final class ManagedAudioSession { private let isActiveSubscribers = Bag<(Bool) -> Void>() private let isPlaybackActiveSubscribers = Bag<(Bool) -> Void>() - init() { + public init() { self.hasLoudspeaker = UIDevice.current.model == "iPhone" let queue = self.queue - NotificationCenter.default.addObserver(forName: .AVAudioSessionRouteChange, object: AVAudioSession.sharedInstance(), queue: nil, using: { [weak self] _ in + NotificationCenter.default.addObserver(forName: AVAudioSession.routeChangeNotification, object: AVAudioSession.sharedInstance(), queue: nil, using: { [weak self] _ in queue.async { self?.updateCurrentAudioRouteInfo() } }) - NotificationCenter.default.addObserver(forName: .AVAudioSessionInterruption, object: AVAudioSession.sharedInstance(), queue: nil, using: { [weak self] notification in + NotificationCenter.default.addObserver(forName: AVAudioSession.interruptionNotification, object: AVAudioSession.sharedInstance(), queue: nil, using: { [weak self] notification in guard let info = notification.userInfo, let typeValue = info[AVAudioSessionInterruptionTypeKey] as? UInt, - let type = AVAudioSessionInterruptionType(rawValue: typeValue) else { + let type = AVAudioSession.InterruptionType(rawValue: typeValue) else { return } @@ -245,11 +245,11 @@ public final class ManagedAudioSession { } } - if input.portType == AVAudioSessionPortBuiltInMic { + if input.portType == .builtInMic { if isActive { activeOutput = .builtin inner: for currentOutput in audioSession.currentRoute.outputs { - if currentOutput.portType == AVAudioSessionPortBuiltInSpeaker { + if currentOutput.portType == .builtInSpeaker { activeOutput = .speaker break inner } @@ -257,7 +257,7 @@ public final class ManagedAudioSession { } continue } - if input.portType == AVAudioSessionPortHeadphones { + if input.portType == .headphones { if isActive { activeOutput = .headphones } @@ -293,7 +293,7 @@ public final class ManagedAudioSession { } } - func headsetConnected() -> Signal { + public func headsetConnected() -> Signal { let queue = self.queue return Signal { [weak self] subscriber in if let strongSelf = self { @@ -362,7 +362,7 @@ public final class ManagedAudioSession { } |> runOn(queue) } - func push(audioSessionType: ManagedAudioSessionType, outputMode: AudioSessionOutputMode = .system, once: Bool = false, activate: @escaping (AudioSessionActivationState) -> Void, deactivate: @escaping () -> Signal) -> Disposable { + public func push(audioSessionType: ManagedAudioSessionType, outputMode: AudioSessionOutputMode = .system, once: Bool = false, activate: @escaping (AudioSessionActivationState) -> Void, deactivate: @escaping () -> Signal) -> Disposable { return self.push(audioSessionType: audioSessionType, once: once, manualActivate: { control in control.setupAndActivate(synchronous: false, { state in activate(state) @@ -370,7 +370,7 @@ public final class ManagedAudioSession { }, deactivate: deactivate) } - func push(audioSessionType: ManagedAudioSessionType, outputMode: AudioSessionOutputMode = .system, once: Bool = false, manualActivate: @escaping (ManagedAudioSessionControl) -> Void, deactivate: @escaping () -> Signal, headsetConnectionStatusChanged: @escaping (Bool) -> Void = { _ in }, availableOutputsChanged: @escaping ([AudioSessionOutput], AudioSessionOutput?) -> Void = { _, _ in }) -> Disposable { + public func push(audioSessionType: ManagedAudioSessionType, outputMode: AudioSessionOutputMode = .system, once: Bool = false, manualActivate: @escaping (ManagedAudioSessionControl) -> Void, deactivate: @escaping () -> Signal, headsetConnectionStatusChanged: @escaping (Bool) -> Void = { _ in }, availableOutputsChanged: @escaping ([AudioSessionOutput], AudioSessionOutput?) -> Void = { _, _ in }) -> Disposable { let id = OSAtomicIncrement32(&self.nextId) let queue = self.queue queue.async { @@ -459,7 +459,7 @@ public final class ManagedAudioSession { } } - func dropAll() { + public func dropAll() { self.queue.async { self.updateHolders(interruption: true) } @@ -582,7 +582,7 @@ public final class ManagedAudioSession { let route = AVAudioSession.sharedInstance().currentRoute //print("\(route)") for desc in route.outputs { - if desc.portType == AVAudioSessionPortHeadphones || desc.portType == AVAudioSessionPortBluetoothA2DP || desc.portType == AVAudioSessionPortBluetoothHFP { + if desc.portType == .headphones || desc.portType == .bluetoothA2DP || desc.portType == .bluetoothHFP { return true } } @@ -600,7 +600,7 @@ public final class ManagedAudioSession { print("ManagedAudioSession setting active false") do { - try AVAudioSession.sharedInstance().setActive(false, with: [.notifyOthersOnDeactivation]) + try AVAudioSession.sharedInstance().setActive(false, options: [.notifyOthersOnDeactivation]) try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none) try AVAudioSession.sharedInstance().setPreferredInput(nil) } catch let error { @@ -631,7 +631,7 @@ public final class ManagedAudioSession { do { print("ManagedAudioSession setting category for \(type)") - var options: AVAudioSessionCategoryOptions = [] + var options: AVAudioSession.CategoryOptions = [] switch type { case .play: break @@ -646,10 +646,10 @@ public final class ManagedAudioSession { } print("ManagedAudioSession setting active true") if #available(iOSApplicationExtension 11.0, iOS 11.0, *) { - try AVAudioSession.sharedInstance().setCategory(nativeCategoryForType(type, headphones: self.isHeadsetPluggedInValue), mode: type == .voiceCall ? AVAudioSessionModeVoiceChat : AVAudioSessionModeDefault, routeSharingPolicy: .default, options: options) + try AVAudioSession.sharedInstance().setCategory(nativeCategoryForType(type, headphones: self.isHeadsetPluggedInValue), mode: type == .voiceCall ? .voiceChat : .default, policy: .default, options: options) } else { - try AVAudioSession.sharedInstance().setCategory(nativeCategoryForType(type, headphones: self.isHeadsetPluggedInValue), with: options) - try AVAudioSession.sharedInstance().setMode(type == .voiceCall ? AVAudioSessionModeVoiceChat : AVAudioSessionModeDefault) + AVAudioSession.sharedInstance().perform(NSSelectorFromString("setCategory:error:"), with: nativeCategoryForType(type, headphones: self.isHeadsetPluggedInValue)) + try AVAudioSession.sharedInstance().setMode(type == .voiceCall ? .voiceChat : .default) } } catch let error { print("ManagedAudioSession setup error \(error)") @@ -686,7 +686,7 @@ public final class ManagedAudioSession { if type == .voiceCall { if let routes = AVAudioSession.sharedInstance().availableInputs { for route in routes { - if route.portType == AVAudioSessionPortBuiltInMic { + if route.portType == .builtInMic { let _ = try? AVAudioSession.sharedInstance().setPreferredInput(route) break } @@ -722,7 +722,7 @@ public final class ManagedAudioSession { try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none) if let routes = AVAudioSession.sharedInstance().availableInputs { for route in routes { - if route.portType == AVAudioSessionPortBuiltInMic { + if route.portType == .builtInMic { if case .record = type, self.isHeadsetPluggedInValue { } else { let _ = try? AVAudioSession.sharedInstance().setPreferredInput(route) @@ -740,7 +740,7 @@ public final class ManagedAudioSession { private func activate() { if let (type, outputMode) = self.currentTypeAndOutputMode { do { - try AVAudioSession.sharedInstance().setActive(true, with: [.notifyOthersOnDeactivation]) + try AVAudioSession.sharedInstance().setActive(true, options: [.notifyOthersOnDeactivation]) self.updateCurrentAudioRouteInfo() @@ -766,7 +766,7 @@ public final class ManagedAudioSession { } } - func callKitActivatedAudioSession() { + public func callKitActivatedAudioSession() { /*self.queue.async { print("ManagedAudioSession callKitDeactivatedAudioSession") self.callKitAudioSessionIsActive = true @@ -774,7 +774,7 @@ public final class ManagedAudioSession { }*/ } - func callKitDeactivatedAudioSession() { + public func callKitDeactivatedAudioSession() { /*self.queue.async { print("ManagedAudioSession callKitDeactivatedAudioSession") self.callKitAudioSessionIsActive = false diff --git a/submodules/TelegramAudio/Sources/TelegramAudio.h b/submodules/TelegramAudio/Sources/TelegramAudio.h new file mode 100644 index 0000000000..3a4f973417 --- /dev/null +++ b/submodules/TelegramAudio/Sources/TelegramAudio.h @@ -0,0 +1,8 @@ +#import + +//! Project version number for TelegramAudio. +FOUNDATION_EXPORT double TelegramAudioVersionNumber; + +//! Project version string for TelegramAudio. +FOUNDATION_EXPORT const unsigned char TelegramAudioVersionString[]; + diff --git a/submodules/TelegramAudio/TelegramAudio_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramAudio/TelegramAudio_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..0c0d6fa32e --- /dev/null +++ b/submodules/TelegramAudio/TelegramAudio_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0AE318F22B2702E0058D3BC /* TelegramAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE318D22B2702E0058D3BC /* TelegramAudio.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE319622B270A80058D3BC /* ManagedAudioSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE319522B270A70058D3BC /* ManagedAudioSession.swift */; }; + D0AE319922B270B40058D3BC /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE319822B270B40058D3BC /* SwiftSignalKit.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0AE318A22B2702E0058D3BC /* TelegramAudio.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TelegramAudio.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE318D22B2702E0058D3BC /* TelegramAudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramAudio.h; sourceTree = ""; }; + D0AE318E22B2702E0058D3BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0AE319522B270A70058D3BC /* ManagedAudioSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagedAudioSession.swift; sourceTree = ""; }; + D0AE319822B270B40058D3BC /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE318722B2702E0058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE319922B270B40058D3BC /* SwiftSignalKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0AE318022B2702E0058D3BC = { + isa = PBXGroup; + children = ( + D0AE318E22B2702E0058D3BC /* Info.plist */, + D0AE318C22B2702E0058D3BC /* Sources */, + D0AE318B22B2702E0058D3BC /* Products */, + D0AE319722B270B40058D3BC /* Frameworks */, + ); + sourceTree = ""; + }; + D0AE318B22B2702E0058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE318A22B2702E0058D3BC /* TelegramAudio.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE318C22B2702E0058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0AE319522B270A70058D3BC /* ManagedAudioSession.swift */, + D0AE318D22B2702E0058D3BC /* TelegramAudio.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0AE319722B270B40058D3BC /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0AE319822B270B40058D3BC /* SwiftSignalKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE318522B2702E0058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE318F22B2702E0058D3BC /* TelegramAudio.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE318922B2702E0058D3BC /* TelegramAudio */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE319222B2702E0058D3BC /* Build configuration list for PBXNativeTarget "TelegramAudio" */; + buildPhases = ( + D0AE318522B2702E0058D3BC /* Headers */, + D0AE318622B2702E0058D3BC /* Sources */, + D0AE318722B2702E0058D3BC /* Frameworks */, + D0AE318822B2702E0058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TelegramAudio; + productName = TelegramAudio; + productReference = D0AE318A22B2702E0058D3BC /* TelegramAudio.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE318122B2702E0058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE318922B2702E0058D3BC = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + }; + }; + }; + buildConfigurationList = D0AE318422B2702E0058D3BC /* Build configuration list for PBXProject "TelegramAudio_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE318022B2702E0058D3BC; + productRefGroup = D0AE318B22B2702E0058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE318922B2702E0058D3BC /* TelegramAudio */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE318822B2702E0058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE318622B2702E0058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE319622B270A80058D3BC /* ManagedAudioSession.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE319022B2702E0058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE319122B2702E0058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE319322B2702E0058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramAudio; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE319422B2702E0058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramAudio; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE318422B2702E0058D3BC /* Build configuration list for PBXProject "TelegramAudio_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE319022B2702E0058D3BC /* DebugAppStoreLLC */, + D0AE319122B2702E0058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE319222B2702E0058D3BC /* Build configuration list for PBXNativeTarget "TelegramAudio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE319322B2702E0058D3BC /* DebugAppStoreLLC */, + D0AE319422B2702E0058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE318122B2702E0058D3BC /* Project object */; +} diff --git a/submodules/TelegramCallsUI/Info.plist b/submodules/TelegramCallsUI/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/TelegramCallsUI/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TelegramUI/TelegramUI/CallKitIntergation.swift b/submodules/TelegramCallsUI/Sources/CallKitIntegration.swift similarity index 98% rename from submodules/TelegramUI/TelegramUI/CallKitIntergation.swift rename to submodules/TelegramCallsUI/Sources/CallKitIntegration.swift index 535c3145a5..1ade559300 100644 --- a/submodules/TelegramUI/TelegramUI/CallKitIntergation.swift +++ b/submodules/TelegramCallsUI/Sources/CallKitIntegration.swift @@ -118,8 +118,8 @@ class CallKitProviderDelegate: NSObject, CXProviderDelegate { providerConfiguration.maximumCallsPerCallGroup = 1 providerConfiguration.maximumCallGroups = 1 providerConfiguration.supportedHandleTypes = [.phoneNumber, .generic] - if let image = UIImage(bundleImageName: "Call/CallKitLogo") { - providerConfiguration.iconTemplateImageData = UIImagePNGRepresentation(image) + if let image = UIImage(named: "Call/CallKitLogo", in: Bundle(for: CallKitIntegration.self), compatibleWith: nil) { + providerConfiguration.iconTemplateImageData = image.pngData() } return providerConfiguration diff --git a/submodules/TelegramUI/TelegramUI/PresentationCall.swift b/submodules/TelegramCallsUI/Sources/PresentationCall.swift similarity index 96% rename from submodules/TelegramUI/TelegramUI/PresentationCall.swift rename to submodules/TelegramCallsUI/Sources/PresentationCall.swift index 80126973e5..d2da2030b7 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationCall.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationCall.swift @@ -4,6 +4,12 @@ import TelegramCore import SwiftSignalKit import Display import AVFoundation +import TelegramVoip +import TelegramAudio +import TelegramUIPreferences +import TelegramPresentationData +import DeviceAccess +import UniversalMediaPlayer public enum PresentationCallState: Equatable { case waiting @@ -104,7 +110,7 @@ private final class PresentationCallToneRenderer { memset(bytes.advanced(by: validCount), 0, frameSize - validCount) } - let status = CMBlockBufferCreateWithMemoryBlock(nil, bytes, frameSize, nil, nil, 0, frameSize, 0, &blockBuffer) + let status = CMBlockBufferCreateWithMemoryBlock(allocator: nil, memoryBlock: bytes, blockLength: frameSize, blockAllocator: nil, customBlockSource: nil, offsetToData: 0, dataLength: frameSize, flags: 0, blockBufferOut: &blockBuffer) if status != noErr { return .finished } @@ -115,7 +121,7 @@ private final class PresentationCallToneRenderer { var timingInfo = CMSampleTimingInfo(duration: CMTime(value: Int64(sampleCount), timescale: 44100), presentationTimeStamp: pts, decodeTimeStamp: pts) var sampleBuffer: CMSampleBuffer? var sampleSize = frameSize - guard CMSampleBufferCreate(nil, blockBuffer, true, nil, nil, nil, 1, 1, &timingInfo, 1, &sampleSize, &sampleBuffer) == noErr else { + guard CMSampleBufferCreate(allocator: nil, dataBuffer: blockBuffer, dataReady: true, makeDataReadyCallback: nil, refcon: nil, formatDescription: nil, sampleCount: 1, sampleTimingEntryCount: 1, sampleTimingArray: &timingInfo, sampleSizeEntryCount: 1, sampleSizeArray: &sampleSize, sampleBufferOut: &sampleBuffer) == noErr else { return .finished } @@ -570,7 +576,7 @@ public final class PresentationCall { } } - func answer() { + public func answer() { let (presentationData, present, openSettings) = self.getDeviceAccessData() DeviceAccess.authorizeAccess(to: .microphone(.voiceCall), presentationData: presentationData, present: { c, a in @@ -590,29 +596,29 @@ public final class PresentationCall { }) } - func hangUp() -> Signal { + public func hangUp() -> Signal { self.callSessionManager.drop(internalId: self.internalId, reason: .hangUp) self.ongoingContext.stop() return self.hungUpPromise.get() } - func rejectBusy() { + public func rejectBusy() { self.callSessionManager.drop(internalId: self.internalId, reason: .busy) self.ongoingContext.stop() } - func toggleIsMuted() { + public func toggleIsMuted() { self.setIsMuted(!self.isMutedValue) } - func setIsMuted(_ value: Bool) { + public func setIsMuted(_ value: Bool) { self.isMutedValue = value self.isMutedPromise.set(self.isMutedValue) self.ongoingContext.setIsMuted(self.isMutedValue) } - func setCurrentAudioOutput(_ output: AudioSessionOutput) { + public func setCurrentAudioOutput(_ output: AudioSessionOutput) { guard self.currentAudioOutputValue != output else { return } @@ -629,7 +635,7 @@ public final class PresentationCall { } } - func debugInfo() -> Signal<(String, String), NoError> { + public func debugInfo() -> Signal<(String, String), NoError> { return self.ongoingContext.debugInfo() } } diff --git a/submodules/TelegramUI/TelegramUI/PresentationCallManager.swift b/submodules/TelegramCallsUI/Sources/PresentationCallManager.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/PresentationCallManager.swift rename to submodules/TelegramCallsUI/Sources/PresentationCallManager.swift index 726ccd17cc..e9e19294e1 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationCallManager.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationCallManager.swift @@ -4,6 +4,12 @@ import TelegramCore import SwiftSignalKit import Display +import DeviceAccess +import TelegramPresentationData +import TelegramAudio +import TelegramVoip +import TelegramUIPreferences + private func callKitIntegrationIfEnabled(_ integration: CallKitIntegration?, settings: VoiceCallSettings?) -> CallKitIntegration? { let enabled = settings?.enableSystemIntegration ?? true return enabled ? integration : nil diff --git a/submodules/TelegramUI/TelegramUI/PresentationCallToneData.swift b/submodules/TelegramCallsUI/Sources/PresentationCallToneData.swift similarity index 91% rename from submodules/TelegramUI/TelegramUI/PresentationCallToneData.swift rename to submodules/TelegramCallsUI/Sources/PresentationCallToneData.swift index 4be4fb3651..b24173dce7 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationCallToneData.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationCallToneData.swift @@ -52,7 +52,7 @@ private func loadToneData(name: String) -> Data? { if let nextBuffer = readerOutput.copyNextSampleBuffer() { var abl = AudioBufferList() var blockBuffer: CMBlockBuffer? = nil - CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(nextBuffer, nil, &abl, MemoryLayout.size, nil, nil, kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, &blockBuffer) + CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(nextBuffer, bufferListSizeNeededOut: nil, bufferListOut: &abl, bufferListSize: MemoryLayout.size, blockBufferAllocator: nil, blockBufferMemoryAllocator: nil, flags: kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, blockBufferOut: &blockBuffer) let size = Int(CMSampleBufferGetTotalSampleSize(nextBuffer)) if size != 0, let mData = abl.mBuffers.mData { data.append(Data(bytes: mData, count: size)) diff --git a/submodules/TelegramCallsUI/Sources/TelegramCallsUI.h b/submodules/TelegramCallsUI/Sources/TelegramCallsUI.h new file mode 100644 index 0000000000..a87d7596b8 --- /dev/null +++ b/submodules/TelegramCallsUI/Sources/TelegramCallsUI.h @@ -0,0 +1,19 @@ +// +// TelegramCallsUI.h +// TelegramCallsUI +// +// Created by Peter on 6/13/19. +// Copyright © 2019 Telegram LLP. All rights reserved. +// + +#import + +//! Project version number for TelegramCallsUI. +FOUNDATION_EXPORT double TelegramCallsUIVersionNumber; + +//! Project version string for TelegramCallsUI. +FOUNDATION_EXPORT const unsigned char TelegramCallsUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramCallsUI/TelegramCallsUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramCallsUI/TelegramCallsUI_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..5566d1ef45 --- /dev/null +++ b/submodules/TelegramCallsUI/TelegramCallsUI_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,392 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0750C6A22B28A8000BE5F6E /* UniversalMediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0750C6922B28A8000BE5F6E /* UniversalMediaPlayer.framework */; }; + D0AE30FB22B1DC3F0058D3BC /* TelegramCallsUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE30F922B1DC3F0058D3BC /* TelegramCallsUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE310D22B1DD160058D3BC /* PresentationCallManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE310922B1DD160058D3BC /* PresentationCallManager.swift */; }; + D0AE310E22B1DD160058D3BC /* PresentationCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE310A22B1DD160058D3BC /* PresentationCall.swift */; }; + D0AE310F22B1DD160058D3BC /* PresentationCallToneData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE310B22B1DD160058D3BC /* PresentationCallToneData.swift */; }; + D0AE311022B1DD160058D3BC /* CallKitIntegration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE310C22B1DD160058D3BC /* CallKitIntegration.swift */; }; + D0AE315722B1DEF10058D3BC /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE315622B1DEF10058D3BC /* TelegramUIPreferences.framework */; }; + D0AE317422B26A270058D3BC /* TelegramVoip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE317322B26A270058D3BC /* TelegramVoip.framework */; }; + D0AE319B22B270D60058D3BC /* TelegramAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE319A22B270D60058D3BC /* TelegramAudio.framework */; }; + D0AE31C122B274BA0058D3BC /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE31C022B274BA0058D3BC /* TelegramPresentationData.framework */; }; + D0AE320722B281AE0058D3BC /* DeviceAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE320622B281AE0058D3BC /* DeviceAccess.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0750C6922B28A8000BE5F6E /* UniversalMediaPlayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UniversalMediaPlayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE30F622B1DC3F0058D3BC /* TelegramCallsUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TelegramCallsUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE30F922B1DC3F0058D3BC /* TelegramCallsUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramCallsUI.h; sourceTree = ""; }; + D0AE310922B1DD160058D3BC /* PresentationCallManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationCallManager.swift; sourceTree = ""; }; + D0AE310A22B1DD160058D3BC /* PresentationCall.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationCall.swift; sourceTree = ""; }; + D0AE310B22B1DD160058D3BC /* PresentationCallToneData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationCallToneData.swift; sourceTree = ""; }; + D0AE310C22B1DD160058D3BC /* CallKitIntegration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallKitIntegration.swift; sourceTree = ""; }; + D0AE311422B1DDB30058D3BC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0AE315622B1DEF10058D3BC /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE317322B26A270058D3BC /* TelegramVoip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramVoip.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE319A22B270D60058D3BC /* TelegramAudio.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramAudio.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE31C022B274BA0058D3BC /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE320622B281AE0058D3BC /* DeviceAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeviceAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE30F322B1DC3F0058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0750C6A22B28A8000BE5F6E /* UniversalMediaPlayer.framework in Frameworks */, + D0AE320722B281AE0058D3BC /* DeviceAccess.framework in Frameworks */, + D0AE31C122B274BA0058D3BC /* TelegramPresentationData.framework in Frameworks */, + D0AE319B22B270D60058D3BC /* TelegramAudio.framework in Frameworks */, + D0AE317422B26A270058D3BC /* TelegramVoip.framework in Frameworks */, + D0AE315722B1DEF10058D3BC /* TelegramUIPreferences.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0AE30EC22B1DC3F0058D3BC = { + isa = PBXGroup; + children = ( + D0AE311422B1DDB30058D3BC /* Info.plist */, + D0AE30F822B1DC3F0058D3BC /* Sources */, + D0AE30F722B1DC3F0058D3BC /* Products */, + D0AE315522B1DEF10058D3BC /* Frameworks */, + ); + sourceTree = ""; + }; + D0AE30F722B1DC3F0058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE30F622B1DC3F0058D3BC /* TelegramCallsUI.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE30F822B1DC3F0058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0AE310C22B1DD160058D3BC /* CallKitIntegration.swift */, + D0AE310A22B1DD160058D3BC /* PresentationCall.swift */, + D0AE310922B1DD160058D3BC /* PresentationCallManager.swift */, + D0AE310B22B1DD160058D3BC /* PresentationCallToneData.swift */, + D0AE30F922B1DC3F0058D3BC /* TelegramCallsUI.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0AE315522B1DEF10058D3BC /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0750C6922B28A8000BE5F6E /* UniversalMediaPlayer.framework */, + D0AE320622B281AE0058D3BC /* DeviceAccess.framework */, + D0AE31C022B274BA0058D3BC /* TelegramPresentationData.framework */, + D0AE319A22B270D60058D3BC /* TelegramAudio.framework */, + D0AE317322B26A270058D3BC /* TelegramVoip.framework */, + D0AE315622B1DEF10058D3BC /* TelegramUIPreferences.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE30F122B1DC3F0058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE30FB22B1DC3F0058D3BC /* TelegramCallsUI.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE30F522B1DC3F0058D3BC /* TelegramCallsUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE30FE22B1DC3F0058D3BC /* Build configuration list for PBXNativeTarget "TelegramCallsUI" */; + buildPhases = ( + D0AE30F122B1DC3F0058D3BC /* Headers */, + D0AE30F222B1DC3F0058D3BC /* Sources */, + D0AE30F322B1DC3F0058D3BC /* Frameworks */, + D0AE30F422B1DC3F0058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TelegramCallsUI; + productName = TelegramCallsUI; + productReference = D0AE30F622B1DC3F0058D3BC /* TelegramCallsUI.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE30ED22B1DC3F0058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE30F522B1DC3F0058D3BC = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + }; + }; + }; + buildConfigurationList = D0AE30F022B1DC3F0058D3BC /* Build configuration list for PBXProject "TelegramCallsUI_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE30EC22B1DC3F0058D3BC; + productRefGroup = D0AE30F722B1DC3F0058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE30F522B1DC3F0058D3BC /* TelegramCallsUI */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE30F422B1DC3F0058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE30F222B1DC3F0058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE310D22B1DD160058D3BC /* PresentationCallManager.swift in Sources */, + D0AE310E22B1DD160058D3BC /* PresentationCall.swift in Sources */, + D0AE310F22B1DD160058D3BC /* PresentationCallToneData.swift in Sources */, + D0AE311022B1DD160058D3BC /* CallKitIntegration.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE30FC22B1DC3F0058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE30FD22B1DC3F0058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE30FF22B1DC3F0058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramCallsUI; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE310022B1DC3F0058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramCallsUI; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE30F022B1DC3F0058D3BC /* Build configuration list for PBXProject "TelegramCallsUI_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE30FC22B1DC3F0058D3BC /* DebugAppStoreLLC */, + D0AE30FD22B1DC3F0058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE30FE22B1DC3F0058D3BC /* Build configuration list for PBXNativeTarget "TelegramCallsUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE30FF22B1DC3F0058D3BC /* DebugAppStoreLLC */, + D0AE310022B1DC3F0058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE30ED22B1DC3F0058D3BC /* Project object */; +} diff --git a/submodules/TelegramCore/TelegramCore/AccountManager.swift b/submodules/TelegramCore/TelegramCore/AccountManager.swift index 4a7cc189d5..8c8fd352f9 100644 --- a/submodules/TelegramCore/TelegramCore/AccountManager.swift +++ b/submodules/TelegramCore/TelegramCore/AccountManager.swift @@ -168,16 +168,6 @@ public func performAppGroupUpgrades(appGroupPath: String, rootPath: String) { } catch let e { print("\(e)") } - - if let files = try? FileManager.default.contentsOfDirectory(at: URL(fileURLWithPath: appGroupPath), includingPropertiesForKeys: [], options: []) { - for url in files { - if url.lastPathComponent == "accounts-metadata" || - url.lastPathComponent.hasSuffix("logs") || - url.lastPathComponent.hasPrefix("account-") { - let _ = try? FileManager.default.moveItem(at: url, to: URL(fileURLWithPath: rootPath + "/" + url.lastPathComponent)) - } - } - } } public final class TemporaryAccount { diff --git a/submodules/TelegramPresentationData/Info.plist b/submodules/TelegramPresentationData/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/TelegramPresentationData/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TelegramUI/TelegramUI/ComponentsThemes.swift b/submodules/TelegramPresentationData/Sources/ComponentsThemes.swift similarity index 80% rename from submodules/TelegramUI/TelegramUI/ComponentsThemes.swift rename to submodules/TelegramPresentationData/Sources/ComponentsThemes.swift index 87014b2691..2158a17e83 100644 --- a/submodules/TelegramUI/TelegramUI/ComponentsThemes.swift +++ b/submodules/TelegramPresentationData/Sources/ComponentsThemes.swift @@ -3,60 +3,60 @@ import UIKit import Display public extension TabBarControllerTheme { - convenience init(rootControllerTheme: PresentationTheme) { + convenience public init(rootControllerTheme: PresentationTheme) { let theme = rootControllerTheme.rootController.tabBar self.init(backgroundColor: rootControllerTheme.list.plainBackgroundColor, tabBarBackgroundColor: theme.backgroundColor, tabBarSeparatorColor: theme.separatorColor, tabBarTextColor: theme.textColor, tabBarSelectedTextColor: theme.selectedIconColor, tabBarBadgeBackgroundColor: theme.badgeBackgroundColor, tabBarBadgeStrokeColor: theme.badgeStrokeColor, tabBarBadgeTextColor: theme.badgeTextColor) } } public extension NavigationBarTheme { - convenience init(rootControllerTheme: PresentationTheme) { + convenience public init(rootControllerTheme: PresentationTheme) { let theme = rootControllerTheme.rootController.navigationBar self.init(buttonColor: theme.buttonColor, disabledButtonColor: theme.disabledButtonColor, primaryTextColor: theme.primaryTextColor, backgroundColor: theme.backgroundColor, separatorColor: theme.separatorColor, badgeBackgroundColor: theme.badgeBackgroundColor, badgeStrokeColor: theme.badgeStrokeColor, badgeTextColor: theme.badgeTextColor) } } public extension NavigationBarStrings { - convenience init(presentationStrings: PresentationStrings) { + convenience public init(presentationStrings: PresentationStrings) { self.init(back: presentationStrings.Common_Back, close: presentationStrings.Common_Close) } } public extension NavigationBarPresentationData { - convenience init(presentationData: PresentationData) { + convenience public init(presentationData: PresentationData) { self.init(theme: NavigationBarTheme(rootControllerTheme: presentationData.theme), strings: NavigationBarStrings(presentationStrings: presentationData.strings)) } } -extension ActionSheetControllerTheme { - convenience init(presentationTheme: PresentationTheme) { +public extension ActionSheetControllerTheme { + convenience public init(presentationTheme: PresentationTheme) { let actionSheet = presentationTheme.actionSheet self.init(dimColor: actionSheet.dimColor, backgroundType: actionSheet.backgroundType == .light ? .light : .dark, itemBackgroundColor: actionSheet.itemBackgroundColor, itemHighlightedBackgroundColor: actionSheet.itemHighlightedBackgroundColor, standardActionTextColor: actionSheet.standardActionTextColor, destructiveActionTextColor: actionSheet.destructiveActionTextColor, disabledActionTextColor: actionSheet.disabledActionTextColor, primaryTextColor: actionSheet.primaryTextColor, secondaryTextColor: actionSheet.secondaryTextColor, controlAccentColor: actionSheet.controlAccentColor, controlColor: presentationTheme.list.disclosureArrowColor, switchFrameColor: presentationTheme.list.itemSwitchColors.frameColor, switchContentColor: presentationTheme.list.itemSwitchColors.contentColor, switchHandleColor: presentationTheme.list.itemSwitchColors.handleColor) } } -extension ActionSheetController { - convenience init(presentationTheme: PresentationTheme) { +public extension ActionSheetController { + convenience public init(presentationTheme: PresentationTheme) { self.init(theme: ActionSheetControllerTheme(presentationTheme: presentationTheme)) } } public extension AlertControllerTheme { - convenience init(presentationTheme: PresentationTheme) { + convenience public init(presentationTheme: PresentationTheme) { let actionSheet = presentationTheme.actionSheet self.init(backgroundType: actionSheet.backgroundType == .light ? .light : .dark, backgroundColor: actionSheet.itemBackgroundColor, separatorColor: actionSheet.itemHighlightedBackgroundColor, highlightedItemColor: actionSheet.itemHighlightedBackgroundColor, primaryColor: actionSheet.primaryTextColor, secondaryColor: actionSheet.secondaryTextColor, accentColor: actionSheet.controlAccentColor, destructiveColor: actionSheet.destructiveActionTextColor, disabledColor: actionSheet.disabledActionTextColor) } } extension PeekControllerTheme { - convenience init(presentationTheme: PresentationTheme) { + convenience public init(presentationTheme: PresentationTheme) { let actionSheet = presentationTheme.actionSheet self.init(isDark: actionSheet.backgroundType == .dark, menuBackgroundColor: actionSheet.opaqueItemBackgroundColor, menuItemHighligtedColor: actionSheet.opaqueItemHighlightedBackgroundColor, menuItemSeparatorColor: actionSheet.opaqueItemSeparatorColor, accentColor: actionSheet.controlAccentColor, destructiveColor: actionSheet.destructiveActionTextColor) } } public extension NavigationControllerTheme { - convenience init(presentationTheme: PresentationTheme) { - self.init(navigationBar: NavigationBarTheme(rootControllerTheme: presentationTheme), emptyAreaColor: presentationTheme.chatList.backgroundColor, emptyDetailIcon: generateTintedImage(image: UIImage(bundleImageName: "Chat List/EmptyMasterDetailIcon"), color: presentationTheme.chatList.messageTextColor.withAlphaComponent(0.2))) + convenience public init(presentationTheme: PresentationTheme) { + self.init(navigationBar: NavigationBarTheme(rootControllerTheme: presentationTheme), emptyAreaColor: presentationTheme.chatList.backgroundColor, emptyDetailIcon: generateTintedImage(image: UIImage(named: "Chat List/EmptyMasterDetailIcon", in: Bundle(for: PresentationTheme.self), compatibleWith: nil), color: presentationTheme.chatList.messageTextColor.withAlphaComponent(0.2))) } } diff --git a/submodules/TelegramUI/TelegramUI/DefaultDarkAccentPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultDarkAccentPresentationTheme.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/DefaultDarkAccentPresentationTheme.swift rename to submodules/TelegramPresentationData/Sources/DefaultDarkAccentPresentationTheme.swift index 3ee2c92bf1..cfa34ff969 100644 --- a/submodules/TelegramUI/TelegramUI/DefaultDarkAccentPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultDarkAccentPresentationTheme.swift @@ -332,7 +332,7 @@ private let inAppNotification = PresentationThemeInAppNotification( ) ) -let defaultDarkAccentPresentationTheme = PresentationTheme( +public let defaultDarkAccentPresentationTheme = PresentationTheme( name: .builtin(.nightAccent), overallDarkAppearance: true, allowsCustomWallpapers: false, diff --git a/submodules/TelegramUI/TelegramUI/DefaultDarkPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/DefaultDarkPresentationTheme.swift rename to submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift index 872bce4f22..5a321e7e17 100644 --- a/submodules/TelegramUI/TelegramUI/DefaultDarkPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift @@ -330,7 +330,7 @@ private let inAppNotification = PresentationThemeInAppNotification( ) ) -let defaultDarkPresentationTheme = PresentationTheme( +public let defaultDarkPresentationTheme = PresentationTheme( name: .builtin(.nightGrayscale), overallDarkAppearance: true, allowsCustomWallpapers: false, diff --git a/submodules/TelegramUI/TelegramUI/DefaultPresentationStrings.swift b/submodules/TelegramPresentationData/Sources/DefaultPresentationStrings.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/DefaultPresentationStrings.swift rename to submodules/TelegramPresentationData/Sources/DefaultPresentationStrings.swift diff --git a/submodules/TelegramUI/TelegramUI/DefaultPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultPresentationTheme.swift similarity index 98% rename from submodules/TelegramUI/TelegramUI/DefaultPresentationTheme.swift rename to submodules/TelegramPresentationData/Sources/DefaultPresentationTheme.swift index f7cc1f51cc..a59421ae56 100644 --- a/submodules/TelegramUI/TelegramUI/DefaultPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultPresentationTheme.swift @@ -458,14 +458,14 @@ private func makeDefaultPresentationTheme(accentColor: UIColor, serviceBackgroun public let defaultPresentationTheme = makeDefaultPresentationTheme(accentColor: UIColor(rgb: 0x007ee5), serviceBackgroundColor: defaultServiceBackgroundColor, day: false) -let defaultDayAccentColor: Int32 = 0x007ee5 -let defaultServiceBackgroundColor: UIColor = UIColor(rgb: 0x000000, alpha: 0.3) +public let defaultDayAccentColor: Int32 = 0x007ee5 +public let defaultServiceBackgroundColor: UIColor = UIColor(rgb: 0x000000, alpha: 0.3) -func makeDefaultPresentationTheme(serviceBackgroundColor: UIColor?) -> PresentationTheme { +public func makeDefaultPresentationTheme(serviceBackgroundColor: UIColor?) -> PresentationTheme { return makeDefaultPresentationTheme(accentColor: UIColor(rgb: 0x007ee5), serviceBackgroundColor: serviceBackgroundColor ?? .black, day: false) } -func makeDefaultDayPresentationTheme(accentColor: Int32?, serviceBackgroundColor: UIColor) -> PresentationTheme { +public func makeDefaultDayPresentationTheme(accentColor: Int32?, serviceBackgroundColor: UIColor) -> PresentationTheme { let color: UIColor if let accentColor = accentColor { color = UIColor(rgb: UInt32(bitPattern: accentColor)) diff --git a/submodules/TelegramUI/TelegramUI/EDSunriseSet.h b/submodules/TelegramPresentationData/Sources/EDSunriseSet.h similarity index 100% rename from submodules/TelegramUI/TelegramUI/EDSunriseSet.h rename to submodules/TelegramPresentationData/Sources/EDSunriseSet.h diff --git a/submodules/TelegramUI/TelegramUI/EDSunriseSet.m b/submodules/TelegramPresentationData/Sources/EDSunriseSet.m similarity index 100% rename from submodules/TelegramUI/TelegramUI/EDSunriseSet.m rename to submodules/TelegramPresentationData/Sources/EDSunriseSet.m diff --git a/submodules/TelegramUI/TelegramUI/NumberPluralizationForm.h b/submodules/TelegramPresentationData/Sources/NumberPluralizationForm.h similarity index 100% rename from submodules/TelegramUI/TelegramUI/NumberPluralizationForm.h rename to submodules/TelegramPresentationData/Sources/NumberPluralizationForm.h diff --git a/submodules/TelegramUI/TelegramUI/NumberPluralizationForm.m b/submodules/TelegramPresentationData/Sources/NumberPluralizationForm.m similarity index 100% rename from submodules/TelegramUI/TelegramUI/NumberPluralizationForm.m rename to submodules/TelegramPresentationData/Sources/NumberPluralizationForm.m diff --git a/submodules/TelegramUI/TelegramUI/NumericFormat.swift b/submodules/TelegramPresentationData/Sources/NumericFormat.swift similarity index 87% rename from submodules/TelegramUI/TelegramUI/NumericFormat.swift rename to submodules/TelegramPresentationData/Sources/NumericFormat.swift index 0c6a871717..8da690175d 100644 --- a/submodules/TelegramUI/TelegramUI/NumericFormat.swift +++ b/submodules/TelegramPresentationData/Sources/NumericFormat.swift @@ -37,7 +37,7 @@ public func presentationStringsFormattedNumber(_ count: Int32, _ groupingSeparat } } -func timeIntervalString(strings: PresentationStrings, value: Int32) -> String { +public func timeIntervalString(strings: PresentationStrings, value: Int32) -> String { if value < 60 { return strings.MessageTimer_Seconds(max(1, value)) } else if value < 60 * 60 { @@ -53,7 +53,7 @@ func timeIntervalString(strings: PresentationStrings, value: Int32) -> String { } } -func shortTimeIntervalString(strings: PresentationStrings, value: Int32) -> String { +public func shortTimeIntervalString(strings: PresentationStrings, value: Int32) -> String { if value < 60 { return strings.MessageTimer_ShortSeconds(max(1, value)) } else if value < 60 * 60 { @@ -67,7 +67,7 @@ func shortTimeIntervalString(strings: PresentationStrings, value: Int32) -> Stri } } -func muteForIntervalString(strings: PresentationStrings, value: Int32) -> String { +public func muteForIntervalString(strings: PresentationStrings, value: Int32) -> String { if value < 60 * 60 * 24 { return strings.MuteFor_Hours(max(1, value / (60 * 60))) } else { @@ -75,7 +75,7 @@ func muteForIntervalString(strings: PresentationStrings, value: Int32) -> String } } -func unmuteIntervalString(strings: PresentationStrings, value: Int32) -> String { +public func unmuteIntervalString(strings: PresentationStrings, value: Int32) -> String { if value < 60 * 60 { return strings.MuteExpires_Minutes(max(1, value / 60)) } else if value < 60 * 60 * 24 { @@ -85,7 +85,7 @@ func unmuteIntervalString(strings: PresentationStrings, value: Int32) -> String } } -func callDurationString(strings: PresentationStrings, value: Int32) -> String { +public func callDurationString(strings: PresentationStrings, value: Int32) -> String { if value < 60 { return strings.Call_Seconds(max(1, value)) } else { diff --git a/submodules/TelegramUI/TelegramUI/PresentationData.swift b/submodules/TelegramPresentationData/Sources/PresentationData.swift similarity index 79% rename from submodules/TelegramUI/TelegramUI/PresentationData.swift rename to submodules/TelegramPresentationData/Sources/PresentationData.swift index 0f8ad5854f..b1c42ddcbc 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationData.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationData.swift @@ -5,20 +5,29 @@ import Postbox import TelegramCore import Contacts import AddressBook -import TelegramUIPrivateModule +import Display +import TelegramUIPreferences public struct PresentationDateTimeFormat: Equatable { - let timeFormat: PresentationTimeFormat - let dateFormat: PresentationDateFormat - let dateSeparator: String - let decimalSeparator: String - let groupingSeparator: String + public let timeFormat: PresentationTimeFormat + public let dateFormat: PresentationDateFormat + public let dateSeparator: String + public let decimalSeparator: String + public let groupingSeparator: String + + public init(timeFormat: PresentationTimeFormat, dateFormat: PresentationDateFormat, dateSeparator: String, decimalSeparator: String, groupingSeparator: String) { + self.timeFormat = timeFormat + self.dateFormat = dateFormat + self.dateSeparator = dateSeparator + self.decimalSeparator = decimalSeparator + self.groupingSeparator = groupingSeparator + } } public struct PresentationVolumeControlStatusBarIcons: Equatable { - let offIcon: UIImage - let halfIcon: UIImage - let fullIcon: UIImage + public let offIcon: UIImage + public let halfIcon: UIImage + public let fullIcon: UIImage public var images: (UIImage, UIImage, UIImage) { return (self.offIcon, self.halfIcon, self.fullIcon) @@ -26,9 +35,9 @@ public struct PresentationVolumeControlStatusBarIcons: Equatable { } public struct PresentationAppIcon: Equatable { - let name: String - let imageName: String - let isDefault: Bool + public let name: String + public let imageName: String + public let isDefault: Bool public init(name: String, imageName: String, isDefault: Bool) { self.name = name @@ -47,12 +56,7 @@ public enum PresentationDateFormat { case dayFirst } -public enum PresentationPersonNameOrder: Int32 { - case firstLast = 0 - case lastFirst = 1 -} - -extension PresentationStrings : Equatable { +extension PresentationStrings: Equatable { public static func ==(lhs: PresentationStrings, rhs: PresentationStrings) -> Bool { return lhs === rhs } @@ -88,7 +92,7 @@ public final class PresentationData: Equatable { } } -func dictFromLocalization(_ value: Localization) -> [String: String] { +public func dictFromLocalization(_ value: Localization) -> [String: String] { var dict: [String: String] = [:] for entry in value.entries { switch entry { @@ -117,7 +121,8 @@ func dictFromLocalization(_ value: Localization) -> [String: String] { } private func volumeControlStatusBarIcons() -> PresentationVolumeControlStatusBarIcons { - return PresentationVolumeControlStatusBarIcons(offIcon: UIImage(bundleImageName: "Components/Volume/VolumeOff")!, halfIcon: UIImage(bundleImageName: "Components/Volume/VolumeHalf")!, fullIcon: UIImage(bundleImageName: "Components/Volume/VolumeFull")!) + let bundle = Bundle(for: PresentationTheme.self) + return PresentationVolumeControlStatusBarIcons(offIcon: UIImage(named: "Components/Volume/VolumeOff", in: bundle, compatibleWith: nil)!, halfIcon: UIImage(named: "Components/Volume/VolumeHalf", in: bundle, compatibleWith: nil)!, fullIcon: UIImage(named: "Components/Volume/VolumeFull", in: bundle, compatibleWith: nil)!) } private func currentDateTimeFormat() -> PresentationDateTimeFormat { @@ -183,7 +188,7 @@ public final class InitialPresentationDataAndSettings { public let mediaInputSettings: MediaInputSettings public let experimentalUISettings: ExperimentalUISettings - init(presentationData: PresentationData, automaticMediaDownloadSettings: MediaAutoDownloadSettings, callListSettings: CallListSettings, inAppNotificationSettings: InAppNotificationSettings, mediaInputSettings: MediaInputSettings, experimentalUISettings: ExperimentalUISettings) { + public init(presentationData: PresentationData, automaticMediaDownloadSettings: MediaAutoDownloadSettings, callListSettings: CallListSettings, inAppNotificationSettings: InAppNotificationSettings, mediaInputSettings: MediaInputSettings, experimentalUISettings: ExperimentalUISettings) { self.presentationData = presentationData self.automaticMediaDownloadSettings = automaticMediaDownloadSettings self.callListSettings = callListSettings @@ -362,7 +367,7 @@ private func automaticThemeShouldSwitchNow(_ parameters: AutomaticThemeSwitchPar } } -func automaticThemeShouldSwitchNow(settings: AutomaticThemeSwitchSetting, currentTheme: PresentationThemeReference) -> Bool { +public func automaticThemeShouldSwitchNow(settings: AutomaticThemeSwitchSetting, currentTheme: PresentationThemeReference) -> Bool { let parameters = AutomaticThemeSwitchParameters(settings: settings) return automaticThemeShouldSwitchNow(parameters, currentTheme: currentTheme) } @@ -389,7 +394,108 @@ private func automaticThemeShouldSwitch(_ settings: AutomaticThemeSwitchSetting, } } -public func updatedPresentationData(accountManager: AccountManager, applicationBindings: TelegramApplicationBindings) -> Signal { +private func serviceColor(for data: Signal) -> Signal { + return data + |> mapToSignal { data -> Signal in + if data.complete, let image = UIImage(contentsOfFile: data.path) { + return serviceColor(from: .single(image)) + } + return .complete() + } +} + +public func serviceColor(from image: Signal) -> Signal { + return image + |> mapToSignal { image -> Signal in + if let image = image { + let context = DrawingContext(size: CGSize(width: 1.0, height: 1.0), scale: 1.0, clear: false) + context.withFlippedContext({ context in + if let cgImage = image.cgImage { + context.draw(cgImage, in: CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)) + } + }) + return .single(serviceColor(with: context.colorAt(CGPoint()))) + } + return .complete() + } +} + +public func serviceColor(with color: UIColor) -> UIColor { + var hue: CGFloat = 0.0 + var saturation: CGFloat = 0.0 + var brightness: CGFloat = 0.0 + var alpha: CGFloat = 0.0 + if color.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha) { + if saturation > 0.0 { + saturation = min(1.0, saturation + 0.05 + 0.1 * (1.0 - saturation)) + } + brightness = max(0.0, brightness * 0.65) + alpha = 0.4 + return UIColor(hue: hue, saturation: saturation, brightness: brightness, alpha: alpha) + } + return color +} + +private var serviceBackgroundColorForWallpaper: (TelegramWallpaper, UIColor)? + +public func chatServiceBackgroundColor(wallpaper: TelegramWallpaper, mediaBox: MediaBox) -> Signal { + if wallpaper == serviceBackgroundColorForWallpaper?.0, let color = serviceBackgroundColorForWallpaper?.1 { + return .single(color) + } else { + switch wallpaper { + case .builtin: + return .single(UIColor(rgb: 0x748391, alpha: 0.45)) + case let .color(color): + return .single(serviceColor(with: UIColor(rgb: UInt32(bitPattern: color)))) + case let .image(representations, _): + if let largest = largestImageRepresentation(representations) { + return Signal { subscriber in + let fetch = mediaBox.fetchedResource(largest.resource, parameters: nil).start() + let data = serviceColor(for: mediaBox.resourceData(largest.resource)).start(next: { next in + subscriber.putNext(next) + }, completed: { + subscriber.putCompletion() + }) + return ActionDisposable { + fetch.dispose() + data.dispose() + } + } + |> afterNext { color in + serviceBackgroundColorForWallpaper = (wallpaper, color) + } + } else { + return .single(UIColor(rgb: 0x000000, alpha: 0.3)) + } + case let .file(file): + if file.isPattern { + if let color = file.settings.color { + return .single(serviceColor(with: UIColor(rgb: UInt32(bitPattern: color)))) + } else { + return .single(UIColor(rgb: 0x000000, alpha: 0.3)) + } + } else { + return Signal { subscriber in + let fetch = mediaBox.fetchedResource(file.file.resource, parameters: nil).start() + let data = serviceColor(for: mediaBox.resourceData(file.file.resource)).start(next: { next in + subscriber.putNext(next) + }, completed: { + subscriber.putCompletion() + }) + return ActionDisposable { + fetch.dispose() + data.dispose() + } + } + |> afterNext { color in + serviceBackgroundColorForWallpaper = (wallpaper, color) + } + } + } + } +} + +public func updatedPresentationData(accountManager: AccountManager, applicationInForeground: Signal) -> Signal { return accountManager.sharedData(keys: [SharedDataKeys.localizationSettings, ApplicationSpecificSharedDataKeys.presentationThemeSettings, ApplicationSpecificSharedDataKeys.contactSynchronizationSettings]) |> mapToSignal { sharedData -> Signal in let themeSettings: PresentationThemeSettings @@ -411,7 +517,7 @@ public func updatedPresentationData(accountManager: AccountManager, applicationB return (.single(UIColor(rgb: 0x000000, alpha: 0.3)) |> then(chatServiceBackgroundColor(wallpaper: currentWallpaper, mediaBox: accountManager.mediaBox))) |> mapToSignal { serviceBackgroundColor in - return applicationBindings.applicationInForeground + return applicationInForeground |> mapToSignal { inForeground -> Signal in if inForeground { return automaticThemeShouldSwitch(themeSettings.automaticThemeSwitchSetting, currentTheme: themeSettings.theme) diff --git a/submodules/TelegramUI/TelegramUI/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/PresentationStrings.swift rename to submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 176697a2ee..4b889b9837 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -88,7 +88,7 @@ private func extractArgumentRanges(_ value: String) -> [(Int, NSRange)] { return result } -func formatWithArgumentRanges(_ value: String, _ ranges: [(Int, NSRange)], _ arguments: [String]) -> (String, [(Int, NSRange)]) { +public func formatWithArgumentRanges(_ value: String, _ ranges: [(Int, NSRange)], _ arguments: [String]) -> (String, [(Int, NSRange)]) { let string = value as NSString var resultingRanges: [(Int, NSRange)] = [] @@ -139,7 +139,7 @@ private final class DataReader { } private func loadMapping() -> ([Int], [String], [Int], [Int], [String]) { - guard let filePath = frameworkBundle.path(forResource: "PresentationStrings", ofType: "mapping") else { + guard let filePath = Bundle(for: PresentationStrings.self).path(forResource: "PresentationStrings", ofType: "mapping") else { fatalError() } guard let data = try? Data(contentsOf: URL(fileURLWithPath: filePath)) else { @@ -3868,287 +3868,289 @@ public final class PresentationStrings { public var Channel_Setup_TypePublicHelp: String { return self._s[3427]! } public var Passport_Identity_EditInternalPassport: String { return self._s[3428]! } public var PhotoEditor_Skip: String { return self._s[3429]! } - public func MessageTimer_Weeks(_ value: Int32) -> String { + public func Map_ETAHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, _1, _2) } - public func MuteExpires_Minutes(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func Passport_Scans(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortHours(_ value: Int32) -> String { + public func InviteText_ContactsCountText(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, _1, _2) } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public func Call_Seconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_File(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) } public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) } public func Notification_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func AttachmentMenu_SendItem(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedPolls(_ value: Int32) -> String { + public func MessageTimer_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Days(_ value: Int32) -> String { + public func MuteFor_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedAudios(_ value: Int32) -> String { + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedVideoMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + public func MessageTimer_Weeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedMessages(_ value: Int32) -> String { + public func MessageTimer_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) } public func Contacts_ImportersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedPhotos(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) } public func SharedMedia_Photo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_ShareItem(_ value: Int32) -> String { + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) } public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_ShareVideo(_ value: Int32) -> String { + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) @@ -4158,242 +4160,240 @@ public final class PresentationStrings { let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) } - public func Map_ETAHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, _1, _2) } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func StickerPack_StickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MuteFor_Hours(_ value: Int32) -> String { + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) } - public func UserCount(_ value: Int32) -> String { + public func MuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + public func LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_SharePhoto(_ value: Int32) -> String { + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteFor_Days(_ value: Int32) -> String { + public func MuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Hours(_ value: Int32) -> String { + public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedVideos(_ value: Int32) -> String { + public func QuickSend_Photos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) } - public func Map_ETAMinutes(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + public func Conversation_StatusSubscribers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Seconds(_ value: Int32) -> String { + public func AttachmentMenu_SendGif(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedGifs(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, _1, _2) } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + public func Call_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, _1, _2) } - public func SharedMedia_Video(_ value: Int32) -> String { + public func ForwardedMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) } - public func LastSeen_HoursAgo(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Years(_ value: Int32) -> String { + public func MessagePoll_VotedCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Days(_ value: Int32) -> String { + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func ForwardedGifs(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) } - public func Invitation_Members(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func ForwardedStickers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Generic(_ value: Int32) -> String { + public func MessageTimer_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, _2, _1, _3) + public func Passport_Scans(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func ChatList_SelectedChats(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, _1, _2) + public func MuteFor_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, _2, _1, _3) + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) } - public func QuickSend_Photos(_ value: Int32) -> String { + public func Notifications_Exceptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Minutes(_ value: Int32) -> String { + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedStickers(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, _1, _2) } - public func SharedMedia_File(_ value: Int32) -> String { + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusMembers(_ value: Int32) -> String { + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, _1, _2) } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) } - init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { + public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { self.primaryComponent = primaryComponent self.secondaryComponent = secondaryComponent self.groupingSeparator = groupingSeparator diff --git a/submodules/TelegramUI/TelegramUI/PresentationTheme.swift b/submodules/TelegramPresentationData/Sources/PresentationTheme.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/PresentationTheme.swift rename to submodules/TelegramPresentationData/Sources/PresentationTheme.swift index 5e44d67453..cc034ea8c2 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationTheme.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import TelegramCore +import TelegramUIPreferences public enum PresentationThemeParsingError: Error { case generic @@ -68,7 +69,7 @@ public enum PresentationThemeStatusBarStyle: Int32 { } } - var style: StatusBarStyle { + public var style: StatusBarStyle { switch self { case .black: return .Black @@ -503,11 +504,11 @@ public func bubbleVariableColor(variableColor: PresentationThemeVariableColor, w } public final class PresentationThemeChatBubblePolls { - let radioButton: UIColor - let radioProgress: UIColor - let highlight: UIColor - let separator: UIColor - let bar: UIColor + public let radioButton: UIColor + public let radioProgress: UIColor + public let highlight: UIColor + public let separator: UIColor + public let bar: UIColor public init(radioButton: UIColor, radioProgress: UIColor, highlight: UIColor, separator: UIColor, bar: UIColor) { self.radioButton = radioButton @@ -905,7 +906,7 @@ public enum PresentationThemeBuiltinName { case nightGrayscale case nightAccent - var reference: PresentationBuiltinThemeReference { + public var reference: PresentationBuiltinThemeReference { switch self { case .dayClassic: return .dayClassic diff --git a/submodules/TelegramUI/TelegramUI/PresentationsResourceCache.swift b/submodules/TelegramPresentationData/Sources/PresentationsResourceCache.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/PresentationsResourceCache.swift rename to submodules/TelegramPresentationData/Sources/PresentationsResourceCache.swift diff --git a/submodules/TelegramUI/TelegramUI/StringPluralization.swift b/submodules/TelegramPresentationData/Sources/StringPluralization.swift similarity index 96% rename from submodules/TelegramUI/TelegramUI/StringPluralization.swift rename to submodules/TelegramPresentationData/Sources/StringPluralization.swift index f07a89967e..6eccf01d42 100644 --- a/submodules/TelegramUI/TelegramUI/StringPluralization.swift +++ b/submodules/TelegramPresentationData/Sources/StringPluralization.swift @@ -1,7 +1,5 @@ import Foundation -import TelegramUIPrivateModule - enum PluralizationForm: Int32 { case zero = 0 case one = 1 diff --git a/submodules/TelegramPresentationData/Sources/TelegramPresentationData.h b/submodules/TelegramPresentationData/Sources/TelegramPresentationData.h new file mode 100644 index 0000000000..d2dfa86ab0 --- /dev/null +++ b/submodules/TelegramPresentationData/Sources/TelegramPresentationData.h @@ -0,0 +1,10 @@ +#import + +//! Project version number for TelegramPresentationData. +FOUNDATION_EXPORT double TelegramPresentationDataVersionNumber; + +//! Project version string for TelegramPresentationData. +FOUNDATION_EXPORT const unsigned char TelegramPresentationDataVersionString[]; + +#import +#import diff --git a/submodules/TelegramPresentationData/TelegramPresentationData_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramPresentationData/TelegramPresentationData_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..1a75c3ac09 --- /dev/null +++ b/submodules/TelegramPresentationData/TelegramPresentationData_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,434 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0AE31AB22B273F20058D3BC /* TelegramPresentationData.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE31A922B273F20058D3BC /* TelegramPresentationData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE31B422B2746B0058D3BC /* PresentationStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31B122B2746B0058D3BC /* PresentationStrings.swift */; }; + D0AE31B522B2746B0058D3BC /* PresentationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31B222B2746B0058D3BC /* PresentationData.swift */; }; + D0AE31B622B2746B0058D3BC /* PresentationTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31B322B2746B0058D3BC /* PresentationTheme.swift */; }; + D0AE31B922B2747A0058D3BC /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE31B822B2747A0058D3BC /* SwiftSignalKit.framework */; }; + D0AE31BB22B2747F0058D3BC /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE31BA22B2747F0058D3BC /* Postbox.framework */; }; + D0AE31BD22B274830058D3BC /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE31BC22B274830058D3BC /* TelegramCore.framework */; }; + D0AE31BF22B274950058D3BC /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE31BE22B274950058D3BC /* Display.framework */; }; + D0AE31C322B274E90058D3BC /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE31C222B274E90058D3BC /* TelegramUIPreferences.framework */; }; + D0AE31C522B279720058D3BC /* StringPluralization.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31C422B279720058D3BC /* StringPluralization.swift */; }; + D0AE31C822B2799B0058D3BC /* NumberPluralizationForm.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE31C622B2799B0058D3BC /* NumberPluralizationForm.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE31C922B2799B0058D3BC /* NumberPluralizationForm.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31C722B2799B0058D3BC /* NumberPluralizationForm.m */; }; + D0AE31CB22B279D00058D3BC /* NumericFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31CA22B279D00058D3BC /* NumericFormat.swift */; }; + D0AE31CD22B279FD0058D3BC /* PresentationsResourceCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31CC22B279FD0058D3BC /* PresentationsResourceCache.swift */; }; + D0AE31D222B27A780058D3BC /* DefaultDarkPresentationTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31CE22B27A780058D3BC /* DefaultDarkPresentationTheme.swift */; }; + D0AE31D322B27A780058D3BC /* DefaultDarkAccentPresentationTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31CF22B27A780058D3BC /* DefaultDarkAccentPresentationTheme.swift */; }; + D0AE31D422B27A780058D3BC /* DefaultPresentationStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31D022B27A780058D3BC /* DefaultPresentationStrings.swift */; }; + D0AE31D522B27A780058D3BC /* DefaultPresentationTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31D122B27A780058D3BC /* DefaultPresentationTheme.swift */; }; + D0AE31D822B27AAF0058D3BC /* EDSunriseSet.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE31D622B27AAE0058D3BC /* EDSunriseSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE31D922B27AAF0058D3BC /* EDSunriseSet.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE31D722B27AAE0058D3BC /* EDSunriseSet.m */; }; + D0AE321422B2826A0058D3BC /* ComponentsThemes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE321322B282690058D3BC /* ComponentsThemes.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0AE31A622B273F20058D3BC /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE31A922B273F20058D3BC /* TelegramPresentationData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramPresentationData.h; sourceTree = ""; }; + D0AE31AA22B273F20058D3BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0AE31B122B2746B0058D3BC /* PresentationStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationStrings.swift; sourceTree = ""; }; + D0AE31B222B2746B0058D3BC /* PresentationData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationData.swift; sourceTree = ""; }; + D0AE31B322B2746B0058D3BC /* PresentationTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationTheme.swift; sourceTree = ""; }; + D0AE31B822B2747A0058D3BC /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE31BA22B2747F0058D3BC /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE31BC22B274830058D3BC /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE31BE22B274950058D3BC /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE31C222B274E90058D3BC /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE31C422B279720058D3BC /* StringPluralization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringPluralization.swift; sourceTree = ""; }; + D0AE31C622B2799B0058D3BC /* NumberPluralizationForm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberPluralizationForm.h; sourceTree = ""; }; + D0AE31C722B2799B0058D3BC /* NumberPluralizationForm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NumberPluralizationForm.m; sourceTree = ""; }; + D0AE31CA22B279D00058D3BC /* NumericFormat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumericFormat.swift; sourceTree = ""; }; + D0AE31CC22B279FD0058D3BC /* PresentationsResourceCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationsResourceCache.swift; sourceTree = ""; }; + D0AE31CE22B27A780058D3BC /* DefaultDarkPresentationTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultDarkPresentationTheme.swift; sourceTree = ""; }; + D0AE31CF22B27A780058D3BC /* DefaultDarkAccentPresentationTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultDarkAccentPresentationTheme.swift; sourceTree = ""; }; + D0AE31D022B27A780058D3BC /* DefaultPresentationStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultPresentationStrings.swift; sourceTree = ""; }; + D0AE31D122B27A780058D3BC /* DefaultPresentationTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultPresentationTheme.swift; sourceTree = ""; }; + D0AE31D622B27AAE0058D3BC /* EDSunriseSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EDSunriseSet.h; sourceTree = ""; }; + D0AE31D722B27AAE0058D3BC /* EDSunriseSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EDSunriseSet.m; sourceTree = ""; }; + D0AE321322B282690058D3BC /* ComponentsThemes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComponentsThemes.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE31A322B273F20058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE31C322B274E90058D3BC /* TelegramUIPreferences.framework in Frameworks */, + D0AE31BF22B274950058D3BC /* Display.framework in Frameworks */, + D0AE31BD22B274830058D3BC /* TelegramCore.framework in Frameworks */, + D0AE31BB22B2747F0058D3BC /* Postbox.framework in Frameworks */, + D0AE31B922B2747A0058D3BC /* SwiftSignalKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0AE319C22B273F20058D3BC = { + isa = PBXGroup; + children = ( + D0AE31AA22B273F20058D3BC /* Info.plist */, + D0AE31A822B273F20058D3BC /* Sources */, + D0AE31A722B273F20058D3BC /* Products */, + D0AE31B722B2747A0058D3BC /* Frameworks */, + ); + sourceTree = ""; + }; + D0AE31A722B273F20058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE31A622B273F20058D3BC /* TelegramPresentationData.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE31A822B273F20058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0AE321322B282690058D3BC /* ComponentsThemes.swift */, + D0AE31D622B27AAE0058D3BC /* EDSunriseSet.h */, + D0AE31D722B27AAE0058D3BC /* EDSunriseSet.m */, + D0AE31CF22B27A780058D3BC /* DefaultDarkAccentPresentationTheme.swift */, + D0AE31CE22B27A780058D3BC /* DefaultDarkPresentationTheme.swift */, + D0AE31D022B27A780058D3BC /* DefaultPresentationStrings.swift */, + D0AE31D122B27A780058D3BC /* DefaultPresentationTheme.swift */, + D0AE31CC22B279FD0058D3BC /* PresentationsResourceCache.swift */, + D0AE31CA22B279D00058D3BC /* NumericFormat.swift */, + D0AE31C622B2799B0058D3BC /* NumberPluralizationForm.h */, + D0AE31C722B2799B0058D3BC /* NumberPluralizationForm.m */, + D0AE31C422B279720058D3BC /* StringPluralization.swift */, + D0AE31B222B2746B0058D3BC /* PresentationData.swift */, + D0AE31B122B2746B0058D3BC /* PresentationStrings.swift */, + D0AE31B322B2746B0058D3BC /* PresentationTheme.swift */, + D0AE31A922B273F20058D3BC /* TelegramPresentationData.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0AE31B722B2747A0058D3BC /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0AE31C222B274E90058D3BC /* TelegramUIPreferences.framework */, + D0AE31BE22B274950058D3BC /* Display.framework */, + D0AE31BC22B274830058D3BC /* TelegramCore.framework */, + D0AE31BA22B2747F0058D3BC /* Postbox.framework */, + D0AE31B822B2747A0058D3BC /* SwiftSignalKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE31A122B273F20058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE31D822B27AAF0058D3BC /* EDSunriseSet.h in Headers */, + D0AE31C822B2799B0058D3BC /* NumberPluralizationForm.h in Headers */, + D0AE31AB22B273F20058D3BC /* TelegramPresentationData.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE31A522B273F20058D3BC /* TelegramPresentationData */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE31AE22B273F20058D3BC /* Build configuration list for PBXNativeTarget "TelegramPresentationData" */; + buildPhases = ( + D0AE31A122B273F20058D3BC /* Headers */, + D0AE31A222B273F20058D3BC /* Sources */, + D0AE31A322B273F20058D3BC /* Frameworks */, + D0AE31A422B273F20058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TelegramPresentationData; + productName = TelegramPresentationData; + productReference = D0AE31A622B273F20058D3BC /* TelegramPresentationData.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE319D22B273F20058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE31A522B273F20058D3BC = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + }; + }; + }; + buildConfigurationList = D0AE31A022B273F20058D3BC /* Build configuration list for PBXProject "TelegramPresentationData_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE319C22B273F20058D3BC; + productRefGroup = D0AE31A722B273F20058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE31A522B273F20058D3BC /* TelegramPresentationData */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE31A422B273F20058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE31A222B273F20058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE31D522B27A780058D3BC /* DefaultPresentationTheme.swift in Sources */, + D0AE31D422B27A780058D3BC /* DefaultPresentationStrings.swift in Sources */, + D0AE31CB22B279D00058D3BC /* NumericFormat.swift in Sources */, + D0AE31B422B2746B0058D3BC /* PresentationStrings.swift in Sources */, + D0AE321422B2826A0058D3BC /* ComponentsThemes.swift in Sources */, + D0AE31C522B279720058D3BC /* StringPluralization.swift in Sources */, + D0AE31CD22B279FD0058D3BC /* PresentationsResourceCache.swift in Sources */, + D0AE31C922B2799B0058D3BC /* NumberPluralizationForm.m in Sources */, + D0AE31D922B27AAF0058D3BC /* EDSunriseSet.m in Sources */, + D0AE31B522B2746B0058D3BC /* PresentationData.swift in Sources */, + D0AE31D322B27A780058D3BC /* DefaultDarkAccentPresentationTheme.swift in Sources */, + D0AE31B622B2746B0058D3BC /* PresentationTheme.swift in Sources */, + D0AE31D222B27A780058D3BC /* DefaultDarkPresentationTheme.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE31AC22B273F20058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE31AD22B273F20058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE31AF22B273F20058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramPresentationData; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE31B022B273F20058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramPresentationData; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE31A022B273F20058D3BC /* Build configuration list for PBXProject "TelegramPresentationData_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE31AC22B273F20058D3BC /* DebugAppStoreLLC */, + D0AE31AD22B273F20058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE31AE22B273F20058D3BC /* Build configuration list for PBXNativeTarget "TelegramPresentationData" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE31AF22B273F20058D3BC /* DebugAppStoreLLC */, + D0AE31B022B273F20058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE319D22B273F20058D3BC /* Project object */; +} diff --git a/submodules/TelegramUI/TelegramUI/AccessoryPanelNode.swift b/submodules/TelegramUI/TelegramUI/AccessoryPanelNode.swift index 68d3c87daa..067fe48fc8 100644 --- a/submodules/TelegramUI/TelegramUI/AccessoryPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/AccessoryPanelNode.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import AsyncDisplayKit +import TelegramPresentationData class AccessoryPanelNode: ASDisplayNode { var dismiss: (() -> Void)? diff --git a/submodules/TelegramUI/TelegramUI/AccountContext.swift b/submodules/TelegramUI/TelegramUI/AccountContext.swift index 86e1ecd65d..cfd6b6b6b5 100644 --- a/submodules/TelegramUI/TelegramUI/AccountContext.swift +++ b/submodules/TelegramUI/TelegramUI/AccountContext.swift @@ -4,6 +4,8 @@ import UIKit import Postbox import TelegramCore import Display +import DeviceAccess +import TelegramPresentationData public final class TelegramApplicationOpenUrlCompletion { public let completion: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/AccountUtils.swift b/submodules/TelegramUI/TelegramUI/AccountUtils.swift index 875895197e..1b304eb172 100644 --- a/submodules/TelegramUI/TelegramUI/AccountUtils.swift +++ b/submodules/TelegramUI/TelegramUI/AccountUtils.swift @@ -2,6 +2,7 @@ import Foundation import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences func activeAccountsAndPeers(context: AccountContext) -> Signal<((Account, Peer)?, [(Account, Peer, Int32)]), NoError> { let sharedContext = context.sharedContext diff --git a/submodules/TelegramUI/TelegramUI/ActionSheetPeerItem.swift b/submodules/TelegramUI/TelegramUI/ActionSheetPeerItem.swift index c0b75d3107..7f73d5f8d3 100644 --- a/submodules/TelegramUI/TelegramUI/ActionSheetPeerItem.swift +++ b/submodules/TelegramUI/TelegramUI/ActionSheetPeerItem.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import TelegramCore import Postbox +import TelegramPresentationData public class ActionSheetPeerItem: ActionSheetItem { public let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ActivityIndicator.swift b/submodules/TelegramUI/TelegramUI/ActivityIndicator.swift index 11b6ca974b..8b5c75e40a 100644 --- a/submodules/TelegramUI/TelegramUI/ActivityIndicator.swift +++ b/submodules/TelegramUI/TelegramUI/ActivityIndicator.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import AsyncDisplayKit +import TelegramPresentationData private func convertIndicatorColor(_ color: UIColor) -> UIColor { if color.isEqual(UIColor(rgb: 0x007ee5)) { diff --git a/submodules/TelegramUI/TelegramUI/AnimatedStickerUtils.swift b/submodules/TelegramUI/TelegramUI/AnimatedStickerUtils.swift index e0e7f8b08e..9f01cdbe9b 100644 --- a/submodules/TelegramUI/TelegramUI/AnimatedStickerUtils.swift +++ b/submodules/TelegramUI/TelegramUI/AnimatedStickerUtils.swift @@ -6,6 +6,8 @@ import AVFoundation import Lottie import TelegramUIPrivateModule +import GZip + private func validateAnimationItems(_ items: [Any]?, shapes: Bool = true) -> Bool { if let items = items { for case let item as [AnyHashable: Any] in items { diff --git a/Telegram-iOS/AppDelegate.swift b/submodules/TelegramUI/TelegramUI/AppDelegate.swift similarity index 99% rename from Telegram-iOS/AppDelegate.swift rename to submodules/TelegramUI/TelegramUI/AppDelegate.swift index 887fa0bacc..923ef0a682 100644 --- a/Telegram-iOS/AppDelegate.swift +++ b/submodules/TelegramUI/TelegramUI/AppDelegate.swift @@ -2,7 +2,6 @@ import UIKit import SwiftSignalKit import Display import TelegramCore -import TelegramUI import UserNotifications import Intents import HockeySDK @@ -10,10 +9,11 @@ import Postbox import PushKit import AsyncDisplayKit import CloudKit - -#if BUCK +import TelegramUIPreferences +import TelegramPresentationData +import TelegramCallsUI +import TelegramVoip import BuildConfig -#endif private let handleVoipNotifications = false @@ -929,7 +929,7 @@ final class SharedApplicationContext { |> deliverOnMainQueue |> map { accountAndSettings -> UnauthorizedApplicationContext? in return accountAndSettings.flatMap { account, limitsConfiguration, callListSettings, otherAccountPhoneNumbers in - return UnauthorizedApplicationContext(buildConfig: buildConfig, sharedContext: sharedApplicationContext.sharedContext, account: account, otherAccountPhoneNumbers: otherAccountPhoneNumbers) + return UnauthorizedApplicationContext(apiId: buildConfig.apiId, apiHash: buildConfig.apiHash, sharedContext: sharedApplicationContext.sharedContext, account: account, otherAccountPhoneNumbers: otherAccountPhoneNumbers) } } }) diff --git a/Telegram-iOS/ApplicationContext.swift b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift similarity index 98% rename from Telegram-iOS/ApplicationContext.swift rename to submodules/TelegramUI/TelegramUI/ApplicationContext.swift index af64c3cca9..fb29160c29 100644 --- a/Telegram-iOS/ApplicationContext.swift +++ b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift @@ -1,16 +1,13 @@ import Foundation import Intents -import TelegramUI +import TelegramPresentationData +import TelegramUIPreferences import SwiftSignalKit import Postbox import TelegramCore import Display import LegacyComponents - -#if BUCK -import BuildConfig -import AppBinaryPrivate -#endif +import DeviceAccess func isAccessLocked(data: PostboxAccessChallengeData, at timestamp: Int32) -> Bool { if data.isLockable, let autolockDeadline = data.autolockDeadline, autolockDeadline <= timestamp { @@ -26,12 +23,12 @@ final class UnauthorizedApplicationContext { let rootController: AuthorizationSequenceController - init(buildConfig: BuildConfig, sharedContext: SharedAccountContext, account: UnauthorizedAccount, otherAccountPhoneNumbers: ((String, AccountRecordId, Bool)?, [(String, AccountRecordId, Bool)])) { + init(apiId: Int32, apiHash: String, sharedContext: SharedAccountContext, account: UnauthorizedAccount, otherAccountPhoneNumbers: ((String, AccountRecordId, Bool)?, [(String, AccountRecordId, Bool)])) { self.sharedContext = sharedContext self.account = account let presentationData = sharedContext.currentPresentationData.with { $0 } - self.rootController = AuthorizationSequenceController(sharedContext: sharedContext, account: account, otherAccountPhoneNumbers: otherAccountPhoneNumbers, strings: presentationData.strings, theme: presentationData.theme, openUrl: sharedContext.applicationBindings.openUrl, apiId: buildConfig.apiId, apiHash: buildConfig.apiHash) + self.rootController = AuthorizationSequenceController(sharedContext: sharedContext, account: account, otherAccountPhoneNumbers: otherAccountPhoneNumbers, strings: presentationData.strings, theme: presentationData.theme, openUrl: sharedContext.applicationBindings.openUrl, apiId: apiId, apiHash: apiHash) account.shouldBeServiceTaskMaster.set(sharedContext.applicationBindings.applicationInForeground |> map { value -> AccountServiceTaskMasterMode in if value { @@ -596,7 +593,7 @@ final class AuthorizedApplicationContext { switch state { case .contacts: splitTest.addEvent(.ContactsRequest) - DeviceAccess.authorizeAccess(to: .contacts, context: context) { result in + DeviceAccess.authorizeAccess(to: .contacts, presentationData: context.sharedContext.currentPresentationData.with { $0 }) { result in if result { splitTest.addEvent(.ContactsAllowed) } else { @@ -607,7 +604,9 @@ final class AuthorizedApplicationContext { } case .notifications: splitTest.addEvent(.NotificationsRequest) - DeviceAccess.authorizeAccess(to: .notifications, context: context) { result in + DeviceAccess.authorizeAccess(to: .notifications, registerForNotifications: { result in + context.sharedContext.applicationBindings.registerForNotifications(result) + }) { result in if result { splitTest.addEvent(.NotificationsAllowed) } else { @@ -617,7 +616,9 @@ final class AuthorizedApplicationContext { ApplicationSpecificNotice.setNotificationsPermissionWarning(accountManager: context.sharedContext.accountManager, value: 0) } case .siri: - DeviceAccess.authorizeAccess(to: .siri, context: context) { result in + DeviceAccess.authorizeAccess(to: .siri, requestSiriAuthorization: { completion in + return context.sharedContext.applicationBindings.requestSiriAuthorization(completion) + }) { result in permissionsPosition.set(position + 1) } default: diff --git a/Telegram-iOS/ApplicationShortcutItem.swift b/submodules/TelegramUI/TelegramUI/ApplicationShortcutItem.swift similarity index 97% rename from Telegram-iOS/ApplicationShortcutItem.swift rename to submodules/TelegramUI/TelegramUI/ApplicationShortcutItem.swift index d49f139e1c..43841ee9b3 100644 --- a/Telegram-iOS/ApplicationShortcutItem.swift +++ b/submodules/TelegramUI/TelegramUI/ApplicationShortcutItem.swift @@ -1,6 +1,6 @@ import Foundation import UIKit -import TelegramUI +import TelegramPresentationData enum ApplicationShortcutItemType: String { case search diff --git a/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift b/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift index 6413d36a35..c35840f84b 100644 --- a/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift +++ b/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData public enum ArchivedStickerPacksControllerMode { case stickers diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetController.swift index cdec3e1f9a..0bf2188c48 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetController.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData final class AuthorizationSequenceAwaitingAccountResetController: ViewController { private var controllerNode: AuthorizationSequenceAwaitingAccountResetControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift index eb54ed2088..40c388239e 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit +import TelegramPresentationData private func timerValueString(days: Int32, hours: Int32, minutes: Int32, color: UIColor, strings: PresentationStrings) -> NSAttributedString { var string = NSMutableAttributedString() diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryController.swift index e2cfb3d338..3abdf98695 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryController.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import TelegramCore +import TelegramPresentationData final class AuthorizationSequenceCodeEntryController: ViewController { private var controllerNode: AuthorizationSequenceCodeEntryControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift index ef13563e58..eb636ef070 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import TelegramCore import SwiftSignalKit +import TelegramPresentationData func authorizationCurrentOptionText(_ type: SentAuthorizationCodeType, strings: PresentationStrings, primaryColor: UIColor, accentColor: UIColor) -> NSAttributedString { switch type { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift index 3640cf9bf1..8286b1dfe5 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift @@ -12,6 +12,7 @@ import MtProtoKitDynamic #endif import MessageUI import CoreTelephony +import TelegramPresentationData private enum InnerState: Equatable { case state(UnauthorizedAccountStateContents) diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionController.swift index eb7fc52e9c..e44207261e 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionController.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData private func loadCountryCodes() -> [(String, Int)] { guard let filePath = frameworkBundle.path(forResource: "PhoneCountries", ofType: "txt") else { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionControllerNode.swift index 78f82dd90c..950f210572 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionControllerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData private func loadCountryCodes() -> [(String, Int)] { guard let filePath = frameworkBundle.path(forResource: "PhoneCountries", ofType: "txt") else { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryController.swift index 2fff4777eb..b02f055bc0 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryController.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData final class AuthorizationSequencePasswordEntryController: ViewController { private var controllerNode: AuthorizationSequencePasswordEntryControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift index 971abb99ea..a5ac857177 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class AuthorizationSequencePasswordEntryControllerNode: ASDisplayNode, UITextFieldDelegate { private let strings: PresentationStrings diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryController.swift index 1c6a990773..c58a91afc6 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryController.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData final class AuthorizationSequencePasswordRecoveryController: ViewController { private var controllerNode: AuthorizationSequencePasswordRecoveryControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift index d2a4760aa2..672a1f7f02 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class AuthorizationSequencePasswordRecoveryControllerNode: ASDisplayNode, UITextFieldDelegate { private let strings: PresentationStrings diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryController.swift index d21b77e5b9..625aa28f6c 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import TelegramCore import Postbox +import TelegramPresentationData final class AuthorizationSequencePhoneEntryController: ViewController { private var controllerNode: AuthorizationSequencePhoneEntryControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift index 04fe111f95..5dfa17ab7d 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData private func emojiFlagForISOCountryCode(_ countryCode: NSString) -> String { if countryCode.length != 2 { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSignUpController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSignUpController.swift index 7472b38acb..5c44aed0e4 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSignUpController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSignUpController.swift @@ -4,7 +4,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore - +import TelegramPresentationData import LegacyComponents final class AuthorizationSequenceSignUpController: ViewController { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSignUpControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSignUpControllerNode.swift index f84333a1bb..ed4dc81184 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSignUpControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSignUpControllerNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private func roundCorners(diameter: CGFloat) -> UIImage { UIGraphicsBeginImageContextWithOptions(CGSize(width: diameter, height: diameter), false, 0.0) diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashController.swift index 014c146a05..11ac1bb7b9 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashController.swift @@ -5,10 +5,12 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit - +import TelegramPresentationData import TelegramUIPrivateModule import LegacyComponents +import RMIntro + final class AuthorizationSequenceSplashController: ViewController { private var controllerNode: AuthorizationSequenceSplashControllerNode { return self.displayNode as! AuthorizationSequenceSplashControllerNode diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashControllerNode.swift index 574878c685..37e855f13f 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashControllerNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class AuthorizationSequenceSplashControllerNode: ASDisplayNode { init(theme: PresentationTheme) { diff --git a/submodules/TelegramUI/TelegramUI/AutodownloadConnectionTypeController.swift b/submodules/TelegramUI/TelegramUI/AutodownloadConnectionTypeController.swift index df91119946..3e6cd85188 100644 --- a/submodules/TelegramUI/TelegramUI/AutodownloadConnectionTypeController.swift +++ b/submodules/TelegramUI/TelegramUI/AutodownloadConnectionTypeController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences enum AutomaticDownloadConnectionType { case cellular diff --git a/submodules/TelegramUI/TelegramUI/AutodownloadDataUsagePickerItem.swift b/submodules/TelegramUI/TelegramUI/AutodownloadDataUsagePickerItem.swift index acfc1ccf19..8471eac64a 100644 --- a/submodules/TelegramUI/TelegramUI/AutodownloadDataUsagePickerItem.swift +++ b/submodules/TelegramUI/TelegramUI/AutodownloadDataUsagePickerItem.swift @@ -4,7 +4,8 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore - +import TelegramUIPreferences +import TelegramPresentationData import LegacyComponents enum AutomaticDownloadDataUsage: Int { diff --git a/submodules/TelegramUI/TelegramUI/AutodownloadMediaCategoryController.swift b/submodules/TelegramUI/TelegramUI/AutodownloadMediaCategoryController.swift index 7a91055ae6..6326860415 100644 --- a/submodules/TelegramUI/TelegramUI/AutodownloadMediaCategoryController.swift +++ b/submodules/TelegramUI/TelegramUI/AutodownloadMediaCategoryController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences public func autodownloadDataSizeString(_ size: Int64, decimalSeparator: String = ".") -> String { if size >= 1024 * 1024 * 1024 { diff --git a/submodules/TelegramUI/TelegramUI/AutodownloadSizeLimitItem.swift b/submodules/TelegramUI/TelegramUI/AutodownloadSizeLimitItem.swift index 6a86ae60e7..530a07738d 100644 --- a/submodules/TelegramUI/TelegramUI/AutodownloadSizeLimitItem.swift +++ b/submodules/TelegramUI/TelegramUI/AutodownloadSizeLimitItem.swift @@ -4,6 +4,8 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData +import TelegramPresentationData import LegacyComponents diff --git a/submodules/TelegramUI/TelegramUI/AvatarGalleryController.swift b/submodules/TelegramUI/TelegramUI/AvatarGalleryController.swift index 8a51ce322b..8138928427 100644 --- a/submodules/TelegramUI/TelegramUI/AvatarGalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/AvatarGalleryController.swift @@ -6,6 +6,7 @@ import Postbox import SwiftSignalKit import AsyncDisplayKit import TelegramCore +import TelegramPresentationData public struct ImageRepresentationWithReference: Equatable { public let representation: TelegramMediaImageRepresentation diff --git a/submodules/TelegramUI/TelegramUI/AvatarGalleryItemFooterContentNode.swift b/submodules/TelegramUI/TelegramUI/AvatarGalleryItemFooterContentNode.swift index 822e4f204f..3d170e75f8 100644 --- a/submodules/TelegramUI/TelegramUI/AvatarGalleryItemFooterContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/AvatarGalleryItemFooterContentNode.swift @@ -6,6 +6,8 @@ import Postbox import TelegramCore import SwiftSignalKit import Photos +import TelegramPresentationData +import TelegramUIPreferences private let deleteImage = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionThrash"), color: .white) private let actionImage = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionAction"), color: .white) diff --git a/submodules/TelegramUI/TelegramUI/AvatarNode.swift b/submodules/TelegramUI/TelegramUI/AvatarNode.swift index 93c93c07c5..ed7aa63623 100644 --- a/submodules/TelegramUI/TelegramUI/AvatarNode.swift +++ b/submodules/TelegramUI/TelegramUI/AvatarNode.swift @@ -5,6 +5,7 @@ import Postbox import Display import TelegramCore import SwiftSignalKit +import TelegramPresentationData private let deletedIcon = UIImage(bundleImageName: "Avatar/DeletedIcon")?.precomposed() private let savedMessagesIcon = UIImage(bundleImageName: "Avatar/SavedMessagesIcon")?.precomposed() diff --git a/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift b/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift index 288ffef783..37032904d6 100644 --- a/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift +++ b/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class BlockedPeersControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutController.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutController.swift index 07a5d195b4..e2dc69d411 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutController.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class BotCheckoutController: ViewController { private var controllerNode: BotCheckoutControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutControllerNode.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutControllerNode.swift index 82fa8c2bc2..78b383571e 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutControllerNode.swift @@ -6,7 +6,7 @@ import Postbox import TelegramCore import SwiftSignalKit import PassKit - +import TelegramPresentationData import TelegramUIPrivateModule final class BotCheckoutControllerArguments { diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutHeaderItem.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutHeaderItem.swift index e8b5b72486..a955210bfb 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutHeaderItem.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutHeaderItem.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData class BotCheckoutHeaderItem: ListViewItem, ItemListItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutInfoController.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutInfoController.swift index 8915ca9589..9856cf69a9 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutInfoController.swift @@ -4,6 +4,7 @@ import SwiftSignalKit import Display import TelegramCore import Postbox +import TelegramPresentationData enum BotCheckoutInfoControllerAddressFocus { case street1 diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutInfoControllerNode.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutInfoControllerNode.swift index 8fb2543908..c0e365d95f 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutInfoControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutInfoControllerNode.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData private final class BotCheckoutInfoAddressItems { let address1: BotPaymentFieldItemNode diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutNativeCardEntryController.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutNativeCardEntryController.swift index 1c55bcc85a..8cb62420c6 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutNativeCardEntryController.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutNativeCardEntryController.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Display import TelegramCore import Postbox +import TelegramPresentationData enum BotCheckoutNativeCardEntryStatus { case notReady diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutNativeCardEntryControllerNode.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutNativeCardEntryControllerNode.swift index 8b0f67ab50..d76018944b 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutNativeCardEntryControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutNativeCardEntryControllerNode.swift @@ -5,7 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit - +import TelegramPresentationData import TelegramUIPrivateModule private final class BotCheckoutNativeCardEntryScrollerNodeView: UIScrollView { diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutPasswordEntryController.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutPasswordEntryController.swift index 0149eecfd4..f08da27cff 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutPasswordEntryController.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutPasswordEntryController.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import TelegramCore import SwiftSignalKit +import TelegramPresentationData private struct BotCheckoutPasswordAlertAction { public let title: String diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutPriceItem.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutPriceItem.swift index ae98e1cffb..4589cc25a0 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutPriceItem.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutPriceItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class BotCheckoutPriceItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutWebInteractionController.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutWebInteractionController.swift index c4c853fee4..9eb70dc7a0 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutWebInteractionController.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutWebInteractionController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData enum BotCheckoutWebInteractionControllerIntent { case addPaymentMethod((BotCheckoutPaymentWebToken) -> Void) diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutWebInteractionControllerNode.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutWebInteractionControllerNode.swift index 487fe62d32..38b7e1cd7b 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutWebInteractionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutWebInteractionControllerNode.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import WebKit +import TelegramPresentationData private class WeakPaymentScriptMessageHandler: NSObject, WKScriptMessageHandler { private let f: (WKScriptMessage) -> () diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentActionItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentActionItemNode.swift index c1b6c240de..0e59a1bb92 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentActionItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentActionItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentCardInputItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentCardInputItemNode.swift index 895e908656..accbbea24f 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentCardInputItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentCardInputItemNode.swift @@ -2,7 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display - +import TelegramPresentationData import TelegramUIPrivateModule struct BotPaymentCardInputData { diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentDateItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentDateItemNode.swift index 452eda32d3..4251eb426c 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentDateItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentDateItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentDisclosureItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentDisclosureItemNode.swift index 88ca7ae7ca..4962eeeef7 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentDisclosureItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentDisclosureItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentFieldItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentFieldItemNode.swift index 5af9700bd5..9f6f0685be 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentFieldItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentFieldItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentHeaderItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentHeaderItemNode.swift index eb66871898..1426dbf4bf 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentHeaderItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentHeaderItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentItemNode.swift index a325be9ca5..18ce2169a6 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData class BotPaymentItemNode: ASDisplayNode { private let needsBackground: Bool diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentSwitchItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentSwitchItemNode.swift index 2ae25bc698..b5114dc8ce 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentSwitchItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentSwitchItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/BotPaymentTextItemNode.swift b/submodules/TelegramUI/TelegramUI/BotPaymentTextItemNode.swift index c0d497a7d2..e638be0912 100644 --- a/submodules/TelegramUI/TelegramUI/BotPaymentTextItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotPaymentTextItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let textFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/BotReceiptController.swift b/submodules/TelegramUI/TelegramUI/BotReceiptController.swift index bc2263996b..9a68cc3a47 100644 --- a/submodules/TelegramUI/TelegramUI/BotReceiptController.swift +++ b/submodules/TelegramUI/TelegramUI/BotReceiptController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class BotReceiptController: ViewController { private var controllerNode: BotReceiptControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/BotReceiptControllerNode.swift b/submodules/TelegramUI/TelegramUI/BotReceiptControllerNode.swift index 4be231230d..2925e821d3 100644 --- a/submodules/TelegramUI/TelegramUI/BotReceiptControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotReceiptControllerNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class BotReceiptControllerArguments { fileprivate let account: Account diff --git a/submodules/TelegramUI/TelegramUI/LegacyBridgeAudio.swift b/submodules/TelegramUI/TelegramUI/Bridge Audio/LegacyBridgeAudio.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/LegacyBridgeAudio.swift rename to submodules/TelegramUI/TelegramUI/Bridge Audio/LegacyBridgeAudio.swift diff --git a/submodules/TelegramUI/TelegramUI/TGBridgeAudioDecoder.h b/submodules/TelegramUI/TelegramUI/Bridge Audio/TGBridgeAudioDecoder.h similarity index 100% rename from submodules/TelegramUI/TelegramUI/TGBridgeAudioDecoder.h rename to submodules/TelegramUI/TelegramUI/Bridge Audio/TGBridgeAudioDecoder.h diff --git a/submodules/TelegramUI/TelegramUI/TGBridgeAudioDecoder.mm b/submodules/TelegramUI/TelegramUI/Bridge Audio/TGBridgeAudioDecoder.mm similarity index 100% rename from submodules/TelegramUI/TelegramUI/TGBridgeAudioDecoder.mm rename to submodules/TelegramUI/TelegramUI/Bridge Audio/TGBridgeAudioDecoder.mm diff --git a/submodules/TelegramUI/TelegramUI/TGBridgeAudioEncoder.h b/submodules/TelegramUI/TelegramUI/Bridge Audio/TGBridgeAudioEncoder.h similarity index 100% rename from submodules/TelegramUI/TelegramUI/TGBridgeAudioEncoder.h rename to submodules/TelegramUI/TelegramUI/Bridge Audio/TGBridgeAudioEncoder.h diff --git a/submodules/TelegramUI/TelegramUI/TGBridgeAudioEncoder.m b/submodules/TelegramUI/TelegramUI/Bridge Audio/TGBridgeAudioEncoder.m similarity index 100% rename from submodules/TelegramUI/TelegramUI/TGBridgeAudioEncoder.m rename to submodules/TelegramUI/TelegramUI/Bridge Audio/TGBridgeAudioEncoder.m diff --git a/submodules/TelegramUI/TelegramUI/CachedInstantPages.swift b/submodules/TelegramUI/TelegramUI/CachedInstantPages.swift index df3f91608a..a912c88f36 100644 --- a/submodules/TelegramUI/TelegramUI/CachedInstantPages.swift +++ b/submodules/TelegramUI/TelegramUI/CachedInstantPages.swift @@ -3,6 +3,7 @@ import UIKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences final class CachedInstantPage: PostboxCoding { let webPage: TelegramMediaWebpage diff --git a/submodules/TelegramUI/TelegramUI/CalculatingCacheSizeItem.swift b/submodules/TelegramUI/TelegramUI/CalculatingCacheSizeItem.swift index 04810baae9..6b50fcbb79 100644 --- a/submodules/TelegramUI/TelegramUI/CalculatingCacheSizeItem.swift +++ b/submodules/TelegramUI/TelegramUI/CalculatingCacheSizeItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class CalculatingCacheSizeItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/CallController.swift b/submodules/TelegramUI/TelegramUI/CallController.swift index ef46f1c054..d92fa09336 100644 --- a/submodules/TelegramUI/TelegramUI/CallController.swift +++ b/submodules/TelegramUI/TelegramUI/CallController.swift @@ -5,6 +5,11 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences +import TelegramVoip +import TelegramCallsUI +import TelegramAudio public final class CallController: ViewController { private var controllerNode: CallControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/CallControllerButtonsNode.swift b/submodules/TelegramUI/TelegramUI/CallControllerButtonsNode.swift index 91ff50e0c1..41396b3392 100644 --- a/submodules/TelegramUI/TelegramUI/CallControllerButtonsNode.swift +++ b/submodules/TelegramUI/TelegramUI/CallControllerButtonsNode.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import MediaPlayer +import TelegramPresentationData enum CallControllerButtonsSpeakerMode { case none diff --git a/submodules/TelegramUI/TelegramUI/CallControllerNode.swift b/submodules/TelegramUI/TelegramUI/CallControllerNode.swift index 6663580b47..dc23280bb4 100644 --- a/submodules/TelegramUI/TelegramUI/CallControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/CallControllerNode.swift @@ -5,8 +5,11 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit - +import TelegramCallsUI import TelegramUIPrivateModule +import TelegramPresentationData +import TelegramUIPreferences +import TelegramAudio final class CallControllerNode: ASDisplayNode { private let sharedContext: SharedAccountContext diff --git a/submodules/TelegramUI/TelegramUI/CallFeedbackController.swift b/submodules/TelegramUI/TelegramUI/CallFeedbackController.swift index bb48b27eb6..9d0156a765 100644 --- a/submodules/TelegramUI/TelegramUI/CallFeedbackController.swift +++ b/submodules/TelegramUI/TelegramUI/CallFeedbackController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private enum CallFeedbackReason: Int32, CaseIterable { case echo diff --git a/submodules/TelegramUI/TelegramUI/CallListCallItem.swift b/submodules/TelegramUI/TelegramUI/CallListCallItem.swift index f090c2ab35..d6a7e1836f 100644 --- a/submodules/TelegramUI/TelegramUI/CallListCallItem.swift +++ b/submodules/TelegramUI/TelegramUI/CallListCallItem.swift @@ -5,6 +5,7 @@ import Postbox import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData private let titleFont = Font.regular(17.0) private let statusFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/CallListController.swift b/submodules/TelegramUI/TelegramUI/CallListController.swift index 94aec150cd..ecc59c8f6a 100644 --- a/submodules/TelegramUI/TelegramUI/CallListController.swift +++ b/submodules/TelegramUI/TelegramUI/CallListController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData public enum CallListControllerMode { case tab diff --git a/submodules/TelegramUI/TelegramUI/CallListControllerNode.swift b/submodules/TelegramUI/TelegramUI/CallListControllerNode.swift index 214992c1f2..b0a3722adc 100644 --- a/submodules/TelegramUI/TelegramUI/CallListControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/CallListControllerNode.swift @@ -5,6 +5,8 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences private struct CallListNodeListViewTransition { let callListView: CallListNodeView diff --git a/submodules/TelegramUI/TelegramUI/CallListNodeEntries.swift b/submodules/TelegramUI/TelegramUI/CallListNodeEntries.swift index ea1d0b4405..d76f3147a9 100644 --- a/submodules/TelegramUI/TelegramUI/CallListNodeEntries.swift +++ b/submodules/TelegramUI/TelegramUI/CallListNodeEntries.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Postbox import TelegramCore +import TelegramPresentationData enum CallListNodeEntryId: Hashable { case setting(Int32) diff --git a/submodules/TelegramUI/TelegramUI/CallRatingController.swift b/submodules/TelegramUI/TelegramUI/CallRatingController.swift index ed6310a125..19404151b7 100644 --- a/submodules/TelegramUI/TelegramUI/CallRatingController.swift +++ b/submodules/TelegramUI/TelegramUI/CallRatingController.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData +import TelegramVoip private final class CallRatingAlertContentNode: AlertContentNode { private let strings: PresentationStrings diff --git a/submodules/TelegramUI/TelegramUI/CallSuggestTabController.swift b/submodules/TelegramUI/TelegramUI/CallSuggestTabController.swift index 800bdb7c30..0c55d41b08 100644 --- a/submodules/TelegramUI/TelegramUI/CallSuggestTabController.swift +++ b/submodules/TelegramUI/TelegramUI/CallSuggestTabController.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private func generateIconImage(theme: AlertControllerTheme) -> UIImage? { return UIImage(bundleImageName: "Call List/AlertIcon") diff --git a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberCodeController.swift b/submodules/TelegramUI/TelegramUI/ChangePhoneNumberCodeController.swift index ea49b7fb85..439926dff0 100644 --- a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberCodeController.swift +++ b/submodules/TelegramUI/TelegramUI/ChangePhoneNumberCodeController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class ChangePhoneNumberCodeControllerArguments { let updateEntryText: (String) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberController.swift b/submodules/TelegramUI/TelegramUI/ChangePhoneNumberController.swift index c7ba9d64d6..9cdc2af30b 100644 --- a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberController.swift +++ b/submodules/TelegramUI/TelegramUI/ChangePhoneNumberController.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class ChangePhoneNumberController: ViewController { private var controllerNode: ChangePhoneNumberControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChangePhoneNumberControllerNode.swift index 18729fe0cd..3ecfbcdf5e 100644 --- a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChangePhoneNumberControllerNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import TelegramCore import CoreTelephony +import TelegramPresentationData private func generateCountryButtonBackground(color: UIColor, strokeColor: UIColor) -> UIImage? { return generateImage(CGSize(width: 45.0, height: 44.0 + 6.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberIntroController.swift b/submodules/TelegramUI/TelegramUI/ChangePhoneNumberIntroController.swift index 1dbe42e8a0..0a208d0ff5 100644 --- a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberIntroController.swift +++ b/submodules/TelegramUI/TelegramUI/ChangePhoneNumberIntroController.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import TelegramCore +import TelegramPresentationData private final class ChangePhoneNumberIntroControllerNode: ASDisplayNode { var presentationData: PresentationData diff --git a/submodules/TelegramUI/TelegramUI/ChannelAdminController.swift b/submodules/TelegramUI/TelegramUI/ChannelAdminController.swift index 4b3d7b78ce..202247befc 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelAdminController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelAdminController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class ChannelAdminControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChannelAdminsController.swift b/submodules/TelegramUI/TelegramUI/ChannelAdminsController.swift index ccc3c04a8c..a390a9776c 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelAdminsController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelAdminsController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ChannelAdminsControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChannelBannedMemberController.swift b/submodules/TelegramUI/TelegramUI/ChannelBannedMemberController.swift index e35dd3bf03..d400c5b000 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelBannedMemberController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelBannedMemberController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class ChannelBannedMemberControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChannelBlacklistController.swift b/submodules/TelegramUI/TelegramUI/ChannelBlacklistController.swift index dbcbcecea7..eb835efcdf 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelBlacklistController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelBlacklistController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ChannelBlacklistControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupActionSheetItem.swift b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupActionSheetItem.swift index 03c9b0174a..3c56493f56 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupActionSheetItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupActionSheetItem.swift @@ -5,6 +5,7 @@ import UIKit import Display import Postbox import TelegramCore +import TelegramPresentationData final class ChannelDiscussionGroupActionSheetItem: ActionSheetItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSearchContainerNode.swift b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSearchContainerNode.swift index d9ead339d2..afa447837f 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSearchContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSearchContainerNode.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private enum ChannelDiscussionGroupSearchContent: Equatable { case peer(Peer) diff --git a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupController.swift b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupController.swift index c9a2b6660a..7d20843c1c 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ChannelDiscussionGroupSetupControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupHeaderItem.swift b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupHeaderItem.swift index ccbe5558ee..b41f4825d7 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupHeaderItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupHeaderItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class ChannelDiscussionGroupSetupHeaderItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupSearchItem.swift b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupSearchItem.swift index f8908e2045..83079ee56b 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupSearchItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupSearchItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class ChannelDiscussionGroupSetupSearchItem: ItemListControllerSearch { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift b/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift index d0391657fc..1a5a85d5dd 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import Postbox import TelegramCore import LegacyComponents +import TelegramPresentationData private final class ChannelInfoControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChannelMembersController.swift b/submodules/TelegramUI/TelegramUI/ChannelMembersController.swift index 58e5cf66fa..51e4729cf4 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelMembersController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelMembersController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ChannelMembersControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChannelMembersSearchContainerNode.swift b/submodules/TelegramUI/TelegramUI/ChannelMembersSearchContainerNode.swift index 4969e75b3f..a473fc05d3 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelMembersSearchContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelMembersSearchContainerNode.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences enum ChannelMembersSearchMode { case searchMembers diff --git a/submodules/TelegramUI/TelegramUI/ChannelMembersSearchController.swift b/submodules/TelegramUI/TelegramUI/ChannelMembersSearchController.swift index bd7f8bcee4..be563e351f 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelMembersSearchController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelMembersSearchController.swift @@ -4,6 +4,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData enum ChannelMembersSearchControllerMode { case promote diff --git a/submodules/TelegramUI/TelegramUI/ChannelMembersSearchControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChannelMembersSearchControllerNode.swift index e1ef1204f2..78858a6262 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelMembersSearchControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelMembersSearchControllerNode.swift @@ -5,6 +5,8 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences private final class ChannelMembersSearchInteraction { let openPeer: (Peer, RenderedChannelParticipant?) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChannelOwnershipTransferController.swift b/submodules/TelegramUI/TelegramUI/ChannelOwnershipTransferController.swift index 67b6522f79..a84896f498 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelOwnershipTransferController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelOwnershipTransferController.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class ChannelOwnershipTransferPasswordFieldNode: ASDisplayNode, UITextFieldDelegate { private var theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ChannelPermissionsController.swift b/submodules/TelegramUI/TelegramUI/ChannelPermissionsController.swift index 8a13ece357..47582a5102 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelPermissionsController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelPermissionsController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ChannelPermissionsControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChannelStatsController.swift b/submodules/TelegramUI/TelegramUI/ChannelStatsController.swift index 0ad6b1ac2f..4d1663f1ce 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelStatsController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelStatsController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class ChannelStatsController: ViewController { private var controllerNode: ChannelStatsControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/ChannelStatsControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChannelStatsControllerNode.swift index 1a5075bbd9..947a6f280f 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelStatsControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelStatsControllerNode.swift @@ -6,6 +6,7 @@ import WebKit import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData final class ChannelStatsControllerNode: ViewControllerTracingNode, WKNavigationDelegate { private var webView: WKWebView? diff --git a/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift b/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift index 6d63a414b9..b85c9fd5c9 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ChannelVisibilityControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChatAnimationGalleryItem.swift b/submodules/TelegramUI/TelegramUI/ChatAnimationGalleryItem.swift index 1d5c9d9e85..ca0adedbec 100644 --- a/submodules/TelegramUI/TelegramUI/ChatAnimationGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatAnimationGalleryItem.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import Postbox import TelegramCore import Lottie +import TelegramPresentationData class ChatAnimationGalleryItem: GalleryItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChatBotStartInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatBotStartInputPanelNode.swift index c920f7bf1a..450c47aebe 100644 --- a/submodules/TelegramUI/TelegramUI/ChatBotStartInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatBotStartInputPanelNode.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData final class ChatBotStartInputPanelNode: ChatInputPanelNode { private let button: HighlightableButtonNode diff --git a/submodules/TelegramUI/TelegramUI/ChatBubbleInstantVideoDecoration.swift b/submodules/TelegramUI/TelegramUI/ChatBubbleInstantVideoDecoration.swift index 9e9da03b0d..d2820b6046 100644 --- a/submodules/TelegramUI/TelegramUI/ChatBubbleInstantVideoDecoration.swift +++ b/submodules/TelegramUI/TelegramUI/ChatBubbleInstantVideoDecoration.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit +import UniversalMediaPlayer final class ChatBubbleInstantVideoDecoration: UniversalVideoDecoration { let backgroundNode: ASDisplayNode? diff --git a/submodules/TelegramUI/TelegramUI/ChatBubbleVideoDecoration.swift b/submodules/TelegramUI/TelegramUI/ChatBubbleVideoDecoration.swift index d15f303b0f..165328cedb 100644 --- a/submodules/TelegramUI/TelegramUI/ChatBubbleVideoDecoration.swift +++ b/submodules/TelegramUI/TelegramUI/ChatBubbleVideoDecoration.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit +import UniversalMediaPlayer final class ChatBubbleVideoDecoration: UniversalVideoDecoration { private let nativeSize: CGSize diff --git a/submodules/TelegramUI/TelegramUI/ChatButtonKeyboardInputNode.swift b/submodules/TelegramUI/TelegramUI/ChatButtonKeyboardInputNode.swift index 793fdd7752..cff70ae640 100644 --- a/submodules/TelegramUI/TelegramUI/ChatButtonKeyboardInputNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatButtonKeyboardInputNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private final class ChatButtonKeyboardInputButtonNode: ASButtonNode { var button: ReplyMarkupButton? diff --git a/submodules/TelegramUI/TelegramUI/ChatChannelSubscriberInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatChannelSubscriberInputPanelNode.swift index 2f20e7ea07..08a6abbe9c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatChannelSubscriberInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatChannelSubscriberInputPanelNode.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData private enum SubscriberAction { case join diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index 8dbec28fa6..12c81d24c1 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -9,6 +9,9 @@ import SafariServices import MobileCoreServices import Intents import LegacyComponents +import TelegramPresentationData +import TelegramUIPreferences +import DeviceAccess public enum ChatControllerPeekActions { case standard @@ -2855,7 +2858,7 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, } }) } - DeviceAccess.authorizeAccess(to: .microphone(isVideo ? .video : .audio), context: strongSelf.context, presentationData: strongSelf.presentationData, present: { c, a in + DeviceAccess.authorizeAccess(to: .microphone(isVideo ? .video : .audio), presentationData: strongSelf.presentationData, present: { c, a in self?.present(c, in: .window(.root), with: a) }, openSettings: { self?.context.sharedContext.applicationBindings.openSettings() @@ -2864,7 +2867,7 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, return } if isVideo { - DeviceAccess.authorizeAccess(to: .camera, context: strongSelf.context, presentationData: strongSelf.presentationData, present: { c, a in + DeviceAccess.authorizeAccess(to: .camera, presentationData: strongSelf.presentationData, present: { c, a in self?.present(c, in: .window(.root), with: a) }, openSettings: { self?.context.sharedContext.applicationBindings.openSettings() @@ -6800,7 +6803,7 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, guard case let .peer(peerId) = self.chatLocation, peerId.namespace == Namespaces.Peer.CloudUser else { return } - if #available(iOSApplicationExtension 10.0, *) { + if #available(iOSApplicationExtension 10.0, iOS 10.0, *) { let _ = (self.context.account.postbox.loadedPeerWithId(peerId) |> deliverOnMainQueue).start(next: { peer in if let peer = peer as? TelegramUser { diff --git a/submodules/TelegramUI/TelegramUI/ChatControllerBackgroundNode.swift b/submodules/TelegramUI/TelegramUI/ChatControllerBackgroundNode.swift index 2ab85d748e..54bae0a63f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatControllerBackgroundNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatControllerBackgroundNode.swift @@ -71,7 +71,6 @@ final class ChatBackgroundNode: ASDisplayNode { } private var backgroundImageForWallpaper: (TelegramWallpaper, Bool, UIImage)? -private var serviceBackgroundColorForWallpaper: (TelegramWallpaper, UIColor)? func chatControllerBackgroundImage(wallpaper: TelegramWallpaper, mediaBox: MediaBox, composed: Bool = true) -> UIImage? { var backgroundImage: UIImage? @@ -133,103 +132,3 @@ func chatControllerBackgroundImage(wallpaper: TelegramWallpaper, mediaBox: Media } return backgroundImage } - -private func serviceColor(for data: Signal) -> Signal { - return data - |> mapToSignal { data -> Signal in - if data.complete, let image = UIImage(contentsOfFile: data.path) { - return serviceColor(from: .single(image)) - } - return .complete() - } -} - -func serviceColor(from image: Signal) -> Signal { - return image - |> mapToSignal { image -> Signal in - if let image = image { - let context = DrawingContext(size: CGSize(width: 1.0, height: 1.0), scale: 1.0, clear: false) - context.withFlippedContext({ context in - if let cgImage = image.cgImage { - context.draw(cgImage, in: CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)) - } - }) - return .single(serviceColor(with: context.colorAt(CGPoint()))) - } - return .complete() - } -} - -func serviceColor(with color: UIColor) -> UIColor { - var hue: CGFloat = 0.0 - var saturation: CGFloat = 0.0 - var brightness: CGFloat = 0.0 - var alpha: CGFloat = 0.0 - if color.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha) { - if saturation > 0.0 { - saturation = min(1.0, saturation + 0.05 + 0.1 * (1.0 - saturation)) - } - brightness = max(0.0, brightness * 0.65) - alpha = 0.4 - return UIColor(hue: hue, saturation: saturation, brightness: brightness, alpha: alpha) - } - return color -} - -func chatServiceBackgroundColor(wallpaper: TelegramWallpaper, mediaBox: MediaBox) -> Signal { - if wallpaper == serviceBackgroundColorForWallpaper?.0, let color = serviceBackgroundColorForWallpaper?.1 { - return .single(color) - } else { - switch wallpaper { - case .builtin: - return .single(UIColor(rgb: 0x748391, alpha: 0.45)) - case let .color(color): - return .single(serviceColor(with: UIColor(rgb: UInt32(bitPattern: color)))) - case let .image(representations, _): - if let largest = largestImageRepresentation(representations) { - return Signal { subscriber in - let fetch = mediaBox.fetchedResource(largest.resource, parameters: nil).start() - let data = serviceColor(for: mediaBox.resourceData(largest.resource)).start(next: { next in - subscriber.putNext(next) - }, completed: { - subscriber.putCompletion() - }) - return ActionDisposable { - fetch.dispose() - data.dispose() - } - } - |> afterNext { color in - serviceBackgroundColorForWallpaper = (wallpaper, color) - } - } else { - return .single(UIColor(rgb: 0x000000, alpha: 0.3)) - } - case let .file(file): - if file.isPattern { - if let color = file.settings.color { - return .single(serviceColor(with: UIColor(rgb: UInt32(bitPattern: color)))) - } else { - return .single(UIColor(rgb: 0x000000, alpha: 0.3)) - } - } else { - return Signal { subscriber in - let fetch = mediaBox.fetchedResource(file.file.resource, parameters: nil).start() - let data = serviceColor(for: mediaBox.resourceData(file.file.resource)).start(next: { next in - subscriber.putNext(next) - }, completed: { - subscriber.putCompletion() - }) - return ActionDisposable { - fetch.dispose() - data.dispose() - } - } - |> afterNext { color in - serviceBackgroundColorForWallpaper = (wallpaper, color) - } - } - } - } -} - diff --git a/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift b/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift index bfbd9af23d..8c522afb15 100644 --- a/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift +++ b/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift @@ -4,6 +4,7 @@ import Postbox import AsyncDisplayKit import TelegramCore import Display +import TelegramUIPreferences public enum ChatControllerInitialBotStartBehavior { case interactive diff --git a/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift index f9fd8af55f..e5aed30622 100644 --- a/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift @@ -5,6 +5,8 @@ import Postbox import SwiftSignalKit import Display import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ChatControllerNodeView: UITracingLayerView, WindowInputAccessoryHeightProvider, PreviewingHostView { var inputAccessoryHeight: (() -> CGFloat)? diff --git a/submodules/TelegramUI/TelegramUI/ChatDateSelectionSheet.swift b/submodules/TelegramUI/TelegramUI/ChatDateSelectionSheet.swift index 92f32a89c3..46272dc641 100644 --- a/submodules/TelegramUI/TelegramUI/ChatDateSelectionSheet.swift +++ b/submodules/TelegramUI/TelegramUI/ChatDateSelectionSheet.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import UIKit import SwiftSignalKit import Photos +import TelegramPresentationData final class ChatDateSelectionSheet: ActionSheetController { private let strings: PresentationStrings diff --git a/submodules/TelegramUI/TelegramUI/ChatDocumentGalleryItem.swift b/submodules/TelegramUI/TelegramUI/ChatDocumentGalleryItem.swift index 6f857b854b..6349287120 100644 --- a/submodules/TelegramUI/TelegramUI/ChatDocumentGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatDocumentGalleryItem.swift @@ -6,6 +6,7 @@ import Display import SwiftSignalKit import WebKit import TelegramCore +import TelegramPresentationData class ChatDocumentGalleryItem: GalleryItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChatEmptyNode.swift b/submodules/TelegramUI/TelegramUI/ChatEmptyNode.swift index 84420c8faa..cab99a016b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatEmptyNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatEmptyNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private protocol ChatEmptyNodeContent { func updateLayout(interfaceState: ChatPresentationInterfaceState, size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize diff --git a/submodules/TelegramUI/TelegramUI/ChatExternalFileGalleryItem.swift b/submodules/TelegramUI/TelegramUI/ChatExternalFileGalleryItem.swift index e5a70f8f95..31087e25ba 100644 --- a/submodules/TelegramUI/TelegramUI/ChatExternalFileGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatExternalFileGalleryItem.swift @@ -6,6 +6,7 @@ import Display import SwiftSignalKit import WebKit import TelegramCore +import TelegramPresentationData class ChatExternalFileGalleryItem: GalleryItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChatFeedNavigationInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatFeedNavigationInputPanelNode.swift index 5d5c9eb12f..2002703f21 100644 --- a/submodules/TelegramUI/TelegramUI/ChatFeedNavigationInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatFeedNavigationInputPanelNode.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData final class ChatFeedNavigationInputPanelNode: ChatInputPanelNode { private let button: HighlightableButtonNode diff --git a/submodules/TelegramUI/TelegramUI/ChatHistoryEntry.swift b/submodules/TelegramUI/TelegramUI/ChatHistoryEntry.swift index 849691ae05..5056b39203 100644 --- a/submodules/TelegramUI/TelegramUI/ChatHistoryEntry.swift +++ b/submodules/TelegramUI/TelegramUI/ChatHistoryEntry.swift @@ -1,5 +1,6 @@ import Postbox import TelegramCore +import TelegramPresentationData public enum ChatHistoryMessageSelection: Equatable { case none diff --git a/submodules/TelegramUI/TelegramUI/ChatHistoryGridNode.swift b/submodules/TelegramUI/TelegramUI/ChatHistoryGridNode.swift index e0cf43bab8..72561af297 100644 --- a/submodules/TelegramUI/TelegramUI/ChatHistoryGridNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatHistoryGridNode.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Display import AsyncDisplayKit import TelegramCore +import TelegramPresentationData private class ChatGridLiveSelectorRecognizer: UIPanGestureRecognizer { private let selectionGestureActivationThreshold: CGFloat = 2.0 diff --git a/submodules/TelegramUI/TelegramUI/ChatHistoryListNode.swift b/submodules/TelegramUI/TelegramUI/ChatHistoryListNode.swift index df0b21f838..f27f569f17 100644 --- a/submodules/TelegramUI/TelegramUI/ChatHistoryListNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatHistoryListNode.swift @@ -5,6 +5,8 @@ import SwiftSignalKit import Display import AsyncDisplayKit import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private let historyMessageCount: Int = 100 diff --git a/submodules/TelegramUI/TelegramUI/ChatHistoryNavigationButtonNode.swift b/submodules/TelegramUI/TelegramUI/ChatHistoryNavigationButtonNode.swift index bbdafa46ca..bfd2ef8051 100644 --- a/submodules/TelegramUI/TelegramUI/ChatHistoryNavigationButtonNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatHistoryNavigationButtonNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let badgeFont = Font.regular(13.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatHistoryNavigationButtons.swift b/submodules/TelegramUI/TelegramUI/ChatHistoryNavigationButtons.swift index 0da74b8546..90103f08e3 100644 --- a/submodules/TelegramUI/TelegramUI/ChatHistoryNavigationButtons.swift +++ b/submodules/TelegramUI/TelegramUI/ChatHistoryNavigationButtons.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData final class ChatHistoryNavigationButtons: ASDisplayNode { private var theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ChatHistorySearchContainerNode.swift b/submodules/TelegramUI/TelegramUI/ChatHistorySearchContainerNode.swift index 0e40ea6737..12f094df35 100644 --- a/submodules/TelegramUI/TelegramUI/ChatHistorySearchContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatHistorySearchContainerNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private enum ChatHistorySearchEntryStableId: Hashable { case messageId(MessageId) diff --git a/submodules/TelegramUI/TelegramUI/ChatHoleItem.swift b/submodules/TelegramUI/TelegramUI/ChatHoleItem.swift index 5cc04def5b..92d6cf60cb 100644 --- a/submodules/TelegramUI/TelegramUI/ChatHoleItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatHoleItem.swift @@ -4,6 +4,7 @@ import Postbox import AsyncDisplayKit import Display import SwiftSignalKit +import TelegramPresentationData private let titleFont = UIFont.systemFont(ofSize: 13.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift b/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift index 4728533d5b..49e12bb097 100644 --- a/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData enum ChatMediaGalleryThumbnail: Equatable { case image(ImageMediaReference) diff --git a/submodules/TelegramUI/TelegramUI/ChatInfoTitlePanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatInfoTitlePanelNode.swift index b3d00b72c5..047c31cfd3 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInfoTitlePanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInfoTitlePanelNode.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import Postbox import TelegramCore +import TelegramPresentationData private enum ChatInfoTitleButton { case search diff --git a/submodules/TelegramUI/TelegramUI/ChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatInputContextPanelNode.swift index 38bbb27dd4..6495540c26 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInputContextPanelNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData enum ChatInputContextPanelPlacement { case overPanels diff --git a/submodules/TelegramUI/TelegramUI/ChatInstantVideoMessageDurationNode.swift b/submodules/TelegramUI/TelegramUI/ChatInstantVideoMessageDurationNode.swift index e3793d239e..49b16264d4 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInstantVideoMessageDurationNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInstantVideoMessageDurationNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import SwiftSignalKit import Display +import UniversalMediaPlayer private let textFont = Font.regular(11.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextMenus.swift b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextMenus.swift index 80a05d36d7..cf47675dfb 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextMenus.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextMenus.swift @@ -6,6 +6,7 @@ import Display import UIKit import SwiftSignalKit import MobileCoreServices +import TelegramVoip private struct MessageContextMenuData { let starStatus: Bool? diff --git a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift index 770cd5150d..1301f77187 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift @@ -3,7 +3,7 @@ import UIKit import SwiftSignalKit import TelegramCore import Postbox - +import TelegramUIPreferences import TelegramUIPrivateModule import LegacyComponents diff --git a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateNavigationButtons.swift b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateNavigationButtons.swift index fb7da36e23..934e83739f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateNavigationButtons.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateNavigationButtons.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Postbox import TelegramCore +import TelegramPresentationData enum ChatNavigationButtonAction { case openChatInfo diff --git a/submodules/TelegramUI/TelegramUI/ChatItemGalleryFooterContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatItemGalleryFooterContentNode.swift index 4c581c0b4c..7629d635e4 100644 --- a/submodules/TelegramUI/TelegramUI/ChatItemGalleryFooterContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatItemGalleryFooterContentNode.swift @@ -6,6 +6,7 @@ import Postbox import TelegramCore import SwiftSignalKit import Photos +import TelegramPresentationData private let deleteImage = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionThrash"), color: .white) private let actionImage = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionAction"), color: .white) diff --git a/submodules/TelegramUI/TelegramUI/ChatListArchiveInfoItem.swift b/submodules/TelegramUI/TelegramUI/ChatListArchiveInfoItem.swift index 9a5a963b35..69508d3d36 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListArchiveInfoItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListArchiveInfoItem.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import Display import SwiftSignalKit +import TelegramPresentationData class ChatListArchiveInfoItem: ListViewItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ChatListController.swift b/submodules/TelegramUI/TelegramUI/ChatListController.swift index e9789beb0d..dccec61ac8 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListController.swift @@ -4,6 +4,8 @@ import Postbox import SwiftSignalKit import Display import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences public func useSpecialTabBarIcons() -> Bool { return (Date(timeIntervalSince1970: 1545642000)...Date(timeIntervalSince1970: 1546387200)).contains(Date()) diff --git a/submodules/TelegramUI/TelegramUI/ChatListControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatListControllerNode.swift index 526d7cf5df..cabf08c318 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListControllerNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private final class ChatListControllerNodeView: UITracingLayerView, PreviewingHostView { var previewingDelegate: PreviewingHostViewDelegate? { diff --git a/submodules/TelegramUI/TelegramUI/ChatListEmptyNode.swift b/submodules/TelegramUI/TelegramUI/ChatListEmptyNode.swift index 1aa64af567..0bd08d0034 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListEmptyNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListEmptyNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class ChatListEmptyNode: ASDisplayNode { private let textNode: ImmediateTextNode diff --git a/submodules/TelegramUI/TelegramUI/ChatListHoleItem.swift b/submodules/TelegramUI/TelegramUI/ChatListHoleItem.swift index ba8de93444..ccce665a4c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListHoleItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListHoleItem.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import Display import SwiftSignalKit +import TelegramPresentationData private let titleFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatListItem.swift b/submodules/TelegramUI/TelegramUI/ChatListItem.swift index c7a13c8892..a0f83c3494 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListItem.swift @@ -5,6 +5,7 @@ import Postbox import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData enum ChatListItemContent { case peer(message: Message?, peer: RenderedPeer, combinedReadState: CombinedPeerReadState?, notificationSettings: PeerNotificationSettings?, presence: PeerPresence?, summaryInfo: ChatListMessageTagSummaryInfo, embeddedState: PeerChatListEmbeddedInterfaceState?, inputActivities: [(Peer, PeerInputActivity)]?, isAd: Bool, ignoreUnreadBadge: Bool) diff --git a/submodules/TelegramUI/TelegramUI/ChatListItemStrings.swift b/submodules/TelegramUI/TelegramUI/ChatListItemStrings.swift index 74faa5927f..736515be09 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListItemStrings.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListItemStrings.swift @@ -1,6 +1,8 @@ import Foundation import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences public func chatListItemStrings(strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, message: Message?, chatPeer: RenderedPeer, accountPeerId: PeerId, enableMediaEmoji: Bool = true) -> (peer: Peer?, hideAuthor: Bool, messageText: String) { let peer: Peer? diff --git a/submodules/TelegramUI/TelegramUI/ChatListNode.swift b/submodules/TelegramUI/TelegramUI/ChatListNode.swift index 73ab4e1451..f5cd776c5b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListNode.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import SwiftSignalKit import TelegramCore import Postbox +import TelegramPresentationData +import TelegramUIPreferences public struct ChatListNodePeersFilter: OptionSet { public var rawValue: Int32 diff --git a/submodules/TelegramUI/TelegramUI/ChatListNodeEntries.swift b/submodules/TelegramUI/TelegramUI/ChatListNodeEntries.swift index 4f8b0c9a7f..d206a38633 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListNodeEntries.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListNodeEntries.swift @@ -1,6 +1,7 @@ import Foundation import Postbox import TelegramCore +import TelegramPresentationData enum ChatListNodeEntryId: Hashable { case Hole(Int64) diff --git a/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift b/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift index fa9653ffa7..b333bc0027 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift @@ -1,5 +1,7 @@ import Foundation import UIKit +import TelegramPresentationData +import TelegramUIPreferences final class ChatListPresentationData { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ChatListRecentPeersListItem.swift b/submodules/TelegramUI/TelegramUI/ChatListRecentPeersListItem.swift index d8b3c22422..ab54168d86 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListRecentPeersListItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListRecentPeersListItem.swift @@ -5,6 +5,7 @@ import Postbox import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData class ChatListRecentPeersListItem: ListViewItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift b/submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift index 19edb42b95..d6025c0ef5 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private enum ChatListRecentEntryStableId: Hashable { case topPeers diff --git a/submodules/TelegramUI/TelegramUI/ChatListSearchItem.swift b/submodules/TelegramUI/TelegramUI/ChatListSearchItem.swift index 64e2988b41..22472c0124 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListSearchItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListSearchItem.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import Display import SwiftSignalKit +import TelegramPresentationData private let searchBarFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatListSearchItemHeader.swift b/submodules/TelegramUI/TelegramUI/ChatListSearchItemHeader.swift index 986d8157fa..a581b2a08f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListSearchItemHeader.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListSearchItemHeader.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import Display +import TelegramPresentationData enum ChatListSearchItemHeaderType: Int32 { case localPeers diff --git a/submodules/TelegramUI/TelegramUI/ChatListSearchRecentPeersNode.swift b/submodules/TelegramUI/TelegramUI/ChatListSearchRecentPeersNode.swift index 06017cc8ee..ef5079393a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListSearchRecentPeersNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListSearchRecentPeersNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private func calculateItemCustomWidth(width: CGFloat) -> CGFloat { let itemInsets = UIEdgeInsets(top: 0.0, left: 6.0, bottom: 0.0, right: 6.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleLockView.swift b/submodules/TelegramUI/TelegramUI/ChatListTitleLockView.swift index 1461607822..36a7ca93a3 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListTitleLockView.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListTitleLockView.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import Display +import TelegramPresentationData final class ChatListTitleLockView: UIView { private let topView: UIImageView diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleProxyNode.swift b/submodules/TelegramUI/TelegramUI/ChatListTitleProxyNode.swift index fe4efba840..453685717c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListTitleProxyNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListTitleProxyNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData enum ChatTitleProxyStatus { case connecting diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleView.swift b/submodules/TelegramUI/TelegramUI/ChatListTitleView.swift index c8a134eb57..534fa5a7d2 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListTitleView.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListTitleView.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData struct NetworkStatusTitle: Equatable { let text: String diff --git a/submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift b/submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift index 426bd8a3f6..0b1603b462 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import Display import SwiftSignalKit +import TelegramPresentationData private let textFont = Font.regular(15.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatLoadingNode.swift b/submodules/TelegramUI/TelegramUI/ChatLoadingNode.swift index 1958625f56..4b7dd4fc48 100644 --- a/submodules/TelegramUI/TelegramUI/ChatLoadingNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatLoadingNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData final class ChatLoadingNode: ASDisplayNode { private let backgroundNode: ASImageNode diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputGifPane.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputGifPane.swift index 21ac941720..8602335d3e 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputGifPane.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputGifPane.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private func fixListScrolling(_ multiplexedNode: MultiplexedVideoNode) { let searchBarHeight: CGFloat = 56.0 diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputGridEntries.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputGridEntries.swift index c29c4e3e15..cf2927978b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputGridEntries.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputGridEntries.swift @@ -3,6 +3,7 @@ import UIKit import TelegramCore import SwiftSignalKit import Display +import TelegramPresentationData enum ChatMediaInputGridEntryStableId: Equatable, Hashable { case search diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputMetaSectionItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputMetaSectionItemNode.swift index 7c74bd15ab..01c1f9b9ae 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputMetaSectionItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputMetaSectionItemNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData enum ChatMediaInputMetaSectionItemType { case savedStickers diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputNode.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputNode.swift index cd8c645e9e..d5958bb212 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private struct PeerSpecificPackData { let peer: Peer diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputPane.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputPane.swift index 57eb66b5cc..f1c8647566 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputPane.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputPane.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData struct ChatMediaInputPaneScrollState { let absoluteOffset: CGFloat? diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputPanelEntries.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputPanelEntries.swift index eda73f0f4a..c2bd951dad 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputPanelEntries.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputPanelEntries.swift @@ -3,6 +3,7 @@ import UIKit import TelegramCore import SwiftSignalKit import Display +import TelegramPresentationData enum ChatMediaInputPanelAuxiliaryNamespace: Int32 { case savedStickers = 2 diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputPeerSpecificItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputPeerSpecificItem.swift index b70bb349df..d4c0d125d5 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputPeerSpecificItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputPeerSpecificItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class ChatMediaInputPeerSpecificItem: ListViewItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputRecentGifsItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputRecentGifsItem.swift index 66dd365941..2b2910cbde 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputRecentGifsItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputRecentGifsItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class ChatMediaInputRecentGifsItem: ListViewItem { let inputNodeInteraction: ChatMediaInputNodeInteraction diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputSettingsItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputSettingsItem.swift index 295252ccc2..c2ba57037b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputSettingsItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputSettingsItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class ChatMediaInputSettingsItem: ListViewItem { let inputNodeInteraction: ChatMediaInputNodeInteraction diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerGridItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerGridItem.swift index b9520236ac..b20e3336ca 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerGridItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerGridItem.swift @@ -5,6 +5,7 @@ import TelegramCore import SwiftSignalKit import AsyncDisplayKit import Postbox +import TelegramPresentationData enum ChatMediaInputStickerGridSectionAccessory { case none diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift index 5afa8f16a6..f99086b19a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class ChatMediaInputStickerPackItem: ListViewItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPane.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPane.swift index 8f61c12618..6da49891d7 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPane.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPane.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private func fixGridScrolling(_ gridNode: GridNode) { var searchItemNode: GridItemNode? diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift index a226c295e9..21cca6add2 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class ChatMediaInputTrendingItem: ListViewItem { let inputNodeInteraction: ChatMediaInputNodeInteraction diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingPane.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingPane.swift index f11737cbca..9d7ea3e369 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingPane.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingPane.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class TrendingPaneInteraction { let installPack: (ItemCollectionInfo) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageActionButtonsNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageActionButtonsNode.swift index 7339ca65bf..edd3233fb2 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageActionButtonsNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageActionButtonsNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import TelegramCore import Postbox import Display +import TelegramPresentationData private let titleFont = Font.medium(16.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift index dbba3bafcb..22006d08e7 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private let titleFont = Font.regular(13.0) private let titleBoldFont = Font.bold(13.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageActionSheetController.swift b/submodules/TelegramUI/TelegramUI/ChatMessageActionSheetController.swift index eb45b523ed..17cc678bfe 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageActionSheetController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageActionSheetController.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData final class ChatMessageActionSheetController: ViewController { var controllerNode: ChatMessageActionSheetControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageActionSheetControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageActionSheetControllerNode.swift index 0f7ae57b75..7fdb64af4e 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageActionSheetControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageActionSheetControllerNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData private let shadowInset: CGFloat = 8.0 diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageActionUrlAuthController.swift b/submodules/TelegramUI/TelegramUI/ChatMessageActionUrlAuthController.swift index 62ec5c593f..bd0be2c6d5 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageActionUrlAuthController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageActionUrlAuthController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let textFont = Font.regular(13.0) private let boldTextFont = Font.semibold(13.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift index c13da67e2a..0b0f7ee72d 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift @@ -7,6 +7,7 @@ import Postbox import TelegramCore import AVFoundation import CoreImage +import TelegramPresentationData private class AlphaFrameFilter: CIFilter { static var kernel: CIColorKernel? = { diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift index d19ffbabc3..27969f1d9b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift @@ -6,6 +6,8 @@ import AsyncDisplayKit import SwiftSignalKit import TelegramCore import Postbox +import TelegramPresentationData +import TelegramUIPreferences private let titleFont: UIFont = Font.semibold(15.0) private let textFont: UIFont = Font.regular(15.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageAvatarAccessoryItem.swift b/submodules/TelegramUI/TelegramUI/ChatMessageAvatarAccessoryItem.swift index 6c121eeca2..9aaed1628c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageAvatarAccessoryItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageAvatarAccessoryItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import Display import TelegramCore +import TelegramPresentationData private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 16.0)! diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentCalclulateImageCorners.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentCalclulateImageCorners.swift index 728a7da104..f3c7671062 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentCalclulateImageCorners.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentCalclulateImageCorners.swift @@ -1,5 +1,6 @@ import Foundation import UIKit +import Display func chatMessageBubbleImageContentCorners(relativeContentPosition position: ChatMessageBubbleContentPosition, normalRadius: CGFloat, mergedRadius: CGFloat, mergedWithAnotherContentRadius: CGFloat) -> ImageCorners { let topLeftCorner: ImageCorner diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentNode.swift index cfd9ab40ca..cafc20c6b4 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramUIPreferences enum ChatMessageBubbleContentBackgroundHiding { case never diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift index 2271aabccc..0f6374c802 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift @@ -4,6 +4,8 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [(Message, AnyClass)] { var result: [(Message, AnyClass)] = [] diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageCallBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageCallBubbleContentNode.swift index a124f728fe..d6848f243d 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageCallBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageCallBubbleContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import TelegramCore import Postbox +import TelegramPresentationData private let titleFont: UIFont = Font.medium(16.0) private let labelFont: UIFont = Font.regular(13.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageContactBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageContactBubbleContentNode.swift index 7f24a54787..e923538017 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageContactBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageContactBubbleContentNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 16.0)! diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageDateAndStatusNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageDateAndStatusNode.swift index 46ca3ca960..a828f11f2b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageDateAndStatusNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageDateAndStatusNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import Display import SwiftSignalKit +import TelegramPresentationData private let dateFont = UIFont.italicSystemFont(ofSize: 11.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageDateHeader.swift b/submodules/TelegramUI/TelegramUI/ChatMessageDateHeader.swift index 1690cf2c63..f4a9f54141 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageDateHeader.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageDateHeader.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData private let timezoneOffset: Int32 = { let nowTimestamp = Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageDeliveryFailedNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageDeliveryFailedNode.swift index 3dda0a87b0..9a44437b6a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageDeliveryFailedNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageDeliveryFailedNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class ChatMessageDeliveryFailedNode: ASImageNode { private let tapped: () -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageFileBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageFileBubbleContentNode.swift index aab4e3b404..247690f3d7 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageFileBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageFileBubbleContentNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode { private let interactiveFileNode: ChatMessageInteractiveFileNode diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageForwardInfoNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageForwardInfoNode.swift index b4e7e1829e..b0d729f1d9 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageForwardInfoNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageForwardInfoNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let prefixFont = Font.regular(13.0) private let peerFont = Font.medium(13.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInstantVideoItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInstantVideoItemNode.swift index 0f6fc5333c..f465b4c29c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInstantVideoItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInstantVideoItemNode.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private let nameFont = Font.medium(14.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveFileNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveFileNode.swift index 045a09b24a..0c98ad9032 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveFileNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveFileNode.swift @@ -5,6 +5,8 @@ import Postbox import SwiftSignalKit import Display import TelegramCore +import UniversalMediaPlayer +import TelegramPresentationData private struct FetchControls { let fetch: () -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveInstantVideoNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveInstantVideoNode.swift index cb13e8a214..5640247564 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveInstantVideoNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveInstantVideoNode.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import UniversalMediaPlayer +import TelegramPresentationData struct ChatMessageInstantVideoItemLayoutResult { let contentSize: CGSize diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaBadge.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaBadge.swift index 213e6c57ff..dcf1a72890 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaBadge.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaBadge.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData enum ChatMessageInteractiveMediaDownloadState: Equatable { case remote diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift index 3f3b9827ab..5d22185bc2 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift @@ -5,6 +5,9 @@ import Postbox import SwiftSignalKit import Display import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences +import UniversalMediaPlayer private struct FetchControls { let fetch: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInvoiceBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInvoiceBubbleContentNode.swift index 881b15b4d4..bd7c636445 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInvoiceBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInvoiceBubbleContentNode.swift @@ -5,6 +5,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramUIPreferences private let titleFont: UIFont = Font.semibold(15.0) private let textFont: UIFont = Font.regular(15.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageItem.swift b/submodules/TelegramUI/TelegramUI/ChatMessageItem.swift index 03a71dfa41..3a5497ef97 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageItem.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences public enum ChatMessageItemContent: Sequence { case message(message: Message, read: Bool, selection: ChatHistoryMessageSelection, attributes: ChatMessageEntryAttributes) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationPositionNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationPositionNode.swift index 6822f4bd7c..0a275de1d7 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationPositionNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationPositionNode.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import TelegramCore import Postbox +import TelegramPresentationData private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 24.0)! private let avatarBackgroundImage = UIImage(bundleImageName: "Chat/Message/LocationPin")?.precomposed() diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationTextNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationTextNode.swift index e13ab120c2..4601f2b0ab 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationTextNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationTextNode.swift @@ -2,6 +2,8 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData +import TelegramUIPreferences private let textFont: UIFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationTimerNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationTimerNode.swift index 285be9b7b9..e061f23841 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationTimerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationTimerNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let textFont: UIFont = UIFont(name: ".SFCompactRounded-Semibold", size: 13.0)! diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift index da5dc27e48..8a6d39b051 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode { override var supportsMosaic: Bool { diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageNotificationItem.swift b/submodules/TelegramUI/TelegramUI/ChatMessageNotificationItem.swift index aa982e7a95..18d338bfa9 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageNotificationItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageNotificationItem.swift @@ -5,6 +5,8 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences public final class ChatMessageNotificationItem: NotificationItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChatMessagePhoneNumberRequestContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessagePhoneNumberRequestContentNode.swift index f0d153bac9..10cbff7388 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessagePhoneNumberRequestContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessagePhoneNumberRequestContentNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 16.0)! diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageReplyInfoNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageReplyInfoNode.swift index 9a03c8d695..07de96fd81 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageReplyInfoNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageReplyInfoNode.swift @@ -5,6 +5,7 @@ import Postbox import Display import TelegramCore import SwiftSignalKit +import TelegramPresentationData private let titleFont = Font.medium(14.0) private let textFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageSelectionInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageSelectionInputPanelNode.swift index 6594ee1706..53df54d6e1 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageSelectionInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageSelectionInputPanelNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class ChatMessageSelectionInputPanelNode: ChatInputPanelNode { private let deleteButton: HighlightableButtonNode diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageSelectionNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageSelectionNode.swift index ad7c52e985..5dccab0809 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageSelectionNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageSelectionNode.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import AsyncDisplayKit +import TelegramPresentationData final class ChatMessageSelectionNode: ASDisplayNode { private let toggle: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageStickerItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageStickerItemNode.swift index 04d83a8bd0..f1ff78b432 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageStickerItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageStickerItemNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private let nameFont = Font.medium(14.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageUnsupportedBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageUnsupportedBubbleContentNode.swift index 66ae1b616b..dde3ce0916 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageUnsupportedBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageUnsupportedBubbleContentNode.swift @@ -5,6 +5,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData final class ChatMessageUnsupportedBubbleContentNode: ChatMessageBubbleContentNode { private var buttonNode: ChatMessageAttachedContentButtonNode diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift index 53c7a5f99c..399b9d423f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift @@ -5,6 +5,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramUIPreferences enum WebsiteType { case generic diff --git a/submodules/TelegramUI/TelegramUI/ChatMultipleAvatarsNavigationNode.swift b/submodules/TelegramUI/TelegramUI/ChatMultipleAvatarsNavigationNode.swift index a741bea4c3..cdaff6cf5f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMultipleAvatarsNavigationNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMultipleAvatarsNavigationNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import TelegramCore import Postbox +import TelegramPresentationData final class ChatMultipleAvatarsNavigationNode: ASDisplayNode { private let multipleAvatarsNode: MultipleAvatarsNode diff --git a/submodules/TelegramUI/TelegramUI/ChatOverlayNavigationBar.swift b/submodules/TelegramUI/TelegramUI/ChatOverlayNavigationBar.swift index 87559c04ab..a4d474379a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatOverlayNavigationBar.swift +++ b/submodules/TelegramUI/TelegramUI/ChatOverlayNavigationBar.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let titleFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatPinnedMessageTitlePanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatPinnedMessageTitlePanelNode.swift index 8c31cbdd54..42a034adcb 100644 --- a/submodules/TelegramUI/TelegramUI/ChatPinnedMessageTitlePanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatPinnedMessageTitlePanelNode.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift b/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift index a04534316d..9852172a21 100644 --- a/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift +++ b/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift @@ -1,6 +1,8 @@ import Foundation import UIKit import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences extension PresentationFontSize { var baseDisplaySize: CGFloat { diff --git a/submodules/TelegramUI/TelegramUI/ChatPresentationInterfaceState.swift b/submodules/TelegramUI/TelegramUI/ChatPresentationInterfaceState.swift index f23e159641..ac4fc736c5 100644 --- a/submodules/TelegramUI/TelegramUI/ChatPresentationInterfaceState.swift +++ b/submodules/TelegramUI/TelegramUI/ChatPresentationInterfaceState.swift @@ -2,6 +2,8 @@ import Foundation import UIKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences enum ChatPresentationInputQueryKind: Int32 { case emoji diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsController.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsController.swift index fe849e5a27..605f0b7383 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsController.swift @@ -4,6 +4,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData final class ChatRecentActionsController: TelegramController { private var controllerNode: ChatRecentActionsControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift index d04f62acc2..43d2cb2cbf 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift @@ -5,7 +5,8 @@ import TelegramCore import Postbox import SwiftSignalKit import Display - +import TelegramPresentationData +import TelegramUIPreferences import SafariServices private final class ChatRecentActionsListOpaqueState { diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerState.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerState.swift index 8e575ecbe3..2aaff1ac9f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerState.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerState.swift @@ -1,6 +1,8 @@ import Foundation import UIKit import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences final class ChatRecentActionsControllerState: Equatable { let chatWallpaper: TelegramWallpaper diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsEmptyNode.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsEmptyNode.swift index d6beb11720..9d6921f857 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsEmptyNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsEmptyNode.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import TelegramCore +import TelegramPresentationData private let titleFont = Font.medium(16.0) private let textFont = Font.regular(15.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsFilterController.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsFilterController.swift index 1ef44476dc..983072c7b0 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsFilterController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsFilterController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ChatRecentActionsFilterControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsSearchNavigationContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsSearchNavigationContentNode.swift index ed9318f0ba..aafe16fc0e 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsSearchNavigationContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsSearchNavigationContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let searchBarFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatRecordingPreviewInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatRecordingPreviewInputPanelNode.swift index f498c60bbc..17f1008f73 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecordingPreviewInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecordingPreviewInputPanelNode.swift @@ -5,6 +5,8 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData +import UniversalMediaPlayer private func generatePauseIcon(_ theme: PresentationTheme) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "GlobalMusicPlayer/MinimizedPause"), color: theme.chat.inputPanel.actionControlForegroundColor) diff --git a/submodules/TelegramUI/TelegramUI/ChatReportPeerTitlePanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatReportPeerTitlePanelNode.swift index 6bd16f4bf6..d960b2d6a8 100644 --- a/submodules/TelegramUI/TelegramUI/ChatReportPeerTitlePanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatReportPeerTitlePanelNode.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import Postbox import TelegramCore +import TelegramPresentationData private enum ChatReportPeerTitleButton: Equatable { case block diff --git a/submodules/TelegramUI/TelegramUI/ChatRequestInProgressTitlePanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatRequestInProgressTitlePanelNode.swift index cd7d5cde90..040658ab6a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRequestInProgressTitlePanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRequestInProgressTitlePanelNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData final class ChatRequestInProgressTitlePanelNode: ChatTitleAccessoryPanelNode { private let separatorNode: ASDisplayNode diff --git a/submodules/TelegramUI/TelegramUI/ChatSearchInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatSearchInputPanelNode.swift index fcdbc4b665..b336426a9f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatSearchInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatSearchInputPanelNode.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData private let labelFont = Font.regular(15.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatSearchNavigationContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatSearchNavigationContentNode.swift index 0ff00d2673..0990a86638 100644 --- a/submodules/TelegramUI/TelegramUI/ChatSearchNavigationContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatSearchNavigationContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let searchBarFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatSecretAutoremoveTimerActionSheet.swift b/submodules/TelegramUI/TelegramUI/ChatSecretAutoremoveTimerActionSheet.swift index 4f48451abf..d02e822920 100644 --- a/submodules/TelegramUI/TelegramUI/ChatSecretAutoremoveTimerActionSheet.swift +++ b/submodules/TelegramUI/TelegramUI/ChatSecretAutoremoveTimerActionSheet.swift @@ -6,6 +6,7 @@ import UIKit import TelegramCore import SwiftSignalKit import Photos +import TelegramPresentationData final class ChatSecretAutoremoveTimerActionSheetController: ActionSheetController { private var presentationDisposable: Disposable? diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputActionButtonsNode.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputActionButtonsNode.swift index 73f41fc131..1f34ac5241 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputActionButtonsNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputActionButtonsNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class ChatTextInputActionButtonsNode: ASDisplayNode { let micButton: ChatTextInputMediaRecordingButton diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift index d7191e421c..7a38c348e2 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import Postbox +import TelegramPresentationData private let alphanumericCharacters = CharacterSet.alphanumerics diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputAudioRecordingCancelIndicator.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputAudioRecordingCancelIndicator.swift index 005be4f111..c6c23367d0 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputAudioRecordingCancelIndicator.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputAudioRecordingCancelIndicator.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let cancelFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputAudioRecordingTimeNode.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputAudioRecordingTimeNode.swift index ddb22572c3..4af1545a4f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputAudioRecordingTimeNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputAudioRecordingTimeNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit +import TelegramPresentationData private final class ChatTextInputAudioRecordingTimeNodeParameters: NSObject { let timestamp: Double diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputMediaRecordingButton.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputMediaRecordingButton.swift index fc099ca1c6..8feb54bcc1 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputMediaRecordingButton.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputMediaRecordingButton.swift @@ -4,7 +4,7 @@ import Display import AsyncDisplayKit import TelegramCore import SwiftSignalKit - +import TelegramPresentationData import LegacyComponents private let offsetThreshold: CGFloat = 10.0 diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputMenu.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputMenu.swift index 67a97349f5..bc7eec059a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputMenu.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputMenu.swift @@ -1,5 +1,6 @@ import Foundation import UIKit +import TelegramPresentationData enum ChatTextInputMenuState { case inactive diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift index ac36f3ea91..26fb45b7d4 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import MobileCoreServices +import TelegramPresentationData private let searchLayoutProgressImage = generateImage(CGSize(width: 22.0, height: 22.0), contextGenerator: { size, context in context.clear(CGRect(origin: CGPoint(), size: size)) diff --git a/submodules/TelegramUI/TelegramUI/ChatTextLinkEditController.swift b/submodules/TelegramUI/TelegramUI/ChatTextLinkEditController.swift index f622c9f2c1..f05257ea61 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextLinkEditController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextLinkEditController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private final class ChatTextLinkEditInputFieldNode: ASDisplayNode, ASEditableTextNodeDelegate { private var theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ChatTitleView.swift b/submodules/TelegramUI/TelegramUI/ChatTitleView.swift index 7935220d2b..6b7d52b089 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTitleView.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTitleView.swift @@ -6,6 +6,8 @@ import Postbox import TelegramCore import SwiftSignalKit import LegacyComponents +import TelegramPresentationData +import TelegramUIPreferences enum ChatTitleContent { case peer(peerView: PeerView, onlineMemberCount: Int32?) diff --git a/submodules/TelegramUI/TelegramUI/ChatUnblockInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatUnblockInputPanelNode.swift index 8854d3f847..4561f5b873 100644 --- a/submodules/TelegramUI/TelegramUI/ChatUnblockInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatUnblockInputPanelNode.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData final class ChatUnblockInputPanelNode: ChatInputPanelNode { private let button: HighlightableButtonNode diff --git a/submodules/TelegramUI/TelegramUI/ChatVideoGalleryItemScrubberView.swift b/submodules/TelegramUI/TelegramUI/ChatVideoGalleryItemScrubberView.swift index 49fcfa2ad7..1da9b686b4 100644 --- a/submodules/TelegramUI/TelegramUI/ChatVideoGalleryItemScrubberView.swift +++ b/submodules/TelegramUI/TelegramUI/ChatVideoGalleryItemScrubberView.swift @@ -5,6 +5,8 @@ import SwiftSignalKit import TelegramCore import Postbox import Display +import UniversalMediaPlayer +import TelegramPresentationData private let textFont = Font.regular(13.0) diff --git a/Telegram-iOS/ClearNotificationsManager.swift b/submodules/TelegramUI/TelegramUI/ClearNotificationsManager.swift similarity index 86% rename from Telegram-iOS/ClearNotificationsManager.swift rename to submodules/TelegramUI/TelegramUI/ClearNotificationsManager.swift index 51434242f8..bcc43996e6 100644 --- a/Telegram-iOS/ClearNotificationsManager.swift +++ b/submodules/TelegramUI/TelegramUI/ClearNotificationsManager.swift @@ -4,11 +4,11 @@ import Postbox private let messageNotificationKeyExpr = try? NSRegularExpression(pattern: "m([-\\d]+):([-\\d]+):([-\\d]+)_?", options: []) -enum NotificationManagedNotificationRequestId: Hashable { +public enum NotificationManagedNotificationRequestId: Hashable { case messageId(MessageId) case globallyUniqueId(Int64, PeerId?) - init?(string: String) { + public init?(string: String) { if string.hasPrefix("m") { let matches = messageNotificationKeyExpr!.matches(in: string, options: [], range: NSRange(location: 0, length: string.count)) if let match = matches.first { @@ -34,15 +34,15 @@ enum NotificationManagedNotificationRequestId: Hashable { } } -final class ClearNotificationIdsCompletion { - let f: ([(String, NotificationManagedNotificationRequestId)]) -> Void +public final class ClearNotificationIdsCompletion { + public let f: ([(String, NotificationManagedNotificationRequestId)]) -> Void - init(f: @escaping ([(String, NotificationManagedNotificationRequestId)]) -> Void) { + public init(f: @escaping ([(String, NotificationManagedNotificationRequestId)]) -> Void) { self.f = f } } -final class ClearNotificationsManager { +public final class ClearNotificationsManager { private let getNotificationIds: (ClearNotificationIdsCompletion) -> Void private let getPendingNotificationIds: (ClearNotificationIdsCompletion) -> Void private let removeNotificationIds: ([String]) -> Void @@ -52,7 +52,7 @@ final class ClearNotificationsManager { private var timer: SwiftSignalKit.Timer? - init(getNotificationIds: @escaping (ClearNotificationIdsCompletion) -> Void, removeNotificationIds: @escaping ([String]) -> Void, getPendingNotificationIds: @escaping (ClearNotificationIdsCompletion) -> Void, removePendingNotificationIds: @escaping ([String]) -> Void) { + public init(getNotificationIds: @escaping (ClearNotificationIdsCompletion) -> Void, removeNotificationIds: @escaping ([String]) -> Void, getPendingNotificationIds: @escaping (ClearNotificationIdsCompletion) -> Void, removePendingNotificationIds: @escaping ([String]) -> Void) { self.getNotificationIds = getNotificationIds self.removeNotificationIds = removeNotificationIds self.getPendingNotificationIds = getPendingNotificationIds @@ -63,7 +63,7 @@ final class ClearNotificationsManager { self.timer?.invalidate() } - func clearAll() { + public func clearAll() { self.getNotificationIds(ClearNotificationIdsCompletion { [weak self] result in Queue.mainQueue().async { var removeKeys: [String] = [] @@ -91,7 +91,7 @@ final class ClearNotificationsManager { }) } - func append(_ id: MessageId) { + public func append(_ id: MessageId) { if let current = self.ids[id.peerId] { if current < id { self.ids[id.peerId] = id @@ -107,7 +107,7 @@ final class ClearNotificationsManager { timer.start() } - func commitNow() { + public func commitNow() { self.timer?.invalidate() self.timer = nil diff --git a/submodules/TelegramUI/TelegramUI/CommandChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/CommandChatInputContextPanelNode.swift index f320d0c073..0509ef89ae 100644 --- a/submodules/TelegramUI/TelegramUI/CommandChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/CommandChatInputContextPanelNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import Display +import TelegramPresentationData private struct CommandChatInputContextPanelEntryStableId: Hashable { let command: PeerCommand diff --git a/submodules/TelegramUI/TelegramUI/CommandChatInputPanelItem.swift b/submodules/TelegramUI/TelegramUI/CommandChatInputPanelItem.swift index 5e88e673b0..f66a30bcb4 100644 --- a/submodules/TelegramUI/TelegramUI/CommandChatInputPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/CommandChatInputPanelItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class CommandChatInputPanelItem: ListViewItem { fileprivate let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ComposeController.swift b/submodules/TelegramUI/TelegramUI/ComposeController.swift index de12a4de9b..337363e16e 100644 --- a/submodules/TelegramUI/TelegramUI/ComposeController.swift +++ b/submodules/TelegramUI/TelegramUI/ComposeController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import SwiftSignalKit import TelegramCore +import TelegramPresentationData public class ComposeController: ViewController { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ComposeControllerNode.swift b/submodules/TelegramUI/TelegramUI/ComposeControllerNode.swift index 3ebd13dffe..8b2410f596 100644 --- a/submodules/TelegramUI/TelegramUI/ComposeControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ComposeControllerNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class ComposeControllerNode: ASDisplayNode { let contactListNode: ContactListNode diff --git a/submodules/TelegramUI/TelegramUI/ConfirmPhoneNumberController.swift b/submodules/TelegramUI/TelegramUI/ConfirmPhoneNumberController.swift index a2d0d13dec..d77a774870 100644 --- a/submodules/TelegramUI/TelegramUI/ConfirmPhoneNumberController.swift +++ b/submodules/TelegramUI/TelegramUI/ConfirmPhoneNumberController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class ConfirmPhoneNumberCodeControllerArguments { let updateEntryText: (String) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ContactAddItem.swift b/submodules/TelegramUI/TelegramUI/ContactAddItem.swift index 474bf18121..6fae0c5ab6 100644 --- a/submodules/TelegramUI/TelegramUI/ContactAddItem.swift +++ b/submodules/TelegramUI/TelegramUI/ContactAddItem.swift @@ -5,6 +5,7 @@ import Postbox import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData private let titleFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/ContactInfoStrings.swift b/submodules/TelegramUI/TelegramUI/ContactInfoStrings.swift index 9ac61e4803..e9d3c7e292 100644 --- a/submodules/TelegramUI/TelegramUI/ContactInfoStrings.swift +++ b/submodules/TelegramUI/TelegramUI/ContactInfoStrings.swift @@ -1,6 +1,7 @@ import Foundation import Contacts import AddressBook +import TelegramPresentationData func localizedPhoneNumberLabel(label: String, strings: PresentationStrings) -> String { if #available(iOSApplicationExtension 9.0, iOS 9.0, *) { diff --git a/submodules/TelegramUI/TelegramUI/ContactListActionItem.swift b/submodules/TelegramUI/TelegramUI/ContactListActionItem.swift index a4d35a1774..7c8c1d72ae 100644 --- a/submodules/TelegramUI/TelegramUI/ContactListActionItem.swift +++ b/submodules/TelegramUI/TelegramUI/ContactListActionItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData public enum ContactListActionItemInlineIconPosition { case left diff --git a/submodules/TelegramUI/TelegramUI/ContactListNameIndexHeader.swift b/submodules/TelegramUI/TelegramUI/ContactListNameIndexHeader.swift index 157280447e..e641f2788b 100644 --- a/submodules/TelegramUI/TelegramUI/ContactListNameIndexHeader.swift +++ b/submodules/TelegramUI/TelegramUI/ContactListNameIndexHeader.swift @@ -1,6 +1,7 @@ import Foundation import Display import UIKit +import TelegramPresentationData final class ContactListNameIndexHeader: Equatable, ListViewItemHeader { let id: Int64 diff --git a/submodules/TelegramUI/TelegramUI/ContactListNode.swift b/submodules/TelegramUI/TelegramUI/ContactListNode.swift index b0d16459a9..852af1f063 100644 --- a/submodules/TelegramUI/TelegramUI/ContactListNode.swift +++ b/submodules/TelegramUI/TelegramUI/ContactListNode.swift @@ -5,6 +5,9 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences +import DeviceAccess private let dropDownIcon = { () -> UIImage in UIGraphicsBeginImageContextWithOptions(CGSize(width: 12.0, height: 12.0), false, 0.0) @@ -829,7 +832,7 @@ final class ContactListNode: ASDisplayNode { let contactsAuthorization = Promise() contactsAuthorization.set(.single(.allowed) - |> then(DeviceAccess.authorizationStatus(context: context, subject: .contacts))) + |> then(DeviceAccess.authorizationStatus(subject: .contacts))) let contactsWarningSuppressed = Promise<(Bool, Bool)>() contactsWarningSuppressed.set(.single((false, false)) @@ -1297,12 +1300,12 @@ final class ContactListNode: ASDisplayNode { } authorizeImpl = { - let _ = (DeviceAccess.authorizationStatus(context: context, subject: .contacts) + let _ = (DeviceAccess.authorizationStatus(subject: .contacts) |> take(1) |> deliverOnMainQueue).start(next: { status in switch status { case .notDetermined: - DeviceAccess.authorizeAccess(to: .contacts, context: context) + DeviceAccess.authorizeAccess(to: .contacts) case .denied, .restricted: context.sharedContext.applicationBindings.openSettings() default: diff --git a/submodules/TelegramUI/TelegramUI/ContactMultiselectionController.swift b/submodules/TelegramUI/TelegramUI/ContactMultiselectionController.swift index cad3e01bdd..dbbce95e0a 100644 --- a/submodules/TelegramUI/TelegramUI/ContactMultiselectionController.swift +++ b/submodules/TelegramUI/TelegramUI/ContactMultiselectionController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import SwiftSignalKit import TelegramCore +import TelegramPresentationData enum ContactMultiselectionControllerMode { case groupCreation diff --git a/submodules/TelegramUI/TelegramUI/ContactMultiselectionControllerNode.swift b/submodules/TelegramUI/TelegramUI/ContactMultiselectionControllerNode.swift index ff213d46df..29a4d1f781 100644 --- a/submodules/TelegramUI/TelegramUI/ContactMultiselectionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ContactMultiselectionControllerNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private struct SearchResultEntry: Identifiable { let index: Int diff --git a/submodules/TelegramUI/TelegramUI/ContactSelectionController.swift b/submodules/TelegramUI/TelegramUI/ContactSelectionController.swift index bf803b7d8a..b3e68147c5 100644 --- a/submodules/TelegramUI/TelegramUI/ContactSelectionController.swift +++ b/submodules/TelegramUI/TelegramUI/ContactSelectionController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import SwiftSignalKit import TelegramCore +import TelegramPresentationData class ContactSelectionController: ViewController, PresentableController { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ContactSelectionControllerNode.swift b/submodules/TelegramUI/TelegramUI/ContactSelectionControllerNode.swift index 74aca7a0c9..5729187d40 100644 --- a/submodules/TelegramUI/TelegramUI/ContactSelectionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ContactSelectionControllerNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class ContactSelectionControllerNode: ASDisplayNode { var displayProgress: Bool = false { diff --git a/submodules/TelegramUI/TelegramUI/ContactsController.swift b/submodules/TelegramUI/TelegramUI/ContactsController.swift index c84f656741..131bcdf788 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsController.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsController.swift @@ -5,6 +5,9 @@ import AsyncDisplayKit import Postbox import SwiftSignalKit import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences +import DeviceAccess private func fixListNodeScrolling(_ listNode: ListView, searchNode: NavigationBarSearchContentNode) -> Bool { if searchNode.expansionProgress > 0.0 && searchNode.expansionProgress < 1.0 { @@ -122,7 +125,7 @@ public class ContactsController: ViewController { }) if #available(iOSApplicationExtension 10.0, iOS 10.0, *) { - self.authorizationDisposable = (combineLatest(DeviceAccess.authorizationStatus(context: context, subject: .contacts), combineLatest(context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.contactsPermissionWarningKey()), context.account.postbox.preferencesView(keys: [PreferencesKeys.contactsSettings]), context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.contactSynchronizationSettings])) + self.authorizationDisposable = (combineLatest(DeviceAccess.authorizationStatus(subject: .contacts), combineLatest(context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.contactsPermissionWarningKey()), context.account.postbox.preferencesView(keys: [PreferencesKeys.contactsSettings]), context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.contactSynchronizationSettings])) |> map { noticeView, preferences, sharedData -> (Bool, ContactsSortOrder) in let settings: ContactsSettings = preferences.values[PreferencesKeys.contactsSettings] as? ContactsSettings ?? ContactsSettings.defaultSettings let synchronizeDeviceContacts: Bool = settings.synchronizeContacts @@ -372,7 +375,7 @@ public class ContactsController: ViewController { } @objc func addPressed() { - let _ = (DeviceAccess.authorizationStatus(context: self.context, subject: .contacts) + let _ = (DeviceAccess.authorizationStatus(subject: .contacts) |> take(1) |> deliverOnMainQueue).start(next: { [weak self] status in guard let strongSelf = self else { @@ -395,7 +398,7 @@ public class ContactsController: ViewController { } })), in: .window(.root), with: ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) case .notDetermined: - DeviceAccess.authorizeAccess(to: .contacts, context: strongSelf.context) + DeviceAccess.authorizeAccess(to: .contacts) default: let presentationData = strongSelf.presentationData strongSelf.present(textAlertController(context: strongSelf.context, title: presentationData.strings.AccessDenied_Title, text: presentationData.strings.Contacts_AccessDeniedError, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_NotNow, action: {}), TextAlertAction(type: .genericAction, title: presentationData.strings.AccessDenied_Settings, action: { diff --git a/submodules/TelegramUI/TelegramUI/ContactsControllerNode.swift b/submodules/TelegramUI/TelegramUI/ContactsControllerNode.swift index a8438f6b98..d203fd4c09 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsControllerNode.swift @@ -5,6 +5,9 @@ import UIKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences +import DeviceAccess final class ContactsControllerNode: ASDisplayNode { let contactListNode: ContactListNode @@ -80,7 +83,7 @@ final class ContactsControllerNode: ASDisplayNode { } inviteImpl = { [weak self] in - let _ = (DeviceAccess.authorizationStatus(context: context, subject: .contacts) + let _ = (DeviceAccess.authorizationStatus(subject: .contacts) |> take(1) |> deliverOnMainQueue).start(next: { value in guard let strongSelf = self else { @@ -91,7 +94,7 @@ final class ContactsControllerNode: ASDisplayNode { case .allowed: strongSelf.openInvite?() case .notDetermined: - DeviceAccess.authorizeAccess(to: .contacts, context: strongSelf.context) + DeviceAccess.authorizeAccess(to: .contacts) default: let presentationData = strongSelf.presentationData present(textAlertController(context: strongSelf.context, title: presentationData.strings.AccessDenied_Title, text: presentationData.strings.Contacts_AccessDeniedError, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_NotNow, action: {}), TextAlertAction(type: .genericAction, title: presentationData.strings.AccessDenied_Settings, action: { diff --git a/submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift b/submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift index 2591722525..71e2471560 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift @@ -5,6 +5,8 @@ import Postbox import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private let titleFont = Font.regular(17.0) private let titleBoldFont = Font.medium(17.0) diff --git a/submodules/TelegramUI/TelegramUI/ContactsSearchContainerNode.swift b/submodules/TelegramUI/TelegramUI/ContactsSearchContainerNode.swift index fde03cd3db..408dcb80b4 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsSearchContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsSearchContainerNode.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private enum ContactListSearchGroup { case contacts diff --git a/submodules/TelegramUI/TelegramUI/ContactsSectionHeaderAccessoryItem.swift b/submodules/TelegramUI/TelegramUI/ContactsSectionHeaderAccessoryItem.swift index 4de1b22fbd..7726fbef2f 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsSectionHeaderAccessoryItem.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsSectionHeaderAccessoryItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData enum ContactsSectionHeader: Equatable { case letter(String) diff --git a/submodules/TelegramUI/TelegramUI/ConvertToSupergroupController.swift b/submodules/TelegramUI/TelegramUI/ConvertToSupergroupController.swift index 327679fef4..4abeca8742 100644 --- a/submodules/TelegramUI/TelegramUI/ConvertToSupergroupController.swift +++ b/submodules/TelegramUI/TelegramUI/ConvertToSupergroupController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class ConvertToSupergroupArguments { let convert: () -> Void diff --git a/submodules/TelegramUI/TelegramUI/CounterContollerTitleView.swift b/submodules/TelegramUI/TelegramUI/CounterContollerTitleView.swift index 7997ddb029..c87181729a 100644 --- a/submodules/TelegramUI/TelegramUI/CounterContollerTitleView.swift +++ b/submodules/TelegramUI/TelegramUI/CounterContollerTitleView.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData struct CounterContollerTitle: Equatable { let title: String diff --git a/submodules/TelegramUI/TelegramUI/CreateChannelController.swift b/submodules/TelegramUI/TelegramUI/CreateChannelController.swift index 1afe122ea0..cb72764759 100644 --- a/submodules/TelegramUI/TelegramUI/CreateChannelController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateChannelController.swift @@ -4,7 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore - +import TelegramPresentationData import LegacyComponents private struct CreateChannelArguments { diff --git a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift index d282a4f2ae..d22b9f7db8 100644 --- a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift @@ -4,7 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore - +import TelegramPresentationData +import TelegramUIPreferences import LegacyComponents private struct CreateGroupArguments { diff --git a/submodules/TelegramUI/TelegramUI/CreatePasswordController.swift b/submodules/TelegramUI/TelegramUI/CreatePasswordController.swift index 18a9fb2f66..7c79181c65 100644 --- a/submodules/TelegramUI/TelegramUI/CreatePasswordController.swift +++ b/submodules/TelegramUI/TelegramUI/CreatePasswordController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private enum CreatePasswordField { case password diff --git a/submodules/TelegramUI/TelegramUI/CreatePollController.swift b/submodules/TelegramUI/TelegramUI/CreatePollController.swift index 8ecae9d4c6..40ee40e5ea 100644 --- a/submodules/TelegramUI/TelegramUI/CreatePollController.swift +++ b/submodules/TelegramUI/TelegramUI/CreatePollController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private let maxTextLength = 255 private let maxOptionLength = 100 diff --git a/submodules/TelegramUI/TelegramUI/CreatePollOptionActionItem.swift b/submodules/TelegramUI/TelegramUI/CreatePollOptionActionItem.swift index 0edae0182c..81b582ce08 100644 --- a/submodules/TelegramUI/TelegramUI/CreatePollOptionActionItem.swift +++ b/submodules/TelegramUI/TelegramUI/CreatePollOptionActionItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class CreatePollOptionActionItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/CreatePollOptionItem.swift b/submodules/TelegramUI/TelegramUI/CreatePollOptionItem.swift index 883971ae86..72711de6e5 100644 --- a/submodules/TelegramUI/TelegramUI/CreatePollOptionItem.swift +++ b/submodules/TelegramUI/TelegramUI/CreatePollOptionItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData struct CreatePollOptionItemEditing { let editable: Bool diff --git a/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift b/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift index e3b425a214..749935bd96 100644 --- a/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift +++ b/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Postbox import TelegramCore import LegacyComponents +import TelegramUIPreferences func presentCustomWallpaperPicker(context: AccountContext, present: @escaping (ViewController) -> Void) { let presentationData = context.sharedContext.currentPresentationData.with { $0 } diff --git a/submodules/TelegramUI/TelegramUI/DataAndStorageSettingsController.swift b/submodules/TelegramUI/TelegramUI/DataAndStorageSettingsController.swift index 859300552c..e671154668 100644 --- a/submodules/TelegramUI/TelegramUI/DataAndStorageSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/DataAndStorageSettingsController.swift @@ -5,6 +5,8 @@ import SwiftSignalKit import Postbox import TelegramCore import LegacyComponents +import TelegramPresentationData +import TelegramUIPreferences private final class DataAndStorageControllerArguments { let openStorageUsage: () -> Void diff --git a/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift b/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift index 6b84ba277b..262f84e013 100644 --- a/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class DataPrivacyControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/DateFormat.swift b/submodules/TelegramUI/TelegramUI/DateFormat.swift index 3e033661e2..f7ace2b5de 100644 --- a/submodules/TelegramUI/TelegramUI/DateFormat.swift +++ b/submodules/TelegramUI/TelegramUI/DateFormat.swift @@ -1,4 +1,6 @@ import Foundation +import TelegramPresentationData +import TelegramUIPreferences func stringForShortTimestamp(hours: Int32, minutes: Int32, dateTimeFormat: PresentationDateTimeFormat) -> String { switch dateTimeFormat.timeFormat { diff --git a/submodules/TelegramUI/TelegramUI/DateSelectionActionSheetController.swift b/submodules/TelegramUI/TelegramUI/DateSelectionActionSheetController.swift index e3bf5529c0..bf3ac5818a 100644 --- a/submodules/TelegramUI/TelegramUI/DateSelectionActionSheetController.swift +++ b/submodules/TelegramUI/TelegramUI/DateSelectionActionSheetController.swift @@ -6,6 +6,7 @@ import UIKit import SwiftSignalKit import TelegramCore import Photos +import TelegramPresentationData final class DateSelectionActionSheetController: ActionSheetController { private var presentationDisposable: Disposable? diff --git a/submodules/TelegramUI/TelegramUI/DebugAccountsController.swift b/submodules/TelegramUI/TelegramUI/DebugAccountsController.swift index 3b94a8d2db..47627f2b23 100644 --- a/submodules/TelegramUI/TelegramUI/DebugAccountsController.swift +++ b/submodules/TelegramUI/TelegramUI/DebugAccountsController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class DebugAccountsControllerArguments { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/DebugController.swift b/submodules/TelegramUI/TelegramUI/DebugController.swift index 4ad1c2d6de..aa2b0ce6b6 100644 --- a/submodules/TelegramUI/TelegramUI/DebugController.swift +++ b/submodules/TelegramUI/TelegramUI/DebugController.swift @@ -10,6 +10,8 @@ import MtProtoKit import MtProtoKitDynamic #endif import MessageUI +import TelegramPresentationData +import TelegramUIPreferences private final class DebugControllerArguments { let sharedContext: SharedAccountContext diff --git a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift index 9757bcf736..37b88e9ffd 100644 --- a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift +++ b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift @@ -1,5 +1,7 @@ import Postbox +import TelegramUIPreferences + private var telegramUIDeclaredEncodables: Void = { declareEncodable(InAppNotificationSettings.self, f: { InAppNotificationSettings(decoder: $0) }) declareEncodable(ChatInterfaceState.self, f: { ChatInterfaceState(decoder: $0) }) diff --git a/submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift b/submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift index 488fb3be21..7b5c5b03c7 100644 --- a/submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift +++ b/submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import Postbox import TelegramCore +import TelegramPresentationData enum DeleteChatPeerAction { case delete diff --git a/submodules/TelegramUI/TelegramUI/DeviceContactDataManager.swift b/submodules/TelegramUI/TelegramUI/DeviceContactDataManager.swift index d8ca2db7b0..c731164aac 100644 --- a/submodules/TelegramUI/TelegramUI/DeviceContactDataManager.swift +++ b/submodules/TelegramUI/TelegramUI/DeviceContactDataManager.swift @@ -4,6 +4,8 @@ import Postbox import TelegramCore import Contacts import AddressBook +import TelegramUIPreferences +import DeviceAccess public typealias DeviceContactStableId = String diff --git a/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift b/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift index 1a8312fc89..0e98bfd60b 100644 --- a/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Postbox import TelegramCore import MessageUI +import TelegramPresentationData private enum DeviceContactInfoAction { case sendMessage diff --git a/submodules/TelegramUI/TelegramUI/DisabledContextResultsChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/DisabledContextResultsChatInputContextPanelNode.swift index d8cc4532ba..e17ad63bf8 100644 --- a/submodules/TelegramUI/TelegramUI/DisabledContextResultsChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/DisabledContextResultsChatInputContextPanelNode.swift @@ -3,6 +3,7 @@ import UIKit import TelegramCore import AsyncDisplayKit import Display +import TelegramPresentationData final class DisabledContextResultsChatInputContextPanelNode: ChatInputContextPanelNode { private let containerNode: ASDisplayNode diff --git a/submodules/TelegramUI/TelegramUI/DocumentPreviewController.swift b/submodules/TelegramUI/TelegramUI/DocumentPreviewController.swift index 814d5ec6fc..8c2be1e099 100644 --- a/submodules/TelegramUI/TelegramUI/DocumentPreviewController.swift +++ b/submodules/TelegramUI/TelegramUI/DocumentPreviewController.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import QuickLook import Display +import TelegramPresentationData private final class DocumentPreviewItem: NSObject, QLPreviewItem { private let url: URL diff --git a/submodules/TelegramUI/TelegramUI/EditAccessoryPanelNode.swift b/submodules/TelegramUI/TelegramUI/EditAccessoryPanelNode.swift index 48dc4cf809..3efe488a5f 100644 --- a/submodules/TelegramUI/TelegramUI/EditAccessoryPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/EditAccessoryPanelNode.swift @@ -5,6 +5,8 @@ import TelegramCore import Postbox import SwiftSignalKit import Display +import TelegramPresentationData +import TelegramUIPreferences final class EditAccessoryPanelNode: AccessoryPanelNode { let messageId: MessageId diff --git a/submodules/TelegramUI/TelegramUI/EditSettingsController.swift b/submodules/TelegramUI/TelegramUI/EditSettingsController.swift index e2533d993b..89375bfce0 100644 --- a/submodules/TelegramUI/TelegramUI/EditSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/EditSettingsController.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import Postbox import TelegramCore import LegacyComponents +import TelegramPresentationData private struct EditSettingsItemArguments { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/EditableTokenListNode.swift b/submodules/TelegramUI/TelegramUI/EditableTokenListNode.swift index 82c0847514..9d0317019e 100644 --- a/submodules/TelegramUI/TelegramUI/EditableTokenListNode.swift +++ b/submodules/TelegramUI/TelegramUI/EditableTokenListNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData struct EditableTokenListToken { let id: AnyHashable diff --git a/submodules/TelegramUI/TelegramUI/EmojisChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/EmojisChatInputContextPanelNode.swift index 9f619357cd..bb17fdeeb9 100644 --- a/submodules/TelegramUI/TelegramUI/EmojisChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/EmojisChatInputContextPanelNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import Display +import TelegramPresentationData private struct EmojisChatInputContextPanelEntryStableId: Hashable, Equatable { let symbol: String diff --git a/submodules/TelegramUI/TelegramUI/EmojisChatInputPanelItem.swift b/submodules/TelegramUI/TelegramUI/EmojisChatInputPanelItem.swift index 551bb7fb6c..7fdb8192a5 100644 --- a/submodules/TelegramUI/TelegramUI/EmojisChatInputPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/EmojisChatInputPanelItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class EmojisChatInputPanelItem: ListViewItem { fileprivate let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift b/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift index 73086a2342..51088e34d9 100644 --- a/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift +++ b/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class FeaturedStickerPacksControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/FetchManager.swift b/submodules/TelegramUI/TelegramUI/FetchManager.swift index 4a776e786e..8ad30c60c5 100644 --- a/submodules/TelegramUI/TelegramUI/FetchManager.swift +++ b/submodules/TelegramUI/TelegramUI/FetchManager.swift @@ -3,6 +3,7 @@ import Postbox import TelegramCore import SwiftSignalKit import Postbox +import TelegramUIPreferences private struct FetchManagerLocationEntryId: Hashable { let location: FetchManagerLocation diff --git a/submodules/TelegramUI/TelegramUI/FetchMediaUtils.swift b/submodules/TelegramUI/TelegramUI/FetchMediaUtils.swift index 477861d2b0..6062d9860f 100644 --- a/submodules/TelegramUI/TelegramUI/FetchMediaUtils.swift +++ b/submodules/TelegramUI/TelegramUI/FetchMediaUtils.swift @@ -3,6 +3,7 @@ import UIKit import TelegramCore import Postbox import SwiftSignalKit +import TelegramUIPreferences public func freeMediaFileInteractiveFetched(account: Account, fileReference: FileMediaReference) -> Signal { return fetchedMediaResource(postbox: account.postbox, reference: fileReference.resourceReference(fileReference.media.resource)) diff --git a/submodules/TelegramUI/TelegramUI/FileMediaResourceStatus.swift b/submodules/TelegramUI/TelegramUI/FileMediaResourceStatus.swift index 9ba3040ca2..f332af0ba0 100644 --- a/submodules/TelegramUI/TelegramUI/FileMediaResourceStatus.swift +++ b/submodules/TelegramUI/TelegramUI/FileMediaResourceStatus.swift @@ -3,6 +3,7 @@ import UIKit import TelegramCore import Postbox import SwiftSignalKit +import UniversalMediaPlayer enum FileMediaResourcePlaybackStatus { case playing diff --git a/submodules/TelegramUI/TelegramUI/FormBlockItemNode.swift b/submodules/TelegramUI/TelegramUI/FormBlockItemNode.swift index 9a51f81e07..2728b220e7 100644 --- a/submodules/TelegramUI/TelegramUI/FormBlockItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/FormBlockItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData protocol FormBlockItemNodeProto { diff --git a/submodules/TelegramUI/TelegramUI/FormController.swift b/submodules/TelegramUI/TelegramUI/FormController.swift index bfdadc4432..a2adc8eaa3 100644 --- a/submodules/TelegramUI/TelegramUI/FormController.swift +++ b/submodules/TelegramUI/TelegramUI/FormController.swift @@ -4,6 +4,7 @@ import SwiftSignalKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData class FormController>: ViewController { var controllerNode: Node { diff --git a/submodules/TelegramUI/TelegramUI/FormControllerActionItem.swift b/submodules/TelegramUI/TelegramUI/FormControllerActionItem.swift index 5261854046..3c73efae7f 100644 --- a/submodules/TelegramUI/TelegramUI/FormControllerActionItem.swift +++ b/submodules/TelegramUI/TelegramUI/FormControllerActionItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let textFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/FormControllerDetailActionItem.swift b/submodules/TelegramUI/TelegramUI/FormControllerDetailActionItem.swift index 7658e35b8c..0b059e891e 100644 --- a/submodules/TelegramUI/TelegramUI/FormControllerDetailActionItem.swift +++ b/submodules/TelegramUI/TelegramUI/FormControllerDetailActionItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let textFont = Font.regular(17.0) private let errorFont = Font.regular(13.0) diff --git a/submodules/TelegramUI/TelegramUI/FormControllerHeaderItem.swift b/submodules/TelegramUI/TelegramUI/FormControllerHeaderItem.swift index db055aca64..e658723673 100644 --- a/submodules/TelegramUI/TelegramUI/FormControllerHeaderItem.swift +++ b/submodules/TelegramUI/TelegramUI/FormControllerHeaderItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/FormControllerItem.swift b/submodules/TelegramUI/TelegramUI/FormControllerItem.swift index fd2f18c052..38b9c7ca98 100644 --- a/submodules/TelegramUI/TelegramUI/FormControllerItem.swift +++ b/submodules/TelegramUI/TelegramUI/FormControllerItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData protocol FormControllerEntry: Identifiable { associatedtype ItemParams diff --git a/submodules/TelegramUI/TelegramUI/FormControllerNode.swift b/submodules/TelegramUI/TelegramUI/FormControllerNode.swift index 46937a46af..f920e29d47 100644 --- a/submodules/TelegramUI/TelegramUI/FormControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/FormControllerNode.swift @@ -4,6 +4,7 @@ import SwiftSignalKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData private func hasFirstResponder(_ view: UIView) -> Bool { if view.isFirstResponder { diff --git a/submodules/TelegramUI/TelegramUI/FormControllerTextInputItem.swift b/submodules/TelegramUI/TelegramUI/FormControllerTextInputItem.swift index 26bc160674..62157b05c9 100644 --- a/submodules/TelegramUI/TelegramUI/FormControllerTextInputItem.swift +++ b/submodules/TelegramUI/TelegramUI/FormControllerTextInputItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let textFont = Font.regular(17.0) private let errorFont = Font.regular(13.0) diff --git a/submodules/TelegramUI/TelegramUI/FormControllerTextItem.swift b/submodules/TelegramUI/TelegramUI/FormControllerTextItem.swift index c905e4539d..f0ad9c077e 100644 --- a/submodules/TelegramUI/TelegramUI/FormControllerTextItem.swift +++ b/submodules/TelegramUI/TelegramUI/FormControllerTextItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/FormEditableBlockItemNode.swift b/submodules/TelegramUI/TelegramUI/FormEditableBlockItemNode.swift index 25dbb5a944..ce8e3d65e3 100644 --- a/submodules/TelegramUI/TelegramUI/FormEditableBlockItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/FormEditableBlockItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData class FormEditableBlockItemNode: ASDisplayNode, FormControllerItemNode, FormBlockItemNodeProto, UIGestureRecognizerDelegate { private let topSeparatorInset: FormBlockItemInset diff --git a/submodules/TelegramUI/TelegramUI/ForwardAccessoryPanelNode.swift b/submodules/TelegramUI/TelegramUI/ForwardAccessoryPanelNode.swift index 161fc087b7..f9073cbedf 100644 --- a/submodules/TelegramUI/TelegramUI/ForwardAccessoryPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ForwardAccessoryPanelNode.swift @@ -5,6 +5,7 @@ import TelegramCore import Postbox import SwiftSignalKit import Display +import TelegramPresentationData func textStringForForwardedMessage(_ message: Message, strings: PresentationStrings) -> (String, Bool) { for media in message.media { diff --git a/submodules/TelegramUI/TelegramUI/ForwardPrivacyChatPreviewItem.swift b/submodules/TelegramUI/TelegramUI/ForwardPrivacyChatPreviewItem.swift index 3c3caccf1f..eb1911c800 100644 --- a/submodules/TelegramUI/TelegramUI/ForwardPrivacyChatPreviewItem.swift +++ b/submodules/TelegramUI/TelegramUI/ForwardPrivacyChatPreviewItem.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import SwiftSignalKit import TelegramCore import Postbox +import TelegramPresentationData +import TelegramUIPreferences class ForwardPrivacyChatPreviewItem: ListViewItem, ItemListItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/GalleryController.swift b/submodules/TelegramUI/TelegramUI/GalleryController.swift index 34b8b64f14..26ecf9301c 100644 --- a/submodules/TelegramUI/TelegramUI/GalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/GalleryController.swift @@ -7,6 +7,7 @@ import SwiftSignalKit import AsyncDisplayKit import TelegramCore import SafariServices +import TelegramPresentationData private func tagsForMessage(_ message: Message) -> MessageTags? { for media in message.media { diff --git a/submodules/TelegramUI/TelegramUI/GalleryNavigationCheckNode.swift b/submodules/TelegramUI/TelegramUI/GalleryNavigationCheckNode.swift index 31bc0961c7..183af1eac9 100644 --- a/submodules/TelegramUI/TelegramUI/GalleryNavigationCheckNode.swift +++ b/submodules/TelegramUI/TelegramUI/GalleryNavigationCheckNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class GalleryNavigationCheckNode: ASDisplayNode, NavigationButtonCustomDisplayNode { private var checkNode: CheckNode diff --git a/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift b/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift index 4606c08e0f..db3f3722d6 100644 --- a/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift +++ b/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit +import UniversalMediaPlayer final class GalleryVideoDecoration: UniversalVideoDecoration { let backgroundNode: ASDisplayNode? = nil diff --git a/submodules/TelegramUI/TelegramUI/GameController.swift b/submodules/TelegramUI/TelegramUI/GameController.swift index 4c5fdeed23..bed2e1cd1b 100644 --- a/submodules/TelegramUI/TelegramUI/GameController.swift +++ b/submodules/TelegramUI/TelegramUI/GameController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class GameController: ViewController { private var controllerNode: GameControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/GameControllerNode.swift b/submodules/TelegramUI/TelegramUI/GameControllerNode.swift index 9d9714a65c..8275332938 100644 --- a/submodules/TelegramUI/TelegramUI/GameControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/GameControllerNode.swift @@ -6,6 +6,7 @@ import WebKit import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData private class WeakGameScriptMessageHandler: NSObject, WKScriptMessageHandler { private let f: (WKScriptMessage) -> () diff --git a/submodules/TelegramUI/TelegramUI/GameControllerTitleView.swift b/submodules/TelegramUI/TelegramUI/GameControllerTitleView.swift index d24649f3ec..d8fe704e93 100644 --- a/submodules/TelegramUI/TelegramUI/GameControllerTitleView.swift +++ b/submodules/TelegramUI/TelegramUI/GameControllerTitleView.swift @@ -6,6 +6,7 @@ import Postbox import TelegramCore import SwiftSignalKit import LegacyComponents +import TelegramPresentationData final class GameControllerTitleView: UIView { private var theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/GenericEmbedImplementation.swift b/submodules/TelegramUI/TelegramUI/GenericEmbedImplementation.swift index c7084308bc..e214d9b366 100644 --- a/submodules/TelegramUI/TelegramUI/GenericEmbedImplementation.swift +++ b/submodules/TelegramUI/TelegramUI/GenericEmbedImplementation.swift @@ -1,6 +1,7 @@ import Foundation import WebKit import SwiftSignalKit +import UniversalMediaPlayer final class GenericEmbedImplementation: WebEmbedImplementation { private var evalImpl: ((String) -> Void)? diff --git a/submodules/TelegramUI/TelegramUI/GifPaneSearchContentNode.swift b/submodules/TelegramUI/TelegramUI/GifPaneSearchContentNode.swift index 6e7170574c..ad404e9d5b 100644 --- a/submodules/TelegramUI/TelegramUI/GifPaneSearchContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/GifPaneSearchContentNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData func paneGifSearchForQuery(account: Account, query: String, updateActivity: ((Bool) -> Void)?) -> Signal<[FileMediaReference]?, NoError> { let delayRequest = true diff --git a/submodules/TelegramUI/TelegramUI/GridMessageItem.swift b/submodules/TelegramUI/TelegramUI/GridMessageItem.swift index 8092c49486..89f0e6f6f8 100644 --- a/submodules/TelegramUI/TelegramUI/GridMessageItem.swift +++ b/submodules/TelegramUI/TelegramUI/GridMessageItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData private func mediaForMessage(_ message: Message) -> Media? { for media in message.media { diff --git a/submodules/TelegramUI/TelegramUI/GridMessageSelectionNode.swift b/submodules/TelegramUI/TelegramUI/GridMessageSelectionNode.swift index d29d2319b7..714696b7b5 100644 --- a/submodules/TelegramUI/TelegramUI/GridMessageSelectionNode.swift +++ b/submodules/TelegramUI/TelegramUI/GridMessageSelectionNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class GridMessageSelectionNode: ASDisplayNode { private let toggle: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift index f40ad66029..af39048302 100644 --- a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift @@ -6,8 +6,9 @@ import SwiftSignalKit import Postbox import TelegramCore import LegacyComponents - +import TelegramPresentationData import SafariServices +import TelegramUIPreferences private final class GroupInfoArguments { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoSearchNavigationContentNode.swift b/submodules/TelegramUI/TelegramUI/GroupInfoSearchNavigationContentNode.swift index 6bc3be6431..1ccf00de29 100644 --- a/submodules/TelegramUI/TelegramUI/GroupInfoSearchNavigationContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/GroupInfoSearchNavigationContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let searchBarFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/GroupPreHistorySetupController.swift b/submodules/TelegramUI/TelegramUI/GroupPreHistorySetupController.swift index 60d9c1f3f6..1d8856cc28 100644 --- a/submodules/TelegramUI/TelegramUI/GroupPreHistorySetupController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupPreHistorySetupController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class GroupPreHistorySetupArguments { let toggle: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/GroupStickerPackCurrentItem.swift b/submodules/TelegramUI/TelegramUI/GroupStickerPackCurrentItem.swift index e444a077d6..2be4966113 100644 --- a/submodules/TelegramUI/TelegramUI/GroupStickerPackCurrentItem.swift +++ b/submodules/TelegramUI/TelegramUI/GroupStickerPackCurrentItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData enum GroupStickerPackCurrentItemContent: Equatable { case notFound diff --git a/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift b/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift index cc9c9decfa..0cb5ec6d30 100644 --- a/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class GroupStickerPackSetupControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/GroupsInCommonController.swift b/submodules/TelegramUI/TelegramUI/GroupsInCommonController.swift index 7a533fbb18..27ff7ee61d 100644 --- a/submodules/TelegramUI/TelegramUI/GroupsInCommonController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupsInCommonController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class GroupsInCommonControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/HashtagChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/HashtagChatInputContextPanelNode.swift index 9b9189d8b4..cff69c33c4 100644 --- a/submodules/TelegramUI/TelegramUI/HashtagChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/HashtagChatInputContextPanelNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import Display +import TelegramPresentationData private struct HashtagChatInputContextPanelEntryStableId: Hashable { let text: String diff --git a/submodules/TelegramUI/TelegramUI/HashtagChatInputPanelItem.swift b/submodules/TelegramUI/TelegramUI/HashtagChatInputPanelItem.swift index 9df7b005d2..3f1869e979 100644 --- a/submodules/TelegramUI/TelegramUI/HashtagChatInputPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/HashtagChatInputPanelItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class HashtagChatInputPanelItem: ListViewItem { fileprivate let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift b/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift index 5977ce5356..789a203194 100644 --- a/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift +++ b/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift @@ -4,6 +4,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData final class HashtagSearchController: TelegramController { private let queue = Queue() diff --git a/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift b/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift index 4c55c4a2b7..ef0de12e0a 100644 --- a/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Postbox import TelegramCore +import TelegramPresentationData final class HashtagSearchControllerNode: ASDisplayNode { private let toolbarBackgroundNode: ASDisplayNode diff --git a/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputContextPanelNode.swift index de1fd3d76d..45ae79f531 100644 --- a/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputContextPanelNode.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import Display import SwiftSignalKit +import TelegramPresentationData private struct ChatContextResultStableId: Hashable { let result: ChatContextResult diff --git a/submodules/TelegramUI/TelegramUI/HorizontalPeerItem.swift b/submodules/TelegramUI/TelegramUI/HorizontalPeerItem.swift index 1fa20b3871..8b06486c62 100644 --- a/submodules/TelegramUI/TelegramUI/HorizontalPeerItem.swift +++ b/submodules/TelegramUI/TelegramUI/HorizontalPeerItem.swift @@ -5,6 +5,7 @@ import Postbox import AsyncDisplayKit import TelegramCore import SwiftSignalKit +import TelegramPresentationData enum HorizontalPeerItemMode { case list diff --git a/submodules/TelegramUI/TelegramUI/HorizontalStickersChatContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/HorizontalStickersChatContextPanelNode.swift index 193f76d463..2232b9eae9 100755 --- a/submodules/TelegramUI/TelegramUI/HorizontalStickersChatContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/HorizontalStickersChatContextPanelNode.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import Display import SwiftSignalKit +import TelegramPresentationData final class HorizontalStickersChatContextPanelInteraction { var previewedStickerItem: StickerPackItem? diff --git a/submodules/TelegramUI/TelegramUI/InChatPrefetchManager.swift b/submodules/TelegramUI/TelegramUI/InChatPrefetchManager.swift index 0fbe3c6ee7..01fe5e1059 100644 --- a/submodules/TelegramUI/TelegramUI/InChatPrefetchManager.swift +++ b/submodules/TelegramUI/TelegramUI/InChatPrefetchManager.swift @@ -2,6 +2,8 @@ import Foundation import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences +import TelegramUIPreferences private final class PrefetchMediaContext { let fetchDisposable = MetaDisposable() diff --git a/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift b/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift index 6f1ca00e22..c2f6745deb 100644 --- a/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift +++ b/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class InstalledStickerPacksControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift b/submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift index be2765a296..b44d45f0ff 100644 --- a/submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private struct InstantImageGalleryThumbnailItem: GalleryThumbnailItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/InstantPageAnchorItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageAnchorItem.swift index d132d32b9f..4620a145e1 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageAnchorItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageAnchorItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData final class InstantPageAnchorItem: InstantPageItem { let wantsNode: Bool = false diff --git a/submodules/TelegramUI/TelegramUI/InstantPageArticleItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageArticleItem.swift index b49a49ae13..7b44506e6c 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageArticleItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageArticleItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData final class InstantPageArticleItem: InstantPageItem { var frame: CGRect diff --git a/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift index a067b161c7..49a2fb4831 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class InstantPageArticleNode: ASDisplayNode, InstantPageNode { let item: InstantPageArticleItem diff --git a/submodules/TelegramUI/TelegramUI/InstantPageAudioItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageAudioItem.swift index 1a23febbf5..a053a80e4f 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageAudioItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageAudioItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData final class InstantPageAudioItem: InstantPageItem { var frame: CGRect diff --git a/submodules/TelegramUI/TelegramUI/InstantPageAudioNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageAudioNode.swift index 06fd06827f..014b7c8f64 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageAudioNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageAudioNode.swift @@ -5,6 +5,8 @@ import Postbox import SwiftSignalKit import AsyncDisplayKit import Display +import TelegramPresentationData +import UniversalMediaPlayer private func generatePlayButton(color: UIColor) -> UIImage? { return generateImage(CGSize(width: 48.0, height: 48.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/InstantPageContentNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageContentNode.swift index 91b1e57dee..bcef539cde 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageContentNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class InstantPageContentNode : ASDisplayNode { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/InstantPageController.swift b/submodules/TelegramUI/TelegramUI/InstantPageController.swift index 1019f8ec04..156e9e56c1 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageController.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageController.swift @@ -4,6 +4,8 @@ import TelegramCore import Postbox import SwiftSignalKit import Display +import TelegramPresentationData +import TelegramUIPreferences final class InstantPageController: ViewController { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/InstantPageControllerNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageControllerNode.swift index 0f2b5200c9..32a15ba75b 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageControllerNode.swift @@ -6,6 +6,8 @@ import SwiftSignalKit import AsyncDisplayKit import Display import SafariServices +import TelegramPresentationData +import TelegramUIPreferences final class InstantPageControllerNode: ASDisplayNode, UIScrollViewDelegate { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/InstantPageDetailsItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageDetailsItem.swift index fb91e2748d..8fb6383e13 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageDetailsItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageDetailsItem.swift @@ -4,6 +4,7 @@ import Postbox import TelegramCore import AsyncDisplayKit import Display +import TelegramPresentationData final class InstantPageDetailsItem: InstantPageItem { var frame: CGRect diff --git a/submodules/TelegramUI/TelegramUI/InstantPageDetailsNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageDetailsNode.swift index 994c3e30a1..4d4dac96cd 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageDetailsNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageDetailsNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private let detailsInset: CGFloat = 17.0 private let titleInset: CGFloat = 22.0 diff --git a/submodules/TelegramUI/TelegramUI/InstantPageFeedbackItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageFeedbackItem.swift index 6bcc947100..57072965f2 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageFeedbackItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageFeedbackItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData final class InstantPageFeedbackItem: InstantPageItem { var frame: CGRect diff --git a/submodules/TelegramUI/TelegramUI/InstantPageFeedbackNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageFeedbackNode.swift index c6171edbba..d64014b437 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageFeedbackNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageFeedbackNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class InstantPageFeedbackNode: ASDisplayNode, InstantPageNode { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/InstantPageGalleryController.swift b/submodules/TelegramUI/TelegramUI/InstantPageGalleryController.swift index bb8574cac9..e21028f11a 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageGalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageGalleryController.swift @@ -7,6 +7,7 @@ import SwiftSignalKit import AsyncDisplayKit import TelegramCore import SafariServices +import TelegramPresentationData struct InstantPageGalleryEntryLocation: Equatable { let position: Int32 diff --git a/submodules/TelegramUI/TelegramUI/InstantPageGalleryFooterContentNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageGalleryFooterContentNode.swift index 2bbef9dc3d..6ae2224d43 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageGalleryFooterContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageGalleryFooterContentNode.swift @@ -6,6 +6,7 @@ import Postbox import TelegramCore import SwiftSignalKit import Photos +import TelegramPresentationData private let actionImage = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionAction"), color: .white) diff --git a/submodules/TelegramUI/TelegramUI/InstantPageImageItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageImageItem.swift index 356e30d358..07ae7288f1 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageImageItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageImageItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData protocol InstantPageImageAttribute { } diff --git a/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift index 929784878d..b553633486 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private struct FetchControls { let fetch: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/InstantPageItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageItem.swift index 21fbae4c58..8f6266aa20 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData protocol InstantPageItem { var frame: CGRect { get set } diff --git a/submodules/TelegramUI/TelegramUI/InstantPageLayout.swift b/submodules/TelegramUI/TelegramUI/InstantPageLayout.swift index 2615b00722..7df78329d1 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageLayout.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageLayout.swift @@ -3,6 +3,8 @@ import UIKit import TelegramCore import Postbox import Display +import TelegramPresentationData +import TelegramUIPreferences final class InstantPageLayout { let origin: CGPoint diff --git a/submodules/TelegramUI/TelegramUI/InstantPageMediaPlaylist.swift b/submodules/TelegramUI/TelegramUI/InstantPageMediaPlaylist.swift index 2798cd1e1d..2aa3926791 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageMediaPlaylist.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageMediaPlaylist.swift @@ -3,6 +3,7 @@ import UIKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences struct InstantPageMediaPlaylistItemId: SharedMediaPlaylistItemId { let index: Int diff --git a/submodules/TelegramUI/TelegramUI/InstantPageNavigationBar.swift b/submodules/TelegramUI/TelegramUI/InstantPageNavigationBar.swift index 19cd4acb30..886077b6bf 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageNavigationBar.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageNavigationBar.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData private let backArrowImage = NavigationBarTheme.generateBackArrowImage(color: .white) private let moreImage = generateTintedImage(image: UIImage(bundleImageName: "Instant View/MoreIcon"), color: .white) diff --git a/submodules/TelegramUI/TelegramUI/InstantPageNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageNode.swift index c1e945e63d..6d1745963b 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData protocol InstantPageNode { func updateIsVisible(_ isVisible: Bool) diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceItem.swift b/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceItem.swift index fe7b5785f6..0da2123e97 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData final class InstantPagePeerReferenceItem: InstantPageItem { var frame: CGRect diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceNode.swift b/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceNode.swift index 45833d2ad3..b8638410de 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceNode.swift @@ -5,6 +5,7 @@ import Postbox import SwiftSignalKit import AsyncDisplayKit import Display +import TelegramPresentationData private enum JoinState: Equatable { case none diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoItem.swift b/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoItem.swift index d12e2eb76f..6327c3bbc6 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData final class InstantPagePlayableVideoItem: InstantPageItem { var frame: CGRect diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoNode.swift b/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoNode.swift index 931444eda6..4a1f95d6b8 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private struct FetchControls { let fetch: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/InstantPageReferenceControllerNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageReferenceControllerNode.swift index cb889d644c..f297d34ca0 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageReferenceControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageReferenceControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SafariServices +import TelegramPresentationData class InstantPageReferenceControllerNode: ViewControllerTracingNode, UIScrollViewDelegate { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/InstantPageScrollableNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageScrollableNode.swift index 72844559aa..3b7ebaee04 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageScrollableNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageScrollableNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import TelegramCore import Postbox import Display +import TelegramPresentationData protocol InstantPageScrollableItem: class, InstantPageItem { var contentSize: CGSize { get } diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsItemTheme.swift b/submodules/TelegramUI/TelegramUI/InstantPageSettingsItemTheme.swift index 633c413031..21205497d2 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageSettingsItemTheme.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageSettingsItemTheme.swift @@ -1,6 +1,8 @@ import Foundation import UIKit import Display +import TelegramPresentationData +import TelegramUIPreferences final class InstantPageSettingsItemTheme: Equatable { let listBackgroundColor: UIColor diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageSettingsNode.swift index 17ede0d08b..8e2df91941 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageSettingsNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageSettingsNode.swift @@ -4,6 +4,8 @@ import Display import AsyncDisplayKit import Postbox import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences private func generateArrowImage(color: UIColor) -> UIImage? { let smallRadius: CGFloat = 5.0 diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsThemeItemNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageSettingsThemeItemNode.swift index dd00adba64..3530f61cf1 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageSettingsThemeItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageSettingsThemeItemNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramUIPreferences private final class InstantPageSettingsThemeSelectorNode: ASDisplayNode { private let selectionNode: ASImageNode diff --git a/submodules/TelegramUI/TelegramUI/InstantPageShapeItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageShapeItem.swift index 470d7e9b30..521a97b162 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageShapeItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageShapeItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData enum InstantPageShape { case rect diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItem.swift index 9b9534b74a..93f07a1b10 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData final class InstantPageSlideshowItem: InstantPageItem { var frame: CGRect diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItemNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItemNode.swift index 1a094385e7..441ae8391e 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItemNode.swift @@ -3,6 +3,7 @@ import UIKit import TelegramCore import AsyncDisplayKit import Display +import TelegramPresentationData private final class InstantPageSlideshowItemNode: ASDisplayNode { private var _index: Int? diff --git a/submodules/TelegramUI/TelegramUI/InstantPageStoredState.swift b/submodules/TelegramUI/TelegramUI/InstantPageStoredState.swift index cfdb1c1272..cfe84c104b 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageStoredState.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageStoredState.swift @@ -3,6 +3,7 @@ import UIKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences final class InstantPageStoredDetailsState: PostboxCoding { let index: Int32 diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTableItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageTableItem.swift index ab6806b49c..edb73dd1d0 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageTableItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageTableItem.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import TelegramCore import Postbox import Display +import TelegramPresentationData private struct TableSide: OptionSet { var rawValue: Int32 = 0 diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTextItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageTextItem.swift index 494ada50ca..048d3732e9 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageTextItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageTextItem.swift @@ -4,6 +4,7 @@ import TelegramCore import Display import Postbox import AsyncDisplayKit +import TelegramPresentationData final class InstantPageUrlItem: Equatable { let url: String diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTheme.swift b/submodules/TelegramUI/TelegramUI/InstantPageTheme.swift index 515205b6ca..124925ab41 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageTheme.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageTheme.swift @@ -2,6 +2,8 @@ import Foundation import UIKit import Postbox import Display +import TelegramPresentationData +import TelegramUIPreferences enum InstantPageFontStyle { case sans diff --git a/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedItem.swift b/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedItem.swift index e28a29e09f..c528c15b14 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedItem.swift @@ -3,6 +3,7 @@ import UIKit import Postbox import TelegramCore import AsyncDisplayKit +import TelegramPresentationData final class InstantPageWebEmbedItem: InstantPageItem { var frame: CGRect diff --git a/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedNode.swift index a8ec2afaae..beed035c1c 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedNode.swift @@ -4,6 +4,7 @@ import TelegramCore import WebKit import AsyncDisplayKit import Display +import TelegramPresentationData private class WeakInstantPageWebEmbedNodeMessageHandler: NSObject, WKScriptMessageHandler { private let f: (WKScriptMessage) -> () diff --git a/submodules/TelegramUI/TelegramUI/InstantVideoRadialStatusNode.swift b/submodules/TelegramUI/TelegramUI/InstantVideoRadialStatusNode.swift index e328a16e1b..293bb32b7f 100644 --- a/submodules/TelegramUI/TelegramUI/InstantVideoRadialStatusNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantVideoRadialStatusNode.swift @@ -3,7 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit - +import UniversalMediaPlayer import LegacyComponents private final class InstantVideoRadialStatusNodeParameters: NSObject { diff --git a/submodules/TelegramUI/TelegramUI/InviteContactsController.swift b/submodules/TelegramUI/TelegramUI/InviteContactsController.swift index ccb5c75c1a..7a043f5ecb 100644 --- a/submodules/TelegramUI/TelegramUI/InviteContactsController.swift +++ b/submodules/TelegramUI/TelegramUI/InviteContactsController.swift @@ -6,6 +6,7 @@ import Postbox import SwiftSignalKit import TelegramCore import MessageUI +import TelegramPresentationData public class InviteContactsController: ViewController, MFMessageComposeViewControllerDelegate, UINavigationControllerDelegate { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/InviteContactsControllerNode.swift b/submodules/TelegramUI/TelegramUI/InviteContactsControllerNode.swift index 92f1845e50..19516d3a2d 100644 --- a/submodules/TelegramUI/TelegramUI/InviteContactsControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/InviteContactsControllerNode.swift @@ -5,6 +5,8 @@ import UIKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences private enum InviteContactsEntryId: Hashable { case option(index: Int) diff --git a/submodules/TelegramUI/TelegramUI/InviteContactsCountPanelNode.swift b/submodules/TelegramUI/TelegramUI/InviteContactsCountPanelNode.swift index 32ba156924..be9ee6247c 100644 --- a/submodules/TelegramUI/TelegramUI/InviteContactsCountPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/InviteContactsCountPanelNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class InviteContactsCountPanelNode: ASDisplayNode { private let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ItemListActionItem.swift b/submodules/TelegramUI/TelegramUI/ItemListActionItem.swift index fa0df050a6..fd0abf6c1e 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListActionItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListActionItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ItemListActionKind { case generic diff --git a/submodules/TelegramUI/TelegramUI/ItemListActivityTextItem.swift b/submodules/TelegramUI/TelegramUI/ItemListActivityTextItem.swift index 3b516a7347..360e1f4a1c 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListActivityTextItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListActivityTextItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class ItemListActivityTextItem: ListViewItem, ItemListItem { let displayActivity: Bool diff --git a/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift b/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift index 4bc277e32e..29e7f877c7 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData final class ItemListAddressItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ItemListAvatarAndNameItem.swift b/submodules/TelegramUI/TelegramUI/ItemListAvatarAndNameItem.swift index ef451d0188..867df57c47 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListAvatarAndNameItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListAvatarAndNameItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private let updatingAvatarOverlayImage = generateFilledCircleImage(diameter: 66.0, color: UIColor(white: 0.0, alpha: 0.4), backgroundColor: nil) diff --git a/submodules/TelegramUI/TelegramUI/ItemListCallListItem.swift b/submodules/TelegramUI/TelegramUI/ItemListCallListItem.swift index 2aff826fc6..285eef3010 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListCallListItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListCallListItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData class ItemListCallListItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ItemListCheckboxItem.swift b/submodules/TelegramUI/TelegramUI/ItemListCheckboxItem.swift index 39a02cefe1..bf2627c198 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListCheckboxItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListCheckboxItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ItemListCheckboxItemStyle { case left diff --git a/submodules/TelegramUI/TelegramUI/ItemListController.swift b/submodules/TelegramUI/TelegramUI/ItemListController.swift index fe298379ae..52f3947a9b 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListController.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListController.swift @@ -3,6 +3,7 @@ import UIKit import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData enum ItemListNavigationButtonStyle { case regular diff --git a/submodules/TelegramUI/TelegramUI/ItemListControllerNode.swift b/submodules/TelegramUI/TelegramUI/ItemListControllerNode.swift index a37e7ff8fa..c24b1601ee 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListControllerNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData typealias ItemListSectionId = Int32 diff --git a/submodules/TelegramUI/TelegramUI/ItemListDisclosureItem.swift b/submodules/TelegramUI/TelegramUI/ItemListDisclosureItem.swift index 9cc4a1a5a6..e5b6093c73 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListDisclosureItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListDisclosureItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ItemListDisclosureItemTitleColor { case primary diff --git a/submodules/TelegramUI/TelegramUI/ItemListEditableDeleteControlNode.swift b/submodules/TelegramUI/TelegramUI/ItemListEditableDeleteControlNode.swift index 42fe5fe96d..1cb87549f5 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListEditableDeleteControlNode.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListEditableDeleteControlNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class ItemListEditableControlNode: ASDisplayNode { var tapped: (() -> Void)? diff --git a/submodules/TelegramUI/TelegramUI/ItemListEditableReorderControlNode.swift b/submodules/TelegramUI/TelegramUI/ItemListEditableReorderControlNode.swift index d9acb4e85e..ac8ff6ed17 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListEditableReorderControlNode.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListEditableReorderControlNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class ItemListEditableReorderControlNode: ASDisplayNode { var tapped: (() -> Void)? diff --git a/submodules/TelegramUI/TelegramUI/ItemListInfoItem.swift b/submodules/TelegramUI/TelegramUI/ItemListInfoItem.swift index 4f96d8e761..d8bf3a574e 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListInfoItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListInfoItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum InfoListItemText { case plain(String) diff --git a/submodules/TelegramUI/TelegramUI/ItemListLoadingIndicatorEmptyStateItem.swift b/submodules/TelegramUI/TelegramUI/ItemListLoadingIndicatorEmptyStateItem.swift index 944bba183a..0d2cadb157 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListLoadingIndicatorEmptyStateItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListLoadingIndicatorEmptyStateItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class ItemListLoadingIndicatorEmptyStateItem: ItemListControllerEmptyStateItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ItemListMultilineInputItem.swift b/submodules/TelegramUI/TelegramUI/ItemListMultilineInputItem.swift index 1101f64714..4d9673d82e 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListMultilineInputItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListMultilineInputItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData struct ItemListMultilineInputItemTextLimit { let value: Int diff --git a/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift b/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift index 16d04c2a4c..e63bbd7017 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum TextLinkItemActionType { case tap diff --git a/submodules/TelegramUI/TelegramUI/ItemListPeerActionItem.swift b/submodules/TelegramUI/TelegramUI/ItemListPeerActionItem.swift index 66df4ef2bf..c1027c47af 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListPeerActionItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListPeerActionItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class ItemListPeerActionItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ItemListPeerItem.swift b/submodules/TelegramUI/TelegramUI/ItemListPeerItem.swift index ebb91f4be8..cf3e0da28b 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListPeerItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListPeerItem.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences struct ItemListPeerItemEditing: Equatable { let editable: Bool diff --git a/submodules/TelegramUI/TelegramUI/ItemListPlaceholderItem.swift b/submodules/TelegramUI/TelegramUI/ItemListPlaceholderItem.swift index fa54d296dc..f6c8392166 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListPlaceholderItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListPlaceholderItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class ItemListPlaceholderItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ItemListRecentSessionItem.swift b/submodules/TelegramUI/TelegramUI/ItemListRecentSessionItem.swift index 98391f7e79..213c6cbc76 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListRecentSessionItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListRecentSessionItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData struct ItemListRecentSessionItemEditing: Equatable { let editable: Bool diff --git a/submodules/TelegramUI/TelegramUI/ItemListSecretChatKeyItem.swift b/submodules/TelegramUI/TelegramUI/ItemListSecretChatKeyItem.swift index 181ef0b0d6..ff37b41d8b 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListSecretChatKeyItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListSecretChatKeyItem.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData class ItemListSecretChatKeyItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ItemListSectionHeaderItem.swift b/submodules/TelegramUI/TelegramUI/ItemListSectionHeaderItem.swift index 609ab8d9ec..232dfdef74 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListSectionHeaderItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListSectionHeaderItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ItemListSectionHeaderAccessoryTextColor { case generic diff --git a/submodules/TelegramUI/TelegramUI/ItemListSingleLineInputItem.swift b/submodules/TelegramUI/TelegramUI/ItemListSingleLineInputItem.swift index 95aa435779..f90676f947 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListSingleLineInputItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListSingleLineInputItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ItemListSingleLineInputItemType: Equatable { case regular(capitalization: Bool, autocorrection: Bool) diff --git a/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift b/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift index b9f38c0283..3c42a2f593 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData struct ItemListStickerPackItemEditing: Equatable { let editable: Bool diff --git a/submodules/TelegramUI/TelegramUI/ItemListSwitchItem.swift b/submodules/TelegramUI/TelegramUI/ItemListSwitchItem.swift index 8c6db97482..0684e96d6e 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListSwitchItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListSwitchItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ItemListSwitchItemNodeType { case regular diff --git a/submodules/TelegramUI/TelegramUI/ItemListTextItem.swift b/submodules/TelegramUI/TelegramUI/ItemListTextItem.swift index e12cbce4d4..50a7802d77 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListTextItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListTextItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ItemListTextItemText { case plain(String) diff --git a/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift b/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift index 229d897f3f..18944d6b0a 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ItemListTextWithLabelItemTextColor { case primary diff --git a/submodules/TelegramUI/TelegramUI/ItemListWebsiteItem.swift b/submodules/TelegramUI/TelegramUI/ItemListWebsiteItem.swift index 1e1d3a98a2..c2174102be 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListWebsiteItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListWebsiteItem.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences struct ItemListWebsiteItemEditing: Equatable { let editing: Bool diff --git a/submodules/TelegramUI/TelegramUI/JoinLinkPreviewController.swift b/submodules/TelegramUI/TelegramUI/JoinLinkPreviewController.swift index 79ffca558e..9c33b501fd 100644 --- a/submodules/TelegramUI/TelegramUI/JoinLinkPreviewController.swift +++ b/submodules/TelegramUI/TelegramUI/JoinLinkPreviewController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData public final class JoinLinkPreviewController: ViewController { private var controllerNode: JoinLinkPreviewControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/JoinLinkPreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/JoinLinkPreviewControllerNode.swift index 2cc3f2992d..b2139000ea 100644 --- a/submodules/TelegramUI/TelegramUI/JoinLinkPreviewControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/JoinLinkPreviewControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData struct JoinLinkPreviewData { let isGroup: Bool diff --git a/submodules/TelegramUI/TelegramUI/JoinLinkPreviewPeerContentNode.swift b/submodules/TelegramUI/TelegramUI/JoinLinkPreviewPeerContentNode.swift index efa90e1148..bb7c77f4c1 100644 --- a/submodules/TelegramUI/TelegramUI/JoinLinkPreviewPeerContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/JoinLinkPreviewPeerContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 26.0)! diff --git a/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewContentNode.swift b/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewContentNode.swift index 77fc88522a..7ea90ec23f 100644 --- a/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData final class LanguageLinkPreviewContentNode: ASDisplayNode, ShareContentContainerNode { private var contentOffsetUpdated: ((CGFloat, ContainedViewLayoutTransition) -> Void)? diff --git a/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewController.swift b/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewController.swift index e6931edb30..da5709819e 100644 --- a/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewController.swift +++ b/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData public final class LanguageLinkPreviewController: ViewController { private var controllerNode: LanguageLinkPreviewControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewControllerNode.swift index 98771656dc..9fcc8e9847 100644 --- a/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/LanguageLinkPreviewControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData final class LanguageLinkPreviewControllerNode: ViewControllerTracingNode, UIScrollViewDelegate { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/LanguageSuggestionController.swift b/submodules/TelegramUI/TelegramUI/LanguageSuggestionController.swift index 8aa8404278..f57f0a9572 100644 --- a/submodules/TelegramUI/TelegramUI/LanguageSuggestionController.swift +++ b/submodules/TelegramUI/TelegramUI/LanguageSuggestionController.swift @@ -4,6 +4,7 @@ import SwiftSignalKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData struct LanguageSuggestionControllerStrings { let ChooseLanguage: String diff --git a/submodules/TelegramUI/TelegramUI/LegacyAttachmentMenu.swift b/submodules/TelegramUI/TelegramUI/LegacyAttachmentMenu.swift index 31771f1f4f..2f07df9558 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyAttachmentMenu.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyAttachmentMenu.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import DeviceAccess func legacyAttachmentMenu(context: AccountContext, peer: Peer, editMediaOptions: MessageMediaEditingOptions?, saveEditedPhotos: Bool, allowGrouping: Bool, theme: PresentationTheme, strings: PresentationStrings, parentController: LegacyController, recentlyUsedInlineBots: [Peer], initialCaption: String, openGallery: @escaping () -> Void, openCamera: @escaping (TGAttachmentCameraView?, TGMenuSheetController?) -> Void, openFileGallery: @escaping () -> Void, openWebSearch: @escaping () -> Void, openMap: @escaping () -> Void, openContacts: @escaping () -> Void, openPoll: @escaping () -> Void, sendMessagesWithSignals: @escaping ([Any]?) -> Void, selectRecentlyUsedInlineBot: @escaping (Peer) -> Void) -> TGMenuSheetController { let isSecretChat = peer.id.namespace == Namespaces.Peer.SecretChat diff --git a/submodules/TelegramUI/TelegramUI/LegacyAvatarPicker.swift b/submodules/TelegramUI/TelegramUI/LegacyAvatarPicker.swift index 7ad23d3f0f..51f508e795 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyAvatarPicker.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyAvatarPicker.swift @@ -3,6 +3,7 @@ import UIKit import Display import SwiftSignalKit import LegacyComponents +import TelegramPresentationData func presentLegacyAvatarPicker(holder: Atomic, signup: Bool, theme: PresentationTheme, present: (ViewController, Any?) -> Void, openCurrent: (() -> Void)?, completion: @escaping (UIImage) -> Void) { let legacyController = LegacyController(presentation: .custom, theme: theme) diff --git a/submodules/TelegramUI/TelegramUI/LegacyChannelIntroController.swift b/submodules/TelegramUI/TelegramUI/LegacyChannelIntroController.swift index cc2ee52ab1..abf4953502 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyChannelIntroController.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyChannelIntroController.swift @@ -1,6 +1,7 @@ import Foundation import TelegramCore import Display +import TelegramPresentationData import TelegramUIPrivateModule diff --git a/Telegram-iOS/LegacyChatImport.swift b/submodules/TelegramUI/TelegramUI/LegacyChatImport.swift similarity index 100% rename from Telegram-iOS/LegacyChatImport.swift rename to submodules/TelegramUI/TelegramUI/LegacyChatImport.swift diff --git a/submodules/TelegramUI/TelegramUI/LegacyComponentsStickers.swift b/submodules/TelegramUI/TelegramUI/LegacyComponentsStickers.swift index dbaf554abe..07c2de8cb1 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyComponentsStickers.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyComponentsStickers.swift @@ -4,6 +4,7 @@ import LegacyComponents import Postbox import TelegramCore import SwiftSignalKit +import Display func stickerFromLegacyDocument(_ documentAttachment: TGDocumentMediaAttachment) -> TelegramMediaFile? { if documentAttachment.isSticker() { diff --git a/submodules/TelegramUI/TelegramUI/LegacyController.swift b/submodules/TelegramUI/TelegramUI/LegacyController.swift index 8e8466516b..99f7c3e5ab 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyController.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyController.swift @@ -3,6 +3,7 @@ import UIKit import Display import SwiftSignalKit import LegacyComponents +import TelegramPresentationData public enum LegacyControllerPresentation { case custom diff --git a/Telegram-iOS/LegacyDataImport.swift b/submodules/TelegramUI/TelegramUI/LegacyDataImport.swift similarity index 100% rename from Telegram-iOS/LegacyDataImport.swift rename to submodules/TelegramUI/TelegramUI/LegacyDataImport.swift diff --git a/Telegram-iOS/LegacyDataImportSplash.swift b/submodules/TelegramUI/TelegramUI/LegacyDataImportSplash.swift similarity index 99% rename from Telegram-iOS/LegacyDataImportSplash.swift rename to submodules/TelegramUI/TelegramUI/LegacyDataImportSplash.swift index 2f349190d5..1b1cf3642c 100644 --- a/Telegram-iOS/LegacyDataImportSplash.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyDataImportSplash.swift @@ -1,7 +1,7 @@ import Foundation import Display import AsyncDisplayKit -import TelegramUI +import TelegramPresentationData final class LegacyDataImportSplash: WindowCoveringView { private let theme: PresentationTheme? diff --git a/Telegram-iOS/LegacyFileImport.swift b/submodules/TelegramUI/TelegramUI/LegacyFileImport.swift similarity index 100% rename from Telegram-iOS/LegacyFileImport.swift rename to submodules/TelegramUI/TelegramUI/LegacyFileImport.swift diff --git a/submodules/TelegramUI/TelegramUI/LegacyICloudFileController.swift b/submodules/TelegramUI/TelegramUI/LegacyICloudFileController.swift index 94b43b979a..c3a37eecac 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyICloudFileController.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyICloudFileController.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import Display +import TelegramPresentationData private final class LegacyICloudFileController: LegacyController, UIDocumentPickerDelegate { let completion: ([URL]) -> Void diff --git a/submodules/TelegramUI/TelegramUI/LegacyImagePicker.swift b/submodules/TelegramUI/TelegramUI/LegacyImagePicker.swift index c565a0869f..ac7c3e4303 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyImagePicker.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyImagePicker.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import LegacyComponents +import TelegramPresentationData private final class LegacyImagePickerController: LegacyController, TGLegacyCameraControllerDelegate, TGImagePickerControllerDelegate { private let completion: (UIImage?) -> Void diff --git a/submodules/TelegramUI/TelegramUI/LegacyInstantVideoController.swift b/submodules/TelegramUI/TelegramUI/LegacyInstantVideoController.swift index 4e1cbeebb5..72fde23d43 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyInstantVideoController.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyInstantVideoController.swift @@ -4,6 +4,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData import LegacyComponents diff --git a/submodules/TelegramUI/TelegramUI/LegacyLocationController.swift b/submodules/TelegramUI/TelegramUI/LegacyLocationController.swift index 5d4c2410ab..400775f304 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyLocationController.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyLocationController.swift @@ -4,6 +4,7 @@ import Display import LegacyComponents import TelegramCore import Postbox +import TelegramPresentationData private func generateClearIcon(color: UIColor) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: color) diff --git a/submodules/TelegramUI/TelegramUI/LegacyLocationPicker.swift b/submodules/TelegramUI/TelegramUI/LegacyLocationPicker.swift index c72cc85e90..597d8b0222 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyLocationPicker.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyLocationPicker.swift @@ -5,6 +5,7 @@ import LegacyComponents import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData private func generateClearIcon(color: UIColor) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: color) diff --git a/submodules/TelegramUI/TelegramUI/LegacyMediaPickers.swift b/submodules/TelegramUI/TelegramUI/LegacyMediaPickers.swift index af3cfaa967..0fae122c24 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyMediaPickers.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyMediaPickers.swift @@ -6,8 +6,9 @@ import TelegramCore import Postbox import SSignalKit import Display - +import TelegramPresentationData import TelegramUIPrivateModule +import DeviceAccess func guessMimeTypeByFileExtension(_ ext: String) -> String { return TGMimeTypeMap.mimeType(forExtension: ext) ?? "application/binary" @@ -36,7 +37,7 @@ func legacyAssetPicker(context: AccountContext, presentationData: PresentationDa return Signal { subscriber in let intent = fileMode ? TGMediaAssetsControllerSendFileIntent : TGMediaAssetsControllerSendMediaIntent - DeviceAccess.authorizeAccess(to: .mediaLibrary(.send), context: context, presentationData: presentationData, present: context.sharedContext.presentGlobalController, openSettings: context.sharedContext.applicationBindings.openSettings, { value in + DeviceAccess.authorizeAccess(to: .mediaLibrary(.send), presentationData: presentationData, present: context.sharedContext.presentGlobalController, openSettings: context.sharedContext.applicationBindings.openSettings, { value in if !value { subscriber.putError(Void()) return diff --git a/Telegram-iOS/LegacyPreferencesImport.swift b/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift similarity index 99% rename from Telegram-iOS/LegacyPreferencesImport.swift rename to submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift index f0902124ab..f8f12f8d89 100644 --- a/Telegram-iOS/LegacyPreferencesImport.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift @@ -8,12 +8,12 @@ import MtProtoKit #else import MtProtoKitDynamic #endif -import TelegramUI +import TelegramUIPreferences #if BUCK import AppBinaryPrivate #endif - +import TelegramUIPrivateModule import LegacyComponents @objc(TGPresentationState) private final class TGPresentationState: NSObject, NSCoding { diff --git a/Telegram-iOS/LegacyResourceImport.swift b/submodules/TelegramUI/TelegramUI/LegacyResourceImport.swift similarity index 100% rename from Telegram-iOS/LegacyResourceImport.swift rename to submodules/TelegramUI/TelegramUI/LegacyResourceImport.swift diff --git a/submodules/TelegramUI/TelegramUI/LegacySecureIdScanController.swift b/submodules/TelegramUI/TelegramUI/LegacySecureIdScanController.swift index 3ee169c92e..a4675b66a3 100644 --- a/submodules/TelegramUI/TelegramUI/LegacySecureIdScanController.swift +++ b/submodules/TelegramUI/TelegramUI/LegacySecureIdScanController.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import LegacyComponents +import TelegramPresentationData func legacySecureIdScanController(theme: PresentationTheme, strings: PresentationStrings, finished: @escaping (SecureIdRecognizedDocumentData?) -> Void) -> ViewController { let legacyController = LegacyController(presentation: .modal(animateIn: true), theme: theme, strings: strings) diff --git a/Telegram-iOS/LegacyUserDataImport.swift b/submodules/TelegramUI/TelegramUI/LegacyUserDataImport.swift similarity index 100% rename from Telegram-iOS/LegacyUserDataImport.swift rename to submodules/TelegramUI/TelegramUI/LegacyUserDataImport.swift diff --git a/submodules/TelegramUI/TelegramUI/LegacyWallpaperEditor.swift b/submodules/TelegramUI/TelegramUI/LegacyWallpaperEditor.swift index f10125ae28..a98541296d 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyWallpaperEditor.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyWallpaperEditor.swift @@ -3,6 +3,8 @@ import UIKit import Display import SwiftSignalKit import LegacyComponents +import TelegramPresentationData +import DeviceAccess private final class LegacyWallpaperEditorController: LegacyController, TGWallpaperControllerDelegate { private let completion: (UIImage?) -> Void @@ -53,7 +55,7 @@ func legacyWallpaperPicker(context: AccountContext, presentationData: Presentati return Signal { subscriber in let intent = TGMediaAssetsControllerSetCustomWallpaperIntent - DeviceAccess.authorizeAccess(to: .mediaLibrary(.wallpaper), context: context, presentationData: presentationData, present: context.sharedContext.presentGlobalController, openSettings: context.sharedContext.applicationBindings.openSettings, { value in + DeviceAccess.authorizeAccess(to: .mediaLibrary(.wallpaper), presentationData: presentationData, present: context.sharedContext.presentGlobalController, openSettings: context.sharedContext.applicationBindings.openSettings, { value in if !value { subscriber.putError(Void()) return diff --git a/submodules/TelegramUI/TelegramUI/LegacyWebSearchEditor.swift b/submodules/TelegramUI/TelegramUI/LegacyWebSearchEditor.swift index 4174296f53..2d361d6c65 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyWebSearchEditor.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyWebSearchEditor.swift @@ -6,6 +6,7 @@ import TelegramCore import Postbox import SSignalKit import Display +import TelegramPresentationData func presentLegacyWebSearchEditor(context: AccountContext, theme: PresentationTheme, result: ChatContextResult, initialLayout: ContainerViewLayout?, updateHiddenMedia: @escaping (String?) -> Void, transitionHostView: @escaping () -> UIView?, transitionView: @escaping (ChatContextResult) -> UIView?, completed: @escaping (UIImage) -> Void, present: @escaping (ViewController, Any?) -> Void) { guard let item = legacyWebSearchItem(account: context.account, result: result) else { diff --git a/submodules/TelegramUI/TelegramUI/LegacyWebSearchGallery.swift b/submodules/TelegramUI/TelegramUI/LegacyWebSearchGallery.swift index f5f0ccede7..d302c49ee4 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyWebSearchGallery.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyWebSearchGallery.swift @@ -7,6 +7,7 @@ import Postbox import SSignalKit import UIKit import Display +import TelegramPresentationData class LegacyWebSearchItem: NSObject, TGMediaEditableItem, TGMediaSelectableItem { var isVideo: Bool { diff --git a/submodules/TelegramUI/TelegramUI/ListMessageDateHeader.swift b/submodules/TelegramUI/TelegramUI/ListMessageDateHeader.swift index 1599d71689..22b75af6f9 100644 --- a/submodules/TelegramUI/TelegramUI/ListMessageDateHeader.swift +++ b/submodules/TelegramUI/TelegramUI/ListMessageDateHeader.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData private let timezoneOffset: Int32 = { let nowTimestamp = Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970) diff --git a/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift b/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift index 070325494d..82d6464ed2 100644 --- a/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private let extensionImageCache = Atomic<[UInt32: UIImage]>(value: [:]) diff --git a/submodules/TelegramUI/TelegramUI/ListMessageItem.swift b/submodules/TelegramUI/TelegramUI/ListMessageItem.swift index 31a8929526..84e34aa529 100644 --- a/submodules/TelegramUI/TelegramUI/ListMessageItem.swift +++ b/submodules/TelegramUI/TelegramUI/ListMessageItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class ListMessageItem: ListViewItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift b/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift index 8e82eea0b7..89cc1f653f 100644 --- a/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private let titleFont = Font.medium(16.0) private let descriptionFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/ListSectionHeaderNode.swift b/submodules/TelegramUI/TelegramUI/ListSectionHeaderNode.swift index cb6555d4ee..2a80960520 100644 --- a/submodules/TelegramUI/TelegramUI/ListSectionHeaderNode.swift +++ b/submodules/TelegramUI/TelegramUI/ListSectionHeaderNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.bold(13.0) private let actionFont = Font.medium(13.0) diff --git a/submodules/TelegramUI/TelegramUI/Locale.swift b/submodules/TelegramUI/TelegramUI/Locale.swift index b3da528516..c8d6425612 100644 --- a/submodules/TelegramUI/TelegramUI/Locale.swift +++ b/submodules/TelegramUI/TelegramUI/Locale.swift @@ -1,4 +1,5 @@ import Foundation +import TelegramPresentationData private let systemLocaleRegionSuffix: String = { let identifier = Locale.current.identifier diff --git a/submodules/TelegramUI/TelegramUI/LocalizationListController.swift b/submodules/TelegramUI/TelegramUI/LocalizationListController.swift index cdd9a6360d..6aafe2a3d5 100644 --- a/submodules/TelegramUI/TelegramUI/LocalizationListController.swift +++ b/submodules/TelegramUI/TelegramUI/LocalizationListController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import SwiftSignalKit import TelegramCore +import TelegramPresentationData public class LocalizationListController: ViewController { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/LocalizationListControllerNode.swift b/submodules/TelegramUI/TelegramUI/LocalizationListControllerNode.swift index b2c287e008..5f55acc0ed 100644 --- a/submodules/TelegramUI/TelegramUI/LocalizationListControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/LocalizationListControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private enum LanguageListSection: ItemListSectionId { case official diff --git a/submodules/TelegramUI/TelegramUI/LocalizationListItem.swift b/submodules/TelegramUI/TelegramUI/LocalizationListItem.swift index 93580c74f3..435259b752 100644 --- a/submodules/TelegramUI/TelegramUI/LocalizationListItem.swift +++ b/submodules/TelegramUI/TelegramUI/LocalizationListItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData struct LocalizationListItemEditing: Equatable { let editable: Bool diff --git a/submodules/TelegramUI/TelegramUI/LocationBroadcastActionSheetItem.swift b/submodules/TelegramUI/TelegramUI/LocationBroadcastActionSheetItem.swift index feeb2783ff..3641e27fcc 100644 --- a/submodules/TelegramUI/TelegramUI/LocationBroadcastActionSheetItem.swift +++ b/submodules/TelegramUI/TelegramUI/LocationBroadcastActionSheetItem.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import TelegramCore import Postbox +import TelegramPresentationData public class LocationBroadcastActionSheetItem: ActionSheetItem { public let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/LocationBroadcastNavigationAccessoryPanel.swift b/submodules/TelegramUI/TelegramUI/LocationBroadcastNavigationAccessoryPanel.swift index 19df869126..6a170aae68 100644 --- a/submodules/TelegramUI/TelegramUI/LocationBroadcastNavigationAccessoryPanel.swift +++ b/submodules/TelegramUI/TelegramUI/LocationBroadcastNavigationAccessoryPanel.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import TelegramCore import Postbox +import TelegramPresentationData private let titleFont = Font.regular(12.0) private let subtitleFont = Font.regular(10.0) diff --git a/Telegram-iOS/LockedWindowCoveringView.swift b/submodules/TelegramUI/TelegramUI/LockedWindowCoveringView.swift similarity index 96% rename from Telegram-iOS/LockedWindowCoveringView.swift rename to submodules/TelegramUI/TelegramUI/LockedWindowCoveringView.swift index 08c55a58a2..6da82ea64e 100644 --- a/Telegram-iOS/LockedWindowCoveringView.swift +++ b/submodules/TelegramUI/TelegramUI/LockedWindowCoveringView.swift @@ -1,6 +1,6 @@ import Foundation import Display -import TelegramUI +import TelegramPresentationData import AsyncDisplayKit final class LockedWindowCoveringView: WindowCoveringView { diff --git a/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift b/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift index acce0af0c2..ff6099968a 100644 --- a/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift +++ b/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Postbox import TelegramCore import LegacyComponents +import TelegramPresentationData private struct LogoutOptionsItemArguments { let addAccount: () -> Void diff --git a/Telegram-iOS/ManageSharedAccountInfo.swift b/submodules/TelegramUI/TelegramUI/ManageSharedAccountInfo.swift similarity index 99% rename from Telegram-iOS/ManageSharedAccountInfo.swift rename to submodules/TelegramUI/TelegramUI/ManageSharedAccountInfo.swift index 9a533b63cf..7593e987f2 100644 --- a/Telegram-iOS/ManageSharedAccountInfo.swift +++ b/submodules/TelegramUI/TelegramUI/ManageSharedAccountInfo.swift @@ -2,6 +2,7 @@ import Foundation import SwiftSignalKit import TelegramCore import Postbox +import LightweightAccountData private func accountInfo(account: Account) -> Signal { let peerName = account.postbox.transaction { transaction -> String in diff --git a/submodules/TelegramUI/TelegramUI/ManagedAudioRecorder.swift b/submodules/TelegramUI/TelegramUI/ManagedAudioRecorder.swift index 7ffac34d92..556320ad5e 100644 --- a/submodules/TelegramUI/TelegramUI/ManagedAudioRecorder.swift +++ b/submodules/TelegramUI/TelegramUI/ManagedAudioRecorder.swift @@ -4,6 +4,8 @@ import TelegramUIPrivateModule import CoreMedia import AVFoundation import TelegramCore +import TelegramAudio +import UniversalMediaPlayer private let kOutputBus: UInt32 = 0 private let kInputBus: UInt32 = 1 diff --git a/submodules/TelegramUI/TelegramUI/MediaInputPaneTrendingItem.swift b/submodules/TelegramUI/TelegramUI/MediaInputPaneTrendingItem.swift index 1c88751823..8c934c3470 100644 --- a/submodules/TelegramUI/TelegramUI/MediaInputPaneTrendingItem.swift +++ b/submodules/TelegramUI/TelegramUI/MediaInputPaneTrendingItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData class MediaInputPaneTrendingItem: ListViewItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/MediaManager.swift b/submodules/TelegramUI/TelegramUI/MediaManager.swift index 63d812e04a..d69694d8c0 100644 --- a/submodules/TelegramUI/TelegramUI/MediaManager.swift +++ b/submodules/TelegramUI/TelegramUI/MediaManager.swift @@ -5,8 +5,10 @@ import MobileCoreServices import Postbox import TelegramCore import MediaPlayer - +import TelegramAudio import TelegramUIPrivateModule +import UniversalMediaPlayer +import TelegramUIPreferences enum SharedMediaPlayerGroup: Int { case music = 0 diff --git a/submodules/TelegramUI/TelegramUI/MediaNavigationAccessoryContainerNode.swift b/submodules/TelegramUI/TelegramUI/MediaNavigationAccessoryContainerNode.swift index f7387bf132..9b296a10cd 100644 --- a/submodules/TelegramUI/TelegramUI/MediaNavigationAccessoryContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/MediaNavigationAccessoryContainerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData final class MediaNavigationAccessoryContainerNode: ASDisplayNode, UIGestureRecognizerDelegate { let backgroundNode: ASDisplayNode diff --git a/submodules/TelegramUI/TelegramUI/MediaNavigationAccessoryHeaderNode.swift b/submodules/TelegramUI/TelegramUI/MediaNavigationAccessoryHeaderNode.swift index f076f85d6f..8c63ed03a2 100644 --- a/submodules/TelegramUI/TelegramUI/MediaNavigationAccessoryHeaderNode.swift +++ b/submodules/TelegramUI/TelegramUI/MediaNavigationAccessoryHeaderNode.swift @@ -4,6 +4,9 @@ import AsyncDisplayKit import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences +import UniversalMediaPlayer private let titleFont = Font.regular(12.0) private let subtitleFont = Font.regular(10.0) diff --git a/submodules/TelegramUI/TelegramUI/MediaTrackDecodableFrame.swift b/submodules/TelegramUI/TelegramUI/MediaTrackDecodableFrame.swift deleted file mode 100644 index d3c0991667..0000000000 --- a/submodules/TelegramUI/TelegramUI/MediaTrackDecodableFrame.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Foundation -import CoreMedia -import FFMpeg - -enum MediaTrackFrameType { - case video - case audio -} - -final class MediaTrackDecodableFrame { - let type: MediaTrackFrameType - let packet: FFMpegPacket - let pts: CMTime - let dts: CMTime - let duration: CMTime - - init(type: MediaTrackFrameType, packet: FFMpegPacket, pts: CMTime, dts: CMTime, duration: CMTime) { - self.type = type - - self.pts = pts - self.dts = dts - self.duration = duration - - self.packet = packet - } -} diff --git a/submodules/TelegramUI/TelegramUI/MediaTrackFrame.swift b/submodules/TelegramUI/TelegramUI/MediaTrackFrame.swift deleted file mode 100644 index 7dd8f0b19d..0000000000 --- a/submodules/TelegramUI/TelegramUI/MediaTrackFrame.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Foundation -import CoreMedia - -final class MediaTrackFrame { - let type: MediaTrackFrameType - let sampleBuffer: CMSampleBuffer - let resetDecoder: Bool - let decoded: Bool - let rotationAngle: Double - - init(type: MediaTrackFrameType, sampleBuffer: CMSampleBuffer, resetDecoder: Bool, decoded: Bool, rotationAngle: Double = 0.0) { - self.type = type - self.sampleBuffer = sampleBuffer - self.resetDecoder = resetDecoder - self.decoded = decoded - self.rotationAngle = rotationAngle - } - - var position: CMTime { - return CMSampleBufferGetPresentationTimeStamp(self.sampleBuffer) - } - - var duration: CMTime { - return CMSampleBufferGetDuration(self.sampleBuffer) - } -} diff --git a/submodules/TelegramUI/TelegramUI/MentionChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/MentionChatInputContextPanelNode.swift index 4f8352541b..4359741458 100644 --- a/submodules/TelegramUI/TelegramUI/MentionChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/MentionChatInputContextPanelNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import Display +import TelegramPresentationData private struct MentionChatInputContextPanelEntry: Comparable, Identifiable { let index: Int diff --git a/submodules/TelegramUI/TelegramUI/MentionChatInputPanelItem.swift b/submodules/TelegramUI/TelegramUI/MentionChatInputPanelItem.swift index 1b2814a4a9..4e8dd1177c 100644 --- a/submodules/TelegramUI/TelegramUI/MentionChatInputPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/MentionChatInputPanelItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class MentionChatInputPanelItem: ListViewItem { fileprivate let account: Account diff --git a/submodules/TelegramUI/TelegramUI/MessageContentKind.swift b/submodules/TelegramUI/TelegramUI/MessageContentKind.swift index 8ebddf9308..6922a0da7c 100644 --- a/submodules/TelegramUI/TelegramUI/MessageContentKind.swift +++ b/submodules/TelegramUI/TelegramUI/MessageContentKind.swift @@ -1,6 +1,8 @@ import Foundation import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences public enum MessageContentKindKey { case text diff --git a/submodules/TelegramUI/TelegramUI/MultipleAvatarsNode.swift b/submodules/TelegramUI/TelegramUI/MultipleAvatarsNode.swift index f507adbc23..3caabf364e 100644 --- a/submodules/TelegramUI/TelegramUI/MultipleAvatarsNode.swift +++ b/submodules/TelegramUI/TelegramUI/MultipleAvatarsNode.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import Postbox import TelegramCore +import TelegramPresentationData private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 13.0)! diff --git a/submodules/TelegramUI/TelegramUI/MultiplexedSoftwareVideoSourceManager.swift b/submodules/TelegramUI/TelegramUI/MultiplexedSoftwareVideoSourceManager.swift index 41734ef0a7..61f789fb89 100644 --- a/submodules/TelegramUI/TelegramUI/MultiplexedSoftwareVideoSourceManager.swift +++ b/submodules/TelegramUI/TelegramUI/MultiplexedSoftwareVideoSourceManager.swift @@ -4,6 +4,7 @@ import Postbox import TelegramCore import SwiftSignalKit import CoreMedia +import UniversalMediaPlayer private final class RunningSoftwareVideoSource { let fetchDisposable: Disposable diff --git a/submodules/TelegramUI/TelegramUI/NativeVideoContent.swift b/submodules/TelegramUI/TelegramUI/NativeVideoContent.swift index f16296b1ff..db75e8cb04 100644 --- a/submodules/TelegramUI/TelegramUI/NativeVideoContent.swift +++ b/submodules/TelegramUI/TelegramUI/NativeVideoContent.swift @@ -5,6 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramAudio +import UniversalMediaPlayer enum NativeVideoContentId: Hashable { case message(MessageId, UInt32, MediaId) diff --git a/submodules/TelegramUI/TelegramUI/NavigationBarSearchContentNode.swift b/submodules/TelegramUI/TelegramUI/NavigationBarSearchContentNode.swift index d204d47021..a03c382fc5 100644 --- a/submodules/TelegramUI/TelegramUI/NavigationBarSearchContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/NavigationBarSearchContentNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let searchBarFont = Font.regular(17.0) let navigationBarSearchContentHeight: CGFloat = 54.0 diff --git a/submodules/TelegramUI/TelegramUI/NetworkUsageStatsController.swift b/submodules/TelegramUI/TelegramUI/NetworkUsageStatsController.swift index 656c4c1731..5cf874e97c 100644 --- a/submodules/TelegramUI/TelegramUI/NetworkUsageStatsController.swift +++ b/submodules/TelegramUI/TelegramUI/NetworkUsageStatsController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private enum NetworkUsageControllerSection { case cellular diff --git a/submodules/TelegramUI/TelegramUI/NotificationContainerController.swift b/submodules/TelegramUI/TelegramUI/NotificationContainerController.swift index a41dde7edf..e2ffbef98e 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationContainerController.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationContainerController.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import TelegramCore import SwiftSignalKit +import TelegramPresentationData public final class NotificationContainerController: ViewController { private var controllerNode: NotificationContainerControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/NotificationContainerControllerNode.swift b/submodules/TelegramUI/TelegramUI/NotificationContainerControllerNode.swift index b0f53e6b81..3fa4ed39c7 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationContainerControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationContainerControllerNode.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData private final class NotificationContainerControllerNodeView: UITracingLayerView { var hitTestImpl: ((CGPoint, UIEvent?) -> UIView?)? diff --git a/submodules/TelegramUI/TelegramUI/NotificationContentContext.swift b/submodules/TelegramUI/TelegramUI/NotificationContentContext.swift new file mode 100644 index 0000000000..86fa222473 --- /dev/null +++ b/submodules/TelegramUI/TelegramUI/NotificationContentContext.swift @@ -0,0 +1,293 @@ +import UIKit +import UserNotifications +import UserNotificationsUI +import Display +import TelegramCore +import SwiftSignalKit +import Postbox +import TelegramPresentationData +import TelegramUIPreferences +import TelegramUIPrivateModule + +private enum NotificationContentAuthorizationError { + case unauthorized +} + +private var sharedAccountContext: SharedAccountContext? + +private var installedSharedLogger = false + +private func setupSharedLogger(_ path: String) { + if !installedSharedLogger { + installedSharedLogger = true + Logger.setSharedLogger(Logger(basePath: path)) + } +} + +private func parseFileLocationResource(_ dict: [AnyHashable: Any]) -> TelegramMediaResource? { + guard let datacenterId = dict["datacenterId"] as? Int32 else { + return nil + } + guard let volumeId = dict["volumeId"] as? Int64 else { + return nil + } + guard let localId = dict["localId"] as? Int32 else { + return nil + } + guard let secret = dict["secret"] as? Int64 else { + return nil + } + var fileReference: Data? + if let fileReferenceString = dict["fileReference"] as? String { + fileReference = dataWithHexString(fileReferenceString) + } + return CloudFileMediaResource(datacenterId: Int(datacenterId), volumeId: volumeId, localId: localId, secret: secret, size: nil, fileReference: fileReference) +} + +public struct NotificationViewControllerInitializationData { + public let appGroupPath: String + public let apiId: Int32 + public let languagesCategory: String + public let encryptionParameters: (Data, Data) + public let appVersion: String + public let bundleData: Data? + + public init(appGroupPath: String, apiId: Int32, languagesCategory: String, encryptionParameters: (Data, Data), appVersion: String, bundleData: Data?) { + self.appGroupPath = appGroupPath + self.apiId = apiId + self.languagesCategory = languagesCategory + self.encryptionParameters = encryptionParameters + self.appVersion = appVersion + self.bundleData = bundleData + } +} + +@available(iOSApplicationExtension 10.0, iOS 10.0, *) +public final class NotificationViewControllerImpl { + private let initializationData: NotificationViewControllerInitializationData + private let setPreferredContentSize: (CGSize) -> Void + + private let imageNode = TransformImageNode() + private var imageInfo: (isSticker: Bool, dimensions: CGSize)? + + private let applyDisposable = MetaDisposable() + private let fetchedDisposable = MetaDisposable() + + private var accountsPath: String? + + public init(initializationData: NotificationViewControllerInitializationData, setPreferredContentSize: @escaping (CGSize) -> Void) { + self.initializationData = initializationData + self.setPreferredContentSize = setPreferredContentSize + } + + deinit { + self.applyDisposable.dispose() + self.fetchedDisposable.dispose() + } + + public func viewDidLoad(view: UIView) { + view.addSubnode(self.imageNode) + + let rootPath = rootPathForBasePath(self.initializationData.appGroupPath) + performAppGroupUpgrades(appGroupPath: self.initializationData.appGroupPath, rootPath: rootPath) + + TempBox.initializeShared(basePath: rootPath, processType: "notification-content", launchSpecificId: arc4random64()) + + let logsPath = rootPath + "/notificationcontent-logs" + let _ = try? FileManager.default.createDirectory(atPath: logsPath, withIntermediateDirectories: true, attributes: nil) + + setupSharedLogger(logsPath) + + accountsPath = rootPath + + if sharedAccountContext == nil { + initializeAccountManagement() + let accountManager = AccountManager(basePath: rootPath + "/accounts-metadata") + + var initialPresentationDataAndSettings: InitialPresentationDataAndSettings? + let semaphore = DispatchSemaphore(value: 0) + let _ = currentPresentationDataAndSettings(accountManager: accountManager).start(next: { value in + initialPresentationDataAndSettings = value + semaphore.signal() + }) + semaphore.wait() + + let applicationBindings = TelegramApplicationBindings(isMainApp: false, containerPath: self.initializationData.appGroupPath, appSpecificScheme: "tgapp", openUrl: { _ in + }, openUniversalUrl: { _, completion in + completion.completion(false) + return + }, canOpenUrl: { _ in + return false + }, getTopWindow: { + return nil + }, displayNotification: { _ in + + }, applicationInForeground: .single(false), applicationIsActive: .single(false), clearMessageNotifications: { _ in + }, pushIdleTimerExtension: { + return EmptyDisposable + }, openSettings: {}, openAppStorePage: {}, registerForNotifications: { _ in }, requestSiriAuthorization: { _ in }, siriAuthorization: { return .notDetermined }, getWindowHost: { + return nil + }, presentNativeController: { _ in + }, dismissNativeController: { + }, getAvailableAlternateIcons: { + return [] + }, getAlternateIconName: { + return nil + }, requestSetAlternateIconName: { _, f in + f(false) + }) + + sharedAccountContext = SharedAccountContext(mainWindow: nil, basePath: rootPath, encryptionParameters: ValueBoxEncryptionParameters(forceEncryptionIfNoSet: false, key: ValueBoxEncryptionParameters.Key(data: self.initializationData.encryptionParameters.0)!, salt: ValueBoxEncryptionParameters.Salt(data: self.initializationData.encryptionParameters.1)!), accountManager: accountManager, applicationBindings: applicationBindings, initialPresentationDataAndSettings: initialPresentationDataAndSettings!, networkArguments: NetworkInitializationArguments(apiId: self.initializationData.apiId, languagesCategory: self.initializationData.languagesCategory, appVersion: self.initializationData.appVersion, voipMaxLayer: 0, appData: self.initializationData.bundleData), rootPath: rootPath, legacyBasePath: nil, legacyCache: nil, apsNotificationToken: .never(), voipNotificationToken: .never(), setNotificationCall: { _ in }, navigateToChat: { _, _, _ in }) + } + } + + public func didReceive(_ notification: UNNotification, view: UIView) { + guard let accountsPath = self.accountsPath else { + return + } + + if let accountIdValue = notification.request.content.userInfo["accountId"] as? Int64, let peerIdValue = notification.request.content.userInfo["peerId"] as? Int64, let messageIdNamespace = notification.request.content.userInfo["messageId.namespace"] as? Int32, let messageIdId = notification.request.content.userInfo["messageId.id"] as? Int32, let mediaDataString = notification.request.content.userInfo["media"] as? String, let mediaData = Data(base64Encoded: mediaDataString), let media = parseMediaData(data: mediaData) { + let messageId = MessageId(peerId: PeerId(peerIdValue), namespace: messageIdNamespace, id: messageIdId) + + if let image = media as? TelegramMediaImage, let thumbnailRepresentation = imageRepresentationLargerThan(image.representations, size: CGSize(width: 120.0, height: 120.0)), let largestRepresentation = largestImageRepresentation(image.representations) { + let dimensions = largestRepresentation.dimensions + let fittedSize = dimensions.fitted(CGSize(width: view.bounds.width, height: 1000.0)) + view.frame = CGRect(origin: view.frame.origin, size: fittedSize) + self.setPreferredContentSize(fittedSize) + + self.imageInfo = (false, dimensions) + self.updateImageLayout(boundingSize: view.bounds.size) + + let mediaBoxPath = accountsPath + "/" + accountRecordIdPathName(AccountRecordId(rawValue: accountIdValue)) + "/postbox/media" + + if let data = try? Data(contentsOf: URL(fileURLWithPath: mediaBoxPath + "/\(largestRepresentation.resource.id.uniqueId)"), options: .mappedRead) { + self.imageNode.setSignal(chatMessagePhotoInternal(photoData: .single((nil, data, true))) + |> map { $0.1 }) + return + } + + if let data = try? Data(contentsOf: URL(fileURLWithPath: mediaBoxPath + "/\(thumbnailRepresentation.resource.id.uniqueId)"), options: .mappedRead) { + self.imageNode.setSignal(chatMessagePhotoInternal(photoData: .single((data, nil, false))) + |> map { $0.1 }) + } + + guard let sharedAccountContext = sharedAccountContext else { + return + } + + self.applyDisposable.set((sharedAccountContext.activeAccounts + |> map { _, accounts, _ -> Account? in + return accounts.first(where: { $0.0 == AccountRecordId(rawValue: accountIdValue) })?.1 + } + |> filter { account in + return account != nil + } + |> take(1) + |> mapToSignal { account -> Signal<(Account, ImageMediaReference?), NoError> in + guard let account = account else { + return .complete() + } + return account.postbox.messageAtId(messageId) + |> take(1) + |> map { message in + var imageReference: ImageMediaReference? + if let message = message { + for media in message.media { + if let image = media as? TelegramMediaImage { + imageReference = .message(message: MessageReference(message), media: image) + } + } + } else { + imageReference = .standalone(media: image) + } + return (account, imageReference) + } + } + |> deliverOnMainQueue).start(next: { [weak self] accountAndImage in + guard let strongSelf = self else { + return + } + if let imageReference = accountAndImage.1 { + strongSelf.imageNode.setSignal(chatMessagePhoto(postbox: accountAndImage.0.postbox, photoReference: imageReference)) + + accountAndImage.0.network.shouldExplicitelyKeepWorkerConnections.set(.single(true)) + strongSelf.fetchedDisposable.set(standaloneChatMessagePhotoInteractiveFetched(account: accountAndImage.0, photoReference: imageReference).start()) + } + })) + } else if let file = media as? TelegramMediaFile, let dimensions = file.dimensions { + guard let sharedAccountContext = sharedAccountContext else { + return + } + + let fittedSize = dimensions.fitted(CGSize(width: min(256.0, view.bounds.width), height: 256.0)) + view.frame = CGRect(origin: view.frame.origin, size: fittedSize) + self.setPreferredContentSize(fittedSize) + + self.imageInfo = (true, dimensions) + self.updateImageLayout(boundingSize: view.bounds.size) + + self.applyDisposable.set((sharedAccountContext.activeAccounts + |> map { _, accounts, _ -> Account? in + return accounts.first(where: { $0.0 == AccountRecordId(rawValue: accountIdValue) })?.1 + } + |> filter { account in + return account != nil + } + |> take(1) + |> mapToSignal { account -> Signal<(Account, FileMediaReference?), NoError> in + guard let account = account else { + return .complete() + } + return account.postbox.messageAtId(messageId) + |> take(1) + |> map { message in + var fileReference: FileMediaReference? + if let message = message { + for media in message.media { + if let file = media as? TelegramMediaFile { + fileReference = .message(message: MessageReference(message), media: file) + } + } + } else { + fileReference = .standalone(media: file) + } + return (account, fileReference) + } + } + |> deliverOnMainQueue).start(next: { [weak self] accountAndImage in + guard let strongSelf = self else { + return + } + if let fileReference = accountAndImage.1 { + if file.isSticker { + strongSelf.imageNode.setSignal(chatMessageSticker(account: accountAndImage.0, file: file, small: false)) + + accountAndImage.0.network.shouldExplicitelyKeepWorkerConnections.set(.single(true)) + strongSelf.fetchedDisposable.set(freeMediaFileInteractiveFetched(account: accountAndImage.0, fileReference: fileReference).start()) + } + } + })) + } + } + } + + public func viewWillTransition(to size: CGSize) { + self.updateImageLayout(boundingSize: size) + } + + private func updateImageLayout(boundingSize: CGSize) { + if let (isSticker, dimensions) = self.imageInfo { + let makeLayout = self.imageNode.asyncLayout() + let fittedSize: CGSize + if isSticker { + fittedSize = dimensions.fitted(CGSize(width: min(256.0, boundingSize.width), height: 256.0)) + } else { + fittedSize = dimensions.fitted(CGSize(width: boundingSize.width, height: 1000.0)) + } + let apply = makeLayout(TransformImageArguments(corners: ImageCorners(radius: 0.0), imageSize: fittedSize, boundingSize: fittedSize, intrinsicInsets: UIEdgeInsets())) + apply() + let displaySize = isSticker ? fittedSize : boundingSize + self.imageNode.frame = CGRect(origin: CGPoint(x: floor((boundingSize.width - displaySize.width) / 2.0), y: 0.0), size: displaySize) + } + } +} diff --git a/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift b/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift index 3e434c8667..41c3886a79 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences private final class NotificationExceptionState : Equatable { let mode:NotificationExceptionMode diff --git a/submodules/TelegramUI/TelegramUI/NotificationExceptionSettingsController.swift b/submodules/TelegramUI/TelegramUI/NotificationExceptionSettingsController.swift index 3adc8cc048..38c4ed32b0 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationExceptionSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationExceptionSettingsController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private enum NotificationPeerExceptionSection: Int32 { case remove diff --git a/submodules/TelegramUI/TelegramUI/NotificationExceptions.swift b/submodules/TelegramUI/TelegramUI/NotificationExceptions.swift index 7b7ec8da9e..bb156c002d 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationExceptions.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationExceptions.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData public class NotificationExceptionsController: ViewController { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/NotificationItemContainerNode.swift b/submodules/TelegramUI/TelegramUI/NotificationItemContainerNode.swift index 9250ab8e4a..06aadc5a36 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationItemContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationItemContainerNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class NotificationItemContainerNode: ASDisplayNode { private let backgroundNode: ASImageNode diff --git a/submodules/TelegramUI/TelegramUI/NotificationMuteSettingsController.swift b/submodules/TelegramUI/TelegramUI/NotificationMuteSettingsController.swift index 8300deaa69..a0279cb2fa 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationMuteSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationMuteSettingsController.swift @@ -3,6 +3,7 @@ import UIKit import Display import TelegramCore import Postbox +import TelegramPresentationData private enum NotificationMuteOption { case `default` diff --git a/submodules/TelegramUI/TelegramUI/NotificationSearchItem.swift b/submodules/TelegramUI/TelegramUI/NotificationSearchItem.swift index 940b1dfb04..c1ea630ab9 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationSearchItem.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationSearchItem.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import Display import SwiftSignalKit +import TelegramPresentationData private let searchBarFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/NotificationSoundSelection.swift b/submodules/TelegramUI/TelegramUI/NotificationSoundSelection.swift index ac9e52ec04..d3dd2f9066 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationSoundSelection.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationSoundSelection.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Postbox import TelegramCore import AVFoundation +import TelegramPresentationData private struct NotificationSoundSelectionArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift b/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift index d2a654f537..0fd06c870a 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift @@ -4,6 +4,9 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences +import DeviceAccess private final class NotificationsAndSoundsArguments { let context: AccountContext @@ -822,12 +825,14 @@ public func notificationsAndSoundsController(context: AccountContext, exceptions }, pushController: { controller in pushControllerImpl?(controller) }, soundSelectionDisposable: MetaDisposable(), authorizeNotifications: { - let _ = (DeviceAccess.authorizationStatus(context: context, subject: .notifications) + let _ = (DeviceAccess.authorizationStatus(applicationInForeground: context.sharedContext.applicationBindings.applicationInForeground, subject: .notifications) |> take(1) |> deliverOnMainQueue).start(next: { status in switch status { case .notDetermined: - DeviceAccess.authorizeAccess(to: .notifications, context: context) + DeviceAccess.authorizeAccess(to: .notifications, registerForNotifications: { result in + context.sharedContext.applicationBindings.registerForNotifications(result) + }) case .denied, .restricted: context.sharedContext.applicationBindings.openSettings() case .unreachable: @@ -1063,7 +1068,7 @@ public func notificationsAndSoundsController(context: AccountContext, exceptions } |> distinctUntilChanged - let signal = combineLatest(context.sharedContext.presentationData, sharedData, preferences, notificationExceptions.get(), DeviceAccess.authorizationStatus(context: context, subject: .notifications), notificationsWarningSuppressed.get(), hasMoreThanOneAccount) + let signal = combineLatest(context.sharedContext.presentationData, sharedData, preferences, notificationExceptions.get(), DeviceAccess.authorizationStatus(applicationInForeground: context.sharedContext.applicationBindings.applicationInForeground, subject: .notifications), notificationsWarningSuppressed.get(), hasMoreThanOneAccount) |> map { presentationData, sharedData, view, exceptions, authorizationStatus, warningSuppressed, hasMoreThanOneAccount -> (ItemListControllerState, (ItemListNodeState, NotificationsAndSoundsEntry.ItemGenerationArguments)) in let viewSettings: GlobalNotificationSettingsSet diff --git a/submodules/TelegramUI/TelegramUI/OpenAddContact.swift b/submodules/TelegramUI/TelegramUI/OpenAddContact.swift index bc711cdd75..e1018e5146 100644 --- a/submodules/TelegramUI/TelegramUI/OpenAddContact.swift +++ b/submodules/TelegramUI/TelegramUI/OpenAddContact.swift @@ -2,9 +2,10 @@ import Foundation import SwiftSignalKit import TelegramCore import Display +import DeviceAccess func openAddContact(context: AccountContext, firstName: String = "", lastName: String = "", phoneNumber: String, label: String = "_$!!$_", present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void = {}) { - let _ = (DeviceAccess.authorizationStatus(context: context, subject: .contacts) + let _ = (DeviceAccess.authorizationStatus(subject: .contacts) |> take(1) |> deliverOnMainQueue).start(next: { value in switch value { @@ -20,7 +21,7 @@ func openAddContact(context: AccountContext, firstName: String = "", lastName: S } }), completed: completed), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) case .notDetermined: - DeviceAccess.authorizeAccess(to: .contacts, context: context) + DeviceAccess.authorizeAccess(to: .contacts) default: let presentationData = context.sharedContext.currentPresentationData.with { $0 } present(textAlertController(context: context, title: presentationData.strings.AccessDenied_Title, text: presentationData.strings.Contacts_AccessDeniedError, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_NotNow, action: {}), TextAlertAction(type: .genericAction, title: presentationData.strings.AccessDenied_Settings, action: { diff --git a/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift b/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift index 66249177db..203467c240 100644 --- a/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift +++ b/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift @@ -6,6 +6,7 @@ import TelegramCore import SwiftSignalKit import PassKit import Lottie +import TelegramUIPreferences private enum ChatMessageGalleryControllerData { case url(String) diff --git a/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift b/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift index 0715953ade..aedc3e4b1d 100644 --- a/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift +++ b/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import Postbox import TelegramCore import MapKit +import TelegramPresentationData public struct OpenInControllerAction { let title: String diff --git a/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift b/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift index 5623e52b37..b679aa198a 100644 --- a/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift +++ b/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift @@ -4,6 +4,7 @@ import TelegramCore import Postbox import Display import SwiftSignalKit +import TelegramUIPreferences private func defaultNavigationForPeerId(_ peerId: PeerId?, navigation: ChatControllerInteractionNavigateToPeer) -> ChatControllerInteractionNavigateToPeer { if case .default = navigation { diff --git a/submodules/TelegramUI/TelegramUI/OpenUrl.swift b/submodules/TelegramUI/TelegramUI/OpenUrl.swift index 0327d64e32..ae905baca9 100644 --- a/submodules/TelegramUI/TelegramUI/OpenUrl.swift +++ b/submodules/TelegramUI/TelegramUI/OpenUrl.swift @@ -9,6 +9,7 @@ import MtProtoKit #else import MtProtoKitDynamic #endif +import TelegramPresentationData public struct ParsedSecureIdUrl { public let peerId: PeerId diff --git a/submodules/TelegramUI/TelegramUI/OverlayInstantVideoDecoration.swift b/submodules/TelegramUI/TelegramUI/OverlayInstantVideoDecoration.swift index 417bd541a5..45ad8982e5 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayInstantVideoDecoration.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayInstantVideoDecoration.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit +import UniversalMediaPlayer private let backgroundImage = UIImage(bundleImageName: "Chat/Message/OverlayInstantVideoShadow")?.precomposed() diff --git a/submodules/TelegramUI/TelegramUI/OverlayInstantVideoNode.swift b/submodules/TelegramUI/TelegramUI/OverlayInstantVideoNode.swift index 00b2937d2b..96219aa914 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayInstantVideoNode.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayInstantVideoNode.swift @@ -5,6 +5,10 @@ import SwiftSignalKit import Display import TelegramCore import Postbox +import TelegramPresentationData +import UniversalMediaPlayer +import TelegramUIPreferences +import TelegramAudio final class OverlayInstantVideoNode: OverlayMediaItemNode { private let content: UniversalVideoContent diff --git a/submodules/TelegramUI/TelegramUI/OverlayPlayerController.swift b/submodules/TelegramUI/TelegramUI/OverlayPlayerController.swift index 9abd61043e..f3446a7fbb 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayPlayerController.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayPlayerController.swift @@ -4,6 +4,7 @@ import TelegramCore import Postbox import Display import SwiftSignalKit +import TelegramUIPreferences final class OverlayPlayerController: ViewController { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift b/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift index 81d43d5289..8417e760dd 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences final class OverlayPlayerControllerNode: ViewControllerTracingNode, UIGestureRecognizerDelegate { let ready = Promise() diff --git a/submodules/TelegramUI/TelegramUI/OverlayPlayerControlsNode.swift b/submodules/TelegramUI/TelegramUI/OverlayPlayerControlsNode.swift index 3a33084ace..cc429c15ca 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayPlayerControlsNode.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayPlayerControlsNode.swift @@ -5,6 +5,9 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import UniversalMediaPlayer +import TelegramUIPreferences private func generateBackground(theme: PresentationTheme) -> UIImage? { return generateImage(CGSize(width: 20.0, height: 10.0 + 8.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/OverlayStatusController.swift b/submodules/TelegramUI/TelegramUI/OverlayStatusController.swift index f91fc8fa33..172ac6a3fe 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayStatusController.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayStatusController.swift @@ -1,7 +1,7 @@ import Foundation import UIKit import Display - +import TelegramPresentationData import LegacyComponents enum OverlayStatusControllerType { diff --git a/submodules/TelegramUI/TelegramUI/OverlayUniversalVideoNode.swift b/submodules/TelegramUI/TelegramUI/OverlayUniversalVideoNode.swift index 9a55599c63..178ade029b 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayUniversalVideoNode.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayUniversalVideoNode.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Display import TelegramCore import Postbox +import TelegramAudio final class OverlayUniversalVideoNode: OverlayMediaItemNode { private let content: UniversalVideoContent diff --git a/submodules/TelegramUI/TelegramUI/OverlayVideoDecoration.swift b/submodules/TelegramUI/TelegramUI/OverlayVideoDecoration.swift index 9b4a620978..6e87779c66 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayVideoDecoration.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayVideoDecoration.swift @@ -3,7 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit - +import UniversalMediaPlayer import LegacyComponents private func setupArrowFrame(size: CGSize, edge: OverlayMediaItemMinimizationEdge, view: TGEmbedPIPPullArrowView) { diff --git a/submodules/TelegramUI/TelegramUI/PaneSearchBarNode.swift b/submodules/TelegramUI/TelegramUI/PaneSearchBarNode.swift index 0de33cd34a..8f54e5ab9c 100644 --- a/submodules/TelegramUI/TelegramUI/PaneSearchBarNode.swift +++ b/submodules/TelegramUI/TelegramUI/PaneSearchBarNode.swift @@ -3,6 +3,7 @@ import UIKit import SwiftSignalKit import AsyncDisplayKit import Display +import TelegramPresentationData private func generateLoupeIcon(color: UIColor) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Loupe"), color: color) diff --git a/submodules/TelegramUI/TelegramUI/PaneSearchBarPlaceholderItem.swift b/submodules/TelegramUI/TelegramUI/PaneSearchBarPlaceholderItem.swift index a74b5b31ce..84c0ff76f7 100644 --- a/submodules/TelegramUI/TelegramUI/PaneSearchBarPlaceholderItem.swift +++ b/submodules/TelegramUI/TelegramUI/PaneSearchBarPlaceholderItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let templateLoupeIcon = UIImage(bundleImageName: "Components/Search Bar/Loupe") diff --git a/submodules/TelegramUI/TelegramUI/PaneSearchContainerNode.swift b/submodules/TelegramUI/TelegramUI/PaneSearchContainerNode.swift index 5eb3c21e1d..862508da9c 100644 --- a/submodules/TelegramUI/TelegramUI/PaneSearchContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/PaneSearchContainerNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private let searchBarHeight: CGFloat = 52.0 diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift b/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift index b57e895afd..69ccac8220 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift +++ b/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift @@ -4,6 +4,8 @@ import Display import AsyncDisplayKit import SwiftSignalKit import Postbox +import TelegramPresentationData +import TelegramUIPreferences final public class PasscodeEntryControllerPresentationArguments { let animated: Bool diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryControllerNode.swift b/submodules/TelegramUI/TelegramUI/PasscodeEntryControllerNode.swift index cb1bc92b3a..c333cc127d 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeEntryControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/PasscodeEntryControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private let titleFont = Font.regular(20.0) private let subtitleFont = Font.regular(15.0) diff --git a/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift b/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift index 8bdad45ced..51fa868cea 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift +++ b/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift @@ -6,6 +6,8 @@ import Postbox import TelegramCore import LegacyComponents import LocalAuthentication +import TelegramPresentationData +import TelegramUIPreferences private final class PasscodeOptionsControllerArguments { let turnPasscodeOff: () -> Void diff --git a/submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift b/submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift index 6fe6f75e4e..eb3e6daede 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift +++ b/submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData enum PasscodeSetupControllerMode { case setup(change: Bool, PasscodeEntryFieldType) diff --git a/submodules/TelegramUI/TelegramUI/PasscodeSetupControllerNode.swift b/submodules/TelegramUI/TelegramUI/PasscodeSetupControllerNode.swift index cd2d167815..2982650cb3 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeSetupControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/PasscodeSetupControllerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData enum PasscodeSetupInitialState { case createPasscode diff --git a/submodules/TelegramUI/TelegramUI/PeerAvatarImageGalleryItem.swift b/submodules/TelegramUI/TelegramUI/PeerAvatarImageGalleryItem.swift index c210e4a77f..163a8b415e 100644 --- a/submodules/TelegramUI/TelegramUI/PeerAvatarImageGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/PeerAvatarImageGalleryItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private struct PeerAvatarImageGalleryThumbnailItem: GalleryThumbnailItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/PeerBanTimeoutController.swift b/submodules/TelegramUI/TelegramUI/PeerBanTimeoutController.swift index d4ee5d5889..a51b481155 100644 --- a/submodules/TelegramUI/TelegramUI/PeerBanTimeoutController.swift +++ b/submodules/TelegramUI/TelegramUI/PeerBanTimeoutController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import UIKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData final class PeerBanTimeoutController: ActionSheetController { private var presentationDisposable: Disposable? diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift index e18cbca258..ae76b046a3 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift @@ -6,6 +6,8 @@ import Display import AsyncDisplayKit import TelegramCore import SafariServices +import TelegramPresentationData +import TelegramUIPreferences public class PeerMediaCollectionController: TelegramController { private var validLayout: ContainerViewLayout? diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionControllerNode.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionControllerNode.swift index 67b6186589..cf870645d5 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionControllerNode.swift @@ -5,6 +5,7 @@ import Postbox import SwiftSignalKit import Display import TelegramCore +import TelegramPresentationData struct PeerMediaCollectionMessageForGallery { let message: Message diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionEmptyNode.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionEmptyNode.swift index cdd472e1fd..11bbfaae43 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionEmptyNode.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionEmptyNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class PeerMediaCollectionEmptyNode: ASDisplayNode { private let mode: PeerMediaCollectionMode diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionInterfaceState.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionInterfaceState.swift index c1387f3a31..c0dea9dd1a 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionInterfaceState.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionInterfaceState.swift @@ -1,5 +1,6 @@ import Foundation import Postbox +import TelegramPresentationData enum PeerMediaCollectionMode: Int32 { case photoOrVideo diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionSectionsNode.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionSectionsNode.swift index d757b67f88..6958bdc7cc 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionSectionsNode.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionSectionsNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData final class PeerMediaCollectionSectionsNode: ASDisplayNode { private var theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/PeerMessagesMediaPlaylist.swift b/submodules/TelegramUI/TelegramUI/PeerMessagesMediaPlaylist.swift index 4f12913abf..69590ac1b8 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMessagesMediaPlaylist.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMessagesMediaPlaylist.swift @@ -3,6 +3,7 @@ import UIKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences private enum PeerMessagesMediaPlaylistLoadAnchor { case messageId(MessageId) diff --git a/submodules/TelegramUI/TelegramUI/PeerNotificationSoundStrings.swift b/submodules/TelegramUI/TelegramUI/PeerNotificationSoundStrings.swift index 615c8867a4..8da9be20e1 100644 --- a/submodules/TelegramUI/TelegramUI/PeerNotificationSoundStrings.swift +++ b/submodules/TelegramUI/TelegramUI/PeerNotificationSoundStrings.swift @@ -1,5 +1,6 @@ import Foundation import TelegramCore +import TelegramPresentationData private let modernSoundsNamePaths: [KeyPath] = [ \.NotificationsSound_Note, diff --git a/submodules/TelegramUI/TelegramUI/PeerReportController.swift b/submodules/TelegramUI/TelegramUI/PeerReportController.swift index 4c8e945288..ce7452b630 100644 --- a/submodules/TelegramUI/TelegramUI/PeerReportController.swift +++ b/submodules/TelegramUI/TelegramUI/PeerReportController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData enum PeerReportSubject { case peer(PeerId) diff --git a/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift b/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift index ba87e6c3e0..e4a8e39d54 100644 --- a/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift +++ b/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift @@ -4,6 +4,7 @@ import SwiftSignalKit import Display import TelegramCore import Postbox +import TelegramPresentationData public final class PeerSelectionController: ViewController { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift b/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift index 50f95b8e0b..c4fc539f6e 100644 --- a/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class PeerSelectionControllerNode: ASDisplayNode { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/PeerTitle.swift b/submodules/TelegramUI/TelegramUI/PeerTitle.swift index 363b23637f..a28062069a 100644 --- a/submodules/TelegramUI/TelegramUI/PeerTitle.swift +++ b/submodules/TelegramUI/TelegramUI/PeerTitle.swift @@ -1,6 +1,8 @@ import Foundation import TelegramCore import Postbox +import TelegramPresentationData +import TelegramUIPreferences extension Peer { func displayTitle(strings: PresentationStrings, displayOrder: PresentationPersonNameOrder) -> String { diff --git a/submodules/TelegramUI/TelegramUI/PeopleNearbyController.swift b/submodules/TelegramUI/TelegramUI/PeopleNearbyController.swift index da914e62b8..2eea4ba430 100644 --- a/submodules/TelegramUI/TelegramUI/PeopleNearbyController.swift +++ b/submodules/TelegramUI/TelegramUI/PeopleNearbyController.swift @@ -5,6 +5,8 @@ import SwiftSignalKit import Postbox import TelegramCore import MapKit +import TelegramPresentationData +import TelegramUIPreferences private struct PeerNearbyEntry { let peer: Peer diff --git a/submodules/TelegramUI/TelegramUI/PeopleNearbyHeaderItem.swift b/submodules/TelegramUI/TelegramUI/PeopleNearbyHeaderItem.swift index 8813823b2a..f0e531abbb 100644 --- a/submodules/TelegramUI/TelegramUI/PeopleNearbyHeaderItem.swift +++ b/submodules/TelegramUI/TelegramUI/PeopleNearbyHeaderItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class PeopleNearbyHeaderItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/PeopleNearbyIconNode.swift b/submodules/TelegramUI/TelegramUI/PeopleNearbyIconNode.swift index ce9e3c9559..a5e15f9269 100644 --- a/submodules/TelegramUI/TelegramUI/PeopleNearbyIconNode.swift +++ b/submodules/TelegramUI/TelegramUI/PeopleNearbyIconNode.swift @@ -2,7 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit - +import TelegramPresentationData import LegacyComponents private final class PeopleNearbyIconWavesNodeParams: NSObject { diff --git a/submodules/TelegramUI/TelegramUI/Permission.swift b/submodules/TelegramUI/TelegramUI/Permission.swift index bf651b469b..7547e92e87 100644 --- a/submodules/TelegramUI/TelegramUI/Permission.swift +++ b/submodules/TelegramUI/TelegramUI/Permission.swift @@ -2,6 +2,7 @@ import Foundation import SwiftSignalKit import Postbox import TelegramCore +import DeviceAccess public enum PermissionKind: Int32 { case contacts @@ -64,7 +65,9 @@ public enum PermissionState: Equatable { } public func requiredPermissions(context: AccountContext) -> Signal<(PermissionState, PermissionState, PermissionState), NoError> { - return combineLatest(DeviceAccess.authorizationStatus(context: context, subject: .contacts), DeviceAccess.authorizationStatus(context: context, subject: .notifications), DeviceAccess.authorizationStatus(context: context, subject: .siri)) + return combineLatest(DeviceAccess.authorizationStatus(subject: .contacts), DeviceAccess.authorizationStatus(applicationInForeground: context.sharedContext.applicationBindings.applicationInForeground, subject: .notifications), DeviceAccess.authorizationStatus(siriAuthorization: { + return context.sharedContext.applicationBindings.siriAuthorization() + }, subject: .siri)) |> map { contactsStatus, notificationsStatus, siriStatus in return (.contacts(status: PermissionRequestStatus(accessType: contactsStatus)), .notifications(status: PermissionRequestStatus(accessType: notificationsStatus)), .siri(status: PermissionRequestStatus(accessType: siriStatus))) } diff --git a/submodules/TelegramUI/TelegramUI/PermissionContentNode.swift b/submodules/TelegramUI/TelegramUI/PermissionContentNode.swift index 2a7ce4d2fc..af9776ddf4 100644 --- a/submodules/TelegramUI/TelegramUI/PermissionContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/PermissionContentNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData final class PermissionContentNode: ASDisplayNode { private var theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/PermissionController.swift b/submodules/TelegramUI/TelegramUI/PermissionController.swift index 8eb355bdc1..053b9bc214 100644 --- a/submodules/TelegramUI/TelegramUI/PermissionController.swift +++ b/submodules/TelegramUI/TelegramUI/PermissionController.swift @@ -4,6 +4,8 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData +import DeviceAccess public final class PermissionController : ViewController { private let context: AccountContext @@ -100,7 +102,7 @@ public final class PermissionController : ViewController { switch status { case .requestable: strongSelf.splitTest.addEvent(.ContactsRequest) - DeviceAccess.authorizeAccess(to: .contacts, context: strongSelf.context, { [weak self] result in + DeviceAccess.authorizeAccess(to: .contacts, { [weak self] result in if let strongSelf = self { if result { strongSelf.splitTest.addEvent(.ContactsAllowed) @@ -126,7 +128,10 @@ public final class PermissionController : ViewController { switch status { case .requestable: strongSelf.splitTest.addEvent(.NotificationsRequest) - DeviceAccess.authorizeAccess(to: .notifications, context: strongSelf.context, { [weak self] result in + let context = strongSelf.context + DeviceAccess.authorizeAccess(to: .notifications, registerForNotifications: { [weak context] result in + context?.sharedContext.applicationBindings.registerForNotifications(result) + }, { [weak self] result in if let strongSelf = self { if result { strongSelf.splitTest.addEvent(.NotificationsAllowed) diff --git a/submodules/TelegramUI/TelegramUI/PermissionControllerNode.swift b/submodules/TelegramUI/TelegramUI/PermissionControllerNode.swift index 131ac9d111..188ca26a53 100644 --- a/submodules/TelegramUI/TelegramUI/PermissionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/PermissionControllerNode.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData private struct PermissionControllerDataState: Equatable { var state: PermissionState? diff --git a/submodules/TelegramUI/TelegramUI/PhotoResources.swift b/submodules/TelegramUI/TelegramUI/PhotoResources.swift index c83d6c10bb..245bfbcb15 100644 --- a/submodules/TelegramUI/TelegramUI/PhotoResources.swift +++ b/submodules/TelegramUI/TelegramUI/PhotoResources.swift @@ -12,6 +12,7 @@ import WebPImage #else import WebP #endif +import TelegramUIPreferences private enum ResourceFileData { case data(Data) diff --git a/submodules/TelegramUI/TelegramUI/PictureInPictureVideoControlsNode.swift b/submodules/TelegramUI/TelegramUI/PictureInPictureVideoControlsNode.swift index 6df5905645..219afbb90b 100644 --- a/submodules/TelegramUI/TelegramUI/PictureInPictureVideoControlsNode.swift +++ b/submodules/TelegramUI/TelegramUI/PictureInPictureVideoControlsNode.swift @@ -3,7 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit - +import UniversalMediaPlayer import LegacyComponents private let leaveImage = UIImage(bundleImageName: "Media Gallery/PictureInPictureLeave")?.precomposed() diff --git a/submodules/TelegramUI/TelegramUI/PlatformVideoContent.swift b/submodules/TelegramUI/TelegramUI/PlatformVideoContent.swift index 007ac0cf76..c1db428a4c 100644 --- a/submodules/TelegramUI/TelegramUI/PlatformVideoContent.swift +++ b/submodules/TelegramUI/TelegramUI/PlatformVideoContent.swift @@ -6,6 +6,8 @@ import SwiftSignalKit import Postbox import TelegramCore import AVFoundation +import UniversalMediaPlayer +import TelegramAudio enum PlatformVideoContentId: Hashable { case message(MessageId, UInt32, MediaId) diff --git a/submodules/TelegramUI/TelegramUI/PrefetchManager.swift b/submodules/TelegramUI/TelegramUI/PrefetchManager.swift index 6d4373e173..5b03639883 100644 --- a/submodules/TelegramUI/TelegramUI/PrefetchManager.swift +++ b/submodules/TelegramUI/TelegramUI/PrefetchManager.swift @@ -2,6 +2,7 @@ import Foundation import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences private final class PrefetchMediaContext { let fetchDisposable = MetaDisposable() diff --git a/submodules/TelegramUI/TelegramUI/PresenceStrings.swift b/submodules/TelegramUI/TelegramUI/PresenceStrings.swift index 7821b40912..2db092a640 100644 --- a/submodules/TelegramUI/TelegramUI/PresenceStrings.swift +++ b/submodules/TelegramUI/TelegramUI/PresenceStrings.swift @@ -1,6 +1,7 @@ import Foundation import Postbox import TelegramCore +import TelegramPresentationData func stringForTimestamp(day: Int32, month: Int32, year: Int32, dateTimeFormat: PresentationDateTimeFormat) -> String { let separator = dateTimeFormat.dateSeparator diff --git a/submodules/TelegramUI/TelegramUI/PresentationResourcesCallList.swift b/submodules/TelegramUI/TelegramUI/PresentationResourcesCallList.swift index a5bbb40dd9..18943b6698 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationResourcesCallList.swift +++ b/submodules/TelegramUI/TelegramUI/PresentationResourcesCallList.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import Display +import TelegramPresentationData struct PresentationResourcesCallList { static func outgoingIcon(_ theme: PresentationTheme) -> UIImage? { diff --git a/submodules/TelegramUI/TelegramUI/PresentationResourcesChat.swift b/submodules/TelegramUI/TelegramUI/PresentationResourcesChat.swift index 5dff064b48..1e1448ea07 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationResourcesChat.swift +++ b/submodules/TelegramUI/TelegramUI/PresentationResourcesChat.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import TelegramCore +import TelegramPresentationData private func generateLineImage(color: UIColor) -> UIImage? { return generateImage(CGSize(width: 2.0, height: 3.0), contextGenerator: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/PresentationResourcesChatList.swift b/submodules/TelegramUI/TelegramUI/PresentationResourcesChatList.swift index 710dc511b6..df2de4003c 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationResourcesChatList.swift +++ b/submodules/TelegramUI/TelegramUI/PresentationResourcesChatList.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import Display +import TelegramPresentationData private func generateStatusCheckImage(theme: PresentationTheme, single: Bool) -> UIImage? { return generateImage(CGSize(width: single ? 13.0 : 18.0, height: 13.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/PresentationResourcesItemList.swift b/submodules/TelegramUI/TelegramUI/PresentationResourcesItemList.swift index 744c7b67e8..e8d2c542f1 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationResourcesItemList.swift +++ b/submodules/TelegramUI/TelegramUI/PresentationResourcesItemList.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import Display +import TelegramPresentationData private func generateArrowImage(_ theme: PresentationTheme) -> UIImage? { return generateImage(CGSize(width: 7.0, height: 13.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/PresentationResourcesRootController.swift b/submodules/TelegramUI/TelegramUI/PresentationResourcesRootController.swift index 72be59c2da..f047389114 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationResourcesRootController.swift +++ b/submodules/TelegramUI/TelegramUI/PresentationResourcesRootController.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import Display +import TelegramPresentationData private func generateShareButtonImage(theme: PresentationTheme) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "Chat List/NavigationShare"), color: theme.rootController.navigationBar.accentTextColor) diff --git a/submodules/TelegramUI/TelegramUI/PresentationThemeEssentialGraphics.swift b/submodules/TelegramUI/TelegramUI/PresentationThemeEssentialGraphics.swift index 6780ecb87a..904289f854 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationThemeEssentialGraphics.swift +++ b/submodules/TelegramUI/TelegramUI/PresentationThemeEssentialGraphics.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import TelegramCore +import TelegramPresentationData private func generateCheckImage(partial: Bool, color: UIColor) -> UIImage? { return generateImage(CGSize(width: 11.0, height: 9.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift b/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift index 72bc750169..a6ad4c5ef1 100644 --- a/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift +++ b/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift @@ -4,6 +4,9 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences +import TelegramCallsUI private final class PrivacyAndSecurityControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/PrivacyIntroController.swift b/submodules/TelegramUI/TelegramUI/PrivacyIntroController.swift index e39678e918..c01176feea 100644 --- a/submodules/TelegramUI/TelegramUI/PrivacyIntroController.swift +++ b/submodules/TelegramUI/TelegramUI/PrivacyIntroController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import SwiftSignalKit import TelegramCore +import TelegramPresentationData enum PrivacyIntroControllerMode { case passcode diff --git a/submodules/TelegramUI/TelegramUI/PrivacyIntroControllerNode.swift b/submodules/TelegramUI/TelegramUI/PrivacyIntroControllerNode.swift index b91353c18f..6eea8ed55a 100644 --- a/submodules/TelegramUI/TelegramUI/PrivacyIntroControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/PrivacyIntroControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private func generateButtonImage(backgroundColor: UIColor, borderColor: UIColor, highlightColor: UIColor?) -> UIImage? { return generateImage(CGSize(width: 1.0, height: 44.0), contextGenerator: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/ProgressNavigationButtonNode.swift b/submodules/TelegramUI/TelegramUI/ProgressNavigationButtonNode.swift index 59ea36952a..2d2e07a94e 100644 --- a/submodules/TelegramUI/TelegramUI/ProgressNavigationButtonNode.swift +++ b/submodules/TelegramUI/TelegramUI/ProgressNavigationButtonNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class ProgressNavigationButtonNode: ASDisplayNode { private var indicatorNode: ActivityIndicator diff --git a/submodules/TelegramUI/TelegramUI/ProxyListSettingsController.swift b/submodules/TelegramUI/TelegramUI/ProxyListSettingsController.swift index ef11f63344..863dd39945 100644 --- a/submodules/TelegramUI/TelegramUI/ProxyListSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/ProxyListSettingsController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class ProxySettingsControllerArguments { let toggleEnabled: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ProxyServerActionSheetController.swift b/submodules/TelegramUI/TelegramUI/ProxyServerActionSheetController.swift index 77ab205d0b..947a09a56d 100644 --- a/submodules/TelegramUI/TelegramUI/ProxyServerActionSheetController.swift +++ b/submodules/TelegramUI/TelegramUI/ProxyServerActionSheetController.swift @@ -6,6 +6,7 @@ import Postbox import AsyncDisplayKit import UIKit import SwiftSignalKit +import TelegramPresentationData public final class ProxyServerActionSheetController: ActionSheetController { private var presentationDisposable: Disposable? diff --git a/submodules/TelegramUI/TelegramUI/ProxyServerSettingsController.swift b/submodules/TelegramUI/TelegramUI/ProxyServerSettingsController.swift index 12c09fe19a..1cecc7b627 100644 --- a/submodules/TelegramUI/TelegramUI/ProxyServerSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/ProxyServerSettingsController.swift @@ -9,6 +9,7 @@ import MtProtoKit #else import MtProtoKitDynamic #endif +import TelegramPresentationData private func shareLink(for server: ProxyServerSettings) -> String { var link: String diff --git a/submodules/TelegramUI/TelegramUI/ProxySettingsActionItem.swift b/submodules/TelegramUI/TelegramUI/ProxySettingsActionItem.swift index 776c437796..b5bfbf37ed 100644 --- a/submodules/TelegramUI/TelegramUI/ProxySettingsActionItem.swift +++ b/submodules/TelegramUI/TelegramUI/ProxySettingsActionItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData enum ProxySettingsActionIcon { case none diff --git a/submodules/TelegramUI/TelegramUI/ProxySettingsServerItem.swift b/submodules/TelegramUI/TelegramUI/ProxySettingsServerItem.swift index a5d1232561..cedc48ed63 100644 --- a/submodules/TelegramUI/TelegramUI/ProxySettingsServerItem.swift +++ b/submodules/TelegramUI/TelegramUI/ProxySettingsServerItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private let activitySize = CGSize(width: 24.0, height: 24.0) diff --git a/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift b/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift index e6c7e5f7db..3a7ab9a5af 100644 --- a/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift +++ b/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class RecentSessionsControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/RecentSessionsEmptyStateItem.swift b/submodules/TelegramUI/TelegramUI/RecentSessionsEmptyStateItem.swift index 7f759422c8..38773b5250 100644 --- a/submodules/TelegramUI/TelegramUI/RecentSessionsEmptyStateItem.swift +++ b/submodules/TelegramUI/TelegramUI/RecentSessionsEmptyStateItem.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class RecentSessionsEmptyStateItem: ItemListControllerEmptyStateItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/ReplyAccessoryPanelNode.swift b/submodules/TelegramUI/TelegramUI/ReplyAccessoryPanelNode.swift index 5a3acb2e3d..64cb0b779a 100644 --- a/submodules/TelegramUI/TelegramUI/ReplyAccessoryPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ReplyAccessoryPanelNode.swift @@ -5,6 +5,8 @@ import TelegramCore import Postbox import SwiftSignalKit import Display +import TelegramPresentationData +import TelegramUIPreferences final class ReplyAccessoryPanelNode: AccessoryPanelNode { private let messageDisposable = MetaDisposable() diff --git a/submodules/TelegramUI/TelegramUI/ResetPasswordController.swift b/submodules/TelegramUI/TelegramUI/ResetPasswordController.swift index 3f140d2d0d..76d8d3a94e 100644 --- a/submodules/TelegramUI/TelegramUI/ResetPasswordController.swift +++ b/submodules/TelegramUI/TelegramUI/ResetPasswordController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class ResetPasswordControllerArguments { let updateCodeText: (String) -> Void diff --git a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping index 6dec6a0013..2ff9c048b9 100644 Binary files a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping and b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping differ diff --git a/submodules/TelegramUI/TelegramUI/SaveIncomingMediaController.swift b/submodules/TelegramUI/TelegramUI/SaveIncomingMediaController.swift index 3816b6b49b..cd8cd71021 100644 --- a/submodules/TelegramUI/TelegramUI/SaveIncomingMediaController.swift +++ b/submodules/TelegramUI/TelegramUI/SaveIncomingMediaController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private enum PeerType { case contact diff --git a/submodules/TelegramUI/TelegramUI/SaveToCameraRoll.swift b/submodules/TelegramUI/TelegramUI/SaveToCameraRoll.swift index c23886206c..280c0df029 100644 --- a/submodules/TelegramUI/TelegramUI/SaveToCameraRoll.swift +++ b/submodules/TelegramUI/TelegramUI/SaveToCameraRoll.swift @@ -6,6 +6,7 @@ import TelegramCore import Photos import Display import MobileCoreServices +import DeviceAccess private enum SaveToCameraRollState { case progress(Float) @@ -84,7 +85,7 @@ func saveToCameraRoll(context: AccountContext, postbox: Postbox, mediaReference: case let .data(data): if data.complete { return Signal { subscriber in - DeviceAccess.authorizeAccess(to: .mediaLibrary(.save), context: context, presentationData: context.sharedContext.currentPresentationData.with { $0 }, present: { c, a in + DeviceAccess.authorizeAccess(to: .mediaLibrary(.save), presentationData: context.sharedContext.currentPresentationData.with { $0 }, present: { c, a in context.sharedContext.presentGlobalController(c, a) }, openSettings: context.sharedContext.applicationBindings.openSettings, { authorized in if !authorized { diff --git a/submodules/TelegramUI/TelegramUI/SearchBarNode.swift b/submodules/TelegramUI/TelegramUI/SearchBarNode.swift index 6958539a51..8b00daf22d 100644 --- a/submodules/TelegramUI/TelegramUI/SearchBarNode.swift +++ b/submodules/TelegramUI/TelegramUI/SearchBarNode.swift @@ -3,6 +3,7 @@ import UIKit import SwiftSignalKit import AsyncDisplayKit import Display +import TelegramPresentationData private func generateLoupeIcon(color: UIColor) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Loupe"), color: color) diff --git a/submodules/TelegramUI/TelegramUI/SearchDisplayController.swift b/submodules/TelegramUI/TelegramUI/SearchDisplayController.swift index fa627da5de..b7951012ee 100644 --- a/submodules/TelegramUI/TelegramUI/SearchDisplayController.swift +++ b/submodules/TelegramUI/TelegramUI/SearchDisplayController.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import SwiftSignalKit import Display +import TelegramPresentationData enum SearchDisplayControllerMode { case list diff --git a/submodules/TelegramUI/TelegramUI/SearchDisplayControllerContentNode.swift b/submodules/TelegramUI/TelegramUI/SearchDisplayControllerContentNode.swift index ed36ebc6ac..81b084ca15 100644 --- a/submodules/TelegramUI/TelegramUI/SearchDisplayControllerContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/SearchDisplayControllerContentNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit +import TelegramPresentationData class SearchDisplayControllerContentNode: ASDisplayNode { final var dismissInput: (() -> Void)? diff --git a/submodules/TelegramUI/TelegramUI/SecretChatKeyController.swift b/submodules/TelegramUI/TelegramUI/SecretChatKeyController.swift index f1b302e2c1..3e26098639 100644 --- a/submodules/TelegramUI/TelegramUI/SecretChatKeyController.swift +++ b/submodules/TelegramUI/TelegramUI/SecretChatKeyController.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import TelegramCore import Postbox +import TelegramPresentationData final class SecretChatKeyController: ViewController { private var controllerNode: SecretChatKeyControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/SecretChatKeyControllerNode.swift b/submodules/TelegramUI/TelegramUI/SecretChatKeyControllerNode.swift index 10ad1eeb1b..352e6ae560 100644 --- a/submodules/TelegramUI/TelegramUI/SecretChatKeyControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecretChatKeyControllerNode.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import TelegramCore import Postbox +import TelegramPresentationData private func processHexString(_ string: String) -> String { var result = "" diff --git a/submodules/TelegramUI/TelegramUI/SecretMediaPreviewController.swift b/submodules/TelegramUI/TelegramUI/SecretMediaPreviewController.swift index 2bd81901da..2b97ef40c4 100644 --- a/submodules/TelegramUI/TelegramUI/SecretMediaPreviewController.swift +++ b/submodules/TelegramUI/TelegramUI/SecretMediaPreviewController.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private func galleryMediaForMedia(media: Media) -> Media? { if let media = media as? TelegramMediaImage { diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthAcceptNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthAcceptNode.swift index 99b9d16875..ba1305eef0 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthAcceptNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthAcceptNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private let textFont: UIFont = Font.regular(16.0) diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthController.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthController.swift index e6a766d6d5..a05718180a 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthController.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData public enum SecureIdRequestResult: String { case success = "success" diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthControllerNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthControllerNode.swift index 78d7be5a08..f09127f6d4 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthControllerNode.swift @@ -5,6 +5,7 @@ import Display import AsyncDisplayKit import Postbox import TelegramCore +import TelegramPresentationData final class SecureIdAuthControllerNode: ViewControllerTracingNode { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthFormContentNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthFormContentNode.swift index 91af679bfe..bc1593e62a 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthFormContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthFormContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let infoFont = Font.regular(14.0) private let passwordFont = Font.regular(16.0) diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthFormFieldNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthFormFieldNode.swift index dae8b50747..7c3a9f0968 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthFormFieldNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthFormFieldNode.swift @@ -4,6 +4,7 @@ import SwiftSignalKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData enum SecureIdRequestedIdentityDocument: Int32 { case passport diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthHeaderNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthHeaderNode.swift index 76b4d1852c..b1e2709f63 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthHeaderNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthHeaderNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 26.0)! private let titleFont = Font.semibold(14.0) diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthListContentNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthListContentNode.swift index 8acfbfde51..5dc349a96d 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthListContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthListContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData final class SecureIdAuthListContentNode: ASDisplayNode, SecureIdAuthContentNode, UITextFieldDelegate { private let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthListFieldNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthListFieldNode.swift index bb1b18de1f..97d33b13ff 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthListFieldNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthListFieldNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData private let titleFont = Font.regular(17.0) private let textFont = Font.regular(15.0) diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordOptionContentNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordOptionContentNode.swift index cb7362bd47..4566301b88 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordOptionContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordOptionContentNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let passwordFont = Font.regular(16.0) private let buttonFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordSetupContentNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordSetupContentNode.swift index 62837c9fd8..2691eeafff 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordSetupContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordSetupContentNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let titleFont = Font.regular(14.0) private let buttonFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormController.swift b/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormController.swift index 5178c96246..1a9232d203 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormController.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData enum SecureIdDocumentFormScrollToSubject { case selfie diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormControllerNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormControllerNode.swift index 175849aecf..f38e967a3c 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormControllerNode.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData private enum SecureIdDocumentFormTextField { case identifier diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryController.swift b/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryController.swift index 93e2b50034..c5a4844a7c 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryController.swift @@ -6,6 +6,7 @@ import Postbox import SwiftSignalKit import AsyncDisplayKit import TelegramCore +import TelegramPresentationData struct SecureIdDocumentGalleryEntryLocation: Equatable { let position: Int32 diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift index f497fd2c50..1bb75bda6e 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift @@ -6,6 +6,7 @@ import Postbox import TelegramCore import SwiftSignalKit import Photos +import TelegramPresentationData private let deleteImage = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionThrash"), color: .white) diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift b/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift index a5a4722928..8be75a8dff 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData class SecureIdDocumentGalleryItem: GalleryItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentTypeSelectionController.swift b/submodules/TelegramUI/TelegramUI/SecureIdDocumentTypeSelectionController.swift index 1b15c14900..fa25f2ba24 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentTypeSelectionController.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdDocumentTypeSelectionController.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData private func stringForDocumentType(_ type: SecureIdRequestedIdentityDocument, strings: PresentationStrings) -> String { switch type { diff --git a/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormController.swift b/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormController.swift index 28ce95ccf3..58dd22a98b 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormController.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData enum SecureIdPlaintextFormType { case phone diff --git a/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormControllerNode.swift b/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormControllerNode.swift index 95f686f729..223b59784e 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormControllerNode.swift @@ -6,6 +6,7 @@ import TelegramCore import Postbox import SwiftSignalKit import CoreTelephony +import TelegramPresentationData private func cleanPhoneNumber(_ text: String?) -> String { var cleanNumber = "" diff --git a/submodules/TelegramUI/TelegramUI/SecureIdValueFormFileItem.swift b/submodules/TelegramUI/TelegramUI/SecureIdValueFormFileItem.swift index 6c581f6192..c3bfc12b60 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdValueFormFileItem.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdValueFormFileItem.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData private let textFont = Font.regular(16.0) private let labelFont = Font.regular(13.0) diff --git a/submodules/TelegramUI/TelegramUI/SecureIdValueFormPhoneItem.swift b/submodules/TelegramUI/TelegramUI/SecureIdValueFormPhoneItem.swift index 0716ce3d1d..c98986da47 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdValueFormPhoneItem.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdValueFormPhoneItem.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import TelegramCore +import TelegramPresentationData private let textFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/SelectablePeerNode.swift b/submodules/TelegramUI/TelegramUI/SelectablePeerNode.swift index b154249cf4..95a39b3b34 100644 --- a/submodules/TelegramUI/TelegramUI/SelectablePeerNode.swift +++ b/submodules/TelegramUI/TelegramUI/SelectablePeerNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData import LegacyComponents diff --git a/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsController.swift b/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsController.swift index 60cb409147..4a049fae3d 100644 --- a/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences enum SelectivePrivacySettingsKind { case presence diff --git a/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsPeersController.swift b/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsPeersController.swift index 8a958478d9..51cb25224a 100644 --- a/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsPeersController.swift +++ b/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsPeersController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class SelectivePrivacyPeersControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/SettingsController.swift b/submodules/TelegramUI/TelegramUI/SettingsController.swift index d1c1786bca..f1186f9bf6 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsController.swift @@ -11,6 +11,9 @@ import MtProtoKit #else import MtProtoKitDynamic #endif +import TelegramPresentationData +import TelegramUIPreferences +import DeviceAccess private let maximumNumberOfAccounts = 3 @@ -1036,7 +1039,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM |> then( contextValue.get() |> mapToSignal { context -> Signal in - return DeviceAccess.authorizationStatus(context: context, subject: .notifications) + return DeviceAccess.authorizationStatus(applicationInForeground: context.sharedContext.applicationBindings.applicationInForeground, subject: .notifications) } ) ) diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchItem.swift b/submodules/TelegramUI/TelegramUI/SettingsSearchItem.swift index 66961a42b1..3717833e9d 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsSearchItem.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsSearchItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData extension NavigationBarSearchContentNode: ItemListControllerSearchNavigationContentNode { func activate() { diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchRecentItem.swift b/submodules/TelegramUI/TelegramUI/SettingsSearchRecentItem.swift index 52b7022b47..10a0728ff9 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsSearchRecentItem.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsSearchRecentItem.swift @@ -5,6 +5,7 @@ import Postbox import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData private enum RevealOptionKey: Int32 { case delete diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchRecentQueries.swift b/submodules/TelegramUI/TelegramUI/SettingsSearchRecentQueries.swift index 3c8bb39760..38679d8a0b 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsSearchRecentQueries.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsSearchRecentQueries.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Postbox import SwiftSignalKit +import TelegramUIPreferences private struct SettingsSearchRecentQueryItemId { public let rawValue: MemoryBuffer diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchResultItem.swift b/submodules/TelegramUI/TelegramUI/SettingsSearchResultItem.swift index 6e2e8b5965..8cfecb6174 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsSearchResultItem.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsSearchResultItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class SettingsSearchResultItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift b/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift index 69c11bbf97..4475fd34e5 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramUIPreferences +import TelegramCallsUI private let maximumNumberOfAccounts = 3 diff --git a/submodules/TelegramUI/TelegramUI/SettingsThemeWallpaperNode.swift b/submodules/TelegramUI/TelegramUI/SettingsThemeWallpaperNode.swift index 4200cf93ac..41eedf98fb 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsThemeWallpaperNode.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsThemeWallpaperNode.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import Postbox import SwiftSignalKit +import TelegramPresentationData private func whiteColorImage(theme: PresentationTheme) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { return .single({ arguments in diff --git a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationContentNode.swift b/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationContentNode.swift index d82b31db92..3e406b88a9 100644 --- a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationContentNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Display import AsyncDisplayKit +import TelegramPresentationData enum SetupTwoStepVerificationInputType { case password diff --git a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationController.swift b/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationController.swift index c1804e21df..fec990f061 100644 --- a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationController.swift +++ b/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import SwiftSignalKit import TelegramCore +import TelegramPresentationData class SetupTwoStepVerificationController: ViewController { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationControllerNode.swift b/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationControllerNode.swift index 46b3a84d2e..25c114647b 100644 --- a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData enum SetupTwoStepVerificationInitialState { case automatic diff --git a/submodules/TelegramUI/TelegramUI/ShareController.swift b/submodules/TelegramUI/TelegramUI/ShareController.swift index e68f90ad50..26ed598809 100644 --- a/submodules/TelegramUI/TelegramUI/ShareController.swift +++ b/submodules/TelegramUI/TelegramUI/ShareController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData public struct ShareControllerAction { let title: String diff --git a/submodules/TelegramUI/TelegramUI/ShareControllerNode.swift b/submodules/TelegramUI/TelegramUI/ShareControllerNode.swift index b4d9bb13f1..e93e5a8cc4 100644 --- a/submodules/TelegramUI/TelegramUI/ShareControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ShareControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData enum ShareState { case preparing diff --git a/submodules/TelegramUI/TelegramUI/ShareControllerPeerGridItem.swift b/submodules/TelegramUI/TelegramUI/ShareControllerPeerGridItem.swift index c24da69c78..c150265493 100644 --- a/submodules/TelegramUI/TelegramUI/ShareControllerPeerGridItem.swift +++ b/submodules/TelegramUI/TelegramUI/ShareControllerPeerGridItem.swift @@ -5,6 +5,7 @@ import TelegramCore import SwiftSignalKit import AsyncDisplayKit import Postbox +import TelegramPresentationData final class ShareControllerInteraction { var foundPeers: [RenderedPeer] = [] diff --git a/submodules/TelegramUI/TelegramUI/ShareControllerRecentPeersGridItem.swift b/submodules/TelegramUI/TelegramUI/ShareControllerRecentPeersGridItem.swift index 2c9cf33348..6fac827f77 100644 --- a/submodules/TelegramUI/TelegramUI/ShareControllerRecentPeersGridItem.swift +++ b/submodules/TelegramUI/TelegramUI/ShareControllerRecentPeersGridItem.swift @@ -5,6 +5,7 @@ import TelegramCore import SwiftSignalKit import AsyncDisplayKit import Postbox +import TelegramPresentationData final class ShareControllerRecentPeersGridItem: GridItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift b/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift new file mode 100644 index 0000000000..4f3a3d3c5e --- /dev/null +++ b/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift @@ -0,0 +1,344 @@ +import UIKit +import Display +import TelegramCore +import SwiftSignalKit +import Postbox +import TelegramPresentationData +import TelegramUIPreferences +import TelegramUIPrivateModule + +private let inForeground = ValuePromise(false, ignoreRepeated: true) + +private final class InternalContext { + let sharedContext: SharedAccountContext + let wakeupManager: SharedWakeupManager + + init(sharedContext: SharedAccountContext) { + self.sharedContext = sharedContext + self.wakeupManager = SharedWakeupManager(beginBackgroundTask: { _, _ in nil }, endBackgroundTask: { _ in }, backgroundTimeRemaining: { 0.0 }, activeAccounts: sharedContext.activeAccounts |> map { ($0.0, $0.1.map { ($0.0, $0.1) }) }, liveLocationPolling: .single(nil), watchTasks: .single(nil), inForeground: inForeground.get(), hasActiveAudioSession: .single(false), notificationManager: nil, mediaManager: sharedContext.mediaManager, callManager: sharedContext.callManager, accountUserInterfaceInUse: { id in + return sharedContext.accountUserInterfaceInUse(id) + }) + } +} + +private var globalInternalContext: InternalContext? + +private var installedSharedLogger = false + +private func setupSharedLogger(_ path: String) { + if !installedSharedLogger { + installedSharedLogger = true + Logger.setSharedLogger(Logger(basePath: path)) + } +} + +private enum ShareAuthorizationError { + case unauthorized +} + +public struct ShareRootControllerInitializationData { + public let appGroupPath: String + public let apiId: Int32 + public let languagesCategory: String + public let encryptionParameters: (Data, Data) + public let appVersion: String + public let bundleData: Data? + + public init(appGroupPath: String, apiId: Int32, languagesCategory: String, encryptionParameters: (Data, Data), appVersion: String, bundleData: Data?) { + self.appGroupPath = appGroupPath + self.apiId = apiId + self.languagesCategory = languagesCategory + self.encryptionParameters = encryptionParameters + self.appVersion = appVersion + self.bundleData = bundleData + } +} + +public class ShareRootControllerImpl { + private let initializationData: ShareRootControllerInitializationData + private let getExtensionContext: () -> NSExtensionContext? + + private var mainWindow: Window1? + private var currentShareController: ShareController? + private var currentPasscodeController: ViewController? + + private var shouldBeMaster = Promise() + private let disposable = MetaDisposable() + private var observer1: AnyObject? + private var observer2: AnyObject? + + public init(initializationData: ShareRootControllerInitializationData, getExtensionContext: @escaping () -> NSExtensionContext?) { + self.initializationData = initializationData + self.getExtensionContext = getExtensionContext + } + + deinit { + self.disposable.dispose() + self.shouldBeMaster.set(.single(false)) + if let observer = self.observer1 { + NotificationCenter.default.removeObserver(observer) + } + if let observer = self.observer2 { + NotificationCenter.default.removeObserver(observer) + } + } + + public func loadView() { + telegramUIDeclareEncodables() + + if #available(iOSApplicationExtension 8.2, iOS 8.2, *) { + self.observer1 = NotificationCenter.default.addObserver(forName: NSNotification.Name.NSExtensionHostDidBecomeActive, object: nil, queue: nil, using: { _ in + inForeground.set(true) + }) + + self.observer2 = NotificationCenter.default.addObserver(forName: NSNotification.Name.NSExtensionHostWillResignActive, object: nil, queue: nil, using: { _ in + inForeground.set(false) + }) + } + } + + public func viewWillAppear() { + inForeground.set(true) + } + + public func viewWillDisappear() { + self.disposable.dispose() + inForeground.set(false) + } + + public func viewDidLayoutSubviews(view: UIView) { + if self.mainWindow == nil { + let mainWindow = Window1(hostView: childWindowHostView(parent: view), statusBarHost: nil) + mainWindow.hostView.eventView.backgroundColor = UIColor.clear + mainWindow.hostView.eventView.isHidden = false + self.mainWindow = mainWindow + + view.addSubview(mainWindow.hostView.containerView) + mainWindow.hostView.containerView.frame = view.bounds + + let rootPath = rootPathForBasePath(self.initializationData.appGroupPath) + performAppGroupUpgrades(appGroupPath: self.initializationData.appGroupPath, rootPath: rootPath) + + TempBox.initializeShared(basePath: rootPath, processType: "share", launchSpecificId: arc4random64()) + + let logsPath = rootPath + "/share-logs" + let _ = try? FileManager.default.createDirectory(atPath: logsPath, withIntermediateDirectories: true, attributes: nil) + + setupSharedLogger(logsPath) + + let applicationBindings = TelegramApplicationBindings(isMainApp: false, containerPath: self.initializationData.appGroupPath, appSpecificScheme: "tg", openUrl: { _ in + }, openUniversalUrl: { _, completion in + completion.completion(false) + return + }, canOpenUrl: { _ in + return false + }, getTopWindow: { + return nil + }, displayNotification: { _ in + + }, applicationInForeground: .single(false), applicationIsActive: .single(false), clearMessageNotifications: { _ in + }, pushIdleTimerExtension: { + return EmptyDisposable + }, openSettings: {}, openAppStorePage: {}, registerForNotifications: { _ in }, requestSiriAuthorization: { _ in }, siriAuthorization: { return .notDetermined }, getWindowHost: { + return nil + }, presentNativeController: { _ in + }, dismissNativeController: { + }, getAvailableAlternateIcons: { + return [] + }, getAlternateIconName: { + return nil + }, requestSetAlternateIconName: { _, f in + f(false) + }) + + let internalContext: InternalContext + + if let globalInternalContext = globalInternalContext { + internalContext = globalInternalContext + } else { + initializeAccountManagement() + let accountManager = AccountManager(basePath: rootPath + "/accounts-metadata") + var initialPresentationDataAndSettings: InitialPresentationDataAndSettings? + let semaphore = DispatchSemaphore(value: 0) + let _ = currentPresentationDataAndSettings(accountManager: accountManager).start(next: { value in + initialPresentationDataAndSettings = value + semaphore.signal() + }) + semaphore.wait() + + let sharedContext = SharedAccountContext(mainWindow: nil, basePath: rootPath, encryptionParameters: ValueBoxEncryptionParameters(forceEncryptionIfNoSet: false, key: ValueBoxEncryptionParameters.Key(data: self.initializationData.encryptionParameters.0)!, salt: ValueBoxEncryptionParameters.Salt(data: self.initializationData.encryptionParameters.1)!), accountManager: accountManager, applicationBindings: applicationBindings, initialPresentationDataAndSettings: initialPresentationDataAndSettings!, networkArguments: NetworkInitializationArguments(apiId: self.initializationData.apiId, languagesCategory: self.initializationData.languagesCategory, appVersion: self.initializationData.appVersion, voipMaxLayer: 0, appData: self.initializationData.bundleData), rootPath: rootPath, legacyBasePath: nil, legacyCache: nil, apsNotificationToken: .never(), voipNotificationToken: .never(), setNotificationCall: { _ in }, navigateToChat: { _, _, _ in }) + internalContext = InternalContext(sharedContext: sharedContext) + globalInternalContext = internalContext + } + + let account: Signal<(SharedAccountContext, Account, [AccountWithInfo]), ShareAuthorizationError> = internalContext.sharedContext.accountManager.transaction { transaction -> (SharedAccountContext, LoggingSettings) in + return (internalContext.sharedContext, transaction.getSharedData(SharedDataKeys.loggingSettings) as? LoggingSettings ?? LoggingSettings.defaultSettings) + } + |> introduceError(ShareAuthorizationError.self) + |> mapToSignal { sharedContext, loggingSettings -> Signal<(SharedAccountContext, Account, [AccountWithInfo]), ShareAuthorizationError> in + Logger.shared.logToFile = loggingSettings.logToFile + Logger.shared.logToConsole = loggingSettings.logToConsole + + Logger.shared.redactSensitiveData = loggingSettings.redactSensitiveData + + return sharedContext.activeAccountsWithInfo + |> introduceError(ShareAuthorizationError.self) + |> take(1) + |> mapToSignal { primary, accounts -> Signal<(SharedAccountContext, Account, [AccountWithInfo]), ShareAuthorizationError> in + guard let primary = primary else { + return .fail(.unauthorized) + } + guard let info = accounts.first(where: { $0.account.id == primary }) else { + return .fail(.unauthorized) + } + return .single((sharedContext, info.account, Array(accounts))) + } + } + |> take(1) + + let applicationInterface = account + |> mapToSignal { sharedContext, account, otherAccounts -> Signal<(AccountContext, PostboxAccessChallengeData, [AccountWithInfo]), ShareAuthorizationError> in + let limitsConfiguration = account.postbox.transaction { transaction -> LimitsConfiguration in + return transaction.getPreferencesEntry(key: PreferencesKeys.limitsConfiguration) as? LimitsConfiguration ?? LimitsConfiguration.defaultValue + } + return combineLatest(sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.presentationPasscodeSettings]), limitsConfiguration, sharedContext.accountManager.accessChallengeData()) + |> take(1) + |> deliverOnMainQueue + |> introduceError(ShareAuthorizationError.self) + |> map { sharedData, limitsConfiguration, data -> (AccountContext, PostboxAccessChallengeData, [AccountWithInfo]) in + updateLegacyLocalization(strings: sharedContext.currentPresentationData.with({ $0 }).strings) + let context = AccountContext(sharedContext: sharedContext, account: account, limitsConfiguration: limitsConfiguration) + return (context, data.data, otherAccounts) + } + } + |> deliverOnMainQueue + |> afterNext { [weak self] context, accessChallengeData, otherAccounts in + setupLegacyComponents(context: context) + initializeLegacyComponents(application: nil, currentSizeClassGetter: { return .compact }, currentHorizontalClassGetter: { return .compact }, documentsPath: "", currentApplicationBounds: { return CGRect() }, canOpenUrl: { _ in return false}, openUrl: { _ in }) + + let displayShare: () -> Void = { + var cancelImpl: (() -> Void)? + + let requestUserInteraction: ([UnpreparedShareItemContent]) -> Signal<[PreparedShareItemContent], NoError> = { content in + return Signal { [weak self] subscriber in + switch content[0] { + case let .contact(data): + let controller = deviceContactInfoController(context: context, subject: .filter(peer: nil, contactId: nil, contactData: data, completion: { peer, contactData in + let phone = contactData.basicData.phoneNumbers[0].value + if let vCardData = contactData.serializedVCard() { + subscriber.putNext([.media(.media(.standalone(media: TelegramMediaContact(firstName: contactData.basicData.firstName, lastName: contactData.basicData.lastName, phoneNumber: phone, peerId: nil, vCardData: vCardData))))]) + } + subscriber.putCompletion() + }), cancelled: { + cancelImpl?() + }) + + if let strongSelf = self, let window = strongSelf.mainWindow { + controller.presentationArguments = ViewControllerPresentationArguments(presentationAnimation: .modalSheet) + window.present(controller, on: .root) + } + break + } + + return ActionDisposable { + } + } |> runOn(Queue.mainQueue()) + } + + let sentItems: ([PeerId], [PreparedShareItemContent], Account) -> Signal = { peerIds, contents, account in + let sentItems = sentShareItems(account: account, to: peerIds, items: contents) + |> `catch` { _ -> Signal< + Float, NoError> in + return .complete() + } + return sentItems + |> map { value -> ShareControllerExternalStatus in + return .progress(value) + } + |> then(.single(.done)) + } + + let shareController = ShareController(context: context, subject: .fromExternal({ peerIds, additionalText, account in + if let strongSelf = self, let inputItems = strongSelf.getExtensionContext()?.inputItems, !inputItems.isEmpty, !peerIds.isEmpty { + let rawSignals = TGItemProviderSignals.itemSignals(forInputItems: inputItems)! + return preparedShareItems(account: account, to: peerIds[0], dataItems: rawSignals, additionalText: additionalText) + |> map(Optional.init) + |> `catch` { _ -> Signal in + return .single(nil) + } + |> mapToSignal { state -> Signal in + guard let state = state else { + return .single(.done) + } + switch state { + case .preparing: + return .single(.preparing) + case let .progress(value): + return .single(.progress(value)) + case let .userInteractionRequired(value): + return requestUserInteraction(value) + |> mapToSignal { contents -> Signal in + return sentItems(peerIds, contents, account) + } + case let .done(contents): + return sentItems(peerIds, contents, account) + } + } + } else { + return .single(.done) + } + }), externalShare: false, switchableAccounts: otherAccounts) + shareController.presentationArguments = ViewControllerPresentationArguments(presentationAnimation: .modalSheet) + shareController.dismissed = { _ in + self?.getExtensionContext()?.completeRequest(returningItems: nil, completionHandler: nil) + } + + cancelImpl = { [weak shareController] in + shareController?.dismiss() + } + + if let strongSelf = self { + if let currentShareController = strongSelf.currentShareController { + currentShareController.dismiss() + } + strongSelf.currentShareController = shareController + strongSelf.mainWindow?.present(shareController, on: .root) + } + + context.account.resetStateManagement() + } + + let _ = passcodeEntryController(context: context, animateIn: true, completion: { value in + if value { + displayShare() + } else { + Queue.mainQueue().after(0.5, { + self?.getExtensionContext()?.completeRequest(returningItems: nil, completionHandler: nil) + }) + } + }).start(next: { controller in + guard let strongSelf = self, let controller = controller else { + return + } + + if let currentPasscodeController = strongSelf.currentPasscodeController { + currentPasscodeController.dismiss() + } + strongSelf.currentPasscodeController = controller + strongSelf.mainWindow?.present(controller, on: .root) + }) + } + + self.disposable.set(applicationInterface.start(next: { _, _, _ in }, error: { [weak self] error in + guard let strongSelf = self else { + return + } + let presentationData = internalContext.sharedContext.currentPresentationData.with { $0 } + let controller = standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: presentationData.strings.Share_AuthTitle, text: presentationData.strings.Share_AuthDescription, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: { + self?.getExtensionContext()?.completeRequest(returningItems: nil, completionHandler: nil) + })]) + strongSelf.mainWindow?.present(controller, on: .root) + }, completed: {})) + } + } +} diff --git a/submodules/TelegramUI/TelegramUI/ShareInputFieldNode.swift b/submodules/TelegramUI/TelegramUI/ShareInputFieldNode.swift index c08101166e..11fc4ef4b2 100644 --- a/submodules/TelegramUI/TelegramUI/ShareInputFieldNode.swift +++ b/submodules/TelegramUI/TelegramUI/ShareInputFieldNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private func generateClearIcon(color: UIColor) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: color) diff --git a/Share/ShareItems.swift b/submodules/TelegramUI/TelegramUI/ShareItems.swift similarity index 99% rename from Share/ShareItems.swift rename to submodules/TelegramUI/TelegramUI/ShareItems.swift index f266e7d7ee..7879f80f0c 100644 --- a/Share/ShareItems.swift +++ b/submodules/TelegramUI/TelegramUI/ShareItems.swift @@ -8,7 +8,7 @@ import MtProtoKit import MtProtoKitDynamic #endif import Display -import TelegramUI +import TelegramUIPrivateModule import LegacyComponents @@ -36,7 +36,7 @@ enum PreparedShareItems { } private func scalePhotoImage(_ image: UIImage, dimensions: CGSize) -> UIImage? { - if #available(iOSApplicationExtension 10.0, *) { + if #available(iOSApplicationExtension 10.0, iOS 10.0, *) { let format = UIGraphicsImageRendererFormat() format.scale = 1.0 let renderer = UIGraphicsImageRenderer(size: dimensions, format: format) diff --git a/submodules/TelegramUI/TelegramUI/ShareLoadingContainerNode.swift b/submodules/TelegramUI/TelegramUI/ShareLoadingContainerNode.swift index 297906bdb6..33896988a7 100644 --- a/submodules/TelegramUI/TelegramUI/ShareLoadingContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ShareLoadingContainerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import Postbox +import TelegramPresentationData enum ShareLoadingState { case preparing diff --git a/submodules/TelegramUI/TelegramUI/SharePeersContainerNode.swift b/submodules/TelegramUI/TelegramUI/SharePeersContainerNode.swift index 81b75cf11c..882b425887 100644 --- a/submodules/TelegramUI/TelegramUI/SharePeersContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/SharePeersContainerNode.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import SwiftSignalKit import Display +import TelegramPresentationData private let subtitleFont = Font.regular(12.0) diff --git a/submodules/TelegramUI/TelegramUI/ShareProxyServerActionSheetController.swift b/submodules/TelegramUI/TelegramUI/ShareProxyServerActionSheetController.swift index af258bb477..4e535d3771 100644 --- a/submodules/TelegramUI/TelegramUI/ShareProxyServerActionSheetController.swift +++ b/submodules/TelegramUI/TelegramUI/ShareProxyServerActionSheetController.swift @@ -6,6 +6,7 @@ import Postbox import AsyncDisplayKit import UIKit import SwiftSignalKit +import TelegramPresentationData public final class ShareProxyServerActionSheetController: ActionSheetController { private var presentationDisposable: Disposable? diff --git a/submodules/TelegramUI/TelegramUI/ShareSearchBarNode.swift b/submodules/TelegramUI/TelegramUI/ShareSearchBarNode.swift index dcd2f7eaef..183e3457d2 100644 --- a/submodules/TelegramUI/TelegramUI/ShareSearchBarNode.swift +++ b/submodules/TelegramUI/TelegramUI/ShareSearchBarNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private func generateClearIcon(color: UIColor) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: color) diff --git a/submodules/TelegramUI/TelegramUI/ShareSearchContainerNode.swift b/submodules/TelegramUI/TelegramUI/ShareSearchContainerNode.swift index a0d55288e2..b13837cc34 100644 --- a/submodules/TelegramUI/TelegramUI/ShareSearchContainerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ShareSearchContainerNode.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import SwiftSignalKit import Display +import TelegramPresentationData private let cancelFont = Font.regular(17.0) private let subtitleFont = Font.regular(12.0) diff --git a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift index 11562af2ef..6b91d7ac8d 100644 --- a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift +++ b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift @@ -3,6 +3,9 @@ import Postbox import TelegramCore import SwiftSignalKit import Display +import TelegramPresentationData +import TelegramCallsUI +import TelegramUIPreferences private enum CallStatusText: Equatable { case none @@ -38,12 +41,6 @@ public final class AccountWithInfo: Equatable { } } -private func pathFromLegacyFile(basePath: String, fileId: Int64, isLocal: Bool, fileName: String) -> String { - let documentsPath = basePath + "/Documents" - let filePath = documentsPath + "/files/" + (isLocal ? "local" : "") + "\(String(fileId, radix: 16))/\(fileName)" - return filePath -} - private func preFetchedLegacyResourcePath(basePath: String, resource: MediaResource, cache: LegacyCache) -> String? { if let resource = resource as? CloudDocumentMediaResource { let videoPath = "\(basePath)/Documents/video/remote\(String(resource.fileId, radix: 16)).mov" @@ -199,7 +196,7 @@ public final class SharedAccountContext { self._presentationData.set(.single(initialPresentationDataAndSettings.presentationData) |> then( - updatedPresentationData(accountManager: self.accountManager, applicationBindings: self.applicationBindings) + updatedPresentationData(accountManager: self.accountManager, applicationInForeground: self.applicationBindings.applicationInForeground) )) self._automaticMediaDownloadSettings.set(.single(initialPresentationDataAndSettings.automaticMediaDownloadSettings) |> then(accountManager.sharedData(keys: [SharedDataKeys.autodownloadSettings, ApplicationSpecificSharedDataKeys.automaticMediaDownloadSettings]) diff --git a/submodules/TelegramUI/TelegramUI/SharedMediaPlayer.swift b/submodules/TelegramUI/TelegramUI/SharedMediaPlayer.swift index 249283027b..6cde37a7bc 100644 --- a/submodules/TelegramUI/TelegramUI/SharedMediaPlayer.swift +++ b/submodules/TelegramUI/TelegramUI/SharedMediaPlayer.swift @@ -3,8 +3,10 @@ import UIKit import SwiftSignalKit import Postbox import TelegramCore - +import TelegramUIPreferences import TelegramUIPrivateModule +import UniversalMediaPlayer +import TelegramAudio enum SharedMediaPlayerPlaybackControlAction { case play diff --git a/Telegram-iOS/SharedNotificationManager.swift b/submodules/TelegramUI/TelegramUI/SharedNotificationManager.swift similarity index 99% rename from Telegram-iOS/SharedNotificationManager.swift rename to submodules/TelegramUI/TelegramUI/SharedNotificationManager.swift index 16844a5856..e6f2c5506a 100644 --- a/Telegram-iOS/SharedNotificationManager.swift +++ b/submodules/TelegramUI/TelegramUI/SharedNotificationManager.swift @@ -4,7 +4,8 @@ import UserNotifications import SwiftSignalKit import Postbox import TelegramCore -import TelegramUI +import TelegramPresentationData +import TelegramCallsUI private final class PollStateContext { let subscribers = Bag<(Bool) -> Void>() @@ -19,7 +20,7 @@ private final class PollStateContext { } } -final class SharedNotificationManager { +public final class SharedNotificationManager { private let episodeId: UInt32 private let application: UIApplication diff --git a/Telegram-iOS/SharedWakeupManager.swift b/submodules/TelegramUI/TelegramUI/SharedWakeupManager.swift similarity index 93% rename from Telegram-iOS/SharedWakeupManager.swift rename to submodules/TelegramUI/TelegramUI/SharedWakeupManager.swift index 5e144be64d..e307ea4285 100644 --- a/Telegram-iOS/SharedWakeupManager.swift +++ b/submodules/TelegramUI/TelegramUI/SharedWakeupManager.swift @@ -3,7 +3,7 @@ import UIKit import SwiftSignalKit import Postbox import TelegramCore -import TelegramUI +import TelegramCallsUI private struct AccountTasks { let stateSynchronization: Bool @@ -44,7 +44,7 @@ private struct AccountTasks { } } -final class SharedWakeupManager { +public final class SharedWakeupManager { private let beginBackgroundTask: (String, @escaping () -> Void) -> UIBackgroundTaskIdentifier? private let endBackgroundTask: (UIBackgroundTaskIdentifier) -> Void private let backgroundTimeRemaining: () -> Double @@ -61,7 +61,7 @@ final class SharedWakeupManager { private var accountsAndTasks: [(Account, Bool, AccountTasks)] = [] - init(beginBackgroundTask: @escaping (String, @escaping () -> Void) -> UIBackgroundTaskIdentifier?, endBackgroundTask: @escaping (UIBackgroundTaskIdentifier) -> Void, backgroundTimeRemaining: @escaping () -> Double, activeAccounts: Signal<(primary: Account?, accounts: [(AccountRecordId, Account)]), NoError>, liveLocationPolling: Signal, watchTasks: Signal, inForeground: Signal, hasActiveAudioSession: Signal, notificationManager: SharedNotificationManager?, mediaManager: MediaManager, callManager: PresentationCallManager?, accountUserInterfaceInUse: @escaping (AccountRecordId) -> Signal) { + public init(beginBackgroundTask: @escaping (String, @escaping () -> Void) -> UIBackgroundTaskIdentifier?, endBackgroundTask: @escaping (UIBackgroundTaskIdentifier) -> Void, backgroundTimeRemaining: @escaping () -> Double, activeAccounts: Signal<(primary: Account?, accounts: [(AccountRecordId, Account)]), NoError>, liveLocationPolling: Signal, watchTasks: Signal, inForeground: Signal, hasActiveAudioSession: Signal, notificationManager: SharedNotificationManager?, mediaManager: MediaManager, callManager: PresentationCallManager?, accountUserInterfaceInUse: @escaping (AccountRecordId) -> Signal) { assert(Queue.mainQueue().isCurrent()) self.beginBackgroundTask = beginBackgroundTask diff --git a/submodules/TelegramUI/TelegramUI/SoftwareVideoLayerFrameManager.swift b/submodules/TelegramUI/TelegramUI/SoftwareVideoLayerFrameManager.swift index 68484700a7..1867870198 100644 --- a/submodules/TelegramUI/TelegramUI/SoftwareVideoLayerFrameManager.swift +++ b/submodules/TelegramUI/TelegramUI/SoftwareVideoLayerFrameManager.swift @@ -4,6 +4,7 @@ import Postbox import TelegramCore import SwiftSignalKit import CoreMedia +import UniversalMediaPlayer private let applyQueue = Queue() private let workers = ThreadPool(threadCount: 2, threadPriority: 0.09) diff --git a/submodules/TelegramUI/TelegramUI/SoftwareVideoSource.swift b/submodules/TelegramUI/TelegramUI/SoftwareVideoSource.swift index 475cc35dc6..f90e8c727c 100644 --- a/submodules/TelegramUI/TelegramUI/SoftwareVideoSource.swift +++ b/submodules/TelegramUI/TelegramUI/SoftwareVideoSource.swift @@ -3,6 +3,7 @@ import UIKit import CoreMedia import SwiftSignalKit import FFMpeg +import UniversalMediaPlayer private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: UnsafeMutablePointer?, bufferSize: Int32) -> Int32 { let context = Unmanaged.fromOpaque(userData!).takeUnretainedValue() diff --git a/submodules/TelegramUI/TelegramUI/SoftwareVideoThumbnailLayer.swift b/submodules/TelegramUI/TelegramUI/SoftwareVideoThumbnailLayer.swift index d92cf36d4c..cd9e2de493 100644 --- a/submodules/TelegramUI/TelegramUI/SoftwareVideoThumbnailLayer.swift +++ b/submodules/TelegramUI/TelegramUI/SoftwareVideoThumbnailLayer.swift @@ -3,6 +3,7 @@ import UIKit import TelegramCore import Postbox import SwiftSignalKit +import Display private final class SoftwareVideoThumbnailLayerNullAction: NSObject, CAAction { @objc func run(forKey event: String, object anObject: Any, arguments dict: [AnyHashable : Any]?) { diff --git a/submodules/TelegramUI/TelegramUI/SolidRoundedButtonNode.swift b/submodules/TelegramUI/TelegramUI/SolidRoundedButtonNode.swift index a3d6d2af5c..b5b0349a64 100644 --- a/submodules/TelegramUI/TelegramUI/SolidRoundedButtonNode.swift +++ b/submodules/TelegramUI/TelegramUI/SolidRoundedButtonNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData private let textFont: UIFont = Font.regular(16.0) diff --git a/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift index e8c5350a1d..70d1eb3efd 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private struct StickerPackPreviewGridEntry: Comparable, Identifiable { let index: Int diff --git a/submodules/TelegramUI/TelegramUI/StickerPanePeerSpecificSetupGridItem.swift b/submodules/TelegramUI/TelegramUI/StickerPanePeerSpecificSetupGridItem.swift index d01bd9f581..7cfe2605cf 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPanePeerSpecificSetupGridItem.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPanePeerSpecificSetupGridItem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class StickerPanePeerSpecificSetupGridItem: GridItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/StickerPaneSearchContentNode.swift b/submodules/TelegramUI/TelegramUI/StickerPaneSearchContentNode.swift index d888f8be0f..2f57769ce8 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPaneSearchContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPaneSearchContentNode.swift @@ -5,7 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore - +import TelegramPresentationData import LegacyComponents import TelegramUIPrivateModule diff --git a/submodules/TelegramUI/TelegramUI/StickerPaneSearchGlobaltem.swift b/submodules/TelegramUI/TelegramUI/StickerPaneSearchGlobaltem.swift index 99a09ebe14..d40ab5790f 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPaneSearchGlobaltem.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPaneSearchGlobaltem.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class StickerPaneSearchGlobalSection: GridSection { let height: CGFloat = 0.0 diff --git a/submodules/TelegramUI/TelegramUI/StickerPaneSearchStickerItem.swift b/submodules/TelegramUI/TelegramUI/StickerPaneSearchStickerItem.swift index efb887ef9b..882a3f09a8 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPaneSearchStickerItem.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPaneSearchStickerItem.swift @@ -5,6 +5,7 @@ import TelegramCore import SwiftSignalKit import AsyncDisplayKit import Postbox +import TelegramPresentationData final class StickerPaneSearchStickerSection: GridSection { let code: String diff --git a/submodules/TelegramUI/TelegramUI/StickerPreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/StickerPreviewControllerNode.swift index 0330951698..d8422acc2a 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPreviewControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPreviewControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData final class StickerPreviewControllerNode: ASDisplayNode, UIScrollViewDelegate { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/StickersChatInputContextPanelItem.swift b/submodules/TelegramUI/TelegramUI/StickersChatInputContextPanelItem.swift index b8dfdd7008..8152fda34a 100644 --- a/submodules/TelegramUI/TelegramUI/StickersChatInputContextPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/StickersChatInputContextPanelItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class StickersChatInputContextPanelItem: ListViewItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/StickersChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/StickersChatInputContextPanelNode.swift index e3cd7075d2..8882df1255 100644 --- a/submodules/TelegramUI/TelegramUI/StickersChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/StickersChatInputContextPanelNode.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import Display import SwiftSignalKit +import TelegramPresentationData private struct StickersChatInputContextPanelEntryStableId: Hashable { let ids: [MediaId] diff --git a/submodules/TelegramUI/TelegramUI/StorageUsageController.swift b/submodules/TelegramUI/TelegramUI/StorageUsageController.swift index 496c9b36a1..6b82984bde 100644 --- a/submodules/TelegramUI/TelegramUI/StorageUsageController.swift +++ b/submodules/TelegramUI/TelegramUI/StorageUsageController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class StorageUsageControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/StoreDownloadedMedia.swift b/submodules/TelegramUI/TelegramUI/StoreDownloadedMedia.swift index 0a59191ea4..8c77f31d8d 100644 --- a/submodules/TelegramUI/TelegramUI/StoreDownloadedMedia.swift +++ b/submodules/TelegramUI/TelegramUI/StoreDownloadedMedia.swift @@ -3,6 +3,7 @@ import SwiftSignalKit import TelegramCore import Postbox import Photos +import TelegramUIPreferences private func appSpecificAssetCollection() -> Signal { return Signal { subscriber in diff --git a/submodules/TelegramUI/TelegramUI/StringForMessageTimestampStatus.swift b/submodules/TelegramUI/TelegramUI/StringForMessageTimestampStatus.swift index 8677336fe9..8463032d30 100644 --- a/submodules/TelegramUI/TelegramUI/StringForMessageTimestampStatus.swift +++ b/submodules/TelegramUI/TelegramUI/StringForMessageTimestampStatus.swift @@ -1,6 +1,8 @@ import Foundation import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences enum MessageTimestampStatusFormat { case regular diff --git a/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift b/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift index 3a9780512e..e7646ab873 100644 --- a/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift +++ b/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift @@ -3,18 +3,19 @@ import AsyncDisplayKit import Display import SwiftSignalKit import TelegramCore +import DeviceAccess func presentContactsWarningSuppression(context: AccountContext, present: (ViewController, Any?) -> Void) { let presentationData = context.sharedContext.currentPresentationData.with { $0 } present(textAlertController(context: context, title: presentationData.strings.Contacts_PermissionsSuppressWarningTitle, text: presentationData.strings.Contacts_PermissionsSuppressWarningText, actions: [TextAlertAction(type: .genericAction, title: presentationData.strings.Contacts_PermissionsKeepDisabled, action: { ApplicationSpecificNotice.setContactsPermissionWarning(accountManager: context.sharedContext.accountManager, value: Int32(Date().timeIntervalSince1970)) }), TextAlertAction(type: .defaultAction, title: presentationData.strings.Contacts_PermissionsEnable, action: { - let _ = (DeviceAccess.authorizationStatus(context: context, subject: .contacts) + let _ = (DeviceAccess.authorizationStatus(subject: .contacts) |> take(1) |> deliverOnMainQueue).start(next: { status in switch status { case .notDetermined: - DeviceAccess.authorizeAccess(to: .contacts, context: context) + DeviceAccess.authorizeAccess(to: .contacts) case .denied, .restricted: context.sharedContext.applicationBindings.openSettings() default: diff --git a/submodules/TelegramUI/TelegramUI/SystemVideoContent.swift b/submodules/TelegramUI/TelegramUI/SystemVideoContent.swift index bbbd6922ea..a96d2b6e27 100644 --- a/submodules/TelegramUI/TelegramUI/SystemVideoContent.swift +++ b/submodules/TelegramUI/TelegramUI/SystemVideoContent.swift @@ -5,8 +5,9 @@ import Display import SwiftSignalKit import Postbox import TelegramCore - +import TelegramAudio import LegacyComponents +import UniversalMediaPlayer final class SystemVideoContent: UniversalVideoContent { let id: AnyHashable diff --git a/Telegram-iOS/TGAutoDownloadPreferences.h b/submodules/TelegramUI/TelegramUI/TGAutoDownloadPreferences.h similarity index 100% rename from Telegram-iOS/TGAutoDownloadPreferences.h rename to submodules/TelegramUI/TelegramUI/TGAutoDownloadPreferences.h diff --git a/Telegram-iOS/TGAutoDownloadPreferences.m b/submodules/TelegramUI/TelegramUI/TGAutoDownloadPreferences.m similarity index 100% rename from Telegram-iOS/TGAutoDownloadPreferences.m rename to submodules/TelegramUI/TelegramUI/TGAutoDownloadPreferences.m diff --git a/Telegram-iOS/TGBridgeServer.h b/submodules/TelegramUI/TelegramUI/TGBridgeServer.h similarity index 100% rename from Telegram-iOS/TGBridgeServer.h rename to submodules/TelegramUI/TelegramUI/TGBridgeServer.h diff --git a/Telegram-iOS/TGBridgeServer.m b/submodules/TelegramUI/TelegramUI/TGBridgeServer.m similarity index 99% rename from Telegram-iOS/TGBridgeServer.m rename to submodules/TelegramUI/TelegramUI/TGBridgeServer.m index cb1a09654f..372c92c8a1 100644 --- a/Telegram-iOS/TGBridgeServer.m +++ b/submodules/TelegramUI/TelegramUI/TGBridgeServer.m @@ -3,13 +3,7 @@ #import #import #import - -#ifdef BUCK -#import -#else -#import "TGBridgeCommon.h" -#import "TGBridgeContext.h" -#endif +#import @interface TGBridgeSignalManager : NSObject diff --git a/Share/TGContactModel.h b/submodules/TelegramUI/TelegramUI/TGContactModel.h similarity index 100% rename from Share/TGContactModel.h rename to submodules/TelegramUI/TelegramUI/TGContactModel.h diff --git a/Share/TGContactModel.m b/submodules/TelegramUI/TelegramUI/TGContactModel.m similarity index 100% rename from Share/TGContactModel.m rename to submodules/TelegramUI/TelegramUI/TGContactModel.m diff --git a/Share/TGItemProviderSignals.h b/submodules/TelegramUI/TelegramUI/TGItemProviderSignals.h similarity index 100% rename from Share/TGItemProviderSignals.h rename to submodules/TelegramUI/TelegramUI/TGItemProviderSignals.h diff --git a/Share/TGItemProviderSignals.m b/submodules/TelegramUI/TelegramUI/TGItemProviderSignals.m similarity index 100% rename from Share/TGItemProviderSignals.m rename to submodules/TelegramUI/TelegramUI/TGItemProviderSignals.m diff --git a/submodules/TelegramUI/TelegramUI/TGMimeTypeMap.m b/submodules/TelegramUI/TelegramUI/TGMimeTypeMap.m index 46c9021c8b..123d880dd3 100644 --- a/submodules/TelegramUI/TelegramUI/TGMimeTypeMap.m +++ b/submodules/TelegramUI/TelegramUI/TGMimeTypeMap.m @@ -315,6 +315,7 @@ static void initializeMapping() mimeToExtension[@"x-conference/x-cooltalk"] = @"ice"; extensionToMime[@"ice"] = @"x-conference/x-cooltalk"; mimeToExtension[@"x-epoc/x-sisx-app"] = @"sisx"; extensionToMime[@"sisx"] = @"x-epoc/x-sisx-app"; mimeToExtension[@"application/epub+zip"] = @"epub"; extensionToMime[@"epub"] = @"application/epub+zip"; + mimeToExtension[@"text/swift"] = @"swift"; extensionToMime[@"swift"] = @"text/swift"; mimeToExtensionMap = mimeToExtension; extensionToMimeMap = extensionToMime; diff --git a/Telegram-iOS/TGPresentationAutoNightPreferences.h b/submodules/TelegramUI/TelegramUI/TGPresentationAutoNightPreferences.h similarity index 100% rename from Telegram-iOS/TGPresentationAutoNightPreferences.h rename to submodules/TelegramUI/TelegramUI/TGPresentationAutoNightPreferences.h diff --git a/Telegram-iOS/TGPresentationAutoNightPreferences.m b/submodules/TelegramUI/TelegramUI/TGPresentationAutoNightPreferences.m similarity index 100% rename from Telegram-iOS/TGPresentationAutoNightPreferences.m rename to submodules/TelegramUI/TelegramUI/TGPresentationAutoNightPreferences.m diff --git a/Telegram-iOS/TGProxyItem.h b/submodules/TelegramUI/TelegramUI/TGProxyItem.h similarity index 100% rename from Telegram-iOS/TGProxyItem.h rename to submodules/TelegramUI/TelegramUI/TGProxyItem.h diff --git a/Telegram-iOS/TGProxyItem.m b/submodules/TelegramUI/TelegramUI/TGProxyItem.m similarity index 100% rename from Telegram-iOS/TGProxyItem.m rename to submodules/TelegramUI/TelegramUI/TGProxyItem.m diff --git a/Share/TGShareLocationSignals.h b/submodules/TelegramUI/TelegramUI/TGShareLocationSignals.h similarity index 100% rename from Share/TGShareLocationSignals.h rename to submodules/TelegramUI/TelegramUI/TGShareLocationSignals.h diff --git a/Share/TGShareLocationSignals.m b/submodules/TelegramUI/TelegramUI/TGShareLocationSignals.m similarity index 100% rename from Share/TGShareLocationSignals.m rename to submodules/TelegramUI/TelegramUI/TGShareLocationSignals.m diff --git a/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchController.swift b/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchController.swift index ea76f326b2..d78ce5dd23 100644 --- a/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchController.swift +++ b/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData public final class TabBarAccountSwitchController: ViewController { private var controllerNode: TabBarAccountSwitchControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchControllerNode.swift b/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchControllerNode.swift index d05d3f8b64..76d16d5482 100644 --- a/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchControllerNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 16.0)! diff --git a/submodules/TelegramUI/TelegramUI/TelegramController.swift b/submodules/TelegramUI/TelegramUI/TelegramController.swift index f383904870..2f6d279f2f 100644 --- a/submodules/TelegramUI/TelegramUI/TelegramController.swift +++ b/submodules/TelegramUI/TelegramUI/TelegramController.swift @@ -5,6 +5,9 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData +import TelegramUIPreferences +import UniversalMediaPlayer enum MediaAccessoryPanelVisibility { case none diff --git a/submodules/TelegramUI/TelegramUI/TelegramInitializeLegacyComponents.swift b/submodules/TelegramUI/TelegramUI/TelegramInitializeLegacyComponents.swift index 828b076e2c..085a36d202 100644 --- a/submodules/TelegramUI/TelegramUI/TelegramInitializeLegacyComponents.swift +++ b/submodules/TelegramUI/TelegramUI/TelegramInitializeLegacyComponents.swift @@ -8,7 +8,9 @@ import MtProtoKit import MtProtoKitDynamic #endif import Display - +import TelegramPresentationData +import DeviceAccess +import TelegramAudio import LegacyComponents var legacyComponentsApplication: UIApplication? diff --git a/submodules/TelegramUI/TelegramUI/TelegramRootController.swift b/submodules/TelegramUI/TelegramUI/TelegramRootController.swift index ea90ee2296..6038d70e70 100644 --- a/submodules/TelegramUI/TelegramUI/TelegramRootController.swift +++ b/submodules/TelegramUI/TelegramUI/TelegramRootController.swift @@ -4,7 +4,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit - +import TelegramPresentationData import TelegramUIPrivateModule public final class TelegramRootController: NavigationController { diff --git a/submodules/TelegramUI/TelegramUI/TelegramUIIncludes.h b/submodules/TelegramUI/TelegramUI/TelegramUIIncludes.h deleted file mode 100644 index 94e9f9bb75..0000000000 --- a/submodules/TelegramUI/TelegramUI/TelegramUIIncludes.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef TelegramUIIncludes_h -#define TelegramUIIncludes_h - - -#endif diff --git a/submodules/TelegramUI/TelegramUI/TelegramUIPrivate/module.modulemap b/submodules/TelegramUI/TelegramUI/TelegramUIPrivate/module.modulemap index 1426404bfd..b10393d20f 100644 --- a/submodules/TelegramUI/TelegramUI/TelegramUIPrivate/module.modulemap +++ b/submodules/TelegramUI/TelegramUI/TelegramUIPrivate/module.modulemap @@ -2,25 +2,26 @@ module TelegramUIPrivateModule { header "../../third-party/opusenc/opusenc.h" header "../TGDataItem.h" header "../FastBlur.h" - header "../RingBuffer.h" - header "../TelegramUIIncludes.h" - header "../../third-party/RMIntro/platform/ios/RMIntroViewController.h" header "../STPPaymentCardTextField.h" header "../STPAPIClient.h" header "../STPAPIClient+ApplePay.h" header "../STPPaymentConfiguration.h" header "../STPCard.h" header "../STPToken.h" - header "../OngoingCallThreadLocalContext.h" header "../SecretChatKeyVisualization.h" - header "../NumberPluralizationForm.h" header "../DeviceProximityManager.h" header "../RaiseToListenActivator.h" header "../TGMimeTypeMap.h" header "../TGEmojiSuggestions.h" header "../TGChannelIntroController.h" - header "../EDSunriseSet.h" - header "../TGBridgeAudioDecoder.h" - header "../TGBridgeAudioEncoder.h" - header "../GZip.h" + header "../Bridge Audio/TGBridgeAudioDecoder.h" + header "../Bridge Audio/TGBridgeAudioEncoder.h" + header "../TGContactModel.h" + header "../TGItemProviderSignals.h" + header "../TGShareLocationSignals.h" + header "../TGBridgeServer.h" + header "../TGAutoDownloadPreferences.h" + header "../TGPresentationAutoNightPreferences.h" + header "../TGProxyItem.h" + header "../UIImage+ImageEffects.h" } diff --git a/submodules/TelegramUI/TelegramUI/TermsOfServiceController.swift b/submodules/TelegramUI/TelegramUI/TermsOfServiceController.swift index ccb2107908..33ea80e1a6 100644 --- a/submodules/TelegramUI/TelegramUI/TermsOfServiceController.swift +++ b/submodules/TelegramUI/TelegramUI/TermsOfServiceController.swift @@ -5,6 +5,8 @@ import Postbox import SwiftSignalKit import Display import AsyncDisplayKit +import TelegramPresentationData +import TelegramUIPreferences public class TermsOfServiceControllerTheme { public let statusBarStyle: StatusBarStyle diff --git a/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift b/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift index 3bc420882f..1aa45a20a7 100644 --- a/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift @@ -5,6 +5,7 @@ import Postbox import SwiftSignalKit import Display import AsyncDisplayKit +import TelegramPresentationData final class TermsOfServiceControllerNode: ViewControllerTracingNode { private let theme: TermsOfServiceControllerTheme diff --git a/submodules/TelegramUI/TelegramUI/ThemeAccentColorActionSheet.swift b/submodules/TelegramUI/TelegramUI/ThemeAccentColorActionSheet.swift index ebc7186058..3800bb1fc8 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeAccentColorActionSheet.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeAccentColorActionSheet.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import UIKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData final class ThemeAccentColorActionSheet: ActionSheetController { private var presentationDisposable: Disposable? diff --git a/submodules/TelegramUI/TelegramUI/ThemeAutoNightSettingsController.swift b/submodules/TelegramUI/TelegramUI/ThemeAutoNightSettingsController.swift index 294f3ddd6d..0080e71b80 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeAutoNightSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeAutoNightSettingsController.swift @@ -4,7 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore - +import TelegramPresentationData +import TelegramUIPreferences import TelegramUIPrivateModule private enum TriggerMode { diff --git a/submodules/TelegramUI/TelegramUI/ThemeAutoNightTimeSelectionActionSheet.swift b/submodules/TelegramUI/TelegramUI/ThemeAutoNightTimeSelectionActionSheet.swift index a81359206a..569c08ac29 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeAutoNightTimeSelectionActionSheet.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeAutoNightTimeSelectionActionSheet.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import UIKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData final class ThemeAutoNightTimeSelectionActionSheet: ActionSheetController { private var presentationDisposable: Disposable? diff --git a/submodules/TelegramUI/TelegramUI/ThemeColorsGridController.swift b/submodules/TelegramUI/TelegramUI/ThemeColorsGridController.swift index d1f5a69af9..9b81b27770 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeColorsGridController.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeColorsGridController.swift @@ -6,6 +6,7 @@ import Postbox import TelegramCore import SwiftSignalKit import LegacyComponents +import TelegramPresentationData private func availableColors() -> [Int32] { return [ diff --git a/submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerNode.swift b/submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerNode.swift index 2cc7d4f9a4..1c79c0e6a0 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerNode.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class ThemeColorsGridControllerInteraction { let openWallpaper: (TelegramWallpaper) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridController.swift b/submodules/TelegramUI/TelegramUI/ThemeGridController.swift index 7dfb9fc831..91adf13aea 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeGridController.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeGridController.swift @@ -6,6 +6,8 @@ import Postbox import TelegramCore import SwiftSignalKit import LegacyComponents +import TelegramPresentationData +import TelegramUIPreferences final class ThemeGridController: ViewController { private var controllerNode: ThemeGridControllerNode { diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridControllerNode.swift b/submodules/TelegramUI/TelegramUI/ThemeGridControllerNode.swift index 9aa09489c4..6eb1d77049 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeGridControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeGridControllerNode.swift @@ -5,6 +5,9 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import UniversalMediaPlayer +import TelegramPresentationData +import TelegramUIPreferences private func areWallpapersEqual(_ lhs: TelegramWallpaper, _ rhs: TelegramWallpaper) -> Bool { switch lhs { diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSearchColorsItem.swift b/submodules/TelegramUI/TelegramUI/ThemeGridSearchColorsItem.swift index 9853a90b62..ecb131a46d 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeGridSearchColorsItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeGridSearchColorsItem.swift @@ -5,6 +5,7 @@ import Postbox import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData private func nodeColor(for color: WallpaperSearchColor) -> UIColor { switch color { diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSearchContentNode.swift b/submodules/TelegramUI/TelegramUI/ThemeGridSearchContentNode.swift index 9b8b175fac..d118f747bf 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeGridSearchContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeGridSearchContentNode.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData enum WallpaperSearchColor: CaseIterable { case blue diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift b/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift index 8f5fe18198..5cffafaedd 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift @@ -5,6 +5,7 @@ import TelegramCore import SwiftSignalKit import AsyncDisplayKit import Postbox +import TelegramPresentationData final class ThemeGridSearchItem: GridItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSelectionPanelNode.swift b/submodules/TelegramUI/TelegramUI/ThemeGridSelectionPanelNode.swift index cf76cf1a1b..2c31e3fbd1 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeGridSelectionPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeGridSelectionPanelNode.swift @@ -5,6 +5,7 @@ import Display import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData final class ThemeGridSelectionPanelNode: ASDisplayNode { private let deleteButton: UIButton diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsAppIconItem.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsAppIconItem.swift index 34ba3f9bf7..134c9d4a94 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsAppIconItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsAppIconItem.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData private func generateBorderImage(theme: PresentationTheme, bordered: Bool, selected: Bool) -> UIImage? { return generateImage(CGSize(width: 30.0, height: 30.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsBrightnessItem.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsBrightnessItem.swift index 36e8175071..2f13c1052f 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsBrightnessItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsBrightnessItem.swift @@ -4,7 +4,7 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore - +import TelegramPresentationData import LegacyComponents class ThemeSettingsBrightnessItem: ListViewItem, ItemListItem { diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsChatPreviewItem.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsChatPreviewItem.swift index cc41a2c455..a23b25a33e 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsChatPreviewItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsChatPreviewItem.swift @@ -5,6 +5,8 @@ import AsyncDisplayKit import SwiftSignalKit import TelegramCore import Postbox +import TelegramPresentationData +import TelegramUIPreferences class ThemeSettingsChatPreviewItem: ListViewItem, ItemListItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift index 47d7a51ffb..c2febbffb8 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class ThemeSettingsControllerArguments { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsFontSizeItem.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsFontSizeItem.swift index 597232daa7..8410f5b3ec 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsFontSizeItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsFontSizeItem.swift @@ -4,7 +4,8 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore - +import TelegramPresentationData +import TelegramUIPreferences import LegacyComponents class ThemeSettingsFontSizeItem: ListViewItem, ItemListItem { diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift index 8d926f299c..3c357f7f79 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift @@ -4,6 +4,8 @@ import Display import AsyncDisplayKit import SwiftSignalKit import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private func generateBorderImage(theme: PresentationTheme, bordered: Bool, selected: Bool) -> UIImage? { return generateImage(CGSize(width: 30.0, height: 30.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/ThrottledValue.swift b/submodules/TelegramUI/TelegramUI/ThrottledValue.swift deleted file mode 100644 index 7f1c77bc51..0000000000 --- a/submodules/TelegramUI/TelegramUI/ThrottledValue.swift +++ /dev/null @@ -1,46 +0,0 @@ -import Foundation -import UIKit -import SwiftSignalKit - -final class ThrottledValue { - private var value: T - private let interval: Double - private var previousSetTimestamp: Double - private let valuePromise: ValuePromise - private var timer: SwiftSignalKit.Timer? - - init(value: T, interval: Double) { - self.value = value - self.interval = interval - self.previousSetTimestamp = CACurrentMediaTime() - self.valuePromise = ValuePromise(value) - } - - deinit { - self.timer?.invalidate() - } - - func set(value: T) { - guard self.value != value else { - return - } - self.timer?.invalidate() - let timestamp = CACurrentMediaTime() - if timestamp > self.previousSetTimestamp + self.interval { - self.previousSetTimestamp = timestamp - self.valuePromise.set(value) - } else { - let timer = SwiftSignalKit.Timer(timeout: self.interval, repeat: false, completion: { [weak self] in - if let strongSelf = self { - strongSelf.valuePromise.set(strongSelf.value) - } - }, queue: Queue.mainQueue()) - self.timer = timer - timer.start() - } - } - - func get() -> Signal { - return self.valuePromise.get() - } -} diff --git a/submodules/TelegramUI/TelegramUI/TimeBasedVideoPreload.swift b/submodules/TelegramUI/TelegramUI/TimeBasedVideoPreload.swift index 5755a320b7..bc2aa6f543 100644 --- a/submodules/TelegramUI/TelegramUI/TimeBasedVideoPreload.swift +++ b/submodules/TelegramUI/TelegramUI/TimeBasedVideoPreload.swift @@ -4,6 +4,7 @@ import SwiftSignalKit import Postbox import TelegramCore import FFMpeg +import UniversalMediaPlayer func preloadVideoResource(postbox: Postbox, resourceReference: MediaResourceReference, duration: Double) -> Signal { return Signal { subscriber in diff --git a/submodules/TelegramUI/TelegramUI/TwoStepVerificationPasswordEntryController.swift b/submodules/TelegramUI/TelegramUI/TwoStepVerificationPasswordEntryController.swift index 36790067d3..badff3718c 100644 --- a/submodules/TelegramUI/TelegramUI/TwoStepVerificationPasswordEntryController.swift +++ b/submodules/TelegramUI/TelegramUI/TwoStepVerificationPasswordEntryController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class TwoStepVerificationPasswordEntryControllerArguments { let updateEntryText: (String) -> Void diff --git a/submodules/TelegramUI/TelegramUI/TwoStepVerificationResetController.swift b/submodules/TelegramUI/TelegramUI/TwoStepVerificationResetController.swift index 64a9e85428..52bfa73eca 100644 --- a/submodules/TelegramUI/TelegramUI/TwoStepVerificationResetController.swift +++ b/submodules/TelegramUI/TelegramUI/TwoStepVerificationResetController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class TwoStepVerificationResetControllerArguments { let updateEntryText: (String) -> Void diff --git a/submodules/TelegramUI/TelegramUI/TwoStepVerificationUnlockController.swift b/submodules/TelegramUI/TelegramUI/TwoStepVerificationUnlockController.swift index b54d7f94cf..92c5c03ab7 100644 --- a/submodules/TelegramUI/TelegramUI/TwoStepVerificationUnlockController.swift +++ b/submodules/TelegramUI/TelegramUI/TwoStepVerificationUnlockController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class TwoStepVerificationUnlockSettingsControllerArguments { let updatePasswordText: (String) -> Void diff --git a/Telegram-iOS/UIImage+ImageEffects.h b/submodules/TelegramUI/TelegramUI/UIImage+ImageEffects.h similarity index 100% rename from Telegram-iOS/UIImage+ImageEffects.h rename to submodules/TelegramUI/TelegramUI/UIImage+ImageEffects.h diff --git a/Telegram-iOS/UIImage+ImageEffects.m b/submodules/TelegramUI/TelegramUI/UIImage+ImageEffects.m similarity index 100% rename from Telegram-iOS/UIImage+ImageEffects.m rename to submodules/TelegramUI/TelegramUI/UIImage+ImageEffects.m diff --git a/submodules/TelegramUI/TelegramUI/UndoOverlayController.swift b/submodules/TelegramUI/TelegramUI/UndoOverlayController.swift index 7bfaa3dcb6..7dbf09ba1b 100644 --- a/submodules/TelegramUI/TelegramUI/UndoOverlayController.swift +++ b/submodules/TelegramUI/TelegramUI/UndoOverlayController.swift @@ -3,6 +3,7 @@ import UIKit import Display import TelegramCore import Postbox +import TelegramPresentationData public enum UndoOverlayContent { case removedChat(text: String) diff --git a/submodules/TelegramUI/TelegramUI/UndoOverlayControllerNode.swift b/submodules/TelegramUI/TelegramUI/UndoOverlayControllerNode.swift index 5aef6f297a..ac70c36eb7 100644 --- a/submodules/TelegramUI/TelegramUI/UndoOverlayControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/UndoOverlayControllerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import Display import SwiftSignalKit +import TelegramPresentationData final class UndoOverlayControllerNode: ViewControllerTracingNode { private let elevatedLayout: Bool diff --git a/submodules/TelegramUI/TelegramUI/UniversalVideoContentManager.swift b/submodules/TelegramUI/TelegramUI/UniversalVideoContentManager.swift index d0bd6594ee..227f70453b 100644 --- a/submodules/TelegramUI/TelegramUI/UniversalVideoContentManager.swift +++ b/submodules/TelegramUI/TelegramUI/UniversalVideoContentManager.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import SwiftSignalKit +import UniversalMediaPlayer private final class UniversalVideoContentSubscriber { let id: Int32 diff --git a/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift b/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift index 13b0a72184..a116dcecb7 100644 --- a/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift @@ -5,6 +5,8 @@ import SwiftSignalKit import TelegramCore import Display import Postbox +import TelegramPresentationData +import UniversalMediaPlayer enum UniversalVideoGalleryItemContentInfo { case message(Message) diff --git a/submodules/TelegramUI/TelegramUI/UniversalVideoNode.swift b/submodules/TelegramUI/TelegramUI/UniversalVideoNode.swift index c7d6dfb3b7..a6113d3b22 100644 --- a/submodules/TelegramUI/TelegramUI/UniversalVideoNode.swift +++ b/submodules/TelegramUI/TelegramUI/UniversalVideoNode.swift @@ -5,6 +5,8 @@ import Postbox import SwiftSignalKit import TelegramCore import Display +import TelegramAudio +import UniversalMediaPlayer protocol UniversalVideoContentNode: class { var ready: Signal { get } diff --git a/submodules/TelegramUI/TelegramUI/UpgradedAccounts.swift b/submodules/TelegramUI/TelegramUI/UpgradedAccounts.swift index 27490c0570..956a8d2920 100644 --- a/submodules/TelegramUI/TelegramUI/UpgradedAccounts.swift +++ b/submodules/TelegramUI/TelegramUI/UpgradedAccounts.swift @@ -3,6 +3,7 @@ import UIKit import TelegramCore import Postbox import SwiftSignalKit +import TelegramUIPreferences private enum LegacyPreferencesKeyValues: Int32 { case cacheStorageSettings = 1 diff --git a/submodules/TelegramUI/TelegramUI/UrlHandling.swift b/submodules/TelegramUI/TelegramUI/UrlHandling.swift index 30c37401c4..bad9757315 100644 --- a/submodules/TelegramUI/TelegramUI/UrlHandling.swift +++ b/submodules/TelegramUI/TelegramUI/UrlHandling.swift @@ -8,6 +8,8 @@ import MtProtoKit #else import MtProtoKitDynamic #endif +import TelegramPresentationData +import TelegramUIPreferences enum ParsedInternalPeerUrlParameter { case botStart(String) diff --git a/submodules/TelegramUI/TelegramUI/UserInfoController.swift b/submodules/TelegramUI/TelegramUI/UserInfoController.swift index c9a322efb9..fcd6fdaf74 100644 --- a/submodules/TelegramUI/TelegramUI/UserInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/UserInfoController.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import Postbox import TelegramCore import LegacyComponents +import TelegramPresentationData private final class UserInfoControllerArguments { let account: Account @@ -960,12 +961,12 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Us let dismissAction: () -> Void = { [weak controller] in controller?.dismissAnimated() } - var reportSpam = true - var deleteChat = true + var reportSpam = false + var deleteChat = false controller.setItemGroups([ ActionSheetItemGroup(items: [ ActionSheetTextItem(title: presentationData.strings.UserInfo_BlockConfirmationTitle(peer.compactDisplayTitle).0), - ActionSheetCheckboxItem(title: presentationData.strings.Conversation_Moderate_Report, label: "", value: reportSpam, action: { [weak controller] checkValue in + /*ActionSheetCheckboxItem(title: presentationData.strings.Conversation_Moderate_Report, label: "", value: reportSpam, action: { [weak controller] checkValue in reportSpam = checkValue controller?.updateItem(groupIndex: 0, itemIndex: 1, { item in if let item = item as? ActionSheetCheckboxItem { @@ -982,7 +983,7 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Us } return item }) - }), + }),*/ ActionSheetButtonItem(title: presentationData.strings.UserInfo_BlockActionTitle(peer.compactDisplayTitle).0, color: .destructive, action: { dismissAction() updatePeerBlockedDisposable.set(requestUpdatePeerIsBlocked(account: context.account, peerId: peer.id, isBlocked: true).start()) diff --git a/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneActionItem.swift b/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneActionItem.swift index f915d8873b..1d64d3ace9 100644 --- a/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneActionItem.swift +++ b/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneActionItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData class UserInfoEditingPhoneActionItem: ListViewItem, ItemListItem { let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneItem.swift b/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneItem.swift index cd26c35e45..89b11036a0 100644 --- a/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneItem.swift +++ b/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneItem.swift @@ -3,6 +3,7 @@ import UIKit import Display import AsyncDisplayKit import SwiftSignalKit +import TelegramPresentationData struct UserInfoEditingPhoneItemEditing { let editable: Bool diff --git a/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift b/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift index d0ef47793d..e87caa8845 100644 --- a/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift +++ b/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift @@ -4,6 +4,7 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData private final class UsernameSetupControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputContextPanelNode.swift b/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputContextPanelNode.swift index 6d22f54429..3e45034bfe 100644 --- a/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputContextPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputContextPanelNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import Display +import TelegramPresentationData private enum VerticalChatContextResultsEntryStableId: Hashable { case action diff --git a/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelButtonItem.swift b/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelButtonItem.swift index 6383579c6c..4180031e25 100644 --- a/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelButtonItem.swift +++ b/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelButtonItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class VerticalListContextResultsChatInputPanelButtonItem: ListViewItem { fileprivate let theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift b/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift index 59f296a2f6..4616cfa385 100644 --- a/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class VerticalListContextResultsChatInputPanelItem: ListViewItem { fileprivate let account: Account diff --git a/submodules/TelegramUI/TelegramUI/VimeoEmbedImplementation.swift b/submodules/TelegramUI/TelegramUI/VimeoEmbedImplementation.swift index 642f4fa490..5b6a588b01 100644 --- a/submodules/TelegramUI/TelegramUI/VimeoEmbedImplementation.swift +++ b/submodules/TelegramUI/TelegramUI/VimeoEmbedImplementation.swift @@ -1,6 +1,7 @@ import Foundation import WebKit import SwiftSignalKit +import UniversalMediaPlayer func extractVimeoVideoIdAndTimestamp(url: String) -> (String, Int)? { guard let url = URL(string: url), let host = url.host?.lowercased() else { diff --git a/submodules/TelegramUI/TelegramUI/VoiceCallDataSavingController.swift b/submodules/TelegramUI/TelegramUI/VoiceCallDataSavingController.swift index 4e8d5d6198..19e3d3b76a 100644 --- a/submodules/TelegramUI/TelegramUI/VoiceCallDataSavingController.swift +++ b/submodules/TelegramUI/TelegramUI/VoiceCallDataSavingController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class VoiceCallDataSavingControllerArguments { let updateSelection: (VoiceCallDataSaving) -> Void diff --git a/Telegram-iOS/WakeupManager.swift b/submodules/TelegramUI/TelegramUI/WakeupManager.swift similarity index 99% rename from Telegram-iOS/WakeupManager.swift rename to submodules/TelegramUI/TelegramUI/WakeupManager.swift index 08f65e21c2..b98d5e95e4 100644 --- a/Telegram-iOS/WakeupManager.swift +++ b/submodules/TelegramUI/TelegramUI/WakeupManager.swift @@ -4,7 +4,7 @@ import SwiftSignalKit import UIKit import Postbox import UserNotifications -import TelegramUI +import TelegramUIPreferences private final class WakeupManagerTask { let nativeId: UIBackgroundTaskIdentifier diff --git a/submodules/TelegramUI/TelegramUI/WallpaperColorPanelNode.swift b/submodules/TelegramUI/TelegramUI/WallpaperColorPanelNode.swift index f2ff261da0..77154b6258 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperColorPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperColorPanelNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import SwiftSignalKit import Display +import TelegramPresentationData private var currentTextInputBackgroundImage: (UIColor, UIColor, UIColor, CGFloat, UIImage)? private func textInputBackgroundImage(backgroundColor: UIColor, fieldColor: UIColor, strokeColor: UIColor, diameter: CGFloat) -> UIImage? { diff --git a/submodules/TelegramUI/TelegramUI/WallpaperColorPickerNode.swift b/submodules/TelegramUI/TelegramUI/WallpaperColorPickerNode.swift index 772f50ec51..acf7a86f1f 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperColorPickerNode.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperColorPickerNode.swift @@ -3,6 +3,7 @@ import UIKit import AsyncDisplayKit import SwiftSignalKit import Display +import TelegramPresentationData private let shadowImage: UIImage = { return generateImage(CGSize(width: 45.0, height: 45.0), opaque: false, scale: nil, rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift b/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift index e3759f946a..ade8118541 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift @@ -7,6 +7,8 @@ import SwiftSignalKit import AsyncDisplayKit import TelegramCore import Photos +import TelegramPresentationData +import TelegramUIPreferences enum WallpaperListType { case wallpapers(WallpaperPresentationOptions?) diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift b/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift index 82f98b73a0..2500879f77 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift @@ -6,6 +6,8 @@ import SwiftSignalKit import Postbox import TelegramCore import LegacyComponents +import TelegramPresentationData +import TelegramUIPreferences struct WallpaperGalleryItemArguments { let colorPreview: Bool diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryToolbarNode.swift b/submodules/TelegramUI/TelegramUI/WallpaperGalleryToolbarNode.swift index f0788b163e..dc004fc422 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperGalleryToolbarNode.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperGalleryToolbarNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class WallpaperGalleryToolbarNode: ASDisplayNode { private var theme: PresentationTheme diff --git a/submodules/TelegramUI/TelegramUI/WallpaperPatternPanelNode.swift b/submodules/TelegramUI/TelegramUI/WallpaperPatternPanelNode.swift index c3f1db486b..6d7b072cbb 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperPatternPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperPatternPanelNode.swift @@ -4,7 +4,7 @@ import AsyncDisplayKit import SwiftSignalKit import Display import TelegramCore - +import TelegramPresentationData import LegacyComponents private let itemSize = CGSize(width: 88.0, height: 88.0) diff --git a/submodules/TelegramUI/TelegramUI/WallpaperSearchRecentQueries.swift b/submodules/TelegramUI/TelegramUI/WallpaperSearchRecentQueries.swift index 3f342d4a2d..7cceae91bc 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperSearchRecentQueries.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperSearchRecentQueries.swift @@ -1,6 +1,7 @@ import Foundation import Postbox import SwiftSignalKit +import TelegramUIPreferences private struct WallpaperSearchRecentQueryItemId { public let rawValue: MemoryBuffer diff --git a/submodules/TelegramUI/TelegramUI/WallpaperUploadManager.swift b/submodules/TelegramUI/TelegramUI/WallpaperUploadManager.swift index 8334d3ac56..f6f1621572 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperUploadManager.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperUploadManager.swift @@ -3,6 +3,8 @@ import UIKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramPresentationData +import TelegramUIPreferences private extension TelegramWallpaper { var mainResource: MediaResource? { diff --git a/Telegram-iOS/WatchBridge.swift b/submodules/TelegramUI/TelegramUI/WatchBridge.swift similarity index 99% rename from Telegram-iOS/WatchBridge.swift rename to submodules/TelegramUI/TelegramUI/WatchBridge.swift index 82f193311f..2f00e639d0 100644 --- a/Telegram-iOS/WatchBridge.swift +++ b/submodules/TelegramUI/TelegramUI/WatchBridge.swift @@ -1,10 +1,8 @@ import Foundation import Postbox import TelegramCore -import TelegramUI -#if BUCK -import WatchUtils -#endif +import WatchCommon +import TelegramPresentationData func makePeerIdFromBridgeIdentifier(_ identifier: Int64) -> PeerId? { if identifier < 0 && identifier > Int32.min { diff --git a/Telegram-iOS/WatchCommunicationManager.swift b/submodules/TelegramUI/TelegramUI/WatchCommunicationManager.swift similarity index 98% rename from Telegram-iOS/WatchCommunicationManager.swift rename to submodules/TelegramUI/TelegramUI/WatchCommunicationManager.swift index 6830be63ad..0cd2157115 100644 --- a/Telegram-iOS/WatchCommunicationManager.swift +++ b/submodules/TelegramUI/TelegramUI/WatchCommunicationManager.swift @@ -2,12 +2,10 @@ import Foundation import SwiftSignalKit import Postbox import TelegramCore -import TelegramUI - -#if BUCK -import WatchUtils -import AppBinaryPrivate -#endif +import WatchCommon +import TelegramUIPrivateModule +import SSignalKit +import TelegramUIPreferences final class WatchCommunicationManager { private let queue: Queue diff --git a/Telegram-iOS/WatchRequestHandlers.swift b/submodules/TelegramUI/TelegramUI/WatchRequestHandlers.swift similarity index 99% rename from Telegram-iOS/WatchRequestHandlers.swift rename to submodules/TelegramUI/TelegramUI/WatchRequestHandlers.swift index 480f5ff363..634cb3aa74 100644 --- a/Telegram-iOS/WatchRequestHandlers.swift +++ b/submodules/TelegramUI/TelegramUI/WatchRequestHandlers.swift @@ -3,11 +3,9 @@ import SwiftSignalKit import Postbox import Display import TelegramCore -import TelegramUI import LegacyComponents -#if BUCK -import WatchUtils -#endif +import WatchCommon +import TelegramPresentationData let allWatchRequestHandlers: [AnyClass] = [ WatchChatListHandler.self, diff --git a/submodules/TelegramUI/TelegramUI/WatchSettingsController.swift b/submodules/TelegramUI/TelegramUI/WatchSettingsController.swift index 8a6fbb6d53..22db369b0b 100644 --- a/submodules/TelegramUI/TelegramUI/WatchSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/WatchSettingsController.swift @@ -4,6 +4,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore +import TelegramPresentationData +import TelegramUIPreferences private final class WatchSettingsControllerArguments { let updatePreset: (String, String) -> Void diff --git a/submodules/TelegramUI/TelegramUI/WebEmbedPlayerNode.swift b/submodules/TelegramUI/TelegramUI/WebEmbedPlayerNode.swift index 4364c3b082..d8a76364ef 100644 --- a/submodules/TelegramUI/TelegramUI/WebEmbedPlayerNode.swift +++ b/submodules/TelegramUI/TelegramUI/WebEmbedPlayerNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import SwiftSignalKit import WebKit import TelegramCore +import UniversalMediaPlayer protocol WebEmbedImplementation { func setup(_ webView: WKWebView, userContentController: WKUserContentController, evaluateJavaScript: @escaping (String) -> Void, updateStatus: @escaping (MediaPlayerStatus) -> Void, onPlaybackStarted: @escaping () -> Void) diff --git a/submodules/TelegramUI/TelegramUI/WebEmbedVideoContent.swift b/submodules/TelegramUI/TelegramUI/WebEmbedVideoContent.swift index 0ddbd96214..226f4c5f93 100644 --- a/submodules/TelegramUI/TelegramUI/WebEmbedVideoContent.swift +++ b/submodules/TelegramUI/TelegramUI/WebEmbedVideoContent.swift @@ -5,7 +5,8 @@ import Display import SwiftSignalKit import Postbox import TelegramCore - +import TelegramAudio +import UniversalMediaPlayer import LegacyComponents final class WebEmbedVideoContent: UniversalVideoContent { diff --git a/submodules/TelegramUI/TelegramUI/WebSearchBadgeNode.swift b/submodules/TelegramUI/TelegramUI/WebSearchBadgeNode.swift index 01f49cb416..2971837a33 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchBadgeNode.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchBadgeNode.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import AsyncDisplayKit import Display +import TelegramPresentationData final class WebSearchBadgeNode: ASDisplayNode { private var fillColor: UIColor diff --git a/submodules/TelegramUI/TelegramUI/WebSearchController.swift b/submodules/TelegramUI/TelegramUI/WebSearchController.swift index 5ccbf7341a..38644de36d 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchController.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchController.swift @@ -6,6 +6,7 @@ import Display import AsyncDisplayKit import TelegramCore import LegacyComponents +import TelegramUIPreferences func requestContextResults(account: Account, botId: PeerId, query: String, peerId: PeerId, offset: String = "", existingResults: ChatContextResultCollection? = nil, limit: Int = 60) -> Signal { return requestChatContextResults(account: account, botId: botId, peerId: peerId, query: query, offset: offset) diff --git a/submodules/TelegramUI/TelegramUI/WebSearchControllerNode.swift b/submodules/TelegramUI/TelegramUI/WebSearchControllerNode.swift index d282ae6bd9..efe1482b7d 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchControllerNode.swift @@ -6,6 +6,8 @@ import SwiftSignalKit import Display import TelegramCore import LegacyComponents +import TelegramPresentationData +import TelegramUIPreferences private struct WebSearchContextResultStableId: Hashable { let result: ChatContextResult diff --git a/submodules/TelegramUI/TelegramUI/WebSearchGalleryController.swift b/submodules/TelegramUI/TelegramUI/WebSearchGalleryController.swift index bd198981cc..dcc062e2b9 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchGalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchGalleryController.swift @@ -7,6 +7,7 @@ import SwiftSignalKit import AsyncDisplayKit import TelegramCore import LegacyComponents +import TelegramPresentationData final class WebSearchGalleryControllerInteraction { let dismiss: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/WebSearchGalleryFooterContentNode.swift b/submodules/TelegramUI/TelegramUI/WebSearchGalleryFooterContentNode.swift index 514b28270b..30a495e24d 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchGalleryFooterContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchGalleryFooterContentNode.swift @@ -6,6 +6,7 @@ import Postbox import TelegramCore import SwiftSignalKit import LegacyComponents +import TelegramPresentationData final class WebSearchGalleryFooterContentNode: GalleryFooterContentNode { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/WebSearchInterfaceState.swift b/submodules/TelegramUI/TelegramUI/WebSearchInterfaceState.swift index 6b58924bda..bc67ae5408 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchInterfaceState.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchInterfaceState.swift @@ -1,10 +1,7 @@ import Foundation import UIKit - -enum WebSearchScope: Int32 { - case images - case gifs -} +import TelegramPresentationData +import TelegramUIPreferences struct WebSearchInterfaceInnerState: Equatable { let scope: WebSearchScope diff --git a/submodules/TelegramUI/TelegramUI/WebSearchItem.swift b/submodules/TelegramUI/TelegramUI/WebSearchItem.swift index 7a2f9544a7..5753330d20 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchItem.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchItem.swift @@ -5,6 +5,7 @@ import Display import TelegramCore import SwiftSignalKit import Postbox +import TelegramPresentationData final class WebSearchItem: GridItem { var section: GridSection? diff --git a/submodules/TelegramUI/TelegramUI/WebSearchNavigationContentNode.swift b/submodules/TelegramUI/TelegramUI/WebSearchNavigationContentNode.swift index b3928a4f12..5e04d19dd1 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchNavigationContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchNavigationContentNode.swift @@ -4,6 +4,7 @@ import AsyncDisplayKit import Display import Postbox import TelegramCore +import TelegramPresentationData private let searchBarFont = Font.regular(17.0) diff --git a/submodules/TelegramUI/TelegramUI/WebSearchRecentQueries.swift b/submodules/TelegramUI/TelegramUI/WebSearchRecentQueries.swift index c992ae5de5..4ebcd9a51e 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchRecentQueries.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchRecentQueries.swift @@ -2,6 +2,7 @@ import Foundation import UIKit import Postbox import SwiftSignalKit +import TelegramUIPreferences private struct WebSearchRecentQueryItemId { public let rawValue: MemoryBuffer diff --git a/submodules/TelegramUI/TelegramUI/WebSearchRecentQueryItem.swift b/submodules/TelegramUI/TelegramUI/WebSearchRecentQueryItem.swift index 04623df653..48f3ff323e 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchRecentQueryItem.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchRecentQueryItem.swift @@ -5,6 +5,7 @@ import Postbox import Display import SwiftSignalKit import TelegramCore +import TelegramPresentationData private enum RevealOptionKey: Int32 { case delete diff --git a/submodules/TelegramUI/TelegramUI/WebSearchVideoGalleryItem.swift b/submodules/TelegramUI/TelegramUI/WebSearchVideoGalleryItem.swift index c30cf430b1..1ef9fd59f9 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchVideoGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchVideoGalleryItem.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import TelegramCore import Display import Postbox +import TelegramPresentationData class WebSearchVideoGalleryItem: GalleryItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/WebpagePreviewAccessoryPanelNode.swift b/submodules/TelegramUI/TelegramUI/WebpagePreviewAccessoryPanelNode.swift index ffae4e6beb..ccd4c68e32 100644 --- a/submodules/TelegramUI/TelegramUI/WebpagePreviewAccessoryPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/WebpagePreviewAccessoryPanelNode.swift @@ -5,6 +5,7 @@ import TelegramCore import Postbox import SwiftSignalKit import Display +import TelegramPresentationData final class WebpagePreviewAccessoryPanelNode: AccessoryPanelNode { private let webpageDisposable = MetaDisposable() diff --git a/submodules/TelegramUI/TelegramUI/YoutubeEmbedImplementation.swift b/submodules/TelegramUI/TelegramUI/YoutubeEmbedImplementation.swift index 6f70a6482c..169bda0775 100644 --- a/submodules/TelegramUI/TelegramUI/YoutubeEmbedImplementation.swift +++ b/submodules/TelegramUI/TelegramUI/YoutubeEmbedImplementation.swift @@ -1,6 +1,7 @@ import Foundation import WebKit import SwiftSignalKit +import UniversalMediaPlayer func extractYoutubeVideoIdAndTimestamp(url: String) -> (String, Int)? { guard let url = URL(string: url), let host = url.host?.lowercased() else { diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj index a18cf50d05..9e080a181b 100644 --- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj @@ -36,14 +36,12 @@ 091954792294754E00E11046 /* AnimatedStickerUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091954782294754E00E11046 /* AnimatedStickerUtils.swift */; }; 0919547B2294788200E11046 /* AnimatedStickerVideoCompositor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0919547A2294788200E11046 /* AnimatedStickerVideoCompositor.swift */; }; 091BEAB3214552D9003AEA30 /* Vision.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02DADBE2138D76F00116225 /* Vision.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 0921F5FF228B09D2001A13D7 /* GZip.m in Sources */ = {isa = PBXBuildFile; fileRef = 0921F5FC228B01B6001A13D7 /* GZip.m */; }; 0921F60B228C8765001A13D7 /* ItemListPlaceholderItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0921F60A228C8765001A13D7 /* ItemListPlaceholderItem.swift */; }; 0921F60E228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */; }; 092F368D2154AAEA001A9F49 /* SFCompactRounded-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */; }; 092F36902157AB46001A9F49 /* ItemListCallListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F368F2157AB46001A9F49 /* ItemListCallListItem.swift */; }; 09310D32213ED5FC0020033A /* anim_ungroup.json in Resources */ = {isa = PBXBuildFile; fileRef = 09310D1A213BC5DE0020033A /* anim_ungroup.json */; }; 09310D33213ED5FC0020033A /* anim_group.json in Resources */ = {isa = PBXBuildFile; fileRef = 09310D1B213BC5DE0020033A /* anim_group.json */; }; - 0935F8EF22197FBF0070AE70 /* LegacyAutomaticMediaDownloadSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0935F8EE22197FBF0070AE70 /* LegacyAutomaticMediaDownloadSettings.swift */; }; 0941A9A0210B057200EBE194 /* OpenInActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0941A99F210B057200EBE194 /* OpenInActionSheetController.swift */; }; 0941A9A4210B0E2E00EBE194 /* OpenInAppIconResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0941A9A3210B0E2E00EBE194 /* OpenInAppIconResources.swift */; }; 0941A9A6210B822D00EBE194 /* OpenInOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0941A9A5210B822D00EBE194 /* OpenInOptions.swift */; }; @@ -62,7 +60,6 @@ 0947FCAE224043450086741C /* SettingsSearchRecentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0947FCAD224043450086741C /* SettingsSearchRecentItem.swift */; }; 0947FCB0224055990086741C /* StringHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0947FCAF224055990086741C /* StringHash.swift */; }; 0952D1752176DEB500194860 /* NotificationMuteSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0952D1742176DEB500194860 /* NotificationMuteSettingsController.swift */; }; - 0952D1772177FB5400194860 /* WatchPresetSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0952D1762177FB5400194860 /* WatchPresetSettings.swift */; }; 0958FBB9218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0958FBB8218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift */; }; 0958FBBB218AD6BC00E0CBD8 /* InstantPageFeedbackNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0958FBBA218AD6BC00E0CBD8 /* InstantPageFeedbackNode.swift */; }; 0958FBBD218B03CA00E0CBD8 /* InstantPageDetailsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0958FBBC218B03CA00E0CBD8 /* InstantPageDetailsNode.swift */; }; @@ -77,13 +74,7 @@ 0962E67721B673AF00245FD9 /* Permission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67621B673AF00245FD9 /* Permission.swift */; }; 0962E67921B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67821B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift */; }; 0962E67B21BA00C900245FD9 /* WebSearchInterfaceState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67A21BA00C900245FD9 /* WebSearchInterfaceState.swift */; }; - 0962E67D21BA048D00245FD9 /* WebSearchSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67C21BA048D00245FD9 /* WebSearchSettings.swift */; }; 0962E67F21BA786A00245FD9 /* WebSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67E21BA786A00245FD9 /* WebSearchItem.swift */; }; - 096C98BA21787A5C00C211FF /* LegacyBridgeAudio.swift in Sources */ = {isa = PBXBuildFile; fileRef = 096C98B921787A5C00C211FF /* LegacyBridgeAudio.swift */; }; - 096C98BF21787C6700C211FF /* TGBridgeAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 096C98BB21787C6600C211FF /* TGBridgeAudioEncoder.m */; }; - 096C98C021787C6700C211FF /* TGBridgeAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 096C98BC21787C6600C211FF /* TGBridgeAudioEncoder.h */; }; - 096C98C121787C6700C211FF /* TGBridgeAudioDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 096C98BD21787C6700C211FF /* TGBridgeAudioDecoder.h */; }; - 096C98C221787C6700C211FF /* TGBridgeAudioDecoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = 096C98BE21787C6700C211FF /* TGBridgeAudioDecoder.mm */; }; 09749BC521F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BC421F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift */; }; 09749BC921F1BBA1008FDDE9 /* CallFeedbackController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BC821F1BBA1008FDDE9 /* CallFeedbackController.swift */; }; 09749BCD21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */; }; @@ -208,7 +199,6 @@ 9F06830B21A404C4001D8EDB /* NotificationExceptionSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830A21A404C4001D8EDB /* NotificationExceptionSettingsController.swift */; }; D000CABA21EE130D0011B15D /* MapResourceToAvatarSizes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000CAB921EE130D0011B15D /* MapResourceToAvatarSizes.swift */; }; D000CABC21F158AD0011B15D /* PrepareSecretThumbnailData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000CABB21F158AD0011B15D /* PrepareSecretThumbnailData.swift */; }; - D005808B21CAB8F000CB7CD3 /* VoipDerivedState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D005808A21CAB8F000CB7CD3 /* VoipDerivedState.swift */; }; D00580B321E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */; }; D00580B621E4C02100CB7CD3 /* UndoOverlayController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00580B521E4C02100CB7CD3 /* UndoOverlayController.swift */; }; D00580B821E4C03400CB7CD3 /* UndoOverlayControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00580B721E4C03400CB7CD3 /* UndoOverlayControllerNode.swift */; }; @@ -218,10 +208,43 @@ D00701A12029F6D0006B9E34 /* TGMimeTypeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = D007019F2029F6D0006B9E34 /* TGMimeTypeMap.h */; }; D00701A22029F6D0006B9E34 /* TGMimeTypeMap.m in Sources */ = {isa = PBXBuildFile; fileRef = D00701A02029F6D0006B9E34 /* TGMimeTypeMap.m */; }; D00781052084DFB100369A39 /* UrlEscaping.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00781042084DFB100369A39 /* UrlEscaping.swift */; }; + D008177922B46B7E008A895F /* ShareItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = D008177222B46B7D008A895F /* ShareItems.swift */; }; + D008177A22B46B7E008A895F /* TGShareLocationSignals.h in Headers */ = {isa = PBXBuildFile; fileRef = D008177322B46B7E008A895F /* TGShareLocationSignals.h */; }; + D008177B22B46B7E008A895F /* TGContactModel.h in Headers */ = {isa = PBXBuildFile; fileRef = D008177422B46B7E008A895F /* TGContactModel.h */; }; + D008177C22B46B7E008A895F /* TGItemProviderSignals.h in Headers */ = {isa = PBXBuildFile; fileRef = D008177522B46B7E008A895F /* TGItemProviderSignals.h */; }; + D008177D22B46B7E008A895F /* TGContactModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D008177622B46B7E008A895F /* TGContactModel.m */; }; + D008177E22B46B7E008A895F /* TGItemProviderSignals.m in Sources */ = {isa = PBXBuildFile; fileRef = D008177722B46B7E008A895F /* TGItemProviderSignals.m */; }; + D008177F22B46B7E008A895F /* TGShareLocationSignals.m in Sources */ = {isa = PBXBuildFile; fileRef = D008177822B46B7E008A895F /* TGShareLocationSignals.m */; }; + D008178222B47464008A895F /* NotificationContentContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D008178122B47464008A895F /* NotificationContentContext.swift */; }; + D00817CA22B47A14008A895F /* WatchRequestHandlers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817B022B47A12008A895F /* WatchRequestHandlers.swift */; }; + D00817CB22B47A14008A895F /* WatchBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817B122B47A12008A895F /* WatchBridge.swift */; }; + D00817CC22B47A14008A895F /* WatchCommunicationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817B222B47A12008A895F /* WatchCommunicationManager.swift */; }; + D00817CD22B47A14008A895F /* TGAutoDownloadPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817B322B47A12008A895F /* TGAutoDownloadPreferences.h */; }; + D00817CE22B47A14008A895F /* TGProxyItem.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817B422B47A12008A895F /* TGProxyItem.h */; }; + D00817CF22B47A14008A895F /* LegacyFileImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817B522B47A12008A895F /* LegacyFileImport.swift */; }; + D00817D022B47A14008A895F /* WakeupManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817B622B47A12008A895F /* WakeupManager.swift */; }; + D00817D122B47A14008A895F /* LegacyDataImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817B722B47A12008A895F /* LegacyDataImport.swift */; }; + D00817D222B47A14008A895F /* LegacyPreferencesImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817B822B47A12008A895F /* LegacyPreferencesImport.swift */; }; + D00817D322B47A14008A895F /* LegacyResourceImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817B922B47A12008A895F /* LegacyResourceImport.swift */; }; + D00817D422B47A14008A895F /* LegacyUserDataImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817BA22B47A12008A895F /* LegacyUserDataImport.swift */; }; + D00817D522B47A14008A895F /* ApplicationShortcutItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817BB22B47A13008A895F /* ApplicationShortcutItem.swift */; }; + D00817D622B47A14008A895F /* TGProxyItem.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817BC22B47A13008A895F /* TGProxyItem.m */; }; + D00817D722B47A14008A895F /* TGBridgeServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817BD22B47A13008A895F /* TGBridgeServer.h */; }; + D00817D822B47A14008A895F /* TGAutoDownloadPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817BE22B47A13008A895F /* TGAutoDownloadPreferences.m */; }; + D00817D922B47A14008A895F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817BF22B47A13008A895F /* AppDelegate.swift */; }; + D00817DA22B47A14008A895F /* TGPresentationAutoNightPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817C022B47A13008A895F /* TGPresentationAutoNightPreferences.h */; }; + D00817DB22B47A14008A895F /* LegacyChatImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817C122B47A13008A895F /* LegacyChatImport.swift */; }; + D00817DC22B47A14008A895F /* ManageSharedAccountInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817C222B47A13008A895F /* ManageSharedAccountInfo.swift */; }; + D00817DD22B47A14008A895F /* LockedWindowCoveringView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817C322B47A13008A895F /* LockedWindowCoveringView.swift */; }; + D00817DE22B47A14008A895F /* TGBridgeServer.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817C422B47A13008A895F /* TGBridgeServer.m */; }; + D00817DF22B47A14008A895F /* LegacyDataImportSplash.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00817C522B47A13008A895F /* LegacyDataImportSplash.swift */; }; + D00817E022B47A14008A895F /* UIImage+ImageEffects.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817C622B47A13008A895F /* UIImage+ImageEffects.h */; }; + D00817E222B47A14008A895F /* UIImage+ImageEffects.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817C822B47A14008A895F /* UIImage+ImageEffects.m */; }; + D00817E322B47A14008A895F /* TGPresentationAutoNightPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817C922B47A14008A895F /* TGPresentationAutoNightPreferences.m */; }; + D008184A22B57225008A895F /* WatchCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008184922B57225008A895F /* WatchCommon.framework */; }; + D00818CD22B595CB008A895F /* LightweightAccountData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00818CC22B595CB008A895F /* LightweightAccountData.framework */; }; D00ACA4B20222C280045D427 /* libtgvoip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00ACA4C20222C280045D427 /* libtgvoip.framework */; }; D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00ACA592022897D0045D427 /* ProcessedPeerRestrictionText.swift */; }; - D00ADFD91EBA2E9D00873D2E /* OngoingCallThreadLocalContext.h in Headers */ = {isa = PBXBuildFile; fileRef = D0EC6FFA1EBA1DE900EBF1C3 /* OngoingCallThreadLocalContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D00ADFDB1EBA2EAF00873D2E /* OngoingCallContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00ADFDA1EBA2EAF00873D2E /* OngoingCallContext.swift */; }; D00ADFDD1EBB73C200873D2E /* OverlayMediaManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00ADFDC1EBB73C200873D2E /* OverlayMediaManager.swift */; }; D00BDA1F1EE5B69200C64C5E /* ChannelAdminController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00BDA1E1EE5B69200C64C5E /* ChannelAdminController.swift */; }; D00BED201F73F60F00922292 /* ShareSearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00BED1F1F73F60F00922292 /* ShareSearchContainerNode.swift */; }; @@ -327,7 +350,6 @@ D0430B001FF4570500A35ADD /* WebController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0430AFF1FF4570500A35ADD /* WebController.swift */; }; D0430B021FF4584100A35ADD /* WebControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0430B011FF4584100A35ADD /* WebControllerNode.swift */; }; D0439B5B228EC4A00067E026 /* ChatMessagePhoneNumberRequestContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0439B5A228EC4A00067E026 /* ChatMessagePhoneNumberRequestContentNode.swift */; }; - D044A0F320BDA05800326FAC /* ThrottledValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = D044A0F220BDA05800326FAC /* ThrottledValue.swift */; }; D044A0FB20BDC40C00326FAC /* CachedChannelAdmins.swift in Sources */ = {isa = PBXBuildFile; fileRef = D044A0FA20BDC40C00326FAC /* CachedChannelAdmins.swift */; }; D04554A421B42982007A6DD9 /* ConfirmPhoneNumberController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04554A321B42982007A6DD9 /* ConfirmPhoneNumberController.swift */; }; D046142E2004DB3700EC0EF2 /* LiveLocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D046142D2004DB3700EC0EF2 /* LiveLocationManager.swift */; }; @@ -351,7 +373,6 @@ D0477D1F1F619E0700412B44 /* GalleryVideoDecoration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0477D1E1F619E0700412B44 /* GalleryVideoDecoration.swift */; }; D0477D211F61A47600412B44 /* UniversalVideoContentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0477D201F61A47600412B44 /* UniversalVideoContentManager.swift */; }; D048B339203C532800038D05 /* ChatMediaInputPane.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048B338203C532800038D05 /* ChatMediaInputPane.swift */; }; - D048B33B203C777500038D05 /* RenderedTotalUnreadCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048B33A203C777500038D05 /* RenderedTotalUnreadCount.swift */; }; D048EA851F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA841F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift */; }; D048EA871F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA861F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift */; }; D048EA891F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA881F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift */; }; @@ -371,7 +392,6 @@ D05677511F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05677501F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift */; }; D05677531F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05677521F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift */; }; D056CD701FF147B000880D28 /* IconButtonNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD6F1FF147B000880D28 /* IconButtonNode.swift */; }; - D056CD721FF1569800880D28 /* MusicPlaybackSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD711FF1569800880D28 /* MusicPlaybackSettings.swift */; }; D056CD741FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD731FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift */; }; D056CD761FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD751FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift */; }; D056CD781FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD771FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift */; }; @@ -404,17 +424,22 @@ D06E4C312134910400088087 /* ChatListEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C302134910400088087 /* ChatListEmptyNode.swift */; }; D06E4C332134A59700088087 /* ThemeAccentColorActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C322134A59700088087 /* ThemeAccentColorActionSheet.swift */; }; D06E4C352134AE3C00088087 /* ThemeAutoNightSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C342134AE3C00088087 /* ThemeAutoNightSettingsController.swift */; }; - D06ECFCB20B8448E00C576C2 /* ContactSynchronizationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06ECFCA20B8448E00C576C2 /* ContactSynchronizationSettings.swift */; }; D06F1EA41F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06F1EA31F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift */; }; - D06F31E12135829B001A0F12 /* EDSunriseSet.m in Sources */ = {isa = PBXBuildFile; fileRef = D06F31DF2135829A001A0F12 /* EDSunriseSet.m */; }; - D06F31E22135829B001A0F12 /* EDSunriseSet.h in Headers */ = {isa = PBXBuildFile; fileRef = D06F31E02135829A001A0F12 /* EDSunriseSet.h */; }; D06F31E4213597FF001A0F12 /* ThemeAutoNightTimeSelectionActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06F31E3213597FF001A0F12 /* ThemeAutoNightTimeSelectionActionSheet.swift */; }; D06F31E62135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06F31E52135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift */; }; - D073D2DB1FB61DA9009E1DA2 /* CallListSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D073D2DA1FB61DA9009E1DA2 /* CallListSettings.swift */; }; + D0750C7822B2A13300BE5F6E /* UniversalMediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0750C7722B2A13300BE5F6E /* UniversalMediaPlayer.framework */; }; + D0750C7A22B2A14300BE5F6E /* DeviceAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0750C7922B2A14300BE5F6E /* DeviceAccess.framework */; }; + D0750C7C22B2A14300BE5F6E /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0750C7B22B2A14300BE5F6E /* TelegramPresentationData.framework */; }; + D0750C7E22B2A14300BE5F6E /* TelegramVoip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0750C7D22B2A14300BE5F6E /* TelegramVoip.framework */; }; + D0750C8222B2E4EE00BE5F6E /* SharedWakeupManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0750C8022B2E4EE00BE5F6E /* SharedWakeupManager.swift */; }; + D0750C8322B2E4EE00BE5F6E /* SharedNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0750C8122B2E4EE00BE5F6E /* SharedNotificationManager.swift */; }; + D0750C8522B2E52400BE5F6E /* ClearNotificationsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0750C8422B2E52300BE5F6E /* ClearNotificationsManager.swift */; }; + D0750C8722B2E76300BE5F6E /* ShareExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0750C8622B2E76300BE5F6E /* ShareExtensionContext.swift */; }; D0754D1E1EEDDF6200884F6E /* ChatMessageAttachedContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0754D1D1EEDDF6200884F6E /* ChatMessageAttachedContentNode.swift */; }; D0754D201EEDEBA000884F6E /* ChatMessageGameBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0754D1F1EEDEBA000884F6E /* ChatMessageGameBubbleContentNode.swift */; }; D0754D221EEDF89900884F6E /* ChatMessageInvoiceBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0754D211EEDF89900884F6E /* ChatMessageInvoiceBubbleContentNode.swift */; }; D0754D271EEE10C800884F6E /* BotCheckoutController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0754D261EEE10C800884F6E /* BotCheckoutController.swift */; }; + D077C5C122B59A800097D617 /* ApplicationContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D077C5C022B59A800097D617 /* ApplicationContext.swift */; }; D079FCD91F05A5550038FADE /* BotCheckoutPasswordEntryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCD81F05A5550038FADE /* BotCheckoutPasswordEntryController.swift */; }; D079FCDD1F05C4F20038FADE /* LocalAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCDC1F05C4F20038FADE /* LocalAuth.swift */; }; D079FCDF1F05C9280038FADE /* BotReceiptController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCDE1F05C9280038FADE /* BotReceiptController.swift */; }; @@ -438,15 +463,11 @@ D08803C51F6064CF00DD7951 /* TelegramUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0FC40821D5B8E7400261D9D /* TelegramUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; D08984EE2114964700918162 /* GroupPreHistorySetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08984ED2114964700918162 /* GroupPreHistorySetupController.swift */; }; D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08984EF2114AE0C00918162 /* DataPrivacySettingsController.swift */; }; - D089F78A1F4E0C14000E934D /* InstantPagePresentationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D089F7891F4E0C14000E934D /* InstantPagePresentationSettings.swift */; }; - D08A10BB211DF7A80077488B /* StickerSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08A10BA211DF7A80077488B /* StickerSettings.swift */; }; D08BDF641FA37BEA009D08E1 /* ChatRecordingPreviewInputPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08BDF631FA37BEA009D08E1 /* ChatRecordingPreviewInputPanelNode.swift */; }; D08BDF661FA8CB10009D08E1 /* EditSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08BDF651FA8CB10009D08E1 /* EditSettingsController.swift */; }; D08D7E79209FA2930005D80C /* SecureIdValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08D7E78209FA2930005D80C /* SecureIdValues.swift */; }; - D08D7E8420A0F6020005D80C /* ExperimentalUISettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08D7E8320A0F6020005D80C /* ExperimentalUISettings.swift */; }; D091C7A41F8EBB1E00D7DE13 /* ChatPresentationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D091C7A31F8EBB1E00D7DE13 /* ChatPresentationData.swift */; }; D091C7A61F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D091C7A51F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift */; }; - D09250041FE5363D003F693F /* ExperimentalSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09250031FE5363D003F693F /* ExperimentalSettings.swift */; }; D09250061FE5371D003F693F /* GlobalExperimentalSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */; }; D09394132007F5BB00997F31 /* LocationBroadcastNavigationAccessoryPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09394122007F5BB00997F31 /* LocationBroadcastNavigationAccessoryPanel.swift */; }; D093D7D92062A9CA00BC3599 /* SecureIdAuthControllerState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D093D7D82062A9CA00BC3599 /* SecureIdAuthControllerState.swift */; }; @@ -481,7 +502,6 @@ D09E63B01F1010FE003444CD /* Contacts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E63AF1F1010FE003444CD /* Contacts.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; D09E63B21F11289A003444CD /* PassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E63B11F11289A003444CD /* PassKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; D09F9DCF20768DAF00DB4DE1 /* SecureIdLocalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09F9DCE20768DAF00DB4DE1 /* SecureIdLocalResource.swift */; }; - D0A24D281F92C27100584D24 /* DefaultDarkAccentPresentationTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A24D271F92C27100584D24 /* DefaultDarkAccentPresentationTheme.swift */; }; D0A723541FC3B40E0094D167 /* RadialCheckContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A723531FC3B40E0094D167 /* RadialCheckContentNode.swift */; }; D0A8998D217A294100759EE6 /* SaveIncomingMediaController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A8998C217A294100759EE6 /* SaveIncomingMediaController.swift */; }; D0A8BBA11F61EE83000F03FD /* UniversalVideoGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A8BBA01F61EE83000F03FD /* UniversalVideoGalleryItem.swift */; }; @@ -498,6 +518,15 @@ D0AD02EA1FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AD02E91FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift */; }; D0AD02EC20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AD02EB20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift */; }; D0ADF966212E05A300310BBC /* TonePlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ADF965212E05A300310BBC /* TonePlayer.swift */; }; + D0AE303522B1D3620058D3BC /* TGBridgeAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE2FDC22B1D3610058D3BC /* TGBridgeAudioEncoder.m */; }; + D0AE303622B1D3620058D3BC /* TGBridgeAudioDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE2FDD22B1D3610058D3BC /* TGBridgeAudioDecoder.h */; }; + D0AE303722B1D3620058D3BC /* TGBridgeAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE2FDE22B1D3610058D3BC /* TGBridgeAudioEncoder.h */; }; + D0AE303822B1D3620058D3BC /* TGBridgeAudioDecoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = D0AE2FDF22B1D3610058D3BC /* TGBridgeAudioDecoder.mm */; }; + D0AE303922B1D3620058D3BC /* LegacyBridgeAudio.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE2FE022B1D3610058D3BC /* LegacyBridgeAudio.swift */; }; + D0AE30CF22B1D9980058D3BC /* RMIntro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE30CE22B1D9980058D3BC /* RMIntro.framework */; }; + D0AE30EB22B1DBD10058D3BC /* GZip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE30EA22B1DBD10058D3BC /* GZip.framework */; }; + D0AE311222B1DD4D0058D3BC /* TelegramCallsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE311122B1DD4D0058D3BC /* TelegramCallsUI.framework */; }; + D0AE315422B1DEE30058D3BC /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE315322B1DEE30058D3BC /* TelegramUIPreferences.framework */; }; D0AEAE252080D6830013176E /* PaneSearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE242080D6830013176E /* PaneSearchContainerNode.swift */; }; D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE262080D6970013176E /* PaneSearchBarNode.swift */; }; D0AEAE292080FD660013176E /* StickerPaneSearchGlobaltem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE282080FD660013176E /* StickerPaneSearchGlobaltem.swift */; }; @@ -509,7 +538,6 @@ D0B21B17220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B16220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift */; }; D0B21B1F22156D92003F741D /* LegacyCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B1E22156D92003F741D /* LegacyCache.swift */; }; D0B21B212215B539003F741D /* LogoutOptionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B202215B539003F741D /* LogoutOptionsController.swift */; }; - D0B2F76220506E2A00D3BFB9 /* MediaInputSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B2F76120506E2A00D3BFB9 /* MediaInputSettings.swift */; }; D0B2F76820528E3D00D3BFB9 /* UserInfoEditingPhoneActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B2F76720528E3D00D3BFB9 /* UserInfoEditingPhoneActionItem.swift */; }; D0B2F76A2052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B2F7692052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift */; }; D0B2F76C2052A7D600D3BFB9 /* SinglePhoneInputNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B2F76B2052A7D600D3BFB9 /* SinglePhoneInputNode.swift */; }; @@ -522,9 +550,7 @@ D0B3AC802142E2E900CD1374 /* ResetPasswordController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B3AC7F2142E2E900CD1374 /* ResetPasswordController.swift */; }; D0B4AF861EC111FA00D51FF6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D0AB0BBA1D6719B5002C78E7 /* Images.xcassets */; }; D0B4AF881EC112EE00D51FF6 /* CallKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B4AF871EC112ED00D51FF6 /* CallKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - D0B4AF8B1EC1133600D51FF6 /* CallKitIntergation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B4AF8A1EC1133600D51FF6 /* CallKitIntergation.swift */; }; D0B69C3920EBB397003632C7 /* ChatMessageInteractiveInstantVideoNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B69C3820EBB397003632C7 /* ChatMessageInteractiveInstantVideoNode.swift */; }; - D0B69C3C20EBD8C8003632C7 /* CheckDeviceAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B69C3B20EBD8C8003632C7 /* CheckDeviceAccess.swift */; }; D0B85C1C1FF6F76000E795B4 /* AuthorizationSequencePasswordRecoveryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B85C1B1FF6F76000E795B4 /* AuthorizationSequencePasswordRecoveryController.swift */; }; D0B85C1E1FF6F76600E795B4 /* AuthorizationSequencePasswordRecoveryControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B85C1D1FF6F76600E795B4 /* AuthorizationSequencePasswordRecoveryControllerNode.swift */; }; D0B85C211FF70BEC00E795B4 /* AuthorizationSequenceAwaitingAccountResetControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B85C201FF70BEC00E795B4 /* AuthorizationSequenceAwaitingAccountResetControllerNode.swift */; }; @@ -570,7 +596,6 @@ D0CE6F70213EEE5000BCD44B /* CreatePasswordController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE6F6F213EEE5000BCD44B /* CreatePasswordController.swift */; }; D0CE8CE51F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE8CE41F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift */; }; D0CE8CE71F6F35A300AA2DB0 /* ChatTextInputPanelState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE8CE61F6F35A300AA2DB0 /* ChatTextInputPanelState.swift */; }; - D0CE8CEC1F6FCCA300AA2DB0 /* TransformImageArguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE8CEB1F6FCCA300AA2DB0 /* TransformImageArguments.swift */; }; D0CFBB861FD715E700B65C0D /* LegacyHTTPOperationImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CFBB851FD715E700B65C0D /* LegacyHTTPOperationImpl.swift */; }; D0CFBB911FD881A600B65C0D /* AudioRecordningToneData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CFBB901FD881A600B65C0D /* AudioRecordningToneData.swift */; }; D0CFBB951FD8B05000B65C0D /* OverlayInstantVideoDecoration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CFBB941FD8B05000B65C0D /* OverlayInstantVideoDecoration.swift */; }; @@ -602,7 +627,6 @@ D0E8175720122DAD00B82BBB /* ChatRecentActionsSearchNavigationContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8175620122DAD00B82BBB /* ChatRecentActionsSearchNavigationContentNode.swift */; }; D0E8175920122FE100B82BBB /* ChatRecentActionsFilterController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8175820122FE100B82BBB /* ChatRecentActionsFilterController.swift */; }; D0E8175B201254FA00B82BBB /* ChatRecentActionsEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8175A201254FA00B82BBB /* ChatRecentActionsEmptyNode.swift */; }; - D0E8B8A72044339500605593 /* PresentationCallToneData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8B8A62044339500605593 /* PresentationCallToneData.swift */; }; D0E8B8B9204477B600605593 /* SecretChatKeyVisualization.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8B8B8204477B600605593 /* SecretChatKeyVisualization.swift */; }; D0E8B8BB2044780600605593 /* ItemListSecretChatKeyItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8B8BA2044780600605593 /* ItemListSecretChatKeyItem.swift */; }; D0E8B8BD204479A500605593 /* SecretChatKeyController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8B8BC204479A500605593 /* SecretChatKeyController.swift */; }; @@ -732,20 +756,6 @@ D0EB42051F3143AB00838FE6 /* LegacyComponentsResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D0EB42041F3143AB00838FE6 /* LegacyComponentsResources.bundle */; }; D0EB5ADF1F798033004E89B6 /* PeerMediaCollectionEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EB5ADE1F798033004E89B6 /* PeerMediaCollectionEmptyNode.swift */; }; D0EC55A3210231D600D1992C /* SearchPeerMembers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC55A2210231D600D1992C /* SearchPeerMembers.swift */; }; - D0EC6CAE1EB9F58800EBF1C3 /* animations.c in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2CC1E48797500650E93 /* animations.c */; }; - D0EC6CAF1EB9F58800EBF1C3 /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2CE1E48797500650E93 /* buffer.c */; }; - D0EC6CB01EB9F58800EBF1C3 /* objects.c in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2D41E48797500650E93 /* objects.c */; }; - D0EC6CB11EB9F58800EBF1C3 /* program.c in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2D61E48797500650E93 /* program.c */; }; - D0EC6CB21EB9F58800EBF1C3 /* rngs.c in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2D81E48797500650E93 /* rngs.c */; }; - D0EC6CB31EB9F58800EBF1C3 /* shader.c in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2DA1E48797500650E93 /* shader.c */; }; - D0EC6CB41EB9F58800EBF1C3 /* timing.c in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2DC1E48797500650E93 /* timing.c */; }; - D0EC6CB51EB9F58800EBF1C3 /* platform_log.c in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2E01E48797500650E93 /* platform_log.c */; }; - D0EC6CB61EB9F58800EBF1C3 /* RMGeometry.m in Sources */ = {isa = PBXBuildFile; fileRef = D04BB31D1E48797500650E93 /* RMGeometry.m */; }; - D0EC6CB71EB9F58800EBF1C3 /* RMIntroPageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D04BB3211E48797500650E93 /* RMIntroPageView.m */; }; - D0EC6CB81EB9F58800EBF1C3 /* RMIntroViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D04BB3231E48797500650E93 /* RMIntroViewController.m */; }; - D0EC6CB91EB9F58800EBF1C3 /* RMLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D04BB3251E48797500650E93 /* RMLoginViewController.m */; }; - D0EC6CBA1EB9F58800EBF1C3 /* RMRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D04BB3271E48797500650E93 /* RMRootViewController.m */; }; - D0EC6CBB1EB9F58800EBF1C3 /* texture_helper.m in Sources */ = {isa = PBXBuildFile; fileRef = D04BB3291E48797500650E93 /* texture_helper.m */; }; D0EC6CBC1EB9F58800EBF1C3 /* LegacyController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D075518A1DDA4D7D0073E051 /* LegacyController.swift */; }; D0EC6CBD1EB9F58800EBF1C3 /* LegacyControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D075518C1DDA4E0B0073E051 /* LegacyControllerNode.swift */; }; D0EC6CBE1EB9F58800EBF1C3 /* TelegramInitializeLegacyComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07551921DDA540F0073E051 /* TelegramInitializeLegacyComponents.swift */; }; @@ -768,41 +778,22 @@ D0EC6CD31EB9F58800EBF1C3 /* GenerateTextEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F917B41E0DA396003687E6 /* GenerateTextEntities.swift */; }; D0EC6CD41EB9F58800EBF1C3 /* StringWithAppliedEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = D017494D1E1059570057C89A /* StringWithAppliedEntities.swift */; }; D0EC6CD51EB9F58800EBF1C3 /* StoredMessageFromSearchPeer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749541E1082770057C89A /* StoredMessageFromSearchPeer.swift */; }; - D0EC6CD61EB9F58800EBF1C3 /* PostboxKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = D087750B1E3E7B7600A97350 /* PostboxKeys.swift */; }; D0EC6CD71EB9F58800EBF1C3 /* EmojiUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01D6BFB1E42AB3C006151C6 /* EmojiUtils.swift */; }; D0EC6CD81EB9F58800EBF1C3 /* ShakeAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DA44551E4E7F43005FDCA7 /* ShakeAnimation.swift */; }; D0EC6CD91EB9F58800EBF1C3 /* ValidateAddressNameInteractive.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E305A41E5B2BFB00D7A3A2 /* ValidateAddressNameInteractive.swift */; }; - D0EC6CDA1EB9F58800EBF1C3 /* NumericFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05A32DB1E6EFCC2002760B4 /* NumericFormat.swift */; }; D0EC6CDB1EB9F58800EBF1C3 /* Markdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01C2AAC1E768404001F6F9A /* Markdown.swift */; }; D0EC6CDC1EB9F58800EBF1C3 /* TelegramAccountAuxiliaryMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */; }; - D0EC6CDD1EB9F58800EBF1C3 /* PresentationCallManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6B3E1EB8F3E500EBF1C3 /* PresentationCallManager.swift */; }; - D0EC6CDE1EB9F58800EBF1C3 /* ComponentsThemes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174C51EAE58FC00A1BF36 /* ComponentsThemes.swift */; }; D0EC6CDF1EB9F58800EBF1C3 /* PresentationResourceKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05BFB5E1EAA22F900909D38 /* PresentationResourceKey.swift */; }; D0EC6CE01EB9F58800EBF1C3 /* PresentationResourcesRootController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174BD1EAE161C00A1BF36 /* PresentationResourcesRootController.swift */; }; D0EC6CE11EB9F58800EBF1C3 /* PresentationResourcesItemList.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174BB1EAE156500A1BF36 /* PresentationResourcesItemList.swift */; }; D0EC6CE21EB9F58800EBF1C3 /* PresentationResourcesChatList.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03AADA81EAF931300D23738 /* PresentationResourcesChatList.swift */; }; D0EC6CE31EB9F58800EBF1C3 /* PresentationResourcesChat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06FFBA91EAFAD2500CB53D4 /* PresentationResourcesChat.swift */; }; - D0EC6CE41EB9F58800EBF1C3 /* PresentationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B724F1E720597000BD3AD /* PresentationData.swift */; }; - D0EC6CE51EB9F58800EBF1C3 /* PresentationStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D096A47A1EA6A2F00000A7AE /* PresentationStrings.swift */; }; - D0EC6CE61EB9F58800EBF1C3 /* PresentationsResourceCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = D096A4611EA681A90000A7AE /* PresentationsResourceCache.swift */; }; - D0EC6CE71EB9F58800EBF1C3 /* PresentationTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D096A4631EA683C90000A7AE /* PresentationTheme.swift */; }; - D0EC6CE81EB9F58800EBF1C3 /* DefaultPresentationTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D010C2CB1EA7D74800F41B96 /* DefaultPresentationTheme.swift */; }; - D0EC6CE91EB9F58800EBF1C3 /* DefaultDarkPresentationTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174BF1EAE3AD400A1BF36 /* DefaultDarkPresentationTheme.swift */; }; - D0EC6CEA1EB9F58800EBF1C3 /* DefaultPresentationStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D010C2CD1EA7DDD600F41B96 /* DefaultPresentationStrings.swift */; }; D0EC6CEC1EB9F58800EBF1C3 /* PresentationThemeEssentialGraphics.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06FFBA71EAFAC4F00CB53D4 /* PresentationThemeEssentialGraphics.swift */; }; - D0EC6CED1EB9F58800EBF1C3 /* StringPluralization.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EAE09F1EB21256005296C1 /* StringPluralization.swift */; }; - D0EC6CEE1EB9F58800EBF1C3 /* InAppNotificationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01B279E1E394BD70022A4C0 /* InAppNotificationSettings.swift */; }; - D0EC6CEF1EB9F58800EBF1C3 /* PresentationPasscodeSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01B27A31E394FC90022A4C0 /* PresentationPasscodeSettings.swift */; }; - D0EC6CF01EB9F58800EBF1C3 /* MediaAutoDownloadSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0223A8F1EA53E6000211D94 /* MediaAutoDownloadSettings.swift */; }; - D0EC6CF11EB9F58800EBF1C3 /* GeneratedMediaStoreSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0223A911EA5420C00211D94 /* GeneratedMediaStoreSettings.swift */; }; - D0EC6CF21EB9F58800EBF1C3 /* VoiceCallSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0223A931EA5442C00211D94 /* VoiceCallSettings.swift */; }; - D0EC6CF31EB9F58800EBF1C3 /* PresentationThemeSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D010C2C91EA7A59F00F41B96 /* PresentationThemeSettings.swift */; }; D0EC6CF41EB9F58800EBF1C3 /* ManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */; }; D0EC6CF51EB9F58800EBF1C3 /* PeerMessageManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */; }; D0EC6CF61EB9F58800EBF1C3 /* ChatContextResultManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */; }; D0EC6CF71EB9F58800EBF1C3 /* RecentGifManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */; }; D0EC6CF91EB9F58800EBF1C3 /* MediaManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */; }; - D0EC6CFA1EB9F58800EBF1C3 /* ManagedAudioSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D03AE21DECACB700220C46 /* ManagedAudioSession.swift */; }; D0EC6CFB1EB9F58800EBF1C3 /* ManagedAudioRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */; }; D0EC6CFD1EB9F58800EBF1C3 /* AudioWaveform.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B2B1DED9B8900220C46 /* AudioWaveform.swift */; }; D0EC6CFF1EB9F58800EBF1C3 /* OverlayMediaController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6B421EB92DF600EBF1C3 /* OverlayMediaController.swift */; }; @@ -818,24 +809,6 @@ D0EC6D0A1EB9F58800EBF1C3 /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B031DECB0FE00220C46 /* internal.c */; }; D0EC6D0B1EB9F58800EBF1C3 /* opusfile.c in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B051DECB0FE00220C46 /* opusfile.c */; }; D0EC6D0C1EB9F58800EBF1C3 /* stream.c in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B071DECB0FE00220C46 /* stream.c */; }; - D0EC6D0D1EB9F58800EBF1C3 /* MediaFrameSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CE51D6B87D30046BCD6 /* MediaFrameSource.swift */; }; - D0EC6D0E1EB9F58800EBF1C3 /* MediaPlaybackData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D7F1D6B87EC0046BCD6 /* MediaPlaybackData.swift */; }; - D0EC6D0F1EB9F58800EBF1C3 /* MediaPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D021D6B87D30046BCD6 /* MediaPlayer.swift */; }; - D0EC6D101EB9F58800EBF1C3 /* MediaPlayerAudioRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CD41D6B87D30046BCD6 /* MediaPlayerAudioRenderer.swift */; }; - D0EC6D111EB9F58800EBF1C3 /* MediaPlayerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CDC1D6B87D30046BCD6 /* MediaPlayerNode.swift */; }; - D0EC6D121EB9F58800EBF1C3 /* VideoPlayerProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D058E0CE1E8AD57300A442DE /* VideoPlayerProxy.swift */; }; - D0EC6D131EB9F58800EBF1C3 /* MediaTrackDecodableFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D1D1D6B87D30046BCD6 /* MediaTrackDecodableFrame.swift */; }; - D0EC6D141EB9F58800EBF1C3 /* MediaTrackFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D711D6B87DE0046BCD6 /* MediaTrackFrame.swift */; }; - D0EC6D151EB9F58800EBF1C3 /* MediaTrackFrameBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D701D6B87DE0046BCD6 /* MediaTrackFrameBuffer.swift */; }; - D0EC6D161EB9F58800EBF1C3 /* MediaTrackFrameDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D881D6B87EC0046BCD6 /* MediaTrackFrameDecoder.swift */; }; - D0EC6D171EB9F58800EBF1C3 /* FFMpegAudioFrameDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CD71D6B87D30046BCD6 /* FFMpegAudioFrameDecoder.swift */; }; - D0EC6D181EB9F58800EBF1C3 /* FFMpegMediaFrameSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CE11D6B87D30046BCD6 /* FFMpegMediaFrameSource.swift */; }; - D0EC6D191EB9F58800EBF1C3 /* FFMpegMediaFrameSourceContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CD31D6B87D30046BCD6 /* FFMpegMediaFrameSourceContext.swift */; }; - D0EC6D1A1EB9F58800EBF1C3 /* FFMpegMediaFrameSourceContextHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D161D6B87D30046BCD6 /* FFMpegMediaFrameSourceContextHelpers.swift */; }; - D0EC6D1B1EB9F58800EBF1C3 /* FFMpegMediaVideoFrameDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D871D6B87EC0046BCD6 /* FFMpegMediaVideoFrameDecoder.swift */; }; - D0EC6D1C1EB9F58800EBF1C3 /* FFMpegMediaPassthroughVideoFrameDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69D6F1D6B87DE0046BCD6 /* FFMpegMediaPassthroughVideoFrameDecoder.swift */; }; - D0EC6D1E1EB9F58800EBF1C3 /* MediaPlayerScrubbingNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03922A61DF70E3F000F2CE9 /* MediaPlayerScrubbingNode.swift */; }; - D0EC6D1F1EB9F58800EBF1C3 /* MediaPlayerTimeTextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0177B7F1DFAE18500A5083A /* MediaPlayerTimeTextNode.swift */; }; D0EC6D201EB9F58800EBF1C3 /* PeerAvatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CDE1D6B87D30046BCD6 /* PeerAvatar.swift */; }; D0EC6D221EB9F58800EBF1C3 /* PhotoResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E9F1D6B8E380046BCD6 /* PhotoResources.swift */; }; D0EC6D231EB9F58800EBF1C3 /* StickerResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69EA01D6B8E380046BCD6 /* StickerResources.swift */; }; @@ -849,8 +822,6 @@ D0EC6D2B1EB9F58800EBF1C3 /* FileMediaResourceStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0177B831DFB095000A5083A /* FileMediaResourceStatus.swift */; }; D0EC6D2C1EB9F58800EBF1C3 /* TouchDownGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CFB1D6B87D30046BCD6 /* TouchDownGestureRecognizer.swift */; }; D0EC6D2D1EB9F58800EBF1C3 /* TapLongTapOrDoubleTapGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02958011D6F0D5F00360E5E /* TapLongTapOrDoubleTapGestureRecognizer.swift */; }; - D0EC6D2E1EB9F58800EBF1C3 /* ImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DC81D6B89EB0046BCD6 /* ImageNode.swift */; }; - D0EC6D2F1EB9F58800EBF1C3 /* TransformImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DC61D6B89E70046BCD6 /* TransformImageNode.swift */; }; D0EC6D301EB9F58800EBF1C3 /* RadialProgressNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DC41D6B89E10046BCD6 /* RadialProgressNode.swift */; }; D0EC6D311EB9F58800EBF1C3 /* RadialTimeoutNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00C7CE51E378FD00080C3D5 /* RadialTimeoutNode.swift */; }; D0EC6D321EB9F58800EBF1C3 /* TextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DC21D6B89DA0046BCD6 /* TextNode.swift */; }; @@ -1162,10 +1133,7 @@ D0EC6E851EB9F58900EBF1C3 /* ChatMessageNotificationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C50E3F1E93D3B000F62E39 /* ChatMessageNotificationItem.swift */; }; D0EC6E871EB9F58900EBF1C3 /* FastBlur.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E801D6B8C850046BCD6 /* FastBlur.m */; }; D0EC6E891EB9F58900EBF1C3 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E831D6B8C850046BCD6 /* FrameworkBundle.swift */; }; - D0EC6E8B1EB9F58900EBF1C3 /* RingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E861D6B8C850046BCD6 /* RingBuffer.m */; }; - D0EC6E8C1EB9F58900EBF1C3 /* RingByteBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E871D6B8C850046BCD6 /* RingByteBuffer.swift */; }; D0EC6E8D1EB9F58900EBF1C3 /* SecretChatKeyVisualization.m in Sources */ = {isa = PBXBuildFile; fileRef = D00C7CF61E37BF680080C3D5 /* SecretChatKeyVisualization.m */; }; - D0EC6E8E1EB9F58900EBF1C3 /* NumberPluralizationForm.m in Sources */ = {isa = PBXBuildFile; fileRef = D0EAE0A21EB212DE005296C1 /* NumberPluralizationForm.m */; }; D0EC6E8F1EB9F5B200EBF1C3 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08D45291D5E340300A7428A /* AsyncDisplayKit.framework */; }; D0EC6E901EB9F5B200EBF1C3 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08D452A1D5E340300A7428A /* Display.framework */; }; D0EC6E911EB9F5B200EBF1C3 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08D452B1D5E340300A7428A /* Postbox.framework */; }; @@ -1178,15 +1146,12 @@ D0EC6EA51EB9FBD300EBF1C3 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AB0BB01D6718DA002C78E7 /* libiconv.tbd */; }; D0EC6EA61EB9FC2400EBF1C3 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D07551901DDA4FC70073E051 /* libc++.tbd */; }; D0EC6EBD1EBA100F00EBF1C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0EC6EBC1EBA100F00EBF1C3 /* CoreAudio.framework */; }; - D0EC6FFD1EBA1F2400EBF1C3 /* OngoingCallThreadLocalContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6FFC1EBA1F2400EBF1C3 /* OngoingCallThreadLocalContext.mm */; }; D0EEE9A12165585F001292A6 /* DocumentPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EEE9A02165585F001292A6 /* DocumentPreviewController.swift */; }; - D0F0AAE01EC1E12C005EE2A5 /* PresentationCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F0AADF1EC1E12C005EE2A5 /* PresentationCall.swift */; }; D0F0AAE21EC20EF8005EE2A5 /* CallControllerStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F0AAE11EC20EF8005EE2A5 /* CallControllerStatusNode.swift */; }; D0F0AAE41EC21AAA005EE2A5 /* CallControllerButtonsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F0AAE31EC21AAA005EE2A5 /* CallControllerButtonsNode.swift */; }; D0F0AAE61EC21B68005EE2A5 /* CallControllerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F0AAE51EC21B68005EE2A5 /* CallControllerButton.swift */; }; D0F19F6220E5694D00EEC860 /* GroupStickerPackCurrentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F19F6120E5694D00EEC860 /* GroupStickerPackCurrentItem.swift */; }; D0F19F6420E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F19F6320E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift */; }; - D0F339372269D83500CFF53F /* ChatArchiveSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F339362269D83500CFF53F /* ChatArchiveSettings.swift */; }; D0F4B01A211073C500912B92 /* DeviceContactInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F4B019211073C500912B92 /* DeviceContactInfoController.swift */; }; D0F4B0222110972300912B92 /* ContactInfoStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F4B0212110972300912B92 /* ContactInfoStrings.swift */; }; D0F67FF01EE6B8A8000E5906 /* ChannelMembersSearchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F67FEF1EE6B8A8000E5906 /* ChannelMembersSearchController.swift */; }; @@ -1242,15 +1207,12 @@ 091954762294752C00E11046 /* AnimatedStickerPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatedStickerPlayer.swift; sourceTree = ""; }; 091954782294754E00E11046 /* AnimatedStickerUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatedStickerUtils.swift; sourceTree = ""; }; 0919547A2294788200E11046 /* AnimatedStickerVideoCompositor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatedStickerVideoCompositor.swift; sourceTree = ""; }; - 0921F5FB228B01B6001A13D7 /* GZip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GZip.h; sourceTree = ""; }; - 0921F5FC228B01B6001A13D7 /* GZip.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GZip.m; sourceTree = ""; }; 0921F60A228C8765001A13D7 /* ItemListPlaceholderItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListPlaceholderItem.swift; sourceTree = ""; }; 0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageActionUrlAuthController.swift; sourceTree = ""; }; 092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SFCompactRounded-Semibold.otf"; sourceTree = ""; }; 092F368F2157AB46001A9F49 /* ItemListCallListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListCallListItem.swift; sourceTree = ""; }; 09310D1A213BC5DE0020033A /* anim_ungroup.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_ungroup.json; sourceTree = ""; }; 09310D1B213BC5DE0020033A /* anim_group.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_group.json; sourceTree = ""; }; - 0935F8EE22197FBF0070AE70 /* LegacyAutomaticMediaDownloadSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyAutomaticMediaDownloadSettings.swift; sourceTree = ""; }; 0941A99F210B057200EBE194 /* OpenInActionSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenInActionSheetController.swift; sourceTree = ""; }; 0941A9A3210B0E2E00EBE194 /* OpenInAppIconResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenInAppIconResources.swift; sourceTree = ""; }; 0941A9A5210B822D00EBE194 /* OpenInOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenInOptions.swift; sourceTree = ""; }; @@ -1269,7 +1231,6 @@ 0947FCAD224043450086741C /* SettingsSearchRecentItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsSearchRecentItem.swift; sourceTree = ""; }; 0947FCAF224055990086741C /* StringHash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringHash.swift; sourceTree = ""; }; 0952D1742176DEB500194860 /* NotificationMuteSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationMuteSettingsController.swift; sourceTree = ""; }; - 0952D1762177FB5400194860 /* WatchPresetSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchPresetSettings.swift; sourceTree = ""; }; 0958FBB8218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageFeedbackItem.swift; sourceTree = ""; }; 0958FBBA218AD6BC00E0CBD8 /* InstantPageFeedbackNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageFeedbackNode.swift; sourceTree = ""; }; 0958FBBC218B03CA00E0CBD8 /* InstantPageDetailsNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageDetailsNode.swift; sourceTree = ""; }; @@ -1284,13 +1245,7 @@ 0962E67621B673AF00245FD9 /* Permission.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Permission.swift; sourceTree = ""; }; 0962E67821B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageAnimatedStickerItemNode.swift; sourceTree = ""; }; 0962E67A21BA00C900245FD9 /* WebSearchInterfaceState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchInterfaceState.swift; sourceTree = ""; }; - 0962E67C21BA048D00245FD9 /* WebSearchSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchSettings.swift; sourceTree = ""; }; 0962E67E21BA786A00245FD9 /* WebSearchItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchItem.swift; sourceTree = ""; }; - 096C98B921787A5C00C211FF /* LegacyBridgeAudio.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyBridgeAudio.swift; sourceTree = ""; }; - 096C98BB21787C6600C211FF /* TGBridgeAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeAudioEncoder.m; sourceTree = ""; }; - 096C98BC21787C6600C211FF /* TGBridgeAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeAudioEncoder.h; sourceTree = ""; }; - 096C98BD21787C6700C211FF /* TGBridgeAudioDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeAudioDecoder.h; sourceTree = ""; }; - 096C98BE21787C6700C211FF /* TGBridgeAudioDecoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TGBridgeAudioDecoder.mm; sourceTree = ""; }; 09749BC421F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickersChatInputContextPanelItem.swift; sourceTree = ""; }; 09749BC821F1BBA1008FDDE9 /* CallFeedbackController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallFeedbackController.swift; sourceTree = ""; }; 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryDecorationNode.swift; sourceTree = ""; }; @@ -1425,7 +1380,6 @@ D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListAvatarAndNameItem.swift; sourceTree = ""; }; D003702F1DA43077004308D3 /* ItemListItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListItem.swift; sourceTree = ""; }; D00370311DA46C06004308D3 /* ItemListTextWithLabelItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListTextWithLabelItem.swift; sourceTree = ""; }; - D005808A21CAB8F000CB7CD3 /* VoipDerivedState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoipDerivedState.swift; sourceTree = ""; }; D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteChatPeerActionSheetItem.swift; sourceTree = ""; }; D00580B521E4C02100CB7CD3 /* UndoOverlayController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UndoOverlayController.swift; sourceTree = ""; }; D00580B721E4C03400CB7CD3 /* UndoOverlayControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UndoOverlayControllerNode.swift; sourceTree = ""; }; @@ -1435,9 +1389,43 @@ D007019F2029F6D0006B9E34 /* TGMimeTypeMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGMimeTypeMap.h; sourceTree = ""; }; D00701A02029F6D0006B9E34 /* TGMimeTypeMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGMimeTypeMap.m; sourceTree = ""; }; D00781042084DFB100369A39 /* UrlEscaping.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UrlEscaping.swift; sourceTree = ""; }; + D008177222B46B7D008A895F /* ShareItems.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShareItems.swift; sourceTree = ""; }; + D008177322B46B7E008A895F /* TGShareLocationSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGShareLocationSignals.h; sourceTree = ""; }; + D008177422B46B7E008A895F /* TGContactModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGContactModel.h; sourceTree = ""; }; + D008177522B46B7E008A895F /* TGItemProviderSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGItemProviderSignals.h; sourceTree = ""; }; + D008177622B46B7E008A895F /* TGContactModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGContactModel.m; sourceTree = ""; }; + D008177722B46B7E008A895F /* TGItemProviderSignals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGItemProviderSignals.m; sourceTree = ""; }; + D008177822B46B7E008A895F /* TGShareLocationSignals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGShareLocationSignals.m; sourceTree = ""; }; + D008178122B47464008A895F /* NotificationContentContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationContentContext.swift; sourceTree = ""; }; + D00817B022B47A12008A895F /* WatchRequestHandlers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchRequestHandlers.swift; sourceTree = ""; }; + D00817B122B47A12008A895F /* WatchBridge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchBridge.swift; sourceTree = ""; }; + D00817B222B47A12008A895F /* WatchCommunicationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchCommunicationManager.swift; sourceTree = ""; }; + D00817B322B47A12008A895F /* TGAutoDownloadPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGAutoDownloadPreferences.h; sourceTree = ""; }; + D00817B422B47A12008A895F /* TGProxyItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGProxyItem.h; sourceTree = ""; }; + D00817B522B47A12008A895F /* LegacyFileImport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyFileImport.swift; sourceTree = ""; }; + D00817B622B47A12008A895F /* WakeupManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WakeupManager.swift; sourceTree = ""; }; + D00817B722B47A12008A895F /* LegacyDataImport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyDataImport.swift; sourceTree = ""; }; + D00817B822B47A12008A895F /* LegacyPreferencesImport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyPreferencesImport.swift; sourceTree = ""; }; + D00817B922B47A12008A895F /* LegacyResourceImport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyResourceImport.swift; sourceTree = ""; }; + D00817BA22B47A12008A895F /* LegacyUserDataImport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyUserDataImport.swift; sourceTree = ""; }; + D00817BB22B47A13008A895F /* ApplicationShortcutItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplicationShortcutItem.swift; sourceTree = ""; }; + D00817BC22B47A13008A895F /* TGProxyItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGProxyItem.m; sourceTree = ""; }; + D00817BD22B47A13008A895F /* TGBridgeServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeServer.h; sourceTree = ""; }; + D00817BE22B47A13008A895F /* TGAutoDownloadPreferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGAutoDownloadPreferences.m; sourceTree = ""; }; + D00817BF22B47A13008A895F /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + D00817C022B47A13008A895F /* TGPresentationAutoNightPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGPresentationAutoNightPreferences.h; sourceTree = ""; }; + D00817C122B47A13008A895F /* LegacyChatImport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyChatImport.swift; sourceTree = ""; }; + D00817C222B47A13008A895F /* ManageSharedAccountInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManageSharedAccountInfo.swift; sourceTree = ""; }; + D00817C322B47A13008A895F /* LockedWindowCoveringView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockedWindowCoveringView.swift; sourceTree = ""; }; + D00817C422B47A13008A895F /* TGBridgeServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeServer.m; sourceTree = ""; }; + D00817C522B47A13008A895F /* LegacyDataImportSplash.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyDataImportSplash.swift; sourceTree = ""; }; + D00817C622B47A13008A895F /* UIImage+ImageEffects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+ImageEffects.h"; sourceTree = ""; }; + D00817C822B47A14008A895F /* UIImage+ImageEffects.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+ImageEffects.m"; sourceTree = ""; }; + D00817C922B47A14008A895F /* TGPresentationAutoNightPreferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGPresentationAutoNightPreferences.m; sourceTree = ""; }; + D008184922B57225008A895F /* WatchCommon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WatchCommon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D00818CC22B595CB008A895F /* LightweightAccountData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LightweightAccountData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D00ACA4C20222C280045D427 /* libtgvoip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = libtgvoip.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D00ACA592022897D0045D427 /* ProcessedPeerRestrictionText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessedPeerRestrictionText.swift; sourceTree = ""; }; - D00ADFDA1EBA2EAF00873D2E /* OngoingCallContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OngoingCallContext.swift; sourceTree = ""; }; D00ADFDC1EBB73C200873D2E /* OverlayMediaManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayMediaManager.swift; sourceTree = ""; }; D00B3F9D1E3A4847003872C3 /* ItemListSectionHeaderItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListSectionHeaderItem.swift; sourceTree = ""; }; D00B3F9F1E3A76D4003872C3 /* ItemListSwitchItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListSwitchItem.swift; sourceTree = ""; }; @@ -1465,9 +1453,6 @@ D0104F2B1F471EEB004E4881 /* InstantPageGalleryFooterContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageGalleryFooterContentNode.swift; sourceTree = ""; }; D0105D591D80B957008755D8 /* ChatChannelSubscriberInputPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatChannelSubscriberInputPanelNode.swift; sourceTree = ""; }; D0105D672182680E007C04A7 /* IsMediaStreamable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IsMediaStreamable.swift; sourceTree = ""; }; - D010C2C91EA7A59F00F41B96 /* PresentationThemeSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationThemeSettings.swift; sourceTree = ""; }; - D010C2CB1EA7D74800F41B96 /* DefaultPresentationTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultPresentationTheme.swift; sourceTree = ""; }; - D010C2CD1EA7DDD600F41B96 /* DefaultPresentationStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultPresentationStrings.swift; sourceTree = ""; }; D0119CCF20CAE75F00895300 /* LegacySecureIdAttachmentMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacySecureIdAttachmentMenu.swift; sourceTree = ""; }; D0127A0C1E6424AC003BFF2E /* ChatPinnedMessageTitlePanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatPinnedMessageTitlePanelNode.swift; sourceTree = ""; }; D013630B208FA62400EB3653 /* SecureIdDocumentGalleryFooterContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureIdDocumentGalleryFooterContentNode.swift; sourceTree = ""; }; @@ -1488,7 +1473,6 @@ D01776B91F1D704F0044446D /* RadialStatusIconContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadialStatusIconContentNode.swift; sourceTree = ""; }; D01776BB1F1E21AF0044446D /* RadialStatusBackgroundNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadialStatusBackgroundNode.swift; sourceTree = ""; }; D01776BD1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMediaCollectionSectionsNode.swift; sourceTree = ""; }; - D0177B7F1DFAE18500A5083A /* MediaPlayerTimeTextNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayerTimeTextNode.swift; sourceTree = ""; }; D0177B831DFB095000A5083A /* FileMediaResourceStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileMediaResourceStatus.swift; sourceTree = ""; }; D018477F1FFBD12E00075256 /* ChatListPresentationData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListPresentationData.swift; sourceTree = ""; }; D01848E721A03BDA00B6DEBD /* ChatSearchState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSearchState.swift; sourceTree = ""; }; @@ -1509,8 +1493,6 @@ D01B27981E39144C0022A4C0 /* ItemListController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListController.swift; sourceTree = ""; }; D01B279A1E39386C0022A4C0 /* SettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsController.swift; sourceTree = ""; }; D01B279C1E394A500022A4C0 /* NotificationsAndSounds.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationsAndSounds.swift; sourceTree = ""; }; - D01B279E1E394BD70022A4C0 /* InAppNotificationSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InAppNotificationSettings.swift; sourceTree = ""; }; - D01B27A31E394FC90022A4C0 /* PresentationPasscodeSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationPasscodeSettings.swift; sourceTree = ""; }; D01BAA171ECC8E0000295217 /* CallListController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallListController.swift; sourceTree = ""; }; D01BAA191ECC8E0D00295217 /* CallListControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallListControllerNode.swift; sourceTree = ""; }; D01BAA1B1ECC92F700295217 /* CallListViewTransition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallListViewTransition.swift; sourceTree = ""; }; @@ -1566,9 +1548,6 @@ D021E0CF1DB413BC00C6B04F /* ChatInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInputNode.swift; sourceTree = ""; }; D021E0D11DB4147500C6B04F /* ChatInterfaceInputNodes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInterfaceInputNodes.swift; sourceTree = ""; }; D021E0E41DB55D0A00C6B04F /* ChatMediaInputStickerPackItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputStickerPackItem.swift; sourceTree = ""; }; - D0223A8F1EA53E6000211D94 /* MediaAutoDownloadSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaAutoDownloadSettings.swift; sourceTree = ""; }; - D0223A911EA5420C00211D94 /* GeneratedMediaStoreSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedMediaStoreSettings.swift; sourceTree = ""; }; - D0223A931EA5442C00211D94 /* VoiceCallSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VoiceCallSettings.swift; sourceTree = ""; }; D0223A951EA54D0D00211D94 /* VoiceCallDataSavingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VoiceCallDataSavingController.swift; sourceTree = ""; }; D0223A9D1EA5732300211D94 /* NetworkUsageStatsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkUsageStatsController.swift; sourceTree = ""; }; D02298361E0C34E900707F91 /* ChatMessageBackground.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageBackground.swift; sourceTree = ""; }; @@ -1615,7 +1594,6 @@ D0383EDB207D1A1600C45548 /* emoji_suggestions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emoji_suggestions.h; sourceTree = ""; }; D0383EE3207D292800C45548 /* EmojisChatInputContextPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojisChatInputContextPanelNode.swift; sourceTree = ""; }; D0383EE5207D299600C45548 /* EmojisChatInputPanelItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojisChatInputPanelItem.swift; sourceTree = ""; }; - D03922A61DF70E3F000F2CE9 /* MediaPlayerScrubbingNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayerScrubbingNode.swift; sourceTree = ""; }; D039EB021DEAEFEE00886EBC /* ChatTextInputAudioRecordingOverlayButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTextInputAudioRecordingOverlayButton.swift; sourceTree = ""; }; D039EB071DEC725600886EBC /* ChatTextInputAudioRecordingTimeNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTextInputAudioRecordingTimeNode.swift; sourceTree = ""; }; D039EB091DEC7A8700886EBC /* ChatTextInputAudioRecordingCancelIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTextInputAudioRecordingCancelIndicator.swift; sourceTree = ""; }; @@ -1649,7 +1627,6 @@ D0430AFF1FF4570500A35ADD /* WebController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebController.swift; sourceTree = ""; }; D0430B011FF4584100A35ADD /* WebControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebControllerNode.swift; sourceTree = ""; }; D0439B5A228EC4A00067E026 /* ChatMessagePhoneNumberRequestContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessagePhoneNumberRequestContentNode.swift; sourceTree = ""; }; - D044A0F220BDA05800326FAC /* ThrottledValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThrottledValue.swift; sourceTree = ""; }; D044A0FA20BDC40C00326FAC /* CachedChannelAdmins.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CachedChannelAdmins.swift; sourceTree = ""; }; D045549921B2F173007A6DD9 /* libturbojpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libturbojpeg.a; path = "third-party/libjpeg-turbo/libturbojpeg.a"; sourceTree = ""; }; D04554A321B42982007A6DD9 /* ConfirmPhoneNumberController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmPhoneNumberController.swift; sourceTree = ""; }; @@ -1677,7 +1654,6 @@ D04791661E79A22000F18979 /* ItemListStickerPackItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListStickerPackItem.swift; sourceTree = ""; }; D0486F091E523C8500091F0C /* GroupInfoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupInfoController.swift; sourceTree = ""; }; D048B338203C532800038D05 /* ChatMediaInputPane.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPane.swift; sourceTree = ""; }; - D048B33A203C777500038D05 /* RenderedTotalUnreadCount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RenderedTotalUnreadCount.swift; sourceTree = ""; }; D048EA841F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsBacklightItemNode.swift; sourceTree = ""; }; D048EA861F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsFontSizeItemNode.swift; sourceTree = ""; }; D048EA881F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsFontFamilyItemNode.swift; sourceTree = ""; }; @@ -1700,66 +1676,6 @@ D04BB2BF1E44FD3100650E93 /* AuthorizationSequenceCodeEntryControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceCodeEntryControllerNode.swift; sourceTree = ""; }; D04BB2C21E45020A00650E93 /* AuthorizationSequencePasswordEntryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequencePasswordEntryController.swift; sourceTree = ""; }; D04BB2C41E45022C00650E93 /* AuthorizationSequencePasswordEntryControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequencePasswordEntryControllerNode.swift; sourceTree = ""; }; - D04BB2CA1E48797500650E93 /* linmath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linmath.h; sourceTree = ""; }; - D04BB2CC1E48797500650E93 /* animations.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = animations.c; sourceTree = ""; }; - D04BB2CD1E48797500650E93 /* animations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = animations.h; sourceTree = ""; }; - D04BB2CE1E48797500650E93 /* buffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = buffer.c; sourceTree = ""; }; - D04BB2CF1E48797500650E93 /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = ""; }; - D04BB2D11E48797500650E93 /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; - D04BB2D21E48797500650E93 /* math_helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = math_helper.h; sourceTree = ""; }; - D04BB2D31E48797500650E93 /* matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; - D04BB2D41E48797500650E93 /* objects.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = objects.c; sourceTree = ""; }; - D04BB2D51E48797500650E93 /* objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objects.h; sourceTree = ""; }; - D04BB2D61E48797500650E93 /* program.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = program.c; sourceTree = ""; }; - D04BB2D71E48797500650E93 /* program.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = program.h; sourceTree = ""; }; - D04BB2D81E48797500650E93 /* rngs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rngs.c; sourceTree = ""; }; - D04BB2D91E48797500650E93 /* rngs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rngs.h; sourceTree = ""; }; - D04BB2DA1E48797500650E93 /* shader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shader.c; sourceTree = ""; }; - D04BB2DB1E48797500650E93 /* shader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shader.h; sourceTree = ""; }; - D04BB2DC1E48797500650E93 /* timing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = timing.c; sourceTree = ""; }; - D04BB2DD1E48797500650E93 /* timing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timing.h; sourceTree = ""; }; - D04BB2E01E48797500650E93 /* platform_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform_log.c; sourceTree = ""; }; - D04BB2E11E48797500650E93 /* platform_log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_log.h; sourceTree = ""; }; - D04BB2E21E48797500650E93 /* platform_macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_macros.h; sourceTree = ""; }; - D04BB2FE1E48797500650E93 /* platform_gl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_gl.h; sourceTree = ""; }; - D04BB3001E48797500650E93 /* fast_arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_arrow@2x.png"; sourceTree = ""; }; - D04BB3011E48797500650E93 /* fast_arrow_shadow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_arrow_shadow@2x.png"; sourceTree = ""; }; - D04BB3021E48797500650E93 /* fast_body@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_body@2x.png"; sourceTree = ""; }; - D04BB3031E48797500650E93 /* fast_spiral@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_spiral@2x.png"; sourceTree = ""; }; - D04BB3041E48797500650E93 /* ic_bubble@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_bubble@2x.png"; sourceTree = ""; }; - D04BB3051E48797500650E93 /* ic_bubble_dot@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_bubble_dot@2x.png"; sourceTree = ""; }; - D04BB3061E48797500650E93 /* ic_cam@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_cam@2x.png"; sourceTree = ""; }; - D04BB3071E48797500650E93 /* ic_cam_lens@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_cam_lens@2x.png"; sourceTree = ""; }; - D04BB3081E48797500650E93 /* ic_pencil@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_pencil@2x.png"; sourceTree = ""; }; - D04BB3091E48797500650E93 /* ic_pin@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_pin@2x.png"; sourceTree = ""; }; - D04BB30A1E48797500650E93 /* ic_smile@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_smile@2x.png"; sourceTree = ""; }; - D04BB30B1E48797500650E93 /* ic_smile_eye@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_smile_eye@2x.png"; sourceTree = ""; }; - D04BB30C1E48797500650E93 /* ic_videocam@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_videocam@2x.png"; sourceTree = ""; }; - D04BB30D1E48797500650E93 /* knot_down@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "knot_down@2x.png"; sourceTree = ""; }; - D04BB30E1E48797500650E93 /* knot_up@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "knot_up@2x.png"; sourceTree = ""; }; - D04BB30F1E48797500650E93 /* powerful_infinity@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_infinity@2x.png"; sourceTree = ""; }; - D04BB3101E48797500650E93 /* powerful_infinity_white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_infinity_white@2x.png"; sourceTree = ""; }; - D04BB3111E48797500650E93 /* powerful_mask@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_mask@2x.png"; sourceTree = ""; }; - D04BB3121E48797500650E93 /* powerful_star@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_star@2x.png"; sourceTree = ""; }; - D04BB3131E48797500650E93 /* private_door@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "private_door@2x.png"; sourceTree = ""; }; - D04BB3141E48797500650E93 /* private_screw@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "private_screw@2x.png"; sourceTree = ""; }; - D04BB3151E48797500650E93 /* start_arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "start_arrow@2x.png"; sourceTree = ""; }; - D04BB3161E48797500650E93 /* start_arrow_ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = start_arrow_ipad.png; sourceTree = ""; }; - D04BB3171E48797500650E93 /* start_arrow_ipad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "start_arrow_ipad@2x.png"; sourceTree = ""; }; - D04BB3181E48797500650E93 /* telegram_plane@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_plane@2x.png"; sourceTree = ""; }; - D04BB3191E48797500650E93 /* telegram_sphere@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_sphere@2x.png"; sourceTree = ""; }; - D04BB31C1E48797500650E93 /* RMGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMGeometry.h; sourceTree = ""; }; - D04BB31D1E48797500650E93 /* RMGeometry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMGeometry.m; sourceTree = ""; }; - D04BB3201E48797500650E93 /* RMIntroPageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMIntroPageView.h; sourceTree = ""; }; - D04BB3211E48797500650E93 /* RMIntroPageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMIntroPageView.m; sourceTree = ""; }; - D04BB3221E48797500650E93 /* RMIntroViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMIntroViewController.h; sourceTree = ""; }; - D04BB3231E48797500650E93 /* RMIntroViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMIntroViewController.m; sourceTree = ""; }; - D04BB3241E48797500650E93 /* RMLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMLoginViewController.h; sourceTree = ""; }; - D04BB3251E48797500650E93 /* RMLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMLoginViewController.m; sourceTree = ""; }; - D04BB3261E48797500650E93 /* RMRootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMRootViewController.h; sourceTree = ""; }; - D04BB3271E48797500650E93 /* RMRootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMRootViewController.m; sourceTree = ""; }; - D04BB3281E48797500650E93 /* texture_helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = texture_helper.h; sourceTree = ""; }; - D04BB3291E48797500650E93 /* texture_helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = texture_helper.m; sourceTree = ""; }; D04ECD711FFBF22B00DE9029 /* OpenUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenUrl.swift; sourceTree = ""; }; D050A463229C052A0044F11A /* ChannelDiscussionGroupSetupSearchItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelDiscussionGroupSetupSearchItem.swift; sourceTree = ""; }; D050A465229C06460044F11A /* ChannelDiscussionGroupSearchContainerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelDiscussionGroupSearchContainerNode.swift; sourceTree = ""; }; @@ -1769,9 +1685,7 @@ D05174AA1EAA5B4700A1BF36 /* WallpaperGalleryToolbarNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryToolbarNode.swift; sourceTree = ""; }; D05174BB1EAE156500A1BF36 /* PresentationResourcesItemList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationResourcesItemList.swift; sourceTree = ""; }; D05174BD1EAE161C00A1BF36 /* PresentationResourcesRootController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationResourcesRootController.swift; sourceTree = ""; }; - D05174BF1EAE3AD400A1BF36 /* DefaultDarkPresentationTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultDarkPresentationTheme.swift; sourceTree = ""; }; D05174C21EAE583800A1BF36 /* TelegramRootController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelegramRootController.swift; sourceTree = ""; }; - D05174C51EAE58FC00A1BF36 /* ComponentsThemes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComponentsThemes.swift; sourceTree = ""; }; D0528E551E65750600E2FEF5 /* SecretChatHandshakeStatusInputPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretChatHandshakeStatusInputPanelNode.swift; sourceTree = ""; }; D0528E571E65773300E2FEF5 /* DeleteChatInputPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeleteChatInputPanelNode.swift; sourceTree = ""; }; D0528E621E65BECA00E2FEF5 /* UserInfoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserInfoController.swift; sourceTree = ""; }; @@ -1788,7 +1702,6 @@ D05677521F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceNode.swift; sourceTree = ""; }; D0568AAC1DF198130022E7DA /* AudioWaveformNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AudioWaveformNode.swift; sourceTree = ""; }; D056CD6F1FF147B000880D28 /* IconButtonNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconButtonNode.swift; sourceTree = ""; }; - D056CD711FF1569800880D28 /* MusicPlaybackSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicPlaybackSettings.swift; sourceTree = ""; }; D056CD731FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalMusicAlbumArtResources.swift; sourceTree = ""; }; D056CD751FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSwipeToReplyRecognizer.swift; sourceTree = ""; }; D056CD771FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageSwipeToReplyNode.swift; sourceTree = ""; }; @@ -1801,8 +1714,6 @@ D0575AF91EA0FDA7006F2541 /* AvatarGalleryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AvatarGalleryController.swift; sourceTree = ""; }; D0575AFB1EA104A6006F2541 /* PeerAvatarImageGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerAvatarImageGalleryItem.swift; sourceTree = ""; }; D05811931DD5F9380057C769 /* AccountContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountContext.swift; sourceTree = ""; }; - D058E0CE1E8AD57300A442DE /* VideoPlayerProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoPlayerProxy.swift; sourceTree = ""; }; - D05A32DB1E6EFCC2002760B4 /* NumericFormat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumericFormat.swift; sourceTree = ""; }; D05A32DD1E6F0097002760B4 /* PrivacyAndSecurityController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivacyAndSecurityController.swift; sourceTree = ""; }; D05A32E91E6F143C002760B4 /* RecentSessionsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentSessionsController.swift; sourceTree = ""; }; D05A32EB1E6F1462002760B4 /* BlockedPeersController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlockedPeersController.swift; sourceTree = ""; }; @@ -1810,7 +1721,6 @@ D05B077121BFB9F600B1D27C /* FFMpeg.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = FFMpeg.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D05B077321BFC38600B1D27C /* FFMpeg.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = FFMpeg.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D05B724C1E720393000BD3AD /* SelectivePrivacySettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectivePrivacySettingsController.swift; sourceTree = ""; }; - D05B724F1E720597000BD3AD /* PresentationData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationData.swift; sourceTree = ""; }; D05BFB5E1EAA22F900909D38 /* PresentationResourceKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationResourceKey.swift; sourceTree = ""; }; D05D8B392192FC460064586F /* LocalizationListController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationListController.swift; sourceTree = ""; }; D05D8B3E2192FC6E0064586F /* LocalizationListControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationListControllerNode.swift; sourceTree = ""; }; @@ -1844,10 +1754,7 @@ D06E4C302134910400088087 /* ChatListEmptyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListEmptyNode.swift; sourceTree = ""; }; D06E4C322134A59700088087 /* ThemeAccentColorActionSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeAccentColorActionSheet.swift; sourceTree = ""; }; D06E4C342134AE3C00088087 /* ThemeAutoNightSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeAutoNightSettingsController.swift; sourceTree = ""; }; - D06ECFCA20B8448E00C576C2 /* ContactSynchronizationSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactSynchronizationSettings.swift; sourceTree = ""; }; D06F1EA31F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatHistorySearchContainerNode.swift; sourceTree = ""; }; - D06F31DF2135829A001A0F12 /* EDSunriseSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EDSunriseSet.m; sourceTree = ""; }; - D06F31E02135829A001A0F12 /* EDSunriseSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EDSunriseSet.h; sourceTree = ""; }; D06F31E3213597FF001A0F12 /* ThemeAutoNightTimeSelectionActionSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeAutoNightTimeSelectionActionSheet.swift; sourceTree = ""; }; D06F31E52135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeSettingsBrightnessItem.swift; sourceTree = ""; }; D06FFBA71EAFAC4F00CB53D4 /* PresentationThemeEssentialGraphics.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationThemeEssentialGraphics.swift; sourceTree = ""; }; @@ -1859,7 +1766,14 @@ D073CE621DCBBE5D007511FD /* MessageSent.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = MessageSent.caf; path = TelegramUI/Sounds/MessageSent.caf; sourceTree = ""; }; D073CE641DCBC26B007511FD /* ServiceSoundManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceSoundManager.swift; sourceTree = ""; }; D073CE701DCBF23F007511FD /* DeclareEncodables.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeclareEncodables.swift; sourceTree = ""; }; - D073D2DA1FB61DA9009E1DA2 /* CallListSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallListSettings.swift; sourceTree = ""; }; + D0750C7722B2A13300BE5F6E /* UniversalMediaPlayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UniversalMediaPlayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0750C7922B2A14300BE5F6E /* DeviceAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeviceAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0750C7B22B2A14300BE5F6E /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0750C7D22B2A14300BE5F6E /* TelegramVoip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramVoip.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0750C8022B2E4EE00BE5F6E /* SharedWakeupManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedWakeupManager.swift; sourceTree = ""; }; + D0750C8122B2E4EE00BE5F6E /* SharedNotificationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedNotificationManager.swift; sourceTree = ""; }; + D0750C8422B2E52300BE5F6E /* ClearNotificationsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClearNotificationsManager.swift; sourceTree = ""; }; + D0750C8622B2E76300BE5F6E /* ShareExtensionContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareExtensionContext.swift; sourceTree = ""; }; D0754D1D1EEDDF6200884F6E /* ChatMessageAttachedContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageAttachedContentNode.swift; sourceTree = ""; }; D0754D1F1EEDEBA000884F6E /* ChatMessageGameBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageGameBubbleContentNode.swift; sourceTree = ""; }; D0754D211EEDF89900884F6E /* ChatMessageInvoiceBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageInvoiceBubbleContentNode.swift; sourceTree = ""; }; @@ -1871,6 +1785,7 @@ D07551901DDA4FC70073E051 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; D07551921DDA540F0073E051 /* TelegramInitializeLegacyComponents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelegramInitializeLegacyComponents.swift; sourceTree = ""; }; D0760B231E9D015D00F1F3C4 /* PasscodeOptionsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeOptionsController.swift; sourceTree = ""; }; + D077C5C022B59A800097D617 /* ApplicationContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplicationContext.swift; sourceTree = ""; }; D07827BC1E004A3400071108 /* ChatListSearchItemHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListSearchItemHeader.swift; sourceTree = ""; }; D07827C61E01CD5900071108 /* VerticalListContextResultsChatInputPanelButtonItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerticalListContextResultsChatInputPanelButtonItem.swift; sourceTree = ""; }; D079FCD81F05A5550038FADE /* BotCheckoutPasswordEntryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BotCheckoutPasswordEntryController.swift; sourceTree = ""; }; @@ -1901,7 +1816,6 @@ D08774F71E3DE7BF00A97350 /* ItemListEditableDeleteControlNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListEditableDeleteControlNode.swift; sourceTree = ""; }; D08774F91E3E2A5600A97350 /* ItemListCheckboxItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListCheckboxItem.swift; sourceTree = ""; }; D08775081E3E59DE00A97350 /* PeerNotificationSoundStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerNotificationSoundStrings.swift; sourceTree = ""; }; - D087750B1E3E7B7600A97350 /* PostboxKeys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostboxKeys.swift; sourceTree = ""; }; D087750F1E3F46A400A97350 /* ComposeController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComposeController.swift; sourceTree = ""; }; D08775111E3F46AB00A97350 /* ComposeControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComposeControllerNode.swift; sourceTree = ""; }; D08775131E3F4A7700A97350 /* ContactListNameIndexHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactListNameIndexHeader.swift; sourceTree = ""; }; @@ -1915,8 +1829,6 @@ D087BFB21F748752003FD209 /* ShareControllerRecentPeersGridItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareControllerRecentPeersGridItem.swift; sourceTree = ""; }; D08984ED2114964700918162 /* GroupPreHistorySetupController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupPreHistorySetupController.swift; sourceTree = ""; }; D08984EF2114AE0C00918162 /* DataPrivacySettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataPrivacySettingsController.swift; sourceTree = ""; }; - D089F7891F4E0C14000E934D /* InstantPagePresentationSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPagePresentationSettings.swift; sourceTree = ""; }; - D08A10BA211DF7A80077488B /* StickerSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerSettings.swift; sourceTree = ""; }; D08BDF631FA37BEA009D08E1 /* ChatRecordingPreviewInputPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRecordingPreviewInputPanelNode.swift; sourceTree = ""; }; D08BDF651FA8CB10009D08E1 /* EditSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditSettingsController.swift; sourceTree = ""; }; D08C367E1DB66A820064C744 /* ChatMediaInputPanelEntries.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPanelEntries.swift; sourceTree = ""; }; @@ -1928,10 +1840,8 @@ D08D452C1D5E340300A7428A /* SwiftSignalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftSignalKit.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphonesimulator/SwiftSignalKit.framework"; sourceTree = ""; }; D08D452D1D5E340300A7428A /* TelegramCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TelegramCore.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphonesimulator/TelegramCore.framework"; sourceTree = ""; }; D08D7E78209FA2930005D80C /* SecureIdValues.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureIdValues.swift; sourceTree = ""; }; - D08D7E8320A0F6020005D80C /* ExperimentalUISettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExperimentalUISettings.swift; sourceTree = ""; }; D091C7A31F8EBB1E00D7DE13 /* ChatPresentationData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatPresentationData.swift; sourceTree = ""; }; D091C7A51F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsThemeWallpaperNode.swift; sourceTree = ""; }; - D09250031FE5363D003F693F /* ExperimentalSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExperimentalSettings.swift; sourceTree = ""; }; D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalExperimentalSettings.swift; sourceTree = ""; }; D09394122007F5BB00997F31 /* LocationBroadcastNavigationAccessoryPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationBroadcastNavigationAccessoryPanel.swift; sourceTree = ""; }; D093D7D82062A9CA00BC3599 /* SecureIdAuthControllerState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureIdAuthControllerState.swift; sourceTree = ""; }; @@ -1952,9 +1862,6 @@ D0943B041FDDFDA0001522CC /* OverlayInstantVideoNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayInstantVideoNode.swift; sourceTree = ""; }; D0943B061FDEC528001522CC /* InstantVideoRadialStatusNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantVideoRadialStatusNode.swift; sourceTree = ""; }; D0955FB32191278C00F89427 /* PresentationStrings.mapping */ = {isa = PBXFileReference; lastKnownFileType = file; name = PresentationStrings.mapping; path = TelegramUI/Resources/PresentationStrings.mapping; sourceTree = ""; }; - D096A4611EA681A90000A7AE /* PresentationsResourceCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationsResourceCache.swift; sourceTree = ""; }; - D096A4631EA683C90000A7AE /* PresentationTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationTheme.swift; sourceTree = ""; }; - D096A47A1EA6A2F00000A7AE /* PresentationStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationStrings.swift; sourceTree = ""; }; D097C26720DD0A1D007BB4B8 /* PeerReportController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerReportController.swift; sourceTree = ""; }; D097C26B20DD1EA5007BB4B8 /* OverlayStatusController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayStatusController.swift; sourceTree = ""; }; D099261E1E69791E00D95539 /* GroupsInCommonController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupsInCommonController.swift; sourceTree = ""; }; @@ -1979,7 +1886,6 @@ D0A11BF91E7836C20081CE03 /* ChangePhoneNumberIntroController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberIntroController.swift; sourceTree = ""; }; D0A11BFB1E7840750081CE03 /* ChangePhoneNumberController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberController.swift; sourceTree = ""; }; D0A11BFD1E7840A50081CE03 /* ChangePhoneNumberControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberControllerNode.swift; sourceTree = ""; }; - D0A24D271F92C27100584D24 /* DefaultDarkAccentPresentationTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultDarkAccentPresentationTheme.swift; sourceTree = ""; }; D0A723531FC3B40E0094D167 /* RadialCheckContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadialCheckContentNode.swift; sourceTree = ""; }; D0A749961E3AA25200AD786E /* NotificationSoundSelection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationSoundSelection.swift; sourceTree = ""; }; D0A8998C217A294100759EE6 /* SaveIncomingMediaController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SaveIncomingMediaController.swift; sourceTree = ""; }; @@ -2003,6 +1909,15 @@ D0AD02E91FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageLiveLocationTextNode.swift; sourceTree = ""; }; D0AD02EB20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageLiveLocationPositionNode.swift; sourceTree = ""; }; D0ADF965212E05A300310BBC /* TonePlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TonePlayer.swift; sourceTree = ""; }; + D0AE2FDC22B1D3610058D3BC /* TGBridgeAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeAudioEncoder.m; sourceTree = ""; }; + D0AE2FDD22B1D3610058D3BC /* TGBridgeAudioDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeAudioDecoder.h; sourceTree = ""; }; + D0AE2FDE22B1D3610058D3BC /* TGBridgeAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeAudioEncoder.h; sourceTree = ""; }; + D0AE2FDF22B1D3610058D3BC /* TGBridgeAudioDecoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TGBridgeAudioDecoder.mm; sourceTree = ""; }; + D0AE2FE022B1D3610058D3BC /* LegacyBridgeAudio.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyBridgeAudio.swift; sourceTree = ""; }; + D0AE30CE22B1D9980058D3BC /* RMIntro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = RMIntro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE30EA22B1DBD10058D3BC /* GZip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GZip.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE311122B1DD4D0058D3BC /* TelegramCallsUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCallsUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE315322B1DEE30058D3BC /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0AEAE242080D6830013176E /* PaneSearchContainerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaneSearchContainerNode.swift; sourceTree = ""; }; D0AEAE262080D6970013176E /* PaneSearchBarNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaneSearchBarNode.swift; sourceTree = ""; }; D0AEAE282080FD660013176E /* StickerPaneSearchGlobaltem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerPaneSearchGlobaltem.swift; sourceTree = ""; }; @@ -2014,7 +1929,6 @@ D0B21B16220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarAccountSwitchControllerNode.swift; sourceTree = ""; }; D0B21B1E22156D92003F741D /* LegacyCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyCache.swift; sourceTree = ""; }; D0B21B202215B539003F741D /* LogoutOptionsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogoutOptionsController.swift; sourceTree = ""; }; - D0B2F76120506E2A00D3BFB9 /* MediaInputSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaInputSettings.swift; sourceTree = ""; }; D0B2F76720528E3D00D3BFB9 /* UserInfoEditingPhoneActionItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInfoEditingPhoneActionItem.swift; sourceTree = ""; }; D0B2F7692052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInfoEditingPhoneItem.swift; sourceTree = ""; }; D0B2F76B2052A7D600D3BFB9 /* SinglePhoneInputNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SinglePhoneInputNode.swift; sourceTree = ""; }; @@ -2027,9 +1941,7 @@ D0B3AC7F2142E2E900CD1374 /* ResetPasswordController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResetPasswordController.swift; sourceTree = ""; }; D0B417C21D7DE54E004562A4 /* ChatPresentationInterfaceState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatPresentationInterfaceState.swift; sourceTree = ""; }; D0B4AF871EC112ED00D51FF6 /* CallKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CallKit.framework; path = System/Library/Frameworks/CallKit.framework; sourceTree = SDKROOT; }; - D0B4AF8A1EC1133600D51FF6 /* CallKitIntergation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallKitIntergation.swift; sourceTree = ""; }; D0B69C3820EBB397003632C7 /* ChatMessageInteractiveInstantVideoNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageInteractiveInstantVideoNode.swift; sourceTree = ""; }; - D0B69C3B20EBD8C8003632C7 /* CheckDeviceAccess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckDeviceAccess.swift; sourceTree = ""; }; D0B7F8E11D8A18070045D939 /* PeerMediaCollectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMediaCollectionController.swift; sourceTree = ""; }; D0B7F8E71D8A1F5F0045D939 /* PeerMediaCollectionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMediaCollectionControllerNode.swift; sourceTree = ""; }; D0B843911DA7F13E005F29E1 /* ItemListDisclosureItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListDisclosureItem.swift; sourceTree = ""; }; @@ -2105,12 +2017,10 @@ D0CE6F6F213EEE5000BCD44B /* CreatePasswordController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreatePasswordController.swift; sourceTree = ""; }; D0CE8CE41F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextInputAccessoryItem.swift; sourceTree = ""; }; D0CE8CE61F6F35A300AA2DB0 /* ChatTextInputPanelState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextInputPanelState.swift; sourceTree = ""; }; - D0CE8CEB1F6FCCA300AA2DB0 /* TransformImageArguments.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransformImageArguments.swift; sourceTree = ""; }; D0CFBB851FD715E700B65C0D /* LegacyHTTPOperationImpl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyHTTPOperationImpl.swift; sourceTree = ""; }; D0CFBB901FD881A600B65C0D /* AudioRecordningToneData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioRecordningToneData.swift; sourceTree = ""; }; D0CFBB941FD8B05000B65C0D /* OverlayInstantVideoDecoration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayInstantVideoDecoration.swift; sourceTree = ""; }; D0CFBB961FD8B0F700B65C0D /* ChatBubbleInstantVideoDecoration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatBubbleInstantVideoDecoration.swift; sourceTree = ""; }; - D0D03AE21DECACB700220C46 /* ManagedAudioSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagedAudioSession.swift; sourceTree = ""; }; D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagedAudioRecorder.swift; sourceTree = ""; }; D0D03AE81DECB0FE00220C46 /* diag_range.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = diag_range.c; sourceTree = ""; }; D0D03AE91DECB0FE00220C46 /* diag_range.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = diag_range.h; sourceTree = ""; }; @@ -2207,7 +2117,6 @@ D0E8175620122DAD00B82BBB /* ChatRecentActionsSearchNavigationContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRecentActionsSearchNavigationContentNode.swift; sourceTree = ""; }; D0E8175820122FE100B82BBB /* ChatRecentActionsFilterController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRecentActionsFilterController.swift; sourceTree = ""; }; D0E8175A201254FA00B82BBB /* ChatRecentActionsEmptyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRecentActionsEmptyNode.swift; sourceTree = ""; }; - D0E8B8A62044339500605593 /* PresentationCallToneData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PresentationCallToneData.swift; sourceTree = ""; }; D0E8B8B8204477B600605593 /* SecretChatKeyVisualization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecretChatKeyVisualization.swift; sourceTree = ""; }; D0E8B8BA2044780600605593 /* ItemListSecretChatKeyItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListSecretChatKeyItem.swift; sourceTree = ""; }; D0E8B8BC204479A500605593 /* SecretChatKeyController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecretChatKeyController.swift; sourceTree = ""; }; @@ -2327,9 +2236,6 @@ D0E9BADB1F0574D800F079A4 /* STPBankAccountParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPBankAccountParams.m; sourceTree = ""; }; D0E9BAE51F0574FF00F079A4 /* STPCustomer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STPCustomer.h; sourceTree = ""; }; D0E9BAE61F0574FF00F079A4 /* STPCustomer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPCustomer.m; sourceTree = ""; }; - D0EAE09F1EB21256005296C1 /* StringPluralization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringPluralization.swift; sourceTree = ""; }; - D0EAE0A11EB212DE005296C1 /* NumberPluralizationForm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberPluralizationForm.h; sourceTree = ""; }; - D0EAE0A21EB212DE005296C1 /* NumberPluralizationForm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NumberPluralizationForm.m; sourceTree = ""; }; D0EB41F21F2FEAB800838FE6 /* LegacyComponentsStickers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyComponentsStickers.swift; sourceTree = ""; }; D0EB41F41F30D26A00838FE6 /* LegacySuggestionContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacySuggestionContext.swift; sourceTree = ""; }; D0EB41F61F30D4A800838FE6 /* LegacyMediaLocations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyMediaLocations.swift; sourceTree = ""; }; @@ -2344,7 +2250,6 @@ D0EC6B371EB88D1600EBF1C3 /* ThemeGridControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridControllerNode.swift; sourceTree = ""; }; D0EC6B3A1EB8CF2B00EBF1C3 /* CallController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallController.swift; sourceTree = ""; }; D0EC6B3C1EB8CF3500EBF1C3 /* CallControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerNode.swift; sourceTree = ""; }; - D0EC6B3E1EB8F3E500EBF1C3 /* PresentationCallManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationCallManager.swift; sourceTree = ""; }; D0EC6B401EB8F7D700EBF1C3 /* VoipDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VoipDynamic.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphonesimulator/VoipDynamic.framework"; sourceTree = ""; }; D0EC6B421EB92DF600EBF1C3 /* OverlayMediaController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayMediaController.swift; sourceTree = ""; }; D0EC6B441EB92E5A00EBF1C3 /* OverlayMediaControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayMediaControllerNode.swift; sourceTree = ""; }; @@ -2352,8 +2257,6 @@ D0EC6E941EB9F5B300EBF1C3 /* MtProtoKitDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MtProtoKitDynamic.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphonesimulator/MtProtoKitDynamic.framework"; sourceTree = ""; }; D0EC6E951EB9F5B300EBF1C3 /* TelegramLegacyComponents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TelegramLegacyComponents.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphonesimulator/TelegramLegacyComponents.framework"; sourceTree = ""; }; D0EC6EBC1EBA100F00EBF1C3 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; - D0EC6FFA1EBA1DE900EBF1C3 /* OngoingCallThreadLocalContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OngoingCallThreadLocalContext.h; sourceTree = ""; }; - D0EC6FFC1EBA1F2400EBF1C3 /* OngoingCallThreadLocalContext.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = OngoingCallThreadLocalContext.mm; sourceTree = ""; }; D0EE97191D88BCA0006C18E1 /* ChatInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInfo.swift; sourceTree = ""; }; D0EEE9A02165585F001292A6 /* DocumentPreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPreviewController.swift; sourceTree = ""; }; D0EF40DC1E72F00E000DFCD4 /* SelectivePrivacySettingsPeersController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectivePrivacySettingsPeersController.swift; sourceTree = ""; }; @@ -2362,13 +2265,11 @@ D0F02CCB1E96EF350065DEE2 /* ChatMediaInputStickerPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputStickerPane.swift; sourceTree = ""; }; D0F02CCD1E96FACE0065DEE2 /* ChatMediaInputGifPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputGifPane.swift; sourceTree = ""; }; D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentGifManagedMediaId.swift; sourceTree = ""; }; - D0F0AADF1EC1E12C005EE2A5 /* PresentationCall.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationCall.swift; sourceTree = ""; }; D0F0AAE11EC20EF8005EE2A5 /* CallControllerStatusNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerStatusNode.swift; sourceTree = ""; }; D0F0AAE31EC21AAA005EE2A5 /* CallControllerButtonsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerButtonsNode.swift; sourceTree = ""; }; D0F0AAE51EC21B68005EE2A5 /* CallControllerButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerButton.swift; sourceTree = ""; }; D0F19F6120E5694D00EEC860 /* GroupStickerPackCurrentItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupStickerPackCurrentItem.swift; sourceTree = ""; }; D0F19F6320E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPeerSpecificItem.swift; sourceTree = ""; }; - D0F339362269D83500CFF53F /* ChatArchiveSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatArchiveSettings.swift; sourceTree = ""; }; D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelegramAccountAuxiliaryMethods.swift; sourceTree = ""; }; D0F3A8B51E83120A00B4C64C /* FetchResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchResource.swift; sourceTree = ""; }; D0F3A8B71E83125C00B4C64C /* MediaResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaResources.swift; sourceTree = ""; }; @@ -2382,30 +2283,13 @@ D0F67FF11EE6B915000E5906 /* ChannelMembersSearchControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelMembersSearchControllerNode.swift; sourceTree = ""; }; D0F67FF31EE6C10F000E5906 /* ChannelMembersSearchContainerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelMembersSearchContainerNode.swift; sourceTree = ""; }; D0F680091EE750EE000E5906 /* ChannelBannedMemberController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelBannedMemberController.swift; sourceTree = ""; }; - D0F69CD31D6B87D30046BCD6 /* FFMpegMediaFrameSourceContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaFrameSourceContext.swift; sourceTree = ""; }; - D0F69CD41D6B87D30046BCD6 /* MediaPlayerAudioRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayerAudioRenderer.swift; sourceTree = ""; }; D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaManager.swift; sourceTree = ""; }; - D0F69CD71D6B87D30046BCD6 /* FFMpegAudioFrameDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegAudioFrameDecoder.swift; sourceTree = ""; }; - D0F69CDC1D6B87D30046BCD6 /* MediaPlayerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayerNode.swift; sourceTree = ""; }; D0F69CDE1D6B87D30046BCD6 /* PeerAvatar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerAvatar.swift; sourceTree = ""; }; - D0F69CE11D6B87D30046BCD6 /* FFMpegMediaFrameSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaFrameSource.swift; sourceTree = ""; }; - D0F69CE51D6B87D30046BCD6 /* MediaFrameSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaFrameSource.swift; sourceTree = ""; }; D0F69CFB1D6B87D30046BCD6 /* TouchDownGestureRecognizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TouchDownGestureRecognizer.swift; sourceTree = ""; }; - D0F69D021D6B87D30046BCD6 /* MediaPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlayer.swift; sourceTree = ""; }; - D0F69D161D6B87D30046BCD6 /* FFMpegMediaFrameSourceContextHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaFrameSourceContextHelpers.swift; sourceTree = ""; }; - D0F69D1D1D6B87D30046BCD6 /* MediaTrackDecodableFrame.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTrackDecodableFrame.swift; sourceTree = ""; }; - D0F69D6F1D6B87DE0046BCD6 /* FFMpegMediaPassthroughVideoFrameDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaPassthroughVideoFrameDecoder.swift; sourceTree = ""; }; - D0F69D701D6B87DE0046BCD6 /* MediaTrackFrameBuffer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTrackFrameBuffer.swift; sourceTree = ""; }; - D0F69D711D6B87DE0046BCD6 /* MediaTrackFrame.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTrackFrame.swift; sourceTree = ""; }; - D0F69D7F1D6B87EC0046BCD6 /* MediaPlaybackData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPlaybackData.swift; sourceTree = ""; }; - D0F69D871D6B87EC0046BCD6 /* FFMpegMediaVideoFrameDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FFMpegMediaVideoFrameDecoder.swift; sourceTree = ""; }; - D0F69D881D6B87EC0046BCD6 /* MediaTrackFrameDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTrackFrameDecoder.swift; sourceTree = ""; }; D0F69DB91D6B88190046BCD6 /* TelegramUI.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TelegramUI.xcconfig; path = TelegramUI/Config/TelegramUI.xcconfig; sourceTree = ""; }; D0F69DC01D6B89D30046BCD6 /* ListSectionHeaderNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListSectionHeaderNode.swift; sourceTree = ""; }; D0F69DC21D6B89DA0046BCD6 /* TextNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextNode.swift; sourceTree = ""; }; D0F69DC41D6B89E10046BCD6 /* RadialProgressNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadialProgressNode.swift; sourceTree = ""; }; - D0F69DC61D6B89E70046BCD6 /* TransformImageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransformImageNode.swift; sourceTree = ""; }; - D0F69DC81D6B89EB0046BCD6 /* ImageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageNode.swift; sourceTree = ""; }; D0F69DCB1D6B8A0D0046BCD6 /* SearchBarNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchBarNode.swift; sourceTree = ""; }; D0F69DCC1D6B8A0D0046BCD6 /* SearchBarPlaceholderNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchBarPlaceholderNode.swift; sourceTree = ""; }; D0F69DCD1D6B8A0D0046BCD6 /* SearchDisplayController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchDisplayController.swift; sourceTree = ""; }; @@ -2463,14 +2347,10 @@ D0F69E7F1D6B8C850046BCD6 /* FastBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastBlur.h; sourceTree = ""; }; D0F69E801D6B8C850046BCD6 /* FastBlur.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FastBlur.m; sourceTree = ""; }; D0F69E831D6B8C850046BCD6 /* FrameworkBundle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; - D0F69E851D6B8C850046BCD6 /* RingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RingBuffer.h; sourceTree = ""; }; - D0F69E861D6B8C850046BCD6 /* RingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RingBuffer.m; sourceTree = ""; }; - D0F69E871D6B8C850046BCD6 /* RingByteBuffer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RingByteBuffer.swift; sourceTree = ""; }; D0F69E931D6B8C9B0046BCD6 /* ProgressiveImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProgressiveImage.swift; sourceTree = ""; }; D0F69E941D6B8C9B0046BCD6 /* WebP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebP.swift; sourceTree = ""; }; D0F69E9F1D6B8E380046BCD6 /* PhotoResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoResources.swift; sourceTree = ""; }; D0F69EA01D6B8E380046BCD6 /* StickerResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerResources.swift; sourceTree = ""; }; - D0F69EA51D6B8F3E0046BCD6 /* TelegramUIIncludes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramUIIncludes.h; sourceTree = ""; }; D0F69EA61D6B9BBC0046BCD6 /* libwebp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libwebp.a; path = "third-party/libwebp/lib/libwebp.a"; sourceTree = ""; }; D0F69EA81D6B9BCB0046BCD6 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "third-party/FFmpeg-iOS/lib/libavcodec.a"; sourceTree = ""; }; D0F69EA91D6B9BCB0046BCD6 /* libavformat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavformat.a; path = "third-party/FFmpeg-iOS/lib/libavformat.a"; sourceTree = ""; }; @@ -2511,6 +2391,16 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D00818CD22B595CB008A895F /* LightweightAccountData.framework in Frameworks */, + D008184A22B57225008A895F /* WatchCommon.framework in Frameworks */, + D0750C7A22B2A14300BE5F6E /* DeviceAccess.framework in Frameworks */, + D0750C7C22B2A14300BE5F6E /* TelegramPresentationData.framework in Frameworks */, + D0750C7E22B2A14300BE5F6E /* TelegramVoip.framework in Frameworks */, + D0750C7822B2A13300BE5F6E /* UniversalMediaPlayer.framework in Frameworks */, + D0AE315422B1DEE30058D3BC /* TelegramUIPreferences.framework in Frameworks */, + D0AE311222B1DD4D0058D3BC /* TelegramCallsUI.framework in Frameworks */, + D0AE30EB22B1DBD10058D3BC /* GZip.framework in Frameworks */, + D0AE30CF22B1D9980058D3BC /* RMIntro.framework in Frameworks */, D015E04F225D2E5900CB9E8A /* WebP.framework in Frameworks */, D05B077421BFC38600B1D27C /* FFMpeg.framework in Frameworks */, 091BEAB3214552D9003AEA30 /* Vision.framework in Frameworks */, @@ -2637,18 +2527,6 @@ name = "Web Search"; sourceTree = ""; }; - 0965C7152178738A007C94D0 /* Bridge Audio */ = { - isa = PBXGroup; - children = ( - 096C98BD21787C6700C211FF /* TGBridgeAudioDecoder.h */, - 096C98BE21787C6700C211FF /* TGBridgeAudioDecoder.mm */, - 096C98BC21787C6600C211FF /* TGBridgeAudioEncoder.h */, - 096C98BB21787C6600C211FF /* TGBridgeAudioEncoder.m */, - 096C98B921787A5C00C211FF /* LegacyBridgeAudio.swift */, - ); - name = "Bridge Audio"; - sourceTree = ""; - }; 0979787F21065EAA0077D77F /* Web Embed */ = { isa = PBXGroup; children = ( @@ -2773,7 +2651,6 @@ 09E4A7FE223ADFD80038140F /* Data */ = { isa = PBXGroup; children = ( - D087750B1E3E7B7600A97350 /* PostboxKeys.swift */, D079FCE81F06A76C0038FADE /* Notices.swift */, D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */, D0CAD8FC20AE467D00ACD96E /* PeerChannelMemberCategoriesContextsManager.swift */, @@ -2823,6 +2700,55 @@ name = "Undo Overlay"; sourceTree = ""; }; + D008178022B47450008A895F /* Notification Content */ = { + isa = PBXGroup; + children = ( + D008178122B47464008A895F /* NotificationContentContext.swift */, + ); + name = "Notification Content"; + sourceTree = ""; + }; + D008179822B478FE008A895F /* App */ = { + isa = PBXGroup; + children = ( + D077C5C022B59A800097D617 /* ApplicationContext.swift */, + D00817E422B47A2E008A895F /* Legacy Data Import */, + D00817BF22B47A13008A895F /* AppDelegate.swift */, + D00817BB22B47A13008A895F /* ApplicationShortcutItem.swift */, + D00817C322B47A13008A895F /* LockedWindowCoveringView.swift */, + D00817C222B47A13008A895F /* ManageSharedAccountInfo.swift */, + D00817BD22B47A13008A895F /* TGBridgeServer.h */, + D00817C422B47A13008A895F /* TGBridgeServer.m */, + D00817C622B47A13008A895F /* UIImage+ImageEffects.h */, + D00817C822B47A14008A895F /* UIImage+ImageEffects.m */, + D00817B622B47A12008A895F /* WakeupManager.swift */, + D00817B122B47A12008A895F /* WatchBridge.swift */, + D00817B222B47A12008A895F /* WatchCommunicationManager.swift */, + D00817B022B47A12008A895F /* WatchRequestHandlers.swift */, + ); + name = App; + sourceTree = ""; + }; + D00817E422B47A2E008A895F /* Legacy Data Import */ = { + isa = PBXGroup; + children = ( + D00817C122B47A13008A895F /* LegacyChatImport.swift */, + D00817B722B47A12008A895F /* LegacyDataImport.swift */, + D00817C522B47A13008A895F /* LegacyDataImportSplash.swift */, + D00817B522B47A12008A895F /* LegacyFileImport.swift */, + D00817B822B47A12008A895F /* LegacyPreferencesImport.swift */, + D00817B922B47A12008A895F /* LegacyResourceImport.swift */, + D00817BA22B47A12008A895F /* LegacyUserDataImport.swift */, + D00817B322B47A12008A895F /* TGAutoDownloadPreferences.h */, + D00817BE22B47A13008A895F /* TGAutoDownloadPreferences.m */, + D00817C022B47A13008A895F /* TGPresentationAutoNightPreferences.h */, + D00817C922B47A14008A895F /* TGPresentationAutoNightPreferences.m */, + D00817B422B47A12008A895F /* TGProxyItem.h */, + D00817BC22B47A13008A895F /* TGProxyItem.m */, + ); + name = "Legacy Data Import"; + sourceTree = ""; + }; D00C7CDA1E3776CA0080C3D5 /* Secret Preview */ = { isa = PBXGroup; children = ( @@ -2846,6 +2772,14 @@ D087BFAE1F741BB7003FD209 /* ShareLoadingContainerNode.swift */, D00BED211F73F82400922292 /* SharePeersContainerNode.swift */, D00BED1F1F73F60F00922292 /* ShareSearchContainerNode.swift */, + D0750C8622B2E76300BE5F6E /* ShareExtensionContext.swift */, + D008177222B46B7D008A895F /* ShareItems.swift */, + D008177422B46B7E008A895F /* TGContactModel.h */, + D008177622B46B7E008A895F /* TGContactModel.m */, + D008177522B46B7E008A895F /* TGItemProviderSignals.h */, + D008177722B46B7E008A895F /* TGItemProviderSignals.m */, + D008177322B46B7E008A895F /* TGShareLocationSignals.h */, + D008177822B46B7E008A895F /* TGShareLocationSignals.m */, ); name = Share; sourceTree = ""; @@ -2888,7 +2822,6 @@ children = ( D00781042084DFB100369A39 /* UrlEscaping.swift */, D0B844551DAC3AEE005F29E1 /* PresenceStrings.swift */, - D05A32DB1E6EFCC2002760B4 /* NumericFormat.swift */, D0C26D5D1FDF49E7004ABF18 /* DateFormat.swift */, D0BCC3D1203F0A6C008126C2 /* StringForMessageTimestampStatus.swift */, D00ACA592022897D0045D427 /* ProcessedPeerRestrictionText.swift */, @@ -3031,6 +2964,9 @@ D02B198821F1DA8A0094A764 /* Account Management */ = { isa = PBXGroup; children = ( + D0750C8422B2E52300BE5F6E /* ClearNotificationsManager.swift */, + D0750C8122B2E4EE00BE5F6E /* SharedNotificationManager.swift */, + D0750C8022B2E4EE00BE5F6E /* SharedWakeupManager.swift */, D02B198921F1DA9E0094A764 /* SharedAccountContext.swift */, D05811931DD5F9380057C769 /* AccountContext.swift */, D017734B22049BF800DA06A7 /* UpgradedAccounts.swift */, @@ -3150,8 +3086,6 @@ D04614352005093B00EC0EF2 /* Location */ = { isa = PBXGroup; children = ( - D06F31E02135829A001A0F12 /* EDSunriseSet.h */, - D06F31DF2135829A001A0F12 /* EDSunriseSet.m */, D04614362005094E00EC0EF2 /* DeviceLocationManager.swift */, D046142D2004DB3700EC0EF2 /* LiveLocationManager.swift */, D0461438200514F000EC0EF2 /* LiveLocationSummaryManager.swift */, @@ -3245,130 +3179,6 @@ name = "Password Entry"; sourceTree = ""; }; - D04BB2C61E48797500650E93 /* RMIntro */ = { - isa = PBXGroup; - children = ( - D04BB2C71E48797500650E93 /* 3rdparty */, - D04BB2CB1E48797500650E93 /* core */, - D04BB2DE1E48797500650E93 /* platform */, - ); - name = RMIntro; - path = "third-party/RMIntro"; - sourceTree = SOURCE_ROOT; - }; - D04BB2C71E48797500650E93 /* 3rdparty */ = { - isa = PBXGroup; - children = ( - D04BB2C91E48797500650E93 /* linmath */, - ); - path = 3rdparty; - sourceTree = ""; - }; - D04BB2C91E48797500650E93 /* linmath */ = { - isa = PBXGroup; - children = ( - D04BB2CA1E48797500650E93 /* linmath.h */, - ); - path = linmath; - sourceTree = ""; - }; - D04BB2CB1E48797500650E93 /* core */ = { - isa = PBXGroup; - children = ( - D04BB2CC1E48797500650E93 /* animations.c */, - D04BB2CD1E48797500650E93 /* animations.h */, - D04BB2CE1E48797500650E93 /* buffer.c */, - D04BB2CF1E48797500650E93 /* buffer.h */, - D04BB2D11E48797500650E93 /* macros.h */, - D04BB2D21E48797500650E93 /* math_helper.h */, - D04BB2D31E48797500650E93 /* matrix.h */, - D04BB2D41E48797500650E93 /* objects.c */, - D04BB2D51E48797500650E93 /* objects.h */, - D04BB2D61E48797500650E93 /* program.c */, - D04BB2D71E48797500650E93 /* program.h */, - D04BB2D81E48797500650E93 /* rngs.c */, - D04BB2D91E48797500650E93 /* rngs.h */, - D04BB2DA1E48797500650E93 /* shader.c */, - D04BB2DB1E48797500650E93 /* shader.h */, - D04BB2DC1E48797500650E93 /* timing.c */, - D04BB2DD1E48797500650E93 /* timing.h */, - ); - path = core; - sourceTree = ""; - }; - D04BB2DE1E48797500650E93 /* platform */ = { - isa = PBXGroup; - children = ( - D04BB2DF1E48797500650E93 /* common */, - D04BB2E31E48797500650E93 /* ios */, - ); - path = platform; - sourceTree = ""; - }; - D04BB2DF1E48797500650E93 /* common */ = { - isa = PBXGroup; - children = ( - D04BB2E01E48797500650E93 /* platform_log.c */, - D04BB2E11E48797500650E93 /* platform_log.h */, - D04BB2E21E48797500650E93 /* platform_macros.h */, - ); - path = common; - sourceTree = ""; - }; - D04BB2E31E48797500650E93 /* ios */ = { - isa = PBXGroup; - children = ( - D04BB2FE1E48797500650E93 /* platform_gl.h */, - D04BB2FF1E48797500650E93 /* Resources */, - D04BB31C1E48797500650E93 /* RMGeometry.h */, - D04BB31D1E48797500650E93 /* RMGeometry.m */, - D04BB3201E48797500650E93 /* RMIntroPageView.h */, - D04BB3211E48797500650E93 /* RMIntroPageView.m */, - D04BB3221E48797500650E93 /* RMIntroViewController.h */, - D04BB3231E48797500650E93 /* RMIntroViewController.m */, - D04BB3241E48797500650E93 /* RMLoginViewController.h */, - D04BB3251E48797500650E93 /* RMLoginViewController.m */, - D04BB3261E48797500650E93 /* RMRootViewController.h */, - D04BB3271E48797500650E93 /* RMRootViewController.m */, - D04BB3281E48797500650E93 /* texture_helper.h */, - D04BB3291E48797500650E93 /* texture_helper.m */, - ); - path = ios; - sourceTree = ""; - }; - D04BB2FF1E48797500650E93 /* Resources */ = { - isa = PBXGroup; - children = ( - D04BB3001E48797500650E93 /* fast_arrow@2x.png */, - D04BB3011E48797500650E93 /* fast_arrow_shadow@2x.png */, - D04BB3021E48797500650E93 /* fast_body@2x.png */, - D04BB3031E48797500650E93 /* fast_spiral@2x.png */, - D04BB3041E48797500650E93 /* ic_bubble@2x.png */, - D04BB3051E48797500650E93 /* ic_bubble_dot@2x.png */, - D04BB3061E48797500650E93 /* ic_cam@2x.png */, - D04BB3071E48797500650E93 /* ic_cam_lens@2x.png */, - D04BB3081E48797500650E93 /* ic_pencil@2x.png */, - D04BB3091E48797500650E93 /* ic_pin@2x.png */, - D04BB30A1E48797500650E93 /* ic_smile@2x.png */, - D04BB30B1E48797500650E93 /* ic_smile_eye@2x.png */, - D04BB30C1E48797500650E93 /* ic_videocam@2x.png */, - D04BB30D1E48797500650E93 /* knot_down@2x.png */, - D04BB30E1E48797500650E93 /* knot_up@2x.png */, - D04BB30F1E48797500650E93 /* powerful_infinity@2x.png */, - D04BB3101E48797500650E93 /* powerful_infinity_white@2x.png */, - D04BB3111E48797500650E93 /* powerful_mask@2x.png */, - D04BB3121E48797500650E93 /* powerful_star@2x.png */, - D04BB3131E48797500650E93 /* private_door@2x.png */, - D04BB3141E48797500650E93 /* private_screw@2x.png */, - D04BB3151E48797500650E93 /* start_arrow@2x.png */, - D04BB3161E48797500650E93 /* start_arrow_ipad.png */, - D04BB3171E48797500650E93 /* start_arrow_ipad@2x.png */, - D04BB3181E48797500650E93 /* telegram_plane@2x.png */, - D04BB3191E48797500650E93 /* telegram_sphere@2x.png */, - ); - path = Resources; - sourceTree = ""; - }; D050F2141E48D9C200988324 /* Country Selection */ = { isa = PBXGroup; children = ( @@ -3387,14 +3197,6 @@ name = Root; sourceTree = ""; }; - D05174C41EAE58E900A1BF36 /* Utils */ = { - isa = PBXGroup; - children = ( - D05174C51EAE58FC00A1BF36 /* ComponentsThemes.swift */, - ); - name = Utils; - sourceTree = ""; - }; D0575AF81EA0FD94006F2541 /* Avatar Gallery */ = { isa = PBXGroup; children = ( @@ -3544,9 +3346,8 @@ D07551891DDA4C7C0073E051 /* Legacy Components */ = { isa = PBXGroup; children = ( - 0965C7152178738A007C94D0 /* Bridge Audio */, - D04BB2C61E48797500650E93 /* RMIntro */, D067B4AE211C916D00796039 /* Channel Intro */, + D0AE2FDB22B1D3610058D3BC /* Bridge Audio */, D075518A1DDA4D7D0073E051 /* LegacyController.swift */, D075518C1DDA4E0B0073E051 /* LegacyControllerNode.swift */, D07551921DDA540F0073E051 /* TelegramInitializeLegacyComponents.swift */, @@ -3672,33 +3473,6 @@ name = "Language Link Preview"; sourceTree = ""; }; - D087750A1E3E7A6D00A97350 /* Settings */ = { - isa = PBXGroup; - children = ( - D01B279E1E394BD70022A4C0 /* InAppNotificationSettings.swift */, - D01B27A31E394FC90022A4C0 /* PresentationPasscodeSettings.swift */, - D0223A8F1EA53E6000211D94 /* MediaAutoDownloadSettings.swift */, - 0935F8EE22197FBF0070AE70 /* LegacyAutomaticMediaDownloadSettings.swift */, - D0223A911EA5420C00211D94 /* GeneratedMediaStoreSettings.swift */, - D0223A931EA5442C00211D94 /* VoiceCallSettings.swift */, - D010C2C91EA7A59F00F41B96 /* PresentationThemeSettings.swift */, - D089F7891F4E0C14000E934D /* InstantPagePresentationSettings.swift */, - D073D2DA1FB61DA9009E1DA2 /* CallListSettings.swift */, - D09250031FE5363D003F693F /* ExperimentalSettings.swift */, - D056CD711FF1569800880D28 /* MusicPlaybackSettings.swift */, - D0B2F76120506E2A00D3BFB9 /* MediaInputSettings.swift */, - D08D7E8320A0F6020005D80C /* ExperimentalUISettings.swift */, - D048B33A203C777500038D05 /* RenderedTotalUnreadCount.swift */, - D06ECFCA20B8448E00C576C2 /* ContactSynchronizationSettings.swift */, - D08A10BA211DF7A80077488B /* StickerSettings.swift */, - 0952D1762177FB5400194860 /* WatchPresetSettings.swift */, - 0962E67C21BA048D00245FD9 /* WebSearchSettings.swift */, - D005808A21CAB8F000CB7CD3 /* VoipDerivedState.swift */, - D0F339362269D83500CFF53F /* ChatArchiveSettings.swift */, - ); - name = Settings; - sourceTree = ""; - }; D087750D1E3F214200A97350 /* Contact List Node */ = { isa = PBXGroup; children = ( @@ -3734,6 +3508,16 @@ D08D45281D5E340200A7428A /* Frameworks */ = { isa = PBXGroup; children = ( + D00818CC22B595CB008A895F /* LightweightAccountData.framework */, + D008184922B57225008A895F /* WatchCommon.framework */, + D0750C7922B2A14300BE5F6E /* DeviceAccess.framework */, + D0750C7B22B2A14300BE5F6E /* TelegramPresentationData.framework */, + D0750C7D22B2A14300BE5F6E /* TelegramVoip.framework */, + D0750C7722B2A13300BE5F6E /* UniversalMediaPlayer.framework */, + D0AE315322B1DEE30058D3BC /* TelegramUIPreferences.framework */, + D0AE311122B1DD4D0058D3BC /* TelegramCallsUI.framework */, + D0AE30EA22B1DBD10058D3BC /* GZip.framework */, + D0AE30CE22B1D9980058D3BC /* RMIntro.framework */, D015E04E225D2E5900CB9E8A /* WebP.framework */, D05B077321BFC38600B1D27C /* FFMpeg.framework */, D05B077121BFB9F600B1D27C /* FFMpeg.framework */, @@ -3809,18 +3593,8 @@ D096A4601EA681720000A7AE /* Presentation Data */ = { isa = PBXGroup; children = ( - D05174C41EAE58E900A1BF36 /* Utils */, D05BFB5C1EAA22E200909D38 /* Resources */, - D05B724F1E720597000BD3AD /* PresentationData.swift */, - D096A47A1EA6A2F00000A7AE /* PresentationStrings.swift */, - D096A4611EA681A90000A7AE /* PresentationsResourceCache.swift */, - D096A4631EA683C90000A7AE /* PresentationTheme.swift */, - D010C2CB1EA7D74800F41B96 /* DefaultPresentationTheme.swift */, - D05174BF1EAE3AD400A1BF36 /* DefaultDarkPresentationTheme.swift */, - D0A24D271F92C27100584D24 /* DefaultDarkAccentPresentationTheme.swift */, - D010C2CD1EA7DDD600F41B96 /* DefaultPresentationStrings.swift */, D06FFBA71EAFAC4F00CB53D4 /* PresentationThemeEssentialGraphics.swift */, - D0EAE09F1EB21256005296C1 /* StringPluralization.swift */, ); name = "Presentation Data"; sourceTree = ""; @@ -3864,6 +3638,18 @@ name = Poll; sourceTree = ""; }; + D0AE2FDB22B1D3610058D3BC /* Bridge Audio */ = { + isa = PBXGroup; + children = ( + D0AE2FDC22B1D3610058D3BC /* TGBridgeAudioEncoder.m */, + D0AE2FDD22B1D3610058D3BC /* TGBridgeAudioDecoder.h */, + D0AE2FDE22B1D3610058D3BC /* TGBridgeAudioEncoder.h */, + D0AE2FDF22B1D3610058D3BC /* TGBridgeAudioDecoder.mm */, + D0AE2FE022B1D3610058D3BC /* LegacyBridgeAudio.swift */, + ); + path = "Bridge Audio"; + sourceTree = ""; + }; D0AF7C441ED84BB000CD8E0F /* Language Selection */ = { isa = PBXGroup; children = ( @@ -3874,17 +3660,6 @@ name = "Language Selection"; sourceTree = ""; }; - D0B4AF891EC1132400D51FF6 /* Calls */ = { - isa = PBXGroup; - children = ( - D0EC6B3E1EB8F3E500EBF1C3 /* PresentationCallManager.swift */, - D0B4AF8A1EC1133600D51FF6 /* CallKitIntergation.swift */, - D0F0AADF1EC1E12C005EE2A5 /* PresentationCall.swift */, - D0E8B8A62044339500605593 /* PresentationCallToneData.swift */, - ); - name = Calls; - sourceTree = ""; - }; D0B69C3A20EBD8B3003632C7 /* Device */ = { isa = PBXGroup; children = ( @@ -3892,7 +3667,6 @@ D0FA08BD20481EA300DD23FC /* Locale.swift */, 09DD5D4F21ECC3C400D7007A /* SuppressContactsWarning.swift */, 099529B321D3E5D800805E13 /* CheckDiskSpace.swift */, - D0B69C3B20EBD8C8003632C7 /* CheckDeviceAccess.swift */, D079FCDC1F05C4F20038FADE /* LocalAuth.swift */, D0208ADB1FA346A4001F0D5F /* RaiseToListen.swift */, 09D304142173C0E900C00567 /* WatchManager.swift */, @@ -4071,15 +3845,6 @@ name = "Terms of Service"; sourceTree = ""; }; - D0CE8CEA1F6FCC8200AA2DB0 /* Transform Image */ = { - isa = PBXGroup; - children = ( - D0F69DC61D6B89E70046BCD6 /* TransformImageNode.swift */, - D0CE8CEB1F6FCCA300AA2DB0 /* TransformImageArguments.swift */, - ); - name = "Transform Image"; - sourceTree = ""; - }; D0D03AE61DECB0D200220C46 /* Audio Recorder */ = { isa = PBXGroup; children = ( @@ -4454,16 +4219,6 @@ name = Call; sourceTree = ""; }; - D0EC6FF71EBA1DAE00EBF1C3 /* Calls */ = { - isa = PBXGroup; - children = ( - D0EC6FFA1EBA1DE900EBF1C3 /* OngoingCallThreadLocalContext.h */, - D0EC6FFC1EBA1F2400EBF1C3 /* OngoingCallThreadLocalContext.mm */, - D00ADFDA1EBA2EAF00873D2E /* OngoingCallContext.swift */, - ); - name = Calls; - sourceTree = ""; - }; D0EE97131D88BB1A006C18E1 /* Peer Info */ = { isa = PBXGroup; children = ( @@ -4534,7 +4289,6 @@ D080B27E1F4C7C6000AA3847 /* InstantPageManagedMediaId.swift */, D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */, D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */, - D0D03AE21DECACB700220C46 /* ManagedAudioSession.swift */, D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */, D0CFBB901FD881A600B65C0D /* AudioRecordningToneData.swift */, D0D03B2B1DED9B8900220C46 /* AudioWaveform.swift */, @@ -4546,8 +4300,6 @@ D09E63A91F0FC681003444CD /* PictureInPictureVideoControlsNode.swift */, D09E637D1F0E8C66003444CD /* Shared Media Player */, D0D03AE61DECB0D200220C46 /* Audio Recorder */, - D0F69DBC1D6B886C0046BCD6 /* Player */, - D0EC6FF71EBA1DAE00EBF1C3 /* Calls */, 0919546D229458E900E11046 /* Animated Stickers */, D0F69CDE1D6B87D30046BCD6 /* PeerAvatar.swift */, D0F69E9D1D6B8E240046BCD6 /* Resources */, @@ -4560,31 +4312,6 @@ name = Media; sourceTree = ""; }; - D0F69DBC1D6B886C0046BCD6 /* Player */ = { - isa = PBXGroup; - children = ( - D0F69CE51D6B87D30046BCD6 /* MediaFrameSource.swift */, - D0F69D7F1D6B87EC0046BCD6 /* MediaPlaybackData.swift */, - D0F69D021D6B87D30046BCD6 /* MediaPlayer.swift */, - D0F69CD41D6B87D30046BCD6 /* MediaPlayerAudioRenderer.swift */, - D0F69CDC1D6B87D30046BCD6 /* MediaPlayerNode.swift */, - D058E0CE1E8AD57300A442DE /* VideoPlayerProxy.swift */, - D0F69D1D1D6B87D30046BCD6 /* MediaTrackDecodableFrame.swift */, - D0F69D711D6B87DE0046BCD6 /* MediaTrackFrame.swift */, - D0F69D701D6B87DE0046BCD6 /* MediaTrackFrameBuffer.swift */, - D0F69D881D6B87EC0046BCD6 /* MediaTrackFrameDecoder.swift */, - D0F69CD71D6B87D30046BCD6 /* FFMpegAudioFrameDecoder.swift */, - D0F69CE11D6B87D30046BCD6 /* FFMpegMediaFrameSource.swift */, - D0F69CD31D6B87D30046BCD6 /* FFMpegMediaFrameSourceContext.swift */, - D0F69D161D6B87D30046BCD6 /* FFMpegMediaFrameSourceContextHelpers.swift */, - D0F69D871D6B87EC0046BCD6 /* FFMpegMediaVideoFrameDecoder.swift */, - D0F69D6F1D6B87DE0046BCD6 /* FFMpegMediaPassthroughVideoFrameDecoder.swift */, - D03922A61DF70E3F000F2CE9 /* MediaPlayerScrubbingNode.swift */, - D0177B7F1DFAE18500A5083A /* MediaPlayerTimeTextNode.swift */, - ); - name = Player; - sourceTree = ""; - }; D0F69DBD1D6B897A0046BCD6 /* Components */ = { isa = PBXGroup; children = ( @@ -4615,8 +4342,6 @@ D01776B61F1D6CCF0044446D /* Radial Status */, D0F69DCA1D6B89F20046BCD6 /* Search */, D0477D191F617E4B00412B44 /* Video */, - D0CE8CEA1F6FCC8200AA2DB0 /* Transform Image */, - D0F69DC81D6B89EB0046BCD6 /* ImageNode.swift */, D0F69DC41D6B89E10046BCD6 /* RadialProgressNode.swift */, D00C7CE51E378FD00080C3D5 /* RadialTimeoutNode.swift */, D0F69DC21D6B89DA0046BCD6 /* TextNode.swift */, @@ -4675,6 +4400,7 @@ D04281F2200E5A70009DDE36 /* Chat Recent Actions */, D0AB262D21C3D3CE008F6685 /* Poll */, D00DE6961E8E8E21003F0D76 /* Share */, + D008178022B47450008A895F /* Notification Content */, D0F69E4E1D6B8BB90046BCD6 /* Media */, D0F69E6C1D6B8C220046BCD6 /* Contacts */, D0BC38681E3FB92B0044D6FE /* Compose */, @@ -4982,14 +4708,8 @@ D0F69E7F1D6B8C850046BCD6 /* FastBlur.h */, D0F69E801D6B8C850046BCD6 /* FastBlur.m */, D0F69E831D6B8C850046BCD6 /* FrameworkBundle.swift */, - D0F69E851D6B8C850046BCD6 /* RingBuffer.h */, - D0F69E861D6B8C850046BCD6 /* RingBuffer.m */, - D0F69E871D6B8C850046BCD6 /* RingByteBuffer.swift */, - D0F69EA51D6B8F3E0046BCD6 /* TelegramUIIncludes.h */, D00C7CF51E37BF680080C3D5 /* SecretChatKeyVisualization.h */, D00C7CF61E37BF680080C3D5 /* SecretChatKeyVisualization.m */, - D0EAE0A11EB212DE005296C1 /* NumberPluralizationForm.h */, - D0EAE0A21EB212DE005296C1 /* NumberPluralizationForm.m */, D0208AD31FA33D14001F0D5F /* RaiseToListenActivator.h */, D0208AD41FA33D14001F0D5F /* RaiseToListenActivator.m */, D0208AD71FA34017001F0D5F /* DeviceProximityManager.h */, @@ -5021,15 +4741,12 @@ D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */, D01DBA9A209CC6AD00C64E64 /* ChatLinkPreview.swift */, D0BFAE5C20AB426300793CF2 /* PeerTitle.swift */, - D044A0F220BDA05800326FAC /* ThrottledValue.swift */, D000CAB921EE130D0011B15D /* MapResourceToAvatarSizes.swift */, 090B48C72200BCA8005083FA /* WallpaperUploadManager.swift */, 09D96898221DE92600B1458A /* ID3ArtworkReader.swift */, 09E4A800223AE1B30038140F /* PeerType.swift */, 09E4A806223D4B860038140F /* AccountUtils.swift */, D099E21F229405BB00561B75 /* Weak.swift */, - 0921F5FB228B01B6001A13D7 /* GZip.h */, - 0921F5FC228B01B6001A13D7 /* GZip.m */, ); name = Utils; sourceTree = ""; @@ -5123,11 +4840,10 @@ D0FC40811D5B8E7400261D9D /* TelegramUI */ = { isa = PBXGroup; children = ( + D008179822B478FE008A895F /* App */, D07551891DDA4C7C0073E051 /* Legacy Components */, D0F69E911D6B8C8E0046BCD6 /* Utils */, - D0B4AF891EC1132400D51FF6 /* Calls */, D096A4601EA681720000A7AE /* Presentation Data */, - D087750A1E3E7A6D00A97350 /* Settings */, D0F69DBB1D6B88330046BCD6 /* Media */, D0F69DBD1D6B897A0046BCD6 /* Components */, D0F69DE61D6B8A4E0046BCD6 /* Controllers */, @@ -5155,17 +4871,19 @@ buildActionMask = 2147483647; files = ( D0E9BA221F05577700F079A4 /* STPCard.h in Headers */, - 096C98C021787C6700C211FF /* TGBridgeAudioEncoder.h in Headers */, D0E9BA591F055A2200F079A4 /* STPWeakStrongMacros.h in Headers */, D0E9BADE1F0574D800F079A4 /* STPBackendAPIAdapter.h in Headers */, D0E9BAD11F0573C000F079A4 /* STPToken.h in Headers */, + D0AE303622B1D3620058D3BC /* TGBridgeAudioDecoder.h in Headers */, D0E9BAE71F0574FF00F079A4 /* STPCustomer.h in Headers */, D0208AD51FA33D14001F0D5F /* RaiseToListenActivator.h in Headers */, + D00817DA22B47A14008A895F /* TGPresentationAutoNightPreferences.h in Headers */, D0E9BAE31F0574D800F079A4 /* STPBankAccountParams.h in Headers */, D0383EE1207D1A1600C45548 /* emoji_suggestions.h in Headers */, D0E9BA361F05585000F079A4 /* STPPhoneNumberValidator.h in Headers */, D0E9BA511F0559DA00F079A4 /* STPImageLibrary.h in Headers */, D0E9BA4C1F0559C700F079A4 /* NSString+Stripe_CardBrands.h in Headers */, + D00817E022B47A14008A895F /* UIImage+ImageEffects.h in Headers */, D0E9BAE11F0574D800F079A4 /* STPBankAccount.h in Headers */, D0E9BACE1F0573AF00F079A4 /* STPBlocks.h in Headers */, D0E9BA2A1F0557A600F079A4 /* STPFormEncoder.h in Headers */, @@ -5176,20 +4894,21 @@ D08803C51F6064CF00DD7951 /* TelegramUI.h in Headers */, D0E9BA171F05574500F079A4 /* STPPaymentCardTextFieldViewModel.h in Headers */, D0EB42001F30ED4F00838FE6 /* LegacyImageProcessors.h in Headers */, + D008177B22B46B7E008A895F /* TGContactModel.h in Headers */, D0E9BA291F0557A600F079A4 /* STPFormEncodable.h in Headers */, D0E9BA141F05574500F079A4 /* STPCardValidationState.h in Headers */, D00701A12029F6D0006B9E34 /* TGMimeTypeMap.h in Headers */, D0E9BA461F0559A500F079A4 /* NSDictionary+Stripe.h in Headers */, D0208AD91FA34017001F0D5F /* DeviceProximityManager.h in Headers */, + D0AE303722B1D3620058D3BC /* TGBridgeAudioEncoder.h in Headers */, D0E9BAC61F05738600F079A4 /* STPAPIClient.h in Headers */, - D00ADFD91EBA2E9D00873D2E /* OngoingCallThreadLocalContext.h in Headers */, - D06F31E22135829B001A0F12 /* EDSunriseSet.h in Headers */, D0E9BA531F0559DA00F079A4 /* STPImageLibrary+Private.h in Headers */, D0E9BA601F055A4300F079A4 /* STPDelegateProxy.h in Headers */, - 096C98C121787C6700C211FF /* TGBridgeAudioDecoder.h in Headers */, D0E9BADF1F0574D800F079A4 /* STPDispatchFunctions.h in Headers */, + D00817CD22B47A14008A895F /* TGAutoDownloadPreferences.h in Headers */, D0E9BACB1F05738600F079A4 /* STPAPIPostRequest.h in Headers */, D0E9BA561F055A0B00F079A4 /* STPFormTextField.h in Headers */, + D008177C22B46B7E008A895F /* TGItemProviderSignals.h in Headers */, D067B4AA211C916300796039 /* TGChannelIntroController.h in Headers */, D0E9BABE1F05735F00F079A4 /* STPPaymentConfiguration+Private.h in Headers */, D0E9BACA1F05738600F079A4 /* STPAPIClient+Private.h in Headers */, @@ -5198,10 +4917,13 @@ D0E9BA451F0559A500F079A4 /* STPAPIResponseDecodable.h in Headers */, D0E9BA201F05577700F079A4 /* STPCardParams.h in Headers */, D0E9BA151F05574500F079A4 /* STPCardValidator.h in Headers */, + D00817D722B47A14008A895F /* TGBridgeServer.h in Headers */, + D00817CE22B47A14008A895F /* TGProxyItem.h in Headers */, D0E9BA401F0558FE00F079A4 /* StripeError.h in Headers */, D0E9BA191F05574500F079A4 /* STPPaymentCardTextField.h in Headers */, D0383EDD207D1A1600C45548 /* TGEmojiSuggestions.h in Headers */, D0E9BA3F1F0558FE00F079A4 /* STPSource.h in Headers */, + D008177A22B46B7E008A895F /* TGShareLocationSignals.h in Headers */, D0E9BABC1F05735F00F079A4 /* STPPaymentConfiguration.h in Headers */, D0E9BA2E1F0557D400F079A4 /* STPAddress.h in Headers */, D0E9BA5C1F055A3300F079A4 /* STPBINRange.h in Headers */, @@ -5389,44 +5111,31 @@ files = ( D0684A041F6C3AD50059F570 /* ChatListTypingNode.swift in Sources */, D0383EE6207D299600C45548 /* EmojisChatInputPanelItem.swift in Sources */, - D0EC6CAE1EB9F58800EBF1C3 /* animations.c in Sources */, + D00817E322B47A14008A895F /* TGPresentationAutoNightPreferences.m in Sources */, D0FE4DDC1F09AD0400E8A0B3 /* PresentationSurfaceLevels.swift in Sources */, D0119CD020CAE75F00895300 /* LegacySecureIdAttachmentMenu.swift in Sources */, - D0EC6CAF1EB9F58800EBF1C3 /* buffer.c in Sources */, - D0EC6CB01EB9F58800EBF1C3 /* objects.c in Sources */, - D0EC6CB11EB9F58800EBF1C3 /* program.c in Sources */, D0E412DA206A894800BEE4A2 /* SecureIdValueFormFileItem.swift in Sources */, 09B4EE6221AD791600847FA6 /* InstantPageStoredState.swift in Sources */, D0E1199E229809B6008CAE3A /* ChannelDiscussionGroupActionSheetItem.swift in Sources */, - D0EC6CB21EB9F58800EBF1C3 /* rngs.c in Sources */, 09EDAD2A220DA6A40012A50B /* VolumeButtons.swift in Sources */, 09D968A9221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift in Sources */, D0E1199A2297F9C6008CAE3A /* ChannelDiscussionGroupSetupController.swift in Sources */, D083491C209361DC008CFD52 /* AvatarGalleryItemFooterContentNode.swift in Sources */, - D0EC6CB31EB9F58800EBF1C3 /* shader.c in Sources */, 090E778A22A9F23C00CD99F5 /* ChannelOwnershipTransferController.swift in Sources */, D06E4C352134AE3C00088087 /* ThemeAutoNightSettingsController.swift in Sources */, D0F0AAE21EC20EF8005EE2A5 /* CallControllerStatusNode.swift in Sources */, - D0EC6CB41EB9F58800EBF1C3 /* timing.c in Sources */, - D0EC6CB51EB9F58800EBF1C3 /* platform_log.c in Sources */, D0B2F76C2052A7D600D3BFB9 /* SinglePhoneInputNode.swift in Sources */, D04281F6200E5AC2009DDE36 /* ChatRecentActionsControllerNode.swift in Sources */, - D0EC6CB61EB9F58800EBF1C3 /* RMGeometry.m in Sources */, 0941A9A0210B057200EBE194 /* OpenInActionSheetController.swift in Sources */, D079FCDD1F05C4F20038FADE /* LocalAuth.swift in Sources */, 09DD5D5221ED175300D7007A /* WallpaperColorPickerNode.swift in Sources */, D0B2F76820528E3D00D3BFB9 /* UserInfoEditingPhoneActionItem.swift in Sources */, - D0EC6CB71EB9F58800EBF1C3 /* RMIntroPageView.m in Sources */, - D0EC6CB81EB9F58800EBF1C3 /* RMIntroViewController.m in Sources */, 09F79A0321C8225600820234 /* WebSearchVideoGalleryItem.swift in Sources */, - D0EC6CB91EB9F58800EBF1C3 /* RMLoginViewController.m in Sources */, D0E9BA631F055AD200F079A4 /* BotPaymentCardInputItemNode.swift in Sources */, D01848E821A03BDA00B6DEBD /* ChatSearchState.swift in Sources */, - D0EC6CBA1EB9F58800EBF1C3 /* RMRootViewController.m in Sources */, D0E412CA206A5B0B00BEE4A2 /* FormControllerTextInputItem.swift in Sources */, D0208ADC1FA346A4001F0D5F /* RaiseToListen.swift in Sources */, D0EB41F91F30E5B700838FE6 /* LegacyPeerAvatarPlaceholderDataSource.swift in Sources */, - D0EC6CBB1EB9F58800EBF1C3 /* texture_helper.m in Sources */, 09D304182173C15700C00567 /* WatchSettingsController.swift in Sources */, D0EC6CBC1EB9F58800EBF1C3 /* LegacyController.swift in Sources */, D0EC6CBD1EB9F58800EBF1C3 /* LegacyControllerNode.swift in Sources */, @@ -5442,7 +5151,6 @@ D0754D1E1EEDDF6200884F6E /* ChatMessageAttachedContentNode.swift in Sources */, D0E9BAC71F05738600F079A4 /* STPAPIClient.m in Sources */, D0CFBB911FD881A600B65C0D /* AudioRecordningToneData.swift in Sources */, - D089F78A1F4E0C14000E934D /* InstantPagePresentationSettings.swift in Sources */, D050A466229C06460044F11A /* ChannelDiscussionGroupSearchContainerNode.swift in Sources */, D01776B51F1D6CCC0044446D /* RadialStatusContentNode.swift in Sources */, D02F4AF01FD4C46D004DFBAE /* SystemVideoContent.swift in Sources */, @@ -5457,6 +5165,8 @@ D093D7DD2062D09A00BC3599 /* SecureIdAuthFormFieldNode.swift in Sources */, 092F36902157AB46001A9F49 /* ItemListCallListItem.swift in Sources */, D0EC6CC61EB9F58800EBF1C3 /* PresenceStrings.swift in Sources */, + D00817D522B47A14008A895F /* ApplicationShortcutItem.swift in Sources */, + D077C5C122B59A800097D617 /* ApplicationContext.swift in Sources */, D0EC6CC71EB9F58800EBF1C3 /* PeerNotificationSoundStrings.swift in Sources */, D01C06C01FBF118A001561AB /* MessageUtils.swift in Sources */, D0104F281F47171F004E4881 /* InstantPageGalleryController.swift in Sources */, @@ -5488,7 +5198,6 @@ D0EC6CD51EB9F58800EBF1C3 /* StoredMessageFromSearchPeer.swift in Sources */, 09CE950E2237E45E00A7D2C3 /* CachedFaqInstantPage.swift in Sources */, D0471B5E1EFEB5860074D609 /* BotPaymentHeaderItemNode.swift in Sources */, - D0EC6CD61EB9F58800EBF1C3 /* PostboxKeys.swift in Sources */, D0EC6CD71EB9F58800EBF1C3 /* EmojiUtils.swift in Sources */, D0EC6CD81EB9F58800EBF1C3 /* ShakeAnimation.swift in Sources */, D0EC6CD91EB9F58800EBF1C3 /* ValidateAddressNameInteractive.swift in Sources */, @@ -5497,7 +5206,6 @@ D0E412CC206A6B2300BEE4A2 /* FormControllerActionItem.swift in Sources */, D0471B5A1EFE70400074D609 /* BotCheckoutInfoControllerNode.swift in Sources */, 09F664CA21EB4F2700AB7E26 /* ThemeGridSearchColorsItem.swift in Sources */, - D0EC6CDA1EB9F58800EBF1C3 /* NumericFormat.swift in Sources */, D093D82220699A7C00BC3599 /* FormControllerNode.swift in Sources */, D0EC6CDB1EB9F58800EBF1C3 /* Markdown.swift in Sources */, D0E412D0206A75B200BEE4A2 /* FormControllerDetailActionItem.swift in Sources */, @@ -5506,9 +5214,7 @@ D0380DB8204EE0A5000414AB /* ChatInstantVideoMessageDurationNode.swift in Sources */, D0EC6CDC1EB9F58800EBF1C3 /* TelegramAccountAuxiliaryMethods.swift in Sources */, D01BAA1A1ECC8E0D00295217 /* CallListControllerNode.swift in Sources */, - D0EC6CDD1EB9F58800EBF1C3 /* PresentationCallManager.swift in Sources */, D0A8BBA11F61EE83000F03FD /* UniversalVideoGalleryItem.swift in Sources */, - D0EC6CDE1EB9F58800EBF1C3 /* ComponentsThemes.swift in Sources */, D0642EFC1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift in Sources */, D03AA4E5202DF8840056C405 /* StickerPreviewPeekContent.swift in Sources */, D01C06BC1FBBB0D8001561AB /* CheckNode.swift in Sources */, @@ -5523,34 +5229,20 @@ 09DD5D5021ECC3C400D7007A /* SuppressContactsWarning.swift in Sources */, D02B198A21F1DA9E0094A764 /* SharedAccountContext.swift in Sources */, D0F67FF21EE6B915000E5906 /* ChannelMembersSearchControllerNode.swift in Sources */, - D0EC6CE41EB9F58800EBF1C3 /* PresentationData.swift in Sources */, - D0EC6CE51EB9F58800EBF1C3 /* PresentationStrings.swift in Sources */, - D0EC6CE61EB9F58800EBF1C3 /* PresentationsResourceCache.swift in Sources */, D01776BA1F1D704F0044446D /* RadialStatusIconContentNode.swift in Sources */, - D0EC6CE71EB9F58800EBF1C3 /* PresentationTheme.swift in Sources */, D0E8B8BF20447A4600605593 /* SecretChatKeyControllerNode.swift in Sources */, - D0EC6CE81EB9F58800EBF1C3 /* DefaultPresentationTheme.swift in Sources */, - D0EC6CE91EB9F58800EBF1C3 /* DefaultDarkPresentationTheme.swift in Sources */, - D0EC6CEA1EB9F58800EBF1C3 /* DefaultPresentationStrings.swift in Sources */, D0C27B3B1F4B453700A4E170 /* InstantPagePlayableVideoItem.swift in Sources */, D0EC6CEC1EB9F58800EBF1C3 /* PresentationThemeEssentialGraphics.swift in Sources */, D01BAA1E1ECC931D00295217 /* CallListNodeEntries.swift in Sources */, - D0EC6CED1EB9F58800EBF1C3 /* StringPluralization.swift in Sources */, D02B2B9820810DA00062476B /* StickerPaneSearchStickerItem.swift in Sources */, D020A9DC1FEAE6E7008C66F7 /* OverlayPlayerControllerNode.swift in Sources */, D05D8B742195CD890064586F /* SetupTwoStepVerificationController.swift in Sources */, D04B26EC20082EB50053A58C /* LocationBroadcastPanelWavesNode.swift in Sources */, - D0EC6CEE1EB9F58800EBF1C3 /* InAppNotificationSettings.swift in Sources */, - D0EC6CEF1EB9F58800EBF1C3 /* PresentationPasscodeSettings.swift in Sources */, D06BEC8A1F6597A80035A545 /* OverlayVideoDecoration.swift in Sources */, - D0EC6CF01EB9F58800EBF1C3 /* MediaAutoDownloadSettings.swift in Sources */, - D0EC6CF11EB9F58800EBF1C3 /* GeneratedMediaStoreSettings.swift in Sources */, - D0EC6CF21EB9F58800EBF1C3 /* VoiceCallSettings.swift in Sources */, 09619B9621A4ABF600493558 /* InstantPageReferenceControllerNode.swift in Sources */, D0AB263321C3DFEA008F6685 /* CreatePollOptionActionItem.swift in Sources */, 09FFBCDB22849CB500C33B4B /* PDF.swift in Sources */, 09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */, - D0EC6CF31EB9F58800EBF1C3 /* PresentationThemeSettings.swift in Sources */, D067B4AD211C916300796039 /* TGChannelIntroController.m in Sources */, D0BE303220601FFC00FBE6D8 /* LocationBroadcastActionSheetItem.swift in Sources */, 090E778E22AA863A00CD99F5 /* PeopleNearbyIconNode.swift in Sources */, @@ -5561,7 +5253,6 @@ D0EC6CF51EB9F58800EBF1C3 /* PeerMessageManagedMediaId.swift in Sources */, D0E9BA521F0559DA00F079A4 /* STPImageLibrary.m in Sources */, D0EC6CF61EB9F58800EBF1C3 /* ChatContextResultManagedMediaId.swift in Sources */, - D048B33B203C777500038D05 /* RenderedTotalUnreadCount.swift in Sources */, 090E778622A9B95A00CD99F5 /* PeopleNearbyController.swift in Sources */, D04ECD721FFBF22B00DE9029 /* OpenUrl.swift in Sources */, D04B4D661EEA993A00711AF6 /* LegacyLocationController.swift in Sources */, @@ -5572,10 +5263,8 @@ D0E9BA611F055A4300F079A4 /* STPDelegateProxy.m in Sources */, D0EC6CF91EB9F58800EBF1C3 /* MediaManager.swift in Sources */, 0962E66521B3631100245FD9 /* WebSearchNavigationContentNode.swift in Sources */, - 096C98BF21787C6700C211FF /* TGBridgeAudioEncoder.m in Sources */, D01776B81F1D6FB30044446D /* RadialProgressContentNode.swift in Sources */, D05D8B762195CD930064586F /* SetupTwoStepVerificationControllerNode.swift in Sources */, - D0EC6CFA1EB9F58800EBF1C3 /* ManagedAudioSession.swift in Sources */, D0EB5ADF1F798033004E89B6 /* PeerMediaCollectionEmptyNode.swift in Sources */, D0EC6CFB1EB9F58800EBF1C3 /* ManagedAudioRecorder.swift in Sources */, D048B339203C532800038D05 /* ChatMediaInputPane.swift in Sources */, @@ -5595,12 +5284,12 @@ 0910B0EF21FA532D00F8F87D /* WallpaperResources.swift in Sources */, 09E4A807223D4B860038140F /* AccountUtils.swift in Sources */, D069F5D0212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift in Sources */, + D0750C8322B2E4EE00BE5F6E /* SharedNotificationManager.swift in Sources */, D0EC6D041EB9F58800EBF1C3 /* opusenc.m in Sources */, D0A8998D217A294100759EE6 /* SaveIncomingMediaController.swift in Sources */, D0185E8A208A01AF005E1A6C /* ProxySettingsActionItem.swift in Sources */, D0EC6D051EB9F58800EBF1C3 /* picture.c in Sources */, D0EC6D061EB9F58800EBF1C3 /* wav_io.c in Sources */, - D06ECFCB20B8448E00C576C2 /* ContactSynchronizationSettings.swift in Sources */, 09DE2F272269D5730045E975 /* PrivacyIntroController.swift in Sources */, D0EC6D071EB9F58800EBF1C3 /* bitwise.c in Sources */, D0EC6D081EB9F58800EBF1C3 /* framing.c in Sources */, @@ -5609,50 +5298,31 @@ D0EC6D0A1EB9F58800EBF1C3 /* internal.c in Sources */, D0EC6D0B1EB9F58800EBF1C3 /* opusfile.c in Sources */, D01847801FFBD12E00075256 /* ChatListPresentationData.swift in Sources */, - D0B4AF8B1EC1133600D51FF6 /* CallKitIntergation.swift in Sources */, D0FFF7F61F55B82500BEBC01 /* InstantPageAudioItem.swift in Sources */, D03AA4E7202DFB160056C405 /* ItemListEditableReorderControlNode.swift in Sources */, 09C500242142BA6400EF253E /* ItemListWebsiteItem.swift in Sources */, D0EC6D0C1EB9F58800EBF1C3 /* stream.c in Sources */, - D0EC6D0D1EB9F58800EBF1C3 /* MediaFrameSource.swift in Sources */, 09FFBCD72281BB2D00C33B4B /* ChatTextLinkEditController.swift in Sources */, - D0EC6D0E1EB9F58800EBF1C3 /* MediaPlaybackData.swift in Sources */, 09CE95042236C6B300A7D2C3 /* CachedInstantPages.swift in Sources */, D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */, - D0EC6D0F1EB9F58800EBF1C3 /* MediaPlayer.swift in Sources */, - D0EC6D101EB9F58800EBF1C3 /* MediaPlayerAudioRenderer.swift in Sources */, - D0EC6D111EB9F58800EBF1C3 /* MediaPlayerNode.swift in Sources */, - D0EC6D121EB9F58800EBF1C3 /* VideoPlayerProxy.swift in Sources */, - D0EC6D131EB9F58800EBF1C3 /* MediaTrackDecodableFrame.swift in Sources */, - D0EC6D141EB9F58800EBF1C3 /* MediaTrackFrame.swift in Sources */, D0B69C3920EBB397003632C7 /* ChatMessageInteractiveInstantVideoNode.swift in Sources */, 09F79A0D21C88E8900820234 /* LegacyWebSearchEditor.swift in Sources */, - D0EC6D151EB9F58800EBF1C3 /* MediaTrackFrameBuffer.swift in Sources */, 09F21565225C83E100AEDF6D /* ChatListStatusNode.swift in Sources */, - D0EC6D161EB9F58800EBF1C3 /* MediaTrackFrameDecoder.swift in Sources */, D056CD701FF147B000880D28 /* IconButtonNode.swift in Sources */, - D0EC6D171EB9F58800EBF1C3 /* FFMpegAudioFrameDecoder.swift in Sources */, D0F760DB222034910074F7E5 /* ChannelStatsController.swift in Sources */, - D0EC6D181EB9F58800EBF1C3 /* FFMpegMediaFrameSource.swift in Sources */, - D0EC6D191EB9F58800EBF1C3 /* FFMpegMediaFrameSourceContext.swift in Sources */, D02D60AE206BD47300FEFE1E /* SecureIdDocumentTypeSelectionController.swift in Sources */, 09DD88ED21BDC8B7000766BC /* FormEditableBlockItemNode.swift in Sources */, D079FCE11F05C9380038FADE /* BotReceiptControllerNode.swift in Sources */, D0FA08CA2049BEAC00DD23FC /* ChatEmptyNode.swift in Sources */, 09CE95002232729A00A7D2C3 /* StickerPaneSearchContentNode.swift in Sources */, + D00817D122B47A14008A895F /* LegacyDataImport.swift in Sources */, D053DADC201AAAB100993D32 /* ChatTextInputMenu.swift in Sources */, 0962E66321B3513100245FD9 /* WebSearchControllerNode.swift in Sources */, 090A22172273713000694CB0 /* ChatAnimationGalleryItem.swift in Sources */, - D0EC6D1A1EB9F58800EBF1C3 /* FFMpegMediaFrameSourceContextHelpers.swift in Sources */, - D0EC6D1B1EB9F58800EBF1C3 /* FFMpegMediaVideoFrameDecoder.swift in Sources */, D01C06AF1FBB461E001561AB /* JoinLinkPreviewController.swift in Sources */, - D0EC6D1C1EB9F58800EBF1C3 /* FFMpegMediaPassthroughVideoFrameDecoder.swift in Sources */, - 0935F8EF22197FBF0070AE70 /* LegacyAutomaticMediaDownloadSettings.swift in Sources */, D0D9DE0D20EFEA2E00F20B06 /* InstantPageMediaPlaylist.swift in Sources */, D01C06B11FBB4643001561AB /* JoinLinkPreviewControllerNode.swift in Sources */, - D0EC6D1E1EB9F58800EBF1C3 /* MediaPlayerScrubbingNode.swift in Sources */, D0C0B59B1EE019E5000F4D2C /* ChatSearchNavigationContentNode.swift in Sources */, - D0EC6D1F1EB9F58800EBF1C3 /* MediaPlayerTimeTextNode.swift in Sources */, D0EC6D201EB9F58800EBF1C3 /* PeerAvatar.swift in Sources */, 09F664CC21EB552C00AB7E26 /* WallpaperSearchRecentQueries.swift in Sources */, D0461439200514F000EC0EF2 /* LiveLocationSummaryManager.swift in Sources */, @@ -5680,7 +5350,6 @@ D0EC6D271EB9F58800EBF1C3 /* FetchResource.swift in Sources */, D048EA8F1F4F2A9C00188713 /* InstantPageSettingsItemNode.swift in Sources */, 0913469C21883C3700846E49 /* InstantPageDetailsItem.swift in Sources */, - D056CD721FF1569800880D28 /* MusicPlaybackSettings.swift in Sources */, D0A723541FC3B40E0094D167 /* RadialCheckContentNode.swift in Sources */, D09D88731F86D56B00BEB4C9 /* AuthorizationLayout.swift in Sources */, D0EC6D281EB9F58800EBF1C3 /* MediaResources.swift in Sources */, @@ -5688,11 +5357,11 @@ D0EC6D291EB9F58800EBF1C3 /* FetchVideoMediaResource.swift in Sources */, 09EDAD2E221164440012A50B /* AutodownloadSizeLimitItem.swift in Sources */, D0AFCC791F4C8D2C000720C6 /* InstantPageSlideshowItem.swift in Sources */, + D008177E22B46B7E008A895F /* TGItemProviderSignals.m in Sources */, 099529B421D3E5D800805E13 /* CheckDiskSpace.swift in Sources */, D04281EF200E3D88009DDE36 /* GroupInfoSearchItem.swift in Sources */, D02660941F34CE5C000E2DC5 /* LegacyLocationVenueIconDataSource.swift in Sources */, D081E104217F57D2003CD921 /* LanguageLinkPreviewController.swift in Sources */, - D0EC6FFD1EBA1F2400EBF1C3 /* OngoingCallThreadLocalContext.mm in Sources */, D0E9BAE21F0574D800F079A4 /* STPBankAccount.m in Sources */, D0104F2A1F471DA6004E4881 /* InstantImageGalleryItem.swift in Sources */, D0F67FF41EE6C10F000E5906 /* ChannelMembersSearchContainerNode.swift in Sources */, @@ -5703,12 +5372,10 @@ D0EC6D2C1EB9F58800EBF1C3 /* TouchDownGestureRecognizer.swift in Sources */, 09DD88FA21BFD70B000766BC /* ThemedTextAlertController.swift in Sources */, D0EC6D2D1EB9F58800EBF1C3 /* TapLongTapOrDoubleTapGestureRecognizer.swift in Sources */, - D0B69C3C20EBD8C8003632C7 /* CheckDeviceAccess.swift in Sources */, 09C3466D2167D63A00B76780 /* Accessibility.swift in Sources */, D0FA08C020483F9600DD23FC /* ExtractVideoData.swift in Sources */, + D008177D22B46B7E008A895F /* TGContactModel.m in Sources */, D0BE30492061C0F500FBE6D8 /* SecureIdAuthHeaderNode.swift in Sources */, - D0EC6D2E1EB9F58800EBF1C3 /* ImageNode.swift in Sources */, - D0EC6D2F1EB9F58800EBF1C3 /* TransformImageNode.swift in Sources */, D0EC6D301EB9F58800EBF1C3 /* RadialProgressNode.swift in Sources */, D0EC6D311EB9F58800EBF1C3 /* RadialTimeoutNode.swift in Sources */, D0EC6D321EB9F58800EBF1C3 /* TextNode.swift in Sources */, @@ -5718,9 +5385,10 @@ D087BFB31F748752003FD209 /* ShareControllerRecentPeersGridItem.swift in Sources */, 09CE950A2237B93500A7D2C3 /* SettingsSearchResultItem.swift in Sources */, D0EC6D341EB9F58800EBF1C3 /* AvatarNode.swift in Sources */, - D08D7E8420A0F6020005D80C /* ExperimentalUISettings.swift in Sources */, + D0AE303922B1D3620058D3BC /* LegacyBridgeAudio.swift in Sources */, 09F79A0921C829C700820234 /* GalleryNavigationRecipientNode.swift in Sources */, D0EC6D351EB9F58800EBF1C3 /* SearchBarNode.swift in Sources */, + D008177F22B46B7E008A895F /* TGShareLocationSignals.m in Sources */, D0EC6D361EB9F58800EBF1C3 /* SearchBarPlaceholderNode.swift in Sources */, D0E8B8B9204477B600605593 /* SecretChatKeyVisualization.swift in Sources */, D0EC6D371EB9F58800EBF1C3 /* SearchDisplayController.swift in Sources */, @@ -5745,7 +5413,6 @@ D0EC6D3F1EB9F58800EBF1C3 /* MediaNavigationAccessoryPanel.swift in Sources */, D0E9BA3B1F0558E800F079A4 /* NSString+Stripe.m in Sources */, D0CE8CE51F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift in Sources */, - 096C98BA21787A5C00C211FF /* LegacyBridgeAudio.swift in Sources */, D0EC6D401EB9F58800EBF1C3 /* MediaNavigationAccessoryContainerNode.swift in Sources */, 09F215AD2264DC4500AEDF6D /* PasscodeSetupController.swift in Sources */, D0E266FD1F66706500BFC79F /* ChatBubbleVideoDecoration.swift in Sources */, @@ -5772,14 +5439,12 @@ D0EC6D531EB9F58800EBF1C3 /* ChatHistoryViewForLocation.swift in Sources */, D06BB8821F58994B0084FC30 /* LegacyInstantVideoController.swift in Sources */, D0EC6D541EB9F58800EBF1C3 /* ChatHistoryEntriesForView.swift in Sources */, - 0921F5FF228B09D2001A13D7 /* GZip.m in Sources */, D0943B051FDDFDA0001522CC /* OverlayInstantVideoNode.swift in Sources */, D0EC6D551EB9F58800EBF1C3 /* PreparedChatHistoryViewTransition.swift in Sources */, D0EB41FB1F30E75000838FE6 /* LegacyImageDownloadActor.swift in Sources */, D0208ADA1FA34017001F0D5F /* DeviceProximityManager.m in Sources */, D04281FC200E61BC009DDE36 /* ChatRecentActionsInteraction.swift in Sources */, D0EC6D561EB9F58800EBF1C3 /* ChatHistoryNode.swift in Sources */, - 096C98C221787C6700C211FF /* TGBridgeAudioDecoder.mm in Sources */, D0EC6D571EB9F58800EBF1C3 /* ChatHistoryListNode.swift in Sources */, D0EC6D581EB9F58800EBF1C3 /* ChatHistoryGridNode.swift in Sources */, D0B2F76E2052B59F00D3BFB9 /* InviteContactsController.swift in Sources */, @@ -5800,6 +5465,7 @@ 09E4A801223AE1B30038140F /* PeerType.swift in Sources */, D048EA851F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift in Sources */, 09F21563225C776100AEDF6D /* ChatListBadgeNode.swift in Sources */, + D00817CB22B47A14008A895F /* WatchBridge.swift in Sources */, D0EC6D601EB9F58800EBF1C3 /* GridHoleItem.swift in Sources */, D0EC6D611EB9F58800EBF1C3 /* GridMessageSelectionNode.swift in Sources */, D0754D201EEDEBA000884F6E /* ChatMessageGameBubbleContentNode.swift in Sources */, @@ -5813,7 +5479,6 @@ 09B4EE4721A6D33F00847FA6 /* RecentSessionsEmptyStateItem.swift in Sources */, 09F664C421EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift in Sources */, D00BED201F73F60F00922292 /* ShareSearchContainerNode.swift in Sources */, - D0CE8CEC1F6FCCA300AA2DB0 /* TransformImageArguments.swift in Sources */, D0EC6D661EB9F58800EBF1C3 /* ContactsSectionHeaderAccessoryItem.swift in Sources */, D0EC6D671EB9F58800EBF1C3 /* ContactListNameIndexHeader.swift in Sources */, 09F2159C2263E63200AEDF6D /* PasscodeEntryControllerNode.swift in Sources */, @@ -5858,6 +5523,7 @@ D0F6800A1EE750EE000E5906 /* ChannelBannedMemberController.swift in Sources */, D0EC6D791EB9F58800EBF1C3 /* ChatListTitleLockView.swift in Sources */, D03AA4DF202DBF6F0056C405 /* ChatContextResultPeekContentNode.swift in Sources */, + D00817D622B47A14008A895F /* TGProxyItem.m in Sources */, D0EC6D7A1EB9F58800EBF1C3 /* ChatListSearchContainerNode.swift in Sources */, D0E9BACC1F05738600F079A4 /* STPAPIPostRequest.m in Sources */, D0EC6D7B1EB9F58800EBF1C3 /* ChatListRecentPeersListItem.swift in Sources */, @@ -5878,13 +5544,14 @@ D0EC6D831EB9F58800EBF1C3 /* ChatControllerNode.swift in Sources */, D0E9BA231F05577700F079A4 /* STPCard.m in Sources */, D0EC6D841EB9F58800EBF1C3 /* ChatHistoryEntry.swift in Sources */, + D00817DC22B47A14008A895F /* ManageSharedAccountInfo.swift in Sources */, D0EC6D851EB9F58800EBF1C3 /* ChatHistoryLocation.swift in Sources */, - D06F31E12135829B001A0F12 /* EDSunriseSet.m in Sources */, D0EC6D861EB9F58800EBF1C3 /* ChatAvatarNavigationNode.swift in Sources */, D0EC6D871EB9F58800EBF1C3 /* ChatTitleView.swift in Sources */, D04614372005094E00EC0EF2 /* DeviceLocationManager.swift in Sources */, D0EC6D881EB9F58800EBF1C3 /* ChatControllerTitlePanelNodeContainer.swift in Sources */, 9F06830B21A404C4001D8EDB /* NotificationExceptionSettingsController.swift in Sources */, + D008177922B46B7E008A895F /* ShareItems.swift in Sources */, D0EC6D891EB9F58800EBF1C3 /* ChatSecretAutoremoveTimerActionSheet.swift in Sources */, D05D8B782195E0050064586F /* SetupTwoStepVerificationContentNode.swift in Sources */, D0EC6D8A1EB9F58800EBF1C3 /* ChatInfo.swift in Sources */, @@ -5899,8 +5566,8 @@ D0EC6D8F1EB9F58800EBF1C3 /* ChatMessageBubbleContentCalclulateImageCorners.swift in Sources */, D01776BC1F1E21AF0044446D /* RadialStatusBackgroundNode.swift in Sources */, D0FE4DE61F0BA58A00E8A0B3 /* OverlayMediaItemNode.swift in Sources */, + D00817DD22B47A14008A895F /* LockedWindowCoveringView.swift in Sources */, 0902838821931D960067EFBD /* LanguageSuggestionController.swift in Sources */, - D0E8B8A72044339500605593 /* PresentationCallToneData.swift in Sources */, D0F19F6420E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift in Sources */, D0AEAE252080D6830013176E /* PaneSearchContainerNode.swift in Sources */, D01DBA9B209CC6AD00C64E64 /* ChatLinkPreview.swift in Sources */, @@ -5924,7 +5591,6 @@ D0B2F7722052D0DD00D3BFB9 /* InviteContactsCountPanelNode.swift in Sources */, D0EC6D971EB9F58900EBF1C3 /* ChatMessageItem.swift in Sources */, D0CCD61B222E8B4500EE1E08 /* TimeBasedVideoPreload.swift in Sources */, - D044A0F320BDA05800326FAC /* ThrottledValue.swift in Sources */, D08D7E79209FA2930005D80C /* SecureIdValues.swift in Sources */, D0E8175720122DAD00B82BBB /* ChatRecentActionsSearchNavigationContentNode.swift in Sources */, D0147BA7206E8B4F00E40378 /* SecureIdAuthAcceptNode.swift in Sources */, @@ -5935,7 +5601,6 @@ 9F06830921A404AB001D8EDB /* NotificationExceptionControllerNode.swift in Sources */, D039FB1921711B5D00BD1BAD /* PlatformVideoContent.swift in Sources */, D0CAD8FD20AE467D00ACD96E /* PeerChannelMemberCategoriesContextsManager.swift in Sources */, - D073D2DB1FB61DA9009E1DA2 /* CallListSettings.swift in Sources */, D0430B001FF4570500A35ADD /* WebController.swift in Sources */, 09D9689D221F74F000B1458A /* ChatTitleActivityNode.swift in Sources */, D0EC6D991EB9F58900EBF1C3 /* ChatMessageMediaBubbleContentNode.swift in Sources */, @@ -5944,9 +5609,11 @@ D0EC6D9B1EB9F58900EBF1C3 /* ChatMessageStickerItemNode.swift in Sources */, D017734C22049BF800DA06A7 /* UpgradedAccounts.swift in Sources */, D0EC6D9C1EB9F58900EBF1C3 /* ChatMessageInstantVideoItemNode.swift in Sources */, + D0750C8222B2E4EE00BE5F6E /* SharedWakeupManager.swift in Sources */, D0EC6D9D1EB9F58900EBF1C3 /* ChatMessageTextBubbleContentNode.swift in Sources */, D0E9BA2B1F0557A600F079A4 /* STPFormEncoder.m in Sources */, D01BAA1C1ECC92F700295217 /* CallListViewTransition.swift in Sources */, + D00817DE22B47A14008A895F /* TGBridgeServer.m in Sources */, D0FBE84F2273395C00B33B52 /* ChatListArchiveInfoItem.swift in Sources */, D0439B5B228EC4A00067E026 /* ChatMessagePhoneNumberRequestContentNode.swift in Sources */, 09F664D021EBCFB900AB7E26 /* WallpaperCropNode.swift in Sources */, @@ -5955,6 +5622,7 @@ D06CF82720D0080200AC4CFF /* SecureIdAuthListContentNode.swift in Sources */, D0C0B5901EDB505E000F4D2C /* ActivityIndicator.swift in Sources */, 09797873210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift in Sources */, + D0750C8722B2E76300BE5F6E /* ShareExtensionContext.swift in Sources */, D0EC6D9F1EB9F58900EBF1C3 /* ChatUnreadItem.swift in Sources */, D0E9B9E81EFEFB9500F079A4 /* BotPaymentDisclosureItemNode.swift in Sources */, 091346962183496900846E49 /* InstantPageArticleItem.swift in Sources */, @@ -5971,7 +5639,6 @@ D0E412D3206A7DC100BEE4A2 /* DateSelectionActionSheetController.swift in Sources */, D06887F01F72DEE6000AB936 /* ShareInputFieldNode.swift in Sources */, D0EC6DA71EB9F58900EBF1C3 /* ChatMessageBackground.swift in Sources */, - D0F0AAE01EC1E12C005EE2A5 /* PresentationCall.swift in Sources */, D0EC6DA81EB9F58900EBF1C3 /* ChatInterfaceState.swift in Sources */, D08BDF661FA8CB10009D08E1 /* EditSettingsController.swift in Sources */, D0EC6DA91EB9F58900EBF1C3 /* ChatPresentationInterfaceState.swift in Sources */, @@ -5979,7 +5646,6 @@ D00FF2091F4E2414006FA332 /* InstantPageSettingsNode.swift in Sources */, D0BE3037206139F500FBE6D8 /* ImageCompression.swift in Sources */, 09AE3823214C110900850BFD /* LegacySecureIdScanController.swift in Sources */, - 0962E67D21BA048D00245FD9 /* WebSearchSettings.swift in Sources */, D0EC6DAB1EB9F58900EBF1C3 /* ChatInterfaceStateAccessoryPanels.swift in Sources */, D0EC6DAC1EB9F58900EBF1C3 /* ChatInterfaceStateInputPanels.swift in Sources */, D056CD761FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift in Sources */, @@ -6018,7 +5684,7 @@ D0EC6DBD1EB9F58900EBF1C3 /* ChatMediaInputPanelEntries.swift in Sources */, D0471B4F1EFD84600074D609 /* BotCheckoutPriceItem.swift in Sources */, 0962E65D21B1486D00245FD9 /* CallDebugNode.swift in Sources */, - D00ADFDB1EBA2EAF00873D2E /* OngoingCallContext.swift in Sources */, + D008178222B47464008A895F /* NotificationContentContext.swift in Sources */, D0EC6DBE1EB9F58900EBF1C3 /* ChatMediaInputGridEntries.swift in Sources */, D0EC6DBF1EB9F58900EBF1C3 /* ChatMediaInputMetaSectionItemNode.swift in Sources */, D0EC6DC01EB9F58900EBF1C3 /* ChatMediaInputRecentGifsItem.swift in Sources */, @@ -6074,7 +5740,6 @@ D0EC6DD71EB9F58900EBF1C3 /* VerticalListContextResultsChatInputPanelItem.swift in Sources */, D0EC6DD81EB9F58900EBF1C3 /* VerticalListContextResultsChatInputPanelButtonItem.swift in Sources */, D04281F4200E5AB0009DDE36 /* ChatRecentActionsController.swift in Sources */, - D0B2F76220506E2A00D3BFB9 /* MediaInputSettings.swift in Sources */, 09FE756D2153F5F900A3120F /* CallRouteActionSheetItem.swift in Sources */, D0BFAE4E20AB1D7B00793CF2 /* DisabledContextResultsChatInputContextPanelNode.swift in Sources */, D064EF871F69A06F00AC0398 /* MessageContentKind.swift in Sources */, @@ -6154,6 +5819,7 @@ D0EC6DFD1EB9F58900EBF1C3 /* GalleryControllerNode.swift in Sources */, D0E9BA571F055A0B00F079A4 /* STPFormTextField.m in Sources */, D0EC6DFE1EB9F58900EBF1C3 /* GalleryControllerPresentationState.swift in Sources */, + D00817DB22B47A14008A895F /* LegacyChatImport.swift in Sources */, 09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */, 090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */, 09F21567225C8EF500AEDF6D /* ChatListOnlineNode.swift in Sources */, @@ -6171,6 +5837,8 @@ D0EC6E041EB9F58900EBF1C3 /* SecretMediaPreviewController.swift in Sources */, 09F2158D225CF5BC00AEDF6D /* Pasteboard.swift in Sources */, D0C26D571FDF2388004ABF18 /* OpenChatMessage.swift in Sources */, + D00817CA22B47A14008A895F /* WatchRequestHandlers.swift in Sources */, + D00817E222B47A14008A895F /* UIImage+ImageEffects.m in Sources */, 0919547B2294788200E11046 /* AnimatedStickerVideoCompositor.swift in Sources */, D0FA08BE20481EA300DD23FC /* Locale.swift in Sources */, D0E412CE206A707400BEE4A2 /* FormControllerTextItem.swift in Sources */, @@ -6205,18 +5873,18 @@ D0AD02EA1FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift in Sources */, D0EC6E141EB9F58900EBF1C3 /* InstantPageMedia.swift in Sources */, D0EC6E151EB9F58900EBF1C3 /* InstantPageLinkSelectionView.swift in Sources */, - D08A10BB211DF7A80077488B /* StickerSettings.swift in Sources */, D0EC6E161EB9F58900EBF1C3 /* InstantPageLayoutSpacings.swift in Sources */, D0EC6E171EB9F58900EBF1C3 /* InstantPageTextStyleStack.swift in Sources */, D0EC6E181EB9F58900EBF1C3 /* InstantPageTextItem.swift in Sources */, D01C06B51FBB7720001561AB /* ChatMediaInputSettingsItem.swift in Sources */, - 0952D1772177FB5400194860 /* WatchPresetSettings.swift in Sources */, D091C7A61F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift in Sources */, D0EC6E191EB9F58900EBF1C3 /* InstantPageAnchorItem.swift in Sources */, 090E63E62195880F00E3C035 /* ContactAddItem.swift in Sources */, D05677531F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift in Sources */, + D00817CC22B47A14008A895F /* WatchCommunicationManager.swift in Sources */, D0EC6E1A1EB9F58900EBF1C3 /* InstantPageImageItem.swift in Sources */, D0EC6E1B1EB9F58900EBF1C3 /* InstantPageImageNode.swift in Sources */, + D0AE303522B1D3620058D3BC /* TGBridgeAudioEncoder.m in Sources */, D0EC6E1C1EB9F58900EBF1C3 /* InstantPageWebEmbedItem.swift in Sources */, D0EC6E1D1EB9F58900EBF1C3 /* InstantPageWebEmbedNode.swift in Sources */, D04281F1200E4084009DDE36 /* GroupInfoSearchNavigationContentNode.swift in Sources */, @@ -6226,6 +5894,7 @@ D093D7E22062F40100BC3599 /* SecureIdDocumentFormControllerNode.swift in Sources */, D0B2F7702052B5A800D3BFB9 /* InviteContactsControllerNode.swift in Sources */, D0EC6E211EB9F58900EBF1C3 /* InstantPageController.swift in Sources */, + D00817D922B47A14008A895F /* AppDelegate.swift in Sources */, D0E1199C229808B8008CAE3A /* ChannelDiscussionGroupSetupHeaderItem.swift in Sources */, 091417F221EF4E5D00C8325A /* WallpaperGalleryController.swift in Sources */, D0EC6E221EB9F58900EBF1C3 /* InstantPageControllerNode.swift in Sources */, @@ -6236,6 +5905,7 @@ D0EC6E251EB9F58900EBF1C3 /* StickerPackPreviewGridItem.swift in Sources */, D0EC6E261EB9F58900EBF1C3 /* StickerPreviewController.swift in Sources */, 09B4EE6021AD4A0E00847FA6 /* InstantPageContentNode.swift in Sources */, + D00817D422B47A14008A895F /* LegacyUserDataImport.swift in Sources */, D0EC6E271EB9F58900EBF1C3 /* StickerPreviewControllerNode.swift in Sources */, D0EC6E281EB9F58900EBF1C3 /* ContactsController.swift in Sources */, D0EC6E291EB9F58900EBF1C3 /* ContactsControllerNode.swift in Sources */, @@ -6285,6 +5955,7 @@ D0EC6E3F1EB9F58900EBF1C3 /* ItemListTextItem.swift in Sources */, D0EC6E401EB9F58900EBF1C3 /* ItemListActivityTextItem.swift in Sources */, 0958FBB9218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift in Sources */, + D00817D022B47A14008A895F /* WakeupManager.swift in Sources */, D0EC6E411EB9F58900EBF1C3 /* ItemListEditableItem.swift in Sources */, D0EC6E421EB9F58900EBF1C3 /* ItemListRevealOptionsNode.swift in Sources */, D0E8175920122FE100B82BBB /* ChatRecentActionsFilterController.swift in Sources */, @@ -6300,6 +5971,7 @@ D02F4AE91FCF370B004DFBAE /* ChatMessageInteractiveMediaBadge.swift in Sources */, D0EC6E461EB9F58900EBF1C3 /* ItemListLoadingIndicatorEmptyStateItem.swift in Sources */, D067B4A5211C911C00796039 /* LegacyChannelIntroController.swift in Sources */, + D00817CF22B47A14008A895F /* LegacyFileImport.swift in Sources */, D01A21AF1F39EA2E00DDA104 /* InstantPageTheme.swift in Sources */, D0EC6E471EB9F58900EBF1C3 /* ItemListTextEmptyStateItem.swift in Sources */, D0E412C62069B60600BEE4A2 /* FormControllerHeaderItem.swift in Sources */, @@ -6308,20 +5980,23 @@ D0EC6E491EB9F58900EBF1C3 /* ItemListControllerEmptyStateItem.swift in Sources */, D0EC6E4A1EB9F58900EBF1C3 /* ItemListControllerNode.swift in Sources */, D0147BA9206EA35000E40378 /* SecureIdDocumentGalleryController.swift in Sources */, + D00817DF22B47A14008A895F /* LegacyDataImportSplash.swift in Sources */, D0B37C5C1F8D22AE004252DF /* ThemeSettingsController.swift in Sources */, D05D8B412192FC8A0064586F /* LocalizationListItem.swift in Sources */, D0383ED4207CFBB900C45548 /* GalleryThumbnailContainerNode.swift in Sources */, 0962E67B21BA00C900245FD9 /* WebSearchInterfaceState.swift in Sources */, D0EC6E4B1EB9F58900EBF1C3 /* ItemListControllerSegmentedTitleView.swift in Sources */, 09DD88F521BF9730000766BC /* WebSearchRecentQueries.swift in Sources */, + D0AE303822B1D3620058D3BC /* TGBridgeAudioDecoder.mm in Sources */, D0EC6E4D1EB9F58900EBF1C3 /* PeerInfoController.swift in Sources */, D0EC6E4E1EB9F58900EBF1C3 /* GroupInfoController.swift in Sources */, + D00817D322B47A14008A895F /* LegacyResourceImport.swift in Sources */, D0380DAD204ED434000414AB /* LegacyLiveUploadInterface.swift in Sources */, + D00817D222B47A14008A895F /* LegacyPreferencesImport.swift in Sources */, D0185E882089ED5F005E1A6C /* ProxyListSettingsController.swift in Sources */, D0E9BA331F05583A00F079A4 /* STPPostalCodeValidator.m in Sources */, D0EC6E4F1EB9F58900EBF1C3 /* ChannelVisibilityController.swift in Sources */, D09250061FE5371D003F693F /* GlobalExperimentalSettings.swift in Sources */, - D0A24D281F92C27100584D24 /* DefaultDarkAccentPresentationTheme.swift in Sources */, D025A4231F79344500563950 /* FetchManager.swift in Sources */, 09F79A0121C8116C00820234 /* WebSearchBadgeNode.swift in Sources */, D0CB27CF20C17A4A001ACF93 /* TermsOfServiceController.swift in Sources */, @@ -6399,10 +6074,7 @@ D0EC6E7B1EB9F58900EBF1C3 /* DebugAccountsController.swift in Sources */, D093D8262069A31700BC3599 /* FormControllerItem.swift in Sources */, D0EC6E7C1EB9F58900EBF1C3 /* UsernameSetupController.swift in Sources */, - D005808B21CAB8F000CB7CD3 /* VoipDerivedState.swift in Sources */, D0471B621EFEB5B70074D609 /* BotPaymentSwitchItemNode.swift in Sources */, - D09250041FE5363D003F693F /* ExperimentalSettings.swift in Sources */, - D0F339372269D83500CFF53F /* ChatArchiveSettings.swift in Sources */, D0E8175B201254FA00B82BBB /* ChatRecentActionsEmptyNode.swift in Sources */, D0C44B641FC64D0500227BE0 /* SwipeToDismissGestureRecognizer.swift in Sources */, D0EC6E7D1EB9F58900EBF1C3 /* ChangePhoneNumberIntroController.swift in Sources */, @@ -6413,6 +6085,7 @@ D0EC6E7F1EB9F58900EBF1C3 /* ChangePhoneNumberControllerNode.swift in Sources */, D0EC6E801EB9F58900EBF1C3 /* ChangePhoneNumberCodeController.swift in Sources */, D09E637C1F0E7C28003444CD /* SharedMediaPlayer.swift in Sources */, + D0750C8522B2E52400BE5F6E /* ClearNotificationsManager.swift in Sources */, D0EC6E811EB9F58900EBF1C3 /* NotificationContainerController.swift in Sources */, 090E778822A9B96100CD99F5 /* PeopleNearbyHeaderItem.swift in Sources */, D0754D271EEE10C800884F6E /* BotCheckoutController.swift in Sources */, @@ -6425,6 +6098,7 @@ D0EC6E841EB9F58900EBF1C3 /* NotificationItem.swift in Sources */, D0EC6E851EB9F58900EBF1C3 /* ChatMessageNotificationItem.swift in Sources */, D0EC6E871EB9F58900EBF1C3 /* FastBlur.m in Sources */, + D00817D822B47A14008A895F /* TGAutoDownloadPreferences.m in Sources */, D093D80820654A2900BC3599 /* BotPaymentDateItemNode.swift in Sources */, D04281FE200E639A009DDE36 /* ChatRecentActionsTitleView.swift in Sources */, D0ACCB1C1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift in Sources */, @@ -6432,15 +6106,12 @@ D05677511F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift in Sources */, 09F664CE21EBB3A100AB7E26 /* ImageBlur.swift in Sources */, D0EC6E891EB9F58900EBF1C3 /* FrameworkBundle.swift in Sources */, - D0EC6E8B1EB9F58900EBF1C3 /* RingBuffer.m in Sources */, D0FA08C8204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift in Sources */, - D0EC6E8C1EB9F58900EBF1C3 /* RingByteBuffer.swift in Sources */, D0E9BA181F05574500F079A4 /* STPPaymentCardTextFieldViewModel.m in Sources */, D0EC6E8D1EB9F58900EBF1C3 /* SecretChatKeyVisualization.m in Sources */, 09F664C221EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift in Sources */, D0BCC3D420404CC7008126C2 /* ChatMessageActionSheetController.swift in Sources */, 09D9689F221F760900B1458A /* ChatTitleActivityContentNode.swift in Sources */, - D0EC6E8E1EB9F58900EBF1C3 /* NumberPluralizationForm.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6537,12 +6208,16 @@ D021D512219CB2240064BEBA /* DebugFork */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + APPLICATION_EXTENSION_API_ONLY = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEVELOPMENT_TEAM = ""; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/TelegramUI/Legacy\\ Components/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework", + ); GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; HEADERMAP_USES_VFS = YES; @@ -6730,12 +6405,16 @@ D079FD281F06BEF70038FADE /* DebugAppStore */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + APPLICATION_EXTENSION_API_ONLY = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEVELOPMENT_TEAM = ""; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/TelegramUI/Legacy\\ Components/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework", + ); GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; HEADERMAP_USES_VFS = YES; @@ -6844,13 +6523,17 @@ D0924FF01FE52C29003F693F /* ReleaseHockeyappInternal */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + APPLICATION_EXTENSION_API_ONLY = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/TelegramUI/Legacy\\ Components/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework", + ); HEADERMAP_USES_VFS = YES; HEADER_SEARCH_PATHS = "third-party/ogg"; INFOPLIST_FILE = "$(SRCROOT)/TelegramUI/Info.plist"; @@ -6964,12 +6647,16 @@ D0ADF94A212B3B0000310BBC /* DebugAppStoreLLC */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + APPLICATION_EXTENSION_API_ONLY = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEVELOPMENT_TEAM = ""; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/TelegramUI/Legacy\\ Components/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework", + ); GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; HEADERMAP_USES_VFS = YES; @@ -7078,11 +6765,15 @@ D0CE6F04213DC32300BCD44B /* ReleaseAppStoreLLC */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + APPLICATION_EXTENSION_API_ONLY = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Manual; DEVELOPMENT_TEAM = ""; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/TelegramUI/Legacy\\ Components/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework", + ); HEADERMAP_USES_VFS = YES; HEADER_SEARCH_PATHS = "third-party/ogg"; INFOPLIST_FILE = "$(SRCROOT)/TelegramUI/Info.plist"; @@ -7117,13 +6808,17 @@ D0EC6E9E1EB9F79800EBF1C3 /* DebugHockeyapp */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + APPLICATION_EXTENSION_API_ONLY = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/TelegramUI/Legacy\\ Components/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework", + ); GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; HEADERMAP_USES_VFS = YES; @@ -7159,13 +6854,17 @@ D0EC6E9F1EB9F79800EBF1C3 /* ReleaseHockeyapp */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + APPLICATION_EXTENSION_API_ONLY = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/TelegramUI/Legacy\\ Components/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework", + ); HEADERMAP_USES_VFS = YES; HEADER_SEARCH_PATHS = "third-party/ogg"; INFOPLIST_FILE = "$(SRCROOT)/TelegramUI/Info.plist"; @@ -7200,11 +6899,15 @@ D0EC6EA01EB9F79800EBF1C3 /* ReleaseAppStore */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + APPLICATION_EXTENSION_API_ONLY = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Manual; DEVELOPMENT_TEAM = ""; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/TelegramUI/Legacy\\ Components/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework", + ); HEADERMAP_USES_VFS = YES; HEADER_SEARCH_PATHS = "third-party/ogg"; INFOPLIST_FILE = "$(SRCROOT)/TelegramUI/Info.plist"; diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/.gitignore b/submodules/TelegramUI/third-party/RMIntro/platform/ios/.gitignore deleted file mode 100755 index 7b12c26077..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -# Based from http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects - -# Temporary files -.DS_Store -.Trashes -*.swp -*.lock -*~.nib - -# Meta files -*._* - -# Build files -DerivedData/ -build/ - -# Private settings -# *.pbxuser should not be ignored if using "custom executables". -*.pbxuser -*.mode1v3 -*.mode2v3 -*.perspectivev3 - -# Some projects need the below -!default.pbxuser -!default.mode1v3 -!default.mode2v3 -!default.perspectivev3 - -# XCode 4 semi-personal settings -xcuserdata/ - -# Deprecated classes -*.moved-aside \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Base.lproj/LaunchScreen.xib b/submodules/TelegramUI/third-party/RMIntro/platform/ios/Base.lproj/LaunchScreen.xib deleted file mode 100644 index decac45f3a..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default-568h@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default-568h@2x.png deleted file mode 100755 index 0891b7aabf..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default-568h@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default.png deleted file mode 100755 index 4c8ca6f693..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default@2x.png deleted file mode 100755 index 35b84cffeb..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/Default@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/BuildAgent b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/BuildAgent deleted file mode 100755 index d97765168b..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/BuildAgent and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Headers b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Headers deleted file mode 120000 index a177d2a6b9..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/HockeySDK b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/HockeySDK deleted file mode 120000 index 8b45692e61..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/HockeySDK +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/HockeySDK \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Modules/module.modulemap b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Modules/module.modulemap deleted file mode 100644 index 73fba6726e..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module HockeySDK { - umbrella header "HockeySDK.h" - - export * - module * { export * } -} diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Resources b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Resources deleted file mode 120000 index 953ee36f3b..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITAuthenticator.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITAuthenticator.h deleted file mode 100644 index 1653de788d..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITAuthenticator.h +++ /dev/null @@ -1,385 +0,0 @@ -/* - * Author: Stephan Diederich, Andreas Linde - * - * Copyright (c) 2013-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import "BITHockeyBaseManager.h" - -/** - * Identification Types - */ -typedef NS_ENUM(NSUInteger, BITAuthenticatorIdentificationType) { - /** - * Assigns this app an anonymous user id. - *

- * The user will not be asked anything and an anonymous ID will be generated. - * This helps identifying this installation being unique but HockeyApp won't be able - * to identify who actually is running this installation and on which device - * the app is installed. - */ - BITAuthenticatorIdentificationTypeAnonymous, - /** - * Ask for the HockeyApp account email - *

- * This will present a user interface requesting the user to provide their - * HockeyApp user email address. - *

- * The provided email address has to match an email address of a registered - * HockeyApp user who is a member or tester of the app - */ - BITAuthenticatorIdentificationTypeHockeyAppEmail, - /** - * Ask for the HockeyApp account by email and password - *

- * This will present a user interface requesting the user to provide their - * HockeyApp user credentials. - *

- * The provided user account has to match a registered HockeyApp user who is - * a member or tester of the app - */ - BITAuthenticatorIdentificationTypeHockeyAppUser, - /** - * Identifies the current device - *

- * This will open the HockeyApp web page on the device in Safari and request the user - * to submit the device's unique identifier to the app. If the web page session is not aware - * of the current devices UDID, it will request the user to install the HockeyApp web clip - * which will provide the UDID to users session in the browser. - *

- * This requires the app to register an URL scheme. See the linked property and methods - * for further documentation on this. - */ - BITAuthenticatorIdentificationTypeDevice, - /** - * Ask for the HockeyApp account email. - *

- * This will present a user interface requesting the user to start a Safari based - * flow to login to HockeyApp (if not already logged in) and to share the hockeyapp - * account's email. - *

- * If restrictApplicationUsage is enabled, the provided user account has to match a - * registered HockeyApp user who is a member or tester of the app. - * For identification purpose any HockeyApp user is allowed. - */ - BITAuthenticatorIdentificationTypeWebAuth, -}; - -/** - * Restriction enforcement styles - * - * Specifies how often the Authenticator checks if the user is allowed to use - * this app. - */ -typedef NS_ENUM(NSUInteger, BITAuthenticatorAppRestrictionEnforcementFrequency) { - /** - * Checks if the user is allowed to use the app at the first time a version is started - */ - BITAuthenticatorAppRestrictionEnforcementOnFirstLaunch, - /** - * Checks if the user is allowed to use the app everytime the app becomes active - */ - BITAuthenticatorAppRestrictionEnforcementOnAppActive, -}; - -@protocol BITAuthenticatorDelegate; - - -/** - * Identify and authenticate users of Ad-Hoc or Enterprise builds - * - * `BITAuthenticator` serves 2 purposes: - * - * 1. Identifying who is running your Ad-Hoc or Enterprise builds - * `BITAuthenticator` provides an identifier for the rest of the HockeySDK - * to work with, e.g. in-app update checks and crash reports. - * - * 2. Optional regular checking if an identified user is still allowed - * to run this application. The `BITAuthenticator` can be used to make - * sure only users who are testers of your app are allowed to run it. - * - * This module automatically disables itself when running in an App Store build by default! - * - * @warning It is mandatory to call `authenticateInstallation` somewhen after calling - * `[[BITHockeyManager sharedHockeyManager] startManager]` or fully customize the identification - * and validation workflow yourself. - * If your app shows a modal view on startup, make sure to call `authenticateInstallation` - * either once your modal view is fully presented (e.g. its `viewDidLoad:` method is processed) - * or once your modal view is dismissed. - */ -@interface BITAuthenticator : BITHockeyBaseManager - -#pragma mark - Configuration - - -///----------------------------------------------------------------------------- -/// @name Configuration -///----------------------------------------------------------------------------- - - -/** - * Defines the identification mechanism to be used - * - * _Default_: `BITAuthenticatorIdentificationTypeAnonymous` - * - * @see BITAuthenticatorIdentificationType - */ -@property (nonatomic, assign) BITAuthenticatorIdentificationType identificationType; - - -/** - * Enables or disables checking if the user is allowed to run this app - * - * If disabled, the Authenticator never validates, besides initial identification, - * if the user is allowed to run this application. - * - * If enabled, the Authenticator checks depending on `restrictionEnforcementFrequency` - * if the user is allowed to use this application. - * - * Enabling this property and setting `identificationType` to `BITAuthenticatorIdentificationTypeHockeyAppEmail`, - * `BITAuthenticatorIdentificationTypeHockeyAppUser` or `BITAuthenticatorIdentificationTypeWebAuth` also allows - * to remove access for users by removing them from the app's users list on HockeyApp. - * - * _Default_: `NO` - * - * @warning if `identificationType` is set to `BITAuthenticatorIdentificationTypeAnonymous`, - * this property has no effect. - * - * @see BITAuthenticatorIdentificationType - * @see restrictionEnforcementFrequency - */ -@property (nonatomic, assign) BOOL restrictApplicationUsage; - -/** - * Defines how often the BITAuthenticator checks if the user is allowed - * to run this application - * - * This requires `restrictApplicationUsage` to be enabled. - * - * _Default_: `BITAuthenticatorAppRestrictionEnforcementOnFirstLaunch` - * - * @see BITAuthenticatorAppRestrictionEnforcementFrequency - * @see restrictApplicationUsage - */ -@property (nonatomic, assign) BITAuthenticatorAppRestrictionEnforcementFrequency restrictionEnforcementFrequency; - -/** - * The authentication secret from HockeyApp. To find the right secret, - * click on your app on the HockeyApp dashboard, then on Show next to - * "Secret:". - * - * This is only needed if `identificationType` is set to `BITAuthenticatorIdentificationTypeHockeyAppEmail` - * - * @see identificationType - */ -@property (nonatomic, copy) NSString *authenticationSecret; - - -#pragma mark - Device based identification - -///----------------------------------------------------------------------------- -/// @name Device based identification -///----------------------------------------------------------------------------- - - -/** - * The baseURL of the webpage the user is redirected to if `identificationType` is - * set to `BITAuthenticatorIdentificationTypeDevice`; defaults to https://rink.hockeyapp.net. - * - * @see identificationType - */ -@property (nonatomic, strong) NSURL *webpageURL; - -/** - * URL to query the device's id via external webpage - * Built with the baseURL set in `webpageURL`. - */ -- (NSURL*) deviceAuthenticationURL; - -/** - * The url-scheme used to idenfify via `BITAuthenticatorIdentificationTypeDevice` - * - * Please make sure that the URL scheme is unique and not shared with other apps. - * - * If set to nil, the default scheme is used which is `ha`. - * - * @see identificationType - * @see handleOpenURL:sourceApplication:annotation: - */ -@property (nonatomic, strong) NSString *urlScheme; - -/** - Should be used by the app-delegate to forward handle application:openURL:sourceApplication:annotation: calls. - - This is required if `identificationType` is set to `BITAuthenticatorIdentificationTypeDevice`. - Your app needs to implement the default `ha` URL scheme or register its own scheme - via `urlScheme`. - BITAuthenticator checks if the given URL is actually meant to be parsed by it and will - return NO if it doesn't think so. It does this by checking the 'host'-part of the URL to be 'authorize', as well - as checking the protocol part. - Please make sure that if you're using a custom URL scheme, it does _not_ conflict with BITAuthenticator's. - If BITAuthenticator thinks the URL was meant to be an authorization URL, but could not find a valid token, it will - reset the stored identification token and state. - - Sample usage (in AppDelegate): - - - (BOOL)application:(UIApplication *)application - openURL:(NSURL *)url - sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { - if ([[BITHockeyManager sharedHockeyManager].authenticator handleOpenURL:url - sourceApplication:sourceApplication - annotation:annotation]) { - return YES; - } else { - //do your own URL handling, return appropriate value - } - return NO; - } - - @param url Param `url` that was passed to the app - @param sourceApplication Param `sourceApplication` that was passed to the app - @param annotation Param `annotation` that was passed to the app - - @return YES if the URL request was handled, NO if the URL could not be handled/identified. - - @see identificationType - @see urlScheme - */ -- (BOOL) handleOpenURL:(NSURL *) url - sourceApplication:(NSString *) sourceApplication - annotation:(id) annotation; - -#pragma mark - Authentication - -///----------------------------------------------------------------------------- -/// @name Authentication -///----------------------------------------------------------------------------- - -/** - * Invoked automatic identification and validation - * - * If the `BITAuthenticator` is in automatic mode this will initiate identifying - * the current user according to the type specified in `identificationType` and - * validate if the identified user is allowed to run this application. - * - * If the user is not yet identified it will present a modal view asking the user to - * provide the required information. - * - * If your app provides it's own startup modal screen, e.g. a guide or a login, then - * you might either call this method once that UI is fully presented or once - * the user e.g. did actually login already. - * - * @warning You need to call this method in your code even if automatic mode is enabled! - * - * @see identificationType - */ -- (void) authenticateInstallation; - -/** - * Identifies the user according to the type specified in `identificationType`. - * - * If the `BITAuthenticator` is in manual mode, it's your responsibility to call - * this method. Depending on the `identificationType`, this method - * might present a viewController to let the user enter his/her credentials. - * - * If the Authenticator is in auto-mode, this is called by the authenticator itself - * once needed. - * - * @see identificationType - * @see authenticateInstallation - * @see validateWithCompletion: - * - * @param completion Block being executed once identification completed - */ -- (void) identifyWithCompletion:(void(^)(BOOL identified, NSError *error)) completion; - -/** - * Returns YES if this app is identified according to the setting in `identificationType`. - * - * Since the identification process is done asynchronously (contacting the server), - * you need to observe the value change via KVO. - * - * @see identificationType - */ -@property (nonatomic, assign, readonly, getter = isIdentified) BOOL identified; - -/** - * Validates if the identified user is allowed to run this application. This checks - * with the HockeyApp backend and calls the completion-block once completed. - * - * If the `BITAuthenticator` is in manual mode, it's your responsibility to call - * this method. If the application is not yet identified, validation is not possible - * and the completion-block is called with an error set. - * - * If the `BITAuthenticator` is in auto-mode, this is called by the authenticator itself - * once needed. - * - * @see identificationType - * @see authenticateInstallation - * @see identifyWithCompletion: - * - * @param completion Block being executed once validation completed - */ -- (void) validateWithCompletion:(void(^)(BOOL validated, NSError *error)) completion; - -/** - * Indicates if this installation is validated. - */ -@property (nonatomic, assign, readonly, getter = isValidated) BOOL validated; - -/** - * Removes all previously stored authentication tokens, UDIDs, etc. - */ -- (void) cleanupInternalStorage; - -/** - * Returns different values depending on `identificationType`. This can be used - * by the application to identify the user. - * - * @see identificationType - */ -- (NSString*) publicInstallationIdentifier; -@end - -#pragma mark - Protocol - -/** - * `BITAuthenticator` protocol - */ -@protocol BITAuthenticatorDelegate - -@optional -/** - * If the authentication (or validation) needs to identify the user, - * this delegate method is called with the viewController that we'll present. - * - * @param authenticator `BITAuthenticator` object - * @param viewController `UIViewController` used to identify the user - * - */ -- (void) authenticator:(BITAuthenticator *)authenticator willShowAuthenticationController:(UIViewController*) viewController; -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashAttachment.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashAttachment.h deleted file mode 100644 index bf6f339b6e..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashAttachment.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import "BITHockeyAttachment.h" - -/** - Deprecated: Provides support to add binary attachments to crash reports - - This class is not needed any longer and exists for compatiblity purposes with - HockeySDK-iOS 3.5.5. - - It is a subclass of `BITHockeyAttachment` which only provides an initializer - that is compatible with the one of HockeySDK-iOS 3.5.5. - - This is used by `[BITCrashManagerDelegate attachmentForCrashManager:]` - - @see BITHockeyAttachment - */ -@interface BITCrashAttachment : BITHockeyAttachment - -/** - Create an BITCrashAttachment instance with a given filename and NSData object - - @param filename The filename the attachment should get - @param crashAttachmentData The attachment data as NSData - @param contentType The content type of your data as MIME type - - @return An instsance of BITCrashAttachment - */ -- (instancetype)initWithFilename:(NSString *)filename - crashAttachmentData:(NSData *)crashAttachmentData - contentType:(NSString *)contentType; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashDetails.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashDetails.h deleted file mode 100644 index 989001c423..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashDetails.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -/** - * Provides details about the crash that occured in the previous app session - */ -@interface BITCrashDetails : NSObject - -/** - * UUID for the crash report - */ -@property (nonatomic, readonly, strong) NSString *incidentIdentifier; - -/** - * UUID for the app installation on the device - */ -@property (nonatomic, readonly, strong) NSString *reporterKey; - -/** - * Signal that caused the crash - */ -@property (nonatomic, readonly, strong) NSString *signal; - -/** - * Exception name that triggered the crash, nil if the crash was not caused by an exception - */ -@property (nonatomic, readonly, strong) NSString *exceptionName; - -/** - * Exception reason, nil if the crash was not caused by an exception - */ -@property (nonatomic, readonly, strong) NSString *exceptionReason; - -/** - * Date and time the app started, nil if unknown - */ -@property (nonatomic, readonly, strong) NSDate *appStartTime; - -/** - * Date and time the crash occured, nil if unknown - */ -@property (nonatomic, readonly, strong) NSDate *crashTime; - -/** - * Operation System version string the app was running on when it crashed. - */ -@property (nonatomic, readonly, strong) NSString *osVersion; - -/** - * Operation System build string the app was running on when it crashed - * - * This may be unavailable. - */ -@property (nonatomic, readonly, strong) NSString *osBuild; - -/** - * CFBundleVersion value of the app that crashed - */ -@property (nonatomic, readonly, strong) NSString *appBuild; - -/** - Indicates if the app was killed while being in foreground from the iOS - - If `[BITCrashManager enableAppNotTerminatingCleanlyDetection]` is enabled, use this on startup - to check if the app starts the first time after it was killed by iOS in the previous session. - - This can happen if it consumed too much memory or the watchdog killed the app because it - took too long to startup or blocks the main thread for too long, or other reasons. See Apple - documentation: https://developer.apple.com/library/ios/qa/qa1693/_index.html - - See `[BITCrashManager enableAppNotTerminatingCleanlyDetection]` for more details about which kind of kills can be detected. - - @warning This property only has a correct value, once `[BITHockeyManager startManager]` was - invoked! In addition, it is automatically disabled while a debugger session is active! - - @see `[BITCrashManager enableAppNotTerminatingCleanlyDetection]` - @see `[BITCrashManager didReceiveMemoryWarningInLastSession]` - - @return YES if the details represent an app kill instead of a crash - */ -- (BOOL)isAppKill; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashManager.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashManager.h deleted file mode 100644 index fdc8e2f2cc..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashManager.h +++ /dev/null @@ -1,436 +0,0 @@ -/* - * Author: Andreas Linde - * Kent Sutherland - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * Copyright (c) 2011 Andreas Linde & Kent Sutherland. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import "BITHockeyBaseManager.h" - -@class BITCrashDetails; -@class BITCrashMetaData; - - -/** - * Custom block that handles the alert that prompts the user whether he wants to send crash reports - */ -typedef void(^BITCustomAlertViewHandler)(); - - -/** - * Crash Manager status - */ -typedef NS_ENUM(NSUInteger, BITCrashManagerStatus) { - /** - * Crash reporting is disabled - */ - BITCrashManagerStatusDisabled = 0, - /** - * User is asked each time before sending - */ - BITCrashManagerStatusAlwaysAsk = 1, - /** - * Each crash report is send automatically - */ - BITCrashManagerStatusAutoSend = 2 -}; - - -/** - * Prototype of a callback function used to execute additional user code. Called upon completion of crash - * handling, after the crash report has been written to disk. - * - * @param context The API client's supplied context value. - * - * @see `BITCrashManagerCallbacks` - * @see `[BITCrashManager setCrashCallbacks:]` - */ -typedef void (*BITCrashManagerPostCrashSignalCallback)(void *context); - -/** - * This structure contains callbacks supported by `BITCrashManager` to allow the host application to perform - * additional tasks prior to program termination after a crash has occured. - * - * @see `BITCrashManagerPostCrashSignalCallback` - * @see `[BITCrashManager setCrashCallbacks:]` - */ -typedef struct BITCrashManagerCallbacks { - /** An arbitrary user-supplied context value. This value may be NULL. */ - void *context; - - /** - * The callback used to report caught signal information. - */ - BITCrashManagerPostCrashSignalCallback handleSignal; -} BITCrashManagerCallbacks; - -/** - * Crash Manager alert user input - */ -typedef NS_ENUM(NSUInteger, BITCrashManagerUserInput) { - /** - * User chose not to send the crash report - */ - BITCrashManagerUserInputDontSend = 0, - /** - * User wants the crash report to be sent - */ - BITCrashManagerUserInputSend = 1, - /** - * User chose to always send crash reports - */ - BITCrashManagerUserInputAlwaysSend = 2 - -}; - - -@protocol BITCrashManagerDelegate; - -/** - The crash reporting module. - - This is the HockeySDK module for handling crash reports, including when distributed via the App Store. - As a foundation it is using the open source, reliable and async-safe crash reporting framework - [PLCrashReporter](https://code.google.com/p/plcrashreporter/). - - This module works as a wrapper around the underlying crash reporting framework and provides functionality to - detect new crashes, queues them if networking is not available, present a user interface to approve sending - the reports to the HockeyApp servers and more. - - It also provides options to add additional meta information to each crash report, like `userName`, `userEmail` - via `BITHockeyManagerDelegate` protocol, and additional textual log information via `BITCrashManagerDelegate` - protocol and a way to detect startup crashes so you can adjust your startup process to get these crash reports - too and delay your app initialization. - - Crashes are send the next time the app starts. If `crashManagerStatus` is set to `BITCrashManagerStatusAutoSend`, - crashes will be send without any user interaction, otherwise an alert will appear allowing the users to decide - whether they want to send the report or not. This module is not sending the reports right when the crash happens - deliberately, because if is not safe to implement such a mechanism while being async-safe (any Objective-C code - is _NOT_ async-safe!) and not causing more danger like a deadlock of the device, than helping. We found that users - do start the app again because most don't know what happened, and you will get by far most of the reports. - - Sending the reports on startup is done asynchronously (non-blocking). This is the only safe way to ensure - that the app won't be possibly killed by the iOS watchdog process, because startup could take too long - and the app could not react to any user input when network conditions are bad or connectivity might be - very slow. - - It is possible to check upon startup if the app crashed before using `didCrashInLastSession` and also how much - time passed between the app launch and the crash using `timeintervalCrashInLastSessionOccured`. This allows you - to add additional code to your app delaying the app start until the crash has been successfully send if the crash - occured within a critical startup timeframe, e.g. after 10 seconds. The `BITCrashManagerDelegate` protocol provides - various delegates to inform the app about it's current status so you can continue the remaining app startup setup - after sending has been completed. The documentation contains a guide - [How to handle Crashes on startup](HowTo-Handle-Crashes-On-Startup) with an example on how to do that. - - More background information on this topic can be found in the following blog post by Landon Fuller, the - developer of [PLCrashReporter](https://www.plcrashreporter.org), about writing reliable and - safe crash reporting: [Reliable Crash Reporting](http://goo.gl/WvTBR) - - @warning If you start the app with the Xcode debugger attached, detecting crashes will _NOT_ be enabled! - */ - -@interface BITCrashManager : BITHockeyBaseManager - - -///----------------------------------------------------------------------------- -/// @name Configuration -///----------------------------------------------------------------------------- - -/** Set the default status of the Crash Manager - - Defines if the crash reporting feature should be disabled, ask the user before - sending each crash report or send crash reportings automatically without - asking. - - The default value is `BITCrashManagerStatusAlwaysAsk`. The user can switch to - `BITCrashManagerStatusAutoSend` by choosing "Always" in the dialog (since - `showAlwaysButton` default is _YES_). - - The current value is always stored in User Defaults with the key - `BITCrashManagerStatus`. - - If you intend to implement a user setting to let them enable or disable - crash reporting, this delegate should be used to return that value. You also - have to make sure the new value is stored in the UserDefaults with the key - `BITCrashManagerStatus`. - - @see BITCrashManagerStatus - @see showAlwaysButton - */ -@property (nonatomic, assign) BITCrashManagerStatus crashManagerStatus; - - -/** - * Trap fatal signals via a Mach exception server. - * - * By default the SDK is using the safe and proven in-process BSD Signals for catching crashes. - * This option provides an option to enable catching fatal signals via a Mach exception server - * instead. - * - * We strongly advice _NOT_ to enable Mach exception handler in release versions of your apps! - * - * Default: _NO_ - * - * @warning The Mach exception handler executes in-process, and will interfere with debuggers when - * they attempt to suspend all active threads (which will include the Mach exception handler). - * Mach-based handling should _NOT_ be used when a debugger is attached. The SDK will not - * enabled catching exceptions if the app is started with the debugger running. If you attach - * the debugger during runtime, this may cause issues the Mach exception handler is enabled! - * @see isDebuggerAttached - */ -@property (nonatomic, assign, getter=isMachExceptionHandlerEnabled) BOOL enableMachExceptionHandler; - - -/** - * Enable on device symbolication for system symbols - * - * By default, the SDK does not symbolicate on the device, since this can - * take a few seconds at each crash. Also note that symbolication on the - * device might not be able to retrieve all symbols. - * - * Enable if you want to analyze crashes on unreleased OS versions. - * - * Default: _NO_ - */ -@property (nonatomic, assign, getter=isOnDeviceSymbolicationEnabled) BOOL enableOnDeviceSymbolication; - - -/** - * EXPERIMENTAL: Enable heuristics to detect the app not terminating cleanly - * - * This allows it to get a crash report if the app got killed while being in the foreground - * because of now of the following reasons: - * - The main thread was blocked for too long - * - The app took too long to start up - * - The app tried to allocate too much memory. If iOS did send a memory warning before killing the app because of this reason, `didReceiveMemoryWarningInLastSession` returns `YES`. - * - Permitted background duration if main thread is running in an endless loop - * - App failed to resume in time if main thread is running in an endless loop - * - If `enableMachExceptionHandler` is not activated, crashed due to stackoverflow will also be reported - * - * The following kills can _NOT_ be detected: - * - Terminating the app takes too long - * - Permitted background duration too long for all other cases - * - App failed to resume in time for all other cases - * - possibly more cases - * - * Crash reports triggered by this mechanisms do _NOT_ contain any stack traces since the time of the kill - * cannot be intercepted and hence no stack trace of the time of the kill event can't be gathered. - * - * The heuristic is implemented as follows: - * If the app never gets a `UIApplicationDidEnterBackgroundNotification` or `UIApplicationWillTerminateNotification` - * notification, PLCrashReporter doesn't detect a crash itself, and the app starts up again, it is assumed that - * the app got either killed by iOS while being in foreground or a crash occured that couldn't be detected. - * - * Default: _NO_ - * - * @warning This is a heuristic and it _MAY_ report false positives! It has been tested with iOS 6.1 and iOS 7. - * Depending on Apple changing notification events, new iOS version may cause more false positives! - * - * @see lastSessionCrashDetails - * @see didReceiveMemoryWarningInLastSession - * @see `BITCrashManagerDelegate considerAppNotTerminatedCleanlyReportForCrashManager:` - * @see [Apple Technical Note TN2151](https://developer.apple.com/library/ios/technotes/tn2151/_index.html) - * @see [Apple Technical Q&A QA1693](https://developer.apple.com/library/ios/qa/qa1693/_index.html) - */ -@property (nonatomic, assign, getter = isAppNotTerminatingCleanlyDetectionEnabled) BOOL enableAppNotTerminatingCleanlyDetection; - - -/** - * Set the callbacks that will be executed prior to program termination after a crash has occurred - * - * PLCrashReporter provides support for executing an application specified function in the context - * of the crash reporter's signal handler, after the crash report has been written to disk. - * - * Writing code intended for execution inside of a signal handler is exceptionally difficult, and is _NOT_ recommended! - * - * _Program Flow and Signal Handlers_ - * - * When the signal handler is called the normal flow of the program is interrupted, and your program is an unknown state. Locks may be held, the heap may be corrupt (or in the process of being updated), and your signal handler may invoke a function that was being executed at the time of the signal. This may result in deadlocks, data corruption, and program termination. - * - * _Async-Safe Functions_ - * - * A subset of functions are defined to be async-safe by the OS, and are safely callable from within a signal handler. If you do implement a custom post-crash handler, it must be async-safe. A table of POSIX-defined async-safe functions and additional information is available from the [CERT programming guide - SIG30-C](https://www.securecoding.cert.org/confluence/display/seccode/SIG30-C.+Call+only+asynchronous-safe+functions+within+signal+handlers). - * - * Most notably, the Objective-C runtime itself is not async-safe, and Objective-C may not be used within a signal handler. - * - * Documentation taken from PLCrashReporter: https://www.plcrashreporter.org/documentation/api/v1.2-rc2/async_safety.html - * - * @see BITCrashManagerPostCrashSignalCallback - * @see BITCrashManagerCallbacks - * - * @param callbacks A pointer to an initialized PLCrashReporterCallback structure, see https://www.plcrashreporter.org/documentation/api/v1.2-rc2/struct_p_l_crash_reporter_callbacks.html - */ -- (void)setCrashCallbacks: (BITCrashManagerCallbacks *) callbacks; - - -/** - Flag that determines if an "Always" option should be shown - - If enabled the crash reporting alert will also present an "Always" option, so - the user doesn't have to approve every single crash over and over again. - - If If `crashManagerStatus` is set to `BITCrashManagerStatusAutoSend`, this property - has no effect, since no alert will be presented. - - Default: _YES_ - - @see crashManagerStatus - */ -@property (nonatomic, assign, getter=shouldShowAlwaysButton) BOOL showAlwaysButton; - - -///----------------------------------------------------------------------------- -/// @name Crash Meta Information -///----------------------------------------------------------------------------- - -/** - Indicates if the app crash in the previous session - - Use this on startup, to check if the app starts the first time after it crashed - previously. You can use this also to disable specific events, like asking - the user to rate your app. - - @warning This property only has a correct value, once `[BITHockeyManager startManager]` was - invoked! - - @see lastSessionCrashDetails - */ -@property (nonatomic, readonly) BOOL didCrashInLastSession; - -/** - Provides an interface to pass user input from a custom alert to a crash report - - @param userInput Defines the users action wether to send, always send, or not to send the crash report. - @param userProvidedMetaData The content of this optional BITCrashMetaData instance will be attached to the crash report and allows to ask the user for e.g. additional comments or info. - - @return Returns YES if the input is a valid option and successfully triggered further processing of the crash report - - @see BITCrashManagerUserInput - @see BITCrashMetaData - */ -- (BOOL)handleUserInput:(BITCrashManagerUserInput)userInput withUserProvidedMetaData:(BITCrashMetaData *)userProvidedMetaData; - -/** - Lets you set a custom block which handles showing a custom UI and asking the user - whether he wants to send the crash report. - - This replaces the default alert the SDK would show! - - You can use this to present any kind of user interface which asks the user for additional information, - e.g. what they did in the app before the app crashed. - - In addition to this you should always ask your users if they agree to send crash reports, send them - always or not and return the result when calling `handleUserInput:withUserProvidedCrashDescription`. - - @param alertViewHandler A block that is responsible for loading, presenting and and dismissing your custom user interface which prompts the user if he wants to send crash reports. The block is also responsible for triggering further processing of the crash reports. - - @warning Block needs to call the `[BITCrashManager handleUserInput:withUserProvidedMetaData:]` method! - - @warning This needs to be set before calling `[BITHockeyManager startManager]`! - */ -- (void)setAlertViewHandler:(BITCustomAlertViewHandler)alertViewHandler; - -/** - * Provides details about the crash that occured in the last app session - */ -@property (nonatomic, readonly) BITCrashDetails *lastSessionCrashDetails; - - -/** - Indicates if the app did receive a low memory warning in the last session - - It may happen that low memory warning where send but couldn't be logged, since iOS - killed the app before updating the flag in the filesystem did complete. - - This property may be true in case of low memory kills, but it doesn't have to be! Apps - can also be killed without the app ever receiving a low memory warning. - - Also the app could have received a low memory warning, but the reason for being killed was - actually different. - - @warning This property only has a correct value, once `[BITHockeyManager startManager]` was - invoked! - - @see enableAppNotTerminatingCleanlyDetection - @see lastSessionCrashDetails - */ -@property (nonatomic, readonly) BOOL didReceiveMemoryWarningInLastSession; - - -/** - Provides the time between startup and crash in seconds - - Use this in together with `didCrashInLastSession` to detect if the app crashed very - early after startup. This can be used to delay app initialization until the crash - report has been sent to the server or if you want to do any other actions like - cleaning up some cache data etc. - - Note that sending a crash reports starts as early as 1.5 seconds after the application - did finish launching! - - The `BITCrashManagerDelegate` protocol provides some delegates to inform if sending - a crash report was finished successfully, ended in error or was cancelled by the user. - - *Default*: _-1_ - @see didCrashInLastSession - @see BITCrashManagerDelegate - */ -@property (nonatomic, readonly) NSTimeInterval timeintervalCrashInLastSessionOccured; - - -///----------------------------------------------------------------------------- -/// @name Helper -///----------------------------------------------------------------------------- - -/** - * Detect if a debugger is attached to the app process - * - * This is only invoked once on app startup and can not detect if the debugger is being - * attached during runtime! - * - * @return BOOL if the debugger is attached on app startup - */ -- (BOOL)isDebuggerAttached; - - -/** - * Lets the app crash for easy testing of the SDK - * - * The best way to use this is to trigger the crash with a button action. - * - * Make sure not to let the app crash in `applicationDidFinishLaunching` or any other - * startup method! Since otherwise the app would crash before the SDK could process it. - * - * Note that our SDK provides support for handling crashes that happen early on startup. - * Check the documentation for more information on how to use this. - * - * If the SDK detects an App Store environment, it will _NOT_ cause the app to crash! - */ -- (void)generateTestCrash; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashManagerDelegate.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashManagerDelegate.h deleted file mode 100644 index ab4d7b5aa4..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashManagerDelegate.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@class BITCrashManager; -@class BITHockeyAttachment; - -/** - The `BITCrashManagerDelegate` formal protocol defines methods further configuring - the behaviour of `BITCrashManager`. - */ - -@protocol BITCrashManagerDelegate - -@optional - - -///----------------------------------------------------------------------------- -/// @name Additional meta data -///----------------------------------------------------------------------------- - -/** Return any log string based data the crash report being processed should contain - - @param crashManager The `BITCrashManager` instance invoking this delegate - @see attachmentForCrashManager: - @see userNameForCrashManager: - @see userEmailForCrashManager: - */ --(NSString *)applicationLogForCrashManager:(BITCrashManager *)crashManager; - - -/** Return a BITHockeyAttachment object providing an NSData object the crash report - being processed should contain - - Please limit your attachments to reasonable files to avoid high traffic costs for your users. - - Example implementation: - - - (BITHockeyAttachment *)attachmentForCrashManager:(BITCrashManager *)crashManager { - NSData *data = [NSData dataWithContentsOfURL:@"mydatafile"]; - - BITHockeyAttachment *attachment = [[BITHockeyAttachment alloc] initWithFilename:@"myfile.data" - hockeyAttachmentData:data - contentType:@"'application/octet-stream"]; - return attachment; - } - - @param crashManager The `BITCrashManager` instance invoking this delegate - @see BITHockeyAttachment - @see applicationLogForCrashManager: - @see userNameForCrashManager: - @see userEmailForCrashManager: - */ --(BITHockeyAttachment *)attachmentForCrashManager:(BITCrashManager *)crashManager; - - - -/** Return the user name or userid that should be send along each crash report - - @param crashManager The `BITCrashManager` instance invoking this delegate - @see applicationLogForCrashManager: - @see attachmentForCrashManager: - @see userEmailForCrashManager: - @deprecated Please use `BITHockeyManagerDelegate userNameForHockeyManager:componentManager:` instead - @warning When returning a non nil value, crash reports are not anonymous any - more and the alerts will not show the "anonymous" word! - */ --(NSString *)userNameForCrashManager:(BITCrashManager *)crashManager DEPRECATED_ATTRIBUTE; - - - -/** Return the users email address that should be send along each crash report - - @param crashManager The `BITCrashManager` instance invoking this delegate - @see applicationLogForCrashManager: - @see attachmentForCrashManager: - @see userNameForCrashManager: - @deprecated Please use `BITHockeyManagerDelegate userEmailForHockeyManager:componentManager:` instead - @warning When returning a non nil value, crash reports are not anonymous any - more and the alerts will not show the "anonymous" word! - */ --(NSString *)userEmailForCrashManager:(BITCrashManager *)crashManager DEPRECATED_ATTRIBUTE; - - - -///----------------------------------------------------------------------------- -/// @name Alert -///----------------------------------------------------------------------------- - -/** Invoked before the user is asked to send a crash report, so you can do additional actions. - E.g. to make sure not to ask the user for an app rating :) - - @param crashManager The `BITCrashManager` instance invoking this delegate - */ --(void)crashManagerWillShowSubmitCrashReportAlert:(BITCrashManager *)crashManager; - - -/** Invoked after the user did choose _NOT_ to send a crash in the alert - - @param crashManager The `BITCrashManager` instance invoking this delegate - */ --(void)crashManagerWillCancelSendingCrashReport:(BITCrashManager *)crashManager; - - -/** Invoked after the user did choose to send crashes always in the alert - - @param crashManager The `BITCrashManager` instance invoking this delegate - */ --(void)crashManagerWillSendCrashReportsAlways:(BITCrashManager *)crashManager; - - -///----------------------------------------------------------------------------- -/// @name Networking -///----------------------------------------------------------------------------- - -/** Invoked right before sending crash reports will start - - @param crashManager The `BITCrashManager` instance invoking this delegate - */ -- (void)crashManagerWillSendCrashReport:(BITCrashManager *)crashManager; - -/** Invoked after sending crash reports failed - - @param crashManager The `BITCrashManager` instance invoking this delegate - @param error The error returned from the NSURLConnection call or `kBITCrashErrorDomain` - with reason of type `BITCrashErrorReason`. - */ -- (void)crashManager:(BITCrashManager *)crashManager didFailWithError:(NSError *)error; - -/** Invoked after sending crash reports succeeded - - @param crashManager The `BITCrashManager` instance invoking this delegate - */ -- (void)crashManagerDidFinishSendingCrashReport:(BITCrashManager *)crashManager; - -///----------------------------------------------------------------------------- -/// @name Experimental -///----------------------------------------------------------------------------- - -/** Define if a report should be considered as a crash report - - Due to the risk, that these reports may be false positives, this delegates allows the - developer to influence which reports detected by the heuristic should actually be reported. - - The developer can use the following property to get more information about the crash scenario: - - `[BITCrashManager didReceiveMemoryWarningInLastSession]`: Did the app receive a low memory warning - - This allows only reports to be considered where at least one low memory warning notification was - received by the app to reduce to possibility of having false positives. - - @param crashManager The `BITCrashManager` instance invoking this delegate - @return `YES` if the heuristic based detected report should be reported, otherwise `NO` - @see `[BITCrashManager didReceiveMemoryWarningInLastSession]` - */ --(BOOL)considerAppNotTerminatedCleanlyReportForCrashManager:(BITCrashManager *)crashManager; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashMetaData.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashMetaData.h deleted file mode 100644 index a7c5a96c0c..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITCrashMetaData.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - - -/** - * This class provides properties that can be attached to a crash report via a custom alert view flow - */ -@interface BITCrashMetaData : NSObject - -/** - * User provided description that should be attached to the crash report as plain text - */ -@property (nonatomic, copy) NSString *userDescription; - -/** - * User name that should be attached to the crash report - */ -@property (nonatomic, copy) NSString *userName; - -/** - * User email that should be attached to the crash report - */ -@property (nonatomic, copy) NSString *userEmail; - -/** - * User ID that should be attached to the crash report - */ -@property (nonatomic, copy) NSString *userID; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackActivity.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackActivity.h deleted file mode 100644 index f9289c8df0..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackActivity.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import "BITFeedbackComposeViewControllerDelegate.h" - -/** - UIActivity subclass allowing to use the feedback interface to share content with the developer - - This activity can be added into an UIActivityViewController and it will use the activity data - objects to prefill the content of `BITFeedbackComposeViewController`. - - This can be useful if you present some data that users can not only share but also - report back to the developer because they have some problems, e.g. webcams not working - any more. - - The activity provide a default title and image that can be further customized - via `customActivityImage` and `customActivityTitle`. - - */ - -@interface BITFeedbackActivity : UIActivity - -///----------------------------------------------------------------------------- -/// @name BITFeedbackActivity customisation -///----------------------------------------------------------------------------- - - -/** - Define the image shown when using `BITFeedbackActivity` - - If not set a default icon is being used. - - @see customActivityTitle - */ -@property (nonatomic, strong) UIImage *customActivityImage; - - -/** - Define the title shown when using `BITFeedbackActivity` - - If not set, a default string is shown by using the apps name - and adding the localized string "Feedback" to it. - - @see customActivityImage - */ -@property (nonatomic, strong) NSString *customActivityTitle; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackComposeViewController.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackComposeViewController.h deleted file mode 100644 index 9fff2fd831..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackComposeViewController.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - - -#import - -#import "BITFeedbackComposeViewControllerDelegate.h" - -/** - View controller allowing the user to write and send new feedback - - To add this view controller to your own app and push it onto a navigation stack, - don't create the intance yourself, but use the following code to get a correct instance: - - [[BITHockeyManager sharedHockeyManager].feedbackManager feedbackComposeViewController] - - To show it modally, use the following code instead: - - [[BITHockeyManager sharedHockeyManager].feedbackManager showFeedbackComposeView] - - */ - -@interface BITFeedbackComposeViewController : UIViewController - - -///----------------------------------------------------------------------------- -/// @name Delegate -///----------------------------------------------------------------------------- - - -/** - Sets the `BITFeedbackComposeViewControllerDelegate` delegate. - - The delegate is automatically set by using `[BITHockeyManager setDelegate:]`. You - should not need to set this delegate individually. - - @see `[BITHockeyManager setDelegate:`] - */ -@property (nonatomic, weak) id delegate; - - -///----------------------------------------------------------------------------- -/// @name Presetting content -///----------------------------------------------------------------------------- - - -/** - An array of data objects that should be used to prefill the compose view content - - The follwoing data object classes are currently supported: - - NSString - - NSURL - - UIImage - - NSData - - `BITHockeyAttachment` - - These are automatically concatenated to one text string, while any images and NSData - objects are added as attachments to the feedback. - - @param items Array of data objects to prefill the feedback text message. - */ -- (void)prepareWithItems:(NSArray *)items; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackComposeViewControllerDelegate.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackComposeViewControllerDelegate.h deleted file mode 100644 index 58438d4fef..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackComposeViewControllerDelegate.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -/** - * The users action when composing a message - */ -typedef NS_ENUM(NSUInteger, BITFeedbackComposeResult) { - /** - * user hit cancel - */ - BITFeedbackComposeResultCancelled, - /** - * user hit submit - */ - BITFeedbackComposeResultSubmitted, -}; - -@class BITFeedbackComposeViewController; - -/** - * The `BITFeedbackComposeViewControllerDelegate` formal protocol defines methods further configuring - * the behaviour of `BITFeedbackComposeViewController`. - */ - -@protocol BITFeedbackComposeViewControllerDelegate - -@optional - -///----------------------------------------------------------------------------- -/// @name View Controller Management -///----------------------------------------------------------------------------- - -/** - * Invoked once the compose screen is finished via send or cancel - * - * If this is implemented, it's the responsibility of this method to dismiss the presented - * `BITFeedbackComposeViewController` - * - * @param composeViewController The `BITFeedbackComposeViewController` instance invoking this delegate - * @param composeResult The user action the lead to closing the compose view - */ -- (void)feedbackComposeViewController:(BITFeedbackComposeViewController *)composeViewController - didFinishWithResult:(BITFeedbackComposeResult) composeResult; - -#pragma mark - Deprecated methods - -/** - * This method is deprecated. If feedbackComposeViewController:didFinishWithResult: is implemented, this will not be called - * - * @param composeViewController The `BITFeedbackComposeViewController` instance invoking this delegate - */ -- (void)feedbackComposeViewControllerDidFinish:(BITFeedbackComposeViewController *)composeViewController __attribute__((deprecated("Use feedbackComposeViewController:didFinishWithResult: instead"))); -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackListViewController.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackListViewController.h deleted file mode 100644 index 8ee2b064d9..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackListViewController.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - - -#import -#import - -#import "BITHockeyBaseViewController.h" - -/** - View controller providing a default interface to manage feedback - - The message list interface contains options to locally delete single messages - by swiping over them, or deleting all messages. This will not delete the messages - on the server though! - - It is also integrates actions to invoke the user interface to compose a new messages, - reload the list content from the server and changing the users name or email if these - are allowed to be set. - - To add this view controller to your own app and push it onto a navigation stack, - don't create the intance yourself, but use the following code to get a correct instance: - - [[BITHockeyManager sharedHockeyManager].feedbackManager feedbackListViewController:NO] - - To show it modally, use the following code instead: - - [[BITHockeyManager sharedHockeyManager].feedbackManager feedbackListViewController:YES] - - This ensures that the presentation on iOS 6 and iOS 7 will use the corret design on each OS Version. - */ - -@interface BITFeedbackListViewController : BITHockeyBaseViewController { -} - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackManager.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackManager.h deleted file mode 100644 index c9fe10e383..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackManager.h +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - - -#import - -#import "BITHockeyBaseManager.h" -#import "BITFeedbackListViewController.h" -#import "BITFeedbackComposeViewController.h" - - -// Notification message which tells that loading messages finished -#define BITHockeyFeedbackMessagesLoadingStarted @"BITHockeyFeedbackMessagesLoadingStarted" - -// Notification message which tells that loading messages finished -#define BITHockeyFeedbackMessagesLoadingFinished @"BITHockeyFeedbackMessagesLoadingFinished" - - -/** - * Defines behavior of the user data field - */ -typedef NS_ENUM(NSInteger, BITFeedbackUserDataElement) { - /** - * don't ask for this user data element at all - */ - BITFeedbackUserDataElementDontShow = 0, - /** - * the user may provide it, but does not have to - */ - BITFeedbackUserDataElementOptional = 1, - /** - * the user has to provide this to continue - */ - BITFeedbackUserDataElementRequired = 2 -}; - -/** - * Available modes for opening the feedback compose interface with a screenshot attached - */ -typedef NS_ENUM(NSInteger, BITFeedbackObservationMode) { - /** - * No SDK provided trigger is active. - */ - BITFeedbackObservationNone = 0, - /** - * Triggers when the user takes a screenshot. This will grab the latest image from the camera roll. Requires iOS 7 or later! - */ - BITFeedbackObservationModeOnScreenshot = 1, - /** - * Triggers when the user taps with three fingers on the screen. - */ - BITFeedbackObservationModeThreeFingerTap = 2 -}; - - -@class BITFeedbackMessage; -@protocol BITFeedbackManagerDelegate; - -/** - The feedback module. - - This is the HockeySDK module for letting your users communicate directly with you via - the app and an integrated user interface. It provides a single threaded - discussion with a user running your app. - - You should never create your own instance of `BITFeedbackManager` but use the one provided - by the `[BITHockeyManager sharedHockeyManager]`: - - [BITHockeyManager sharedHockeyManager].feedbackManager - - The user interface provides a list view than can be presented modally using - `[BITFeedbackManager showFeedbackListView]` or adding - `[BITFeedbackManager feedbackListViewController:]` to push onto a navigation stack. - This list integrates all features to load new messages, write new messages, view messages - and ask the user for additional (optional) data like name and email. - - If the user provides the email address, all responses from the server will also be sent - to the user via email and the user is also able to respond directly via email, too. - - The message list interface also contains options to locally delete single messages - by swiping over them, or deleting all messages. This will not delete the messages - on the server, though! - - It also integrates actions to invoke the user interface to compose a new message, - reload the list content from the server and change the users name or email if these - are allowed to be set. - - It is also possible to invoke the user interface to compose a new message in your - own code, by calling `[BITFeedbackManager showFeedbackComposeView]` modally or adding - `[BITFeedbackManager feedbackComposeViewController]` to push onto a navigation stack. - - If new messages are written while the device is offline, the SDK automatically retries to - send them once the app starts again or gets active again, or if the notification - `BITHockeyNetworkDidBecomeReachableNotification` is fired. - - A third option is to include the `BITFeedbackActivity` into an UIActivityViewController. - This can be useful if you present some data that users can not only share but also - report back to the developer because they have some problems, e.g. webcams not working - any more. The activity provides a default title and image that can also be customized. - - New messages are automatically loaded on startup, when the app becomes active again - or when the notification `BITHockeyNetworkDidBecomeReachableNotification` is fired. This - only happens if the user ever did initiate a conversation by writing the first - feedback message. - - Implementing the `BITFeedbackManagerDelegate` protocol will notify your app when a new - message was received from the server. The `BITFeedbackComposeViewControllerDelegate` - protocol informs your app about events related to sending feedback messages. - - */ - -@interface BITFeedbackManager : BITHockeyBaseManager - -///----------------------------------------------------------------------------- -/// @name General settings -///----------------------------------------------------------------------------- - - -/** - Define if a name has to be provided by the user when providing feedback - - - `BITFeedbackUserDataElementDontShow`: Don't ask for this user data element at all - - `BITFeedbackUserDataElementOptional`: The user may provide it, but does not have to - - `BITFeedbackUserDataElementRequired`: The user has to provide this to continue - - The default value is `BITFeedbackUserDataElementOptional`. - - @warning If you provide a non nil value for the `BITFeedbackManager` class via - `[BITHockeyManagerDelegate userNameForHockeyManager:componentManager:]` then this - property will automatically be set to `BITFeedbackUserDataElementDontShow` - - @see BITFeedbackUserDataElement - @see requireUserEmail - @see `[BITHockeyManagerDelegate userNameForHockeyManager:componentManager:]` - */ -@property (nonatomic, readwrite) BITFeedbackUserDataElement requireUserName; - - -/** - Define if an email address has to be provided by the user when providing feedback - - If the user provides the email address, all responses from the server will also be send - to the user via email and the user is also able to respond directly via email too. - - - `BITFeedbackUserDataElementDontShow`: Don't ask for this user data element at all - - `BITFeedbackUserDataElementOptional`: The user may provide it, but does not have to - - `BITFeedbackUserDataElementRequired`: The user has to provide this to continue - - The default value is `BITFeedbackUserDataElementOptional`. - - @warning If you provide a non nil value for the `BITFeedbackManager` class via - `[BITHockeyManagerDelegate userEmailForHockeyManager:componentManager:]` then this - property will automatically be set to `BITFeedbackUserDataElementDontShow` - - @see BITFeedbackUserDataElement - @see requireUserName - @see `[BITHockeyManagerDelegate userEmailForHockeyManager:componentManager:]` - */ -@property (nonatomic, readwrite) BITFeedbackUserDataElement requireUserEmail; - - -/** - Indicates if an alert should be shown when new messages have arrived - - This lets the user view the new feedback by choosing the appropriate option - in the alert sheet, and the `BITFeedbackListViewController` will be shown. - - The alert is only shown, if the newest message didn't originate from the current user. - This requires the users email address to be present! The optional userid property - cannot be used, because users could also answer via email and then this information - is not available. - - Default is `YES` - @see feedbackListViewController: - @see requireUserEmail - @see `[BITHockeyManagerDelegate userEmailForHockeyManager:componentManager:]` - */ -@property (nonatomic, readwrite) BOOL showAlertOnIncomingMessages; - - -/** - Define the trigger that opens the feedback composer and attaches a screenshot - - The following modes are available: - - - `BITFeedbackObservationNone`: No SDK based trigger is active. You can implement your - own trigger and then call `[[BITHockeyManager sharedHockeyManager].feedbackManager showFeedbackComposeViewWithGeneratedScreenshot];` to handle your custom events - that should trigger this. - - `BITFeedbackObservationModeOnScreenshot`: Triggers when the user takes a screenshot. - This will grab the latest image from the camera roll. Requires iOS 7 or later! - - `BITFeedbackObservationModeThreeFingerTap`: Triggers when the user taps on the screen for three seconds with three fingers. - - Default is `BITFeedbackObservationNone` - - @see showFeedbackComposeViewWithGeneratedScreenshot - */ -@property (nonatomic, readwrite) BITFeedbackObservationMode feedbackObservationMode; - - -///----------------------------------------------------------------------------- -/// @name User Interface -///----------------------------------------------------------------------------- - - -/** - Indicates if a forced user data UI presentation is shown modal - - If `requireUserName` and/or `requireUserEmail` are enabled, the first presentation - of `feedbackListViewController:` and subsequent `feedbackComposeViewController:` - will automatically present a UI that lets the user provide this data and compose - a message. By default this is shown (since SDK 3.1) as a modal sheet. - - If you want the SDK to push this UI onto the navigation stack in this specific scenario, - then change the property to `NO`. - - @warning If you are presenting the `BITFeedbackListViewController` in a popover, this property should not be changed! - - Default is `YES` - @see requireUserName - @see requireUserEmail - @see showFeedbackComposeView - @see feedbackComposeViewController - @see showFeedbackListView - @see feedbackListViewController: - */ -@property (nonatomic, readwrite) BOOL showFirstRequiredPresentationModal; - - -/** - Return a screenshot UIImage intance from the current visiable screen - - @return UIImage instance containing a screenshot of the current screen - */ -- (UIImage *)screenshot; - - -/** - Present the modal feedback list user interface. - */ -- (void)showFeedbackListView; - - -/** - Create an feedback list view - - @param modal Return a view ready for modal presentation with integrated navigation bar - @return `BITFeedbackListViewController` The feedback list view controller, - e.g. to push it onto a navigation stack. - */ -- (BITFeedbackListViewController *)feedbackListViewController:(BOOL)modal; - - -/** - Present the modal feedback compose message user interface. - */ -- (void)showFeedbackComposeView; - -/** - Present the modal feedback compose message user interface with the items given. - - All NSString-Content in the array will be concatenated and result in the message, - while all UIImage and NSData-instances will be turned into attachments. - - @param items an NSArray with objects that should be attached - @see `[BITFeedbackComposeViewController prepareWithItems:]` - */ -- (void)showFeedbackComposeViewWithPreparedItems:(NSArray *)items; - -/** - Presents a modal feedback compose interface with a screenshot attached which is taken at the time of calling this method. - - This should be used when your own trigger fires. The following code should be used: - - [[BITHockeyManager sharedHockeyManager].feedbackManager showFeedbackComposeViewWithGeneratedScreenshot]; - - @see feedbackObservationMode - */ -- (void)showFeedbackComposeViewWithGeneratedScreenshot; - - -/** - Create a feedback compose view - - Example to show a modal feedback compose UI with prefilled text - - BITFeedbackComposeViewController *feedbackCompose = [[BITHockeyManager sharedHockeyManager].feedbackManager feedbackComposeViewController]; - - [feedbackCompose prepareWithItems: - @[@"Adding some example default text and also adding a link.", - [NSURL URLWithString:@"http://hockeayyp.net/"]]]; - - UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:feedbackCompose]; - navController.modalPresentationStyle = UIModalPresentationFormSheet; - [self presentViewController:navController animated:YES completion:nil]; - - @return `BITFeedbackComposeViewController` The compose feedback view controller, - e.g. to push it onto a navigation stack. - */ -- (BITFeedbackComposeViewController *)feedbackComposeViewController; - - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackManagerDelegate.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackManagerDelegate.h deleted file mode 100644 index 61b4c39652..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITFeedbackManagerDelegate.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Author: Stephan Diederich - * - * Copyright (c) 2013-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@class BITFeedbackManager; -@protocol BITFeedbackComposeViewControllerDelegate; - -/** - * Delegate protocol which is notified about changes in the feedbackManager - * @TODO - * * move shouldShowUpdateAlert from feedbackManager here - */ -@protocol BITFeedbackManagerDelegate - -@optional - -/** - * can be implemented to know when new feedback from the server arrived - * - * @param feedbackManager The feedbackManager which did detect the new messages - */ -- (void) feedbackManagerDidReceiveNewFeedback:(BITFeedbackManager*) feedbackManager; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyAttachment.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyAttachment.h deleted file mode 100644 index ee579e050c..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyAttachment.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -/** - Provides support to add binary attachments to crash reports and feedback messages - - This is used by `[BITCrashManagerDelegate attachmentForCrashManager:]`, - `[BITFeedbackComposeViewController prepareWithItems:]` and - `[BITFeedbackManager showFeedbackComposeViewWithPreparedItems:]` - */ -@interface BITHockeyAttachment : NSObject - -/** - The filename the attachment should get - */ -@property (nonatomic, readonly, strong) NSString *filename; - -/** - The attachment data as NSData object - */ -@property (nonatomic, readonly, strong) NSData *hockeyAttachmentData; - -/** - The content type of your data as MIME type - */ -@property (nonatomic, readonly, strong) NSString *contentType; - -/** - Create an BITHockeyAttachment instance with a given filename and NSData object - - @param filename The filename the attachment should get. If nil will get a automatically generated filename - @param hockeyAttachmentData The attachment data as NSData. The instance will be ignore if this is set to nil! - @param contentType The content type of your data as MIME type. If nil will be set to "application/octet-stream" - - @return An instsance of BITHockeyAttachment. - */ -- (instancetype)initWithFilename:(NSString *)filename - hockeyAttachmentData:(NSData *)hockeyAttachmentData - contentType:(NSString *)contentType; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyBaseManager.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyBaseManager.h deleted file mode 100644 index ed5284d4d2..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyBaseManager.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import -#import - - -/** - The internal superclass for all component managers - - */ - -@interface BITHockeyBaseManager : NSObject - -///----------------------------------------------------------------------------- -/// @name Modules -///----------------------------------------------------------------------------- - - -/** - Defines the server URL to send data to or request data from - - By default this is set to the HockeyApp servers and there rarely should be a - need to modify that. - */ -@property (nonatomic, copy) NSString *serverURL; - - -///----------------------------------------------------------------------------- -/// @name User Interface -///----------------------------------------------------------------------------- - -/** - The UIBarStyle of the update user interface navigation bar. - - Default is UIBarStyleBlackOpaque - @see navigationBarTintColor - */ -@property (nonatomic, assign) UIBarStyle barStyle; - -/** - The navigationbar tint color of the update user interface navigation bar. - - The navigationBarTintColor is used by default, you can either overwrite it `navigationBarTintColor` - or define another `barStyle` instead. - - Default is RGB(25, 25, 25) - @see barStyle - */ -@property (nonatomic, strong) UIColor *navigationBarTintColor; - -/** - The UIModalPresentationStyle for showing the update user interface when invoked - with the update alert. - */ -@property (nonatomic, assign) UIModalPresentationStyle modalPresentationStyle; - - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyBaseViewController.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyBaseViewController.h deleted file mode 100644 index d7701036be..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyBaseViewController.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@interface BITHockeyBaseViewController : UITableViewController - -@property (nonatomic, readwrite) BOOL modalAnimated; - -- (instancetype)initWithModalStyle:(BOOL)modal; -- (instancetype)initWithStyle:(UITableViewStyle)style modal:(BOOL)modal; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyManager.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyManager.h deleted file mode 100644 index 7a8a5b80fa..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyManager.h +++ /dev/null @@ -1,497 +0,0 @@ -/* - * Author: Andreas Linde - * Kent Sutherland - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import -#import - - -@protocol BITHockeyManagerDelegate; - -@class BITHockeyBaseManager; -@class BITCrashManager; -@class BITUpdateManager; -@class BITStoreUpdateManager; -@class BITFeedbackManager; -@class BITAuthenticator; - -/** - The HockeySDK manager. Responsible for setup and management of all components - - This is the principal SDK class. It represents the entry point for the HockeySDK. The main promises of the class are initializing the SDK modules, providing access to global properties and to all modules. Initialization is divided into several distinct phases: - - 1. Setup the [HockeyApp](http://hockeyapp.net/) app identifier and the optional delegate: This is the least required information on setting up the SDK and using it. It does some simple validation of the app identifier and checks if the app is running from the App Store or not. - 2. Provides access to the SDK modules `BITCrashManager`, `BITUpdateManager`, and `BITFeedbackManager`. This way all modules can be further configured to personal needs, if the defaults don't fit the requirements. - 3. Configure each module. - 4. Start up all modules. - - The SDK is optimized to defer everything possible to a later time while making sure e.g. crashes on startup can also be caught and each module executes other code with a delay some seconds. This ensures that applicationDidFinishLaunching will process as fast as possible and the SDK will not block the startup sequence resulting in a possible kill by the watchdog process. - - All modules do **NOT** show any user interface if the module is not activated or not integrated. - `BITCrashManager`: Shows an alert on startup asking the user if he/she agrees on sending the crash report, if `[BITCrashManager crashManagerStatus]` is set to `BITCrashManagerStatusAlwaysAsk` (default) - `BITUpdateManager`: Is automatically deactivated when the SDK detects it is running from a build distributed via the App Store. Otherwise if it is not deactivated manually, it will show an alert after startup informing the user about a pending update, if one is available. If the user then decides to view the update another screen is presented with further details and an option to install the update. - `BITFeedbackManager`: If this module is deactivated or the user interface is nowhere added into the app, this module will not do anything. It will not fetch the server for data or show any user interface. If it is integrated, activated, and the user already used it to provide feedback, it will show an alert after startup if a new answer has been received from the server with the option to view it. - - Example: - - [[BITHockeyManager sharedHockeyManager] - configureWithIdentifier:@"" - delegate:nil]; - [[BITHockeyManager sharedHockeyManager] startManager]; - - @warning The SDK is **NOT** thread safe and has to be set up on the main thread! - - @warning Most properties of all components require to be set **BEFORE** calling`startManager`! - - */ - -@interface BITHockeyManager : NSObject - -#pragma mark - Public Methods - -///----------------------------------------------------------------------------- -/// @name Initialization -///----------------------------------------------------------------------------- - -/** - Returns a shared BITHockeyManager object - - @return A singleton BITHockeyManager instance ready use - */ -+ (BITHockeyManager *)sharedHockeyManager; - - -/** - Initializes the manager with a particular app identifier - - Initialize the manager with a HockeyApp app identifier. - - [[BITHockeyManager sharedHockeyManager] - configureWithIdentifier:@""]; - - @see configureWithIdentifier:delegate: - @see configureWithBetaIdentifier:liveIdentifier:delegate: - @see startManager - @param appIdentifier The app identifier that should be used. - */ -- (void)configureWithIdentifier:(NSString *)appIdentifier; - - -/** - Initializes the manager with a particular app identifier and delegate - - Initialize the manager with a HockeyApp app identifier and assign the class that - implements the optional protocols `BITHockeyManagerDelegate`, `BITCrashManagerDelegate` or - `BITUpdateManagerDelegate`. - - [[BITHockeyManager sharedHockeyManager] - configureWithIdentifier:@"" - delegate:nil]; - - @see configureWithIdentifier: - @see configureWithBetaIdentifier:liveIdentifier:delegate: - @see startManager - @see BITHockeyManagerDelegate - @see BITCrashManagerDelegate - @see BITUpdateManagerDelegate - @see BITFeedbackManagerDelegate - @param appIdentifier The app identifier that should be used. - @param delegate `nil` or the class implementing the option protocols - */ -- (void)configureWithIdentifier:(NSString *)appIdentifier delegate:(id)delegate; - - -/** - Initializes the manager with an app identifier for beta, one for live usage and delegate - - Initialize the manager with different HockeyApp app identifiers for beta and live usage. - All modules will automatically detect if the app is running in the App Store and use - the live app identifier for that. In all other cases it will use the beta app identifier. - And also assign the class that implements the optional protocols `BITHockeyManagerDelegate`, - `BITCrashManagerDelegate` or `BITUpdateManagerDelegate` - - [[BITHockeyManager sharedHockeyManager] - configureWithBetaIdentifier:@"" - liveIdentifier:@"" - delegate:nil]; - - We recommend using one app entry on HockeyApp for your beta versions and another one for - your live versions. The reason is that you will have way more beta versions than live - versions, but on the other side get way more crash reports on the live version. Separating - them into two different app entries makes it easier to work with the data. In addition - you will likely end up having the same version number for a beta and live version which - would mix different data into the same version. Also the live version does not require - you to upload any IPA files, uploading only the dSYM package for crash reporting is - just fine. - - @see configureWithIdentifier: - @see configureWithIdentifier:delegate: - @see startManager - @see BITHockeyManagerDelegate - @see BITCrashManagerDelegate - @see BITUpdateManagerDelegate - @see BITFeedbackManagerDelegate - @param betaIdentifier The app identifier for the _non_ app store (beta) configurations - @param liveIdentifier The app identifier for the app store configurations. - @param delegate `nil` or the class implementing the optional protocols - */ -- (void)configureWithBetaIdentifier:(NSString *)betaIdentifier liveIdentifier:(NSString *)liveIdentifier delegate:(id)delegate; - - -/** - Starts the manager and runs all modules - - Call this after configuring the manager and setting up all modules. - - @see configureWithIdentifier:delegate: - @see configureWithBetaIdentifier:liveIdentifier:delegate: - */ -- (void)startManager; - - -#pragma mark - Public Properties - -///----------------------------------------------------------------------------- -/// @name Modules -///----------------------------------------------------------------------------- - - -/** - Set the delegate - - Defines the class that implements the optional protocol `BITHockeyManagerDelegate`. - - The delegate will automatically be propagated to all components. There is no need to set the delegate - for each component individually. - - @warning This property needs to be set before calling `startManager` - - @see BITHockeyManagerDelegate - @see BITCrashManagerDelegate - @see BITUpdateManagerDelegate - @see BITFeedbackManagerDelegate - */ -@property (nonatomic, weak) id delegate; - - -/** - Defines the server URL to send data to or request data from - - By default this is set to the HockeyApp servers and there rarely should be a - need to modify that. - - @warning This property needs to be set before calling `startManager` - */ -@property (nonatomic, strong) NSString *serverURL; - - -/** - Reference to the initialized BITCrashManager module - - Returns the BITCrashManager instance initialized by BITHockeyManager - - @see configureWithIdentifier:delegate: - @see configureWithBetaIdentifier:liveIdentifier:delegate: - @see startManager - @see disableCrashManager - */ -@property (nonatomic, strong, readonly) BITCrashManager *crashManager; - - -/** - Flag the determines whether the Crash Manager should be disabled - - If this flag is enabled, then crash reporting is disabled and no crashes will - be send. - - Please note that the Crash Manager instance will be initialized anyway, but crash report - handling (signal and uncaught exception handlers) will **not** be registered. - - @warning This property needs to be set before calling `startManager` - - *Default*: _NO_ - @see crashManager - */ -@property (nonatomic, getter = isCrashManagerDisabled) BOOL disableCrashManager; - - -/** - Reference to the initialized BITUpdateManager module - - Returns the BITUpdateManager instance initialized by BITHockeyManager - - @see configureWithIdentifier:delegate: - @see configureWithBetaIdentifier:liveIdentifier:delegate: - @see startManager - @see disableUpdateManager - */ -@property (nonatomic, strong, readonly) BITUpdateManager *updateManager; - - -/** - Flag the determines whether the Update Manager should be disabled - - If this flag is enabled, then checking for updates and submitting beta usage - analytics will be turned off! - - Please note that the Update Manager instance will be initialized anyway! - - @warning This property needs to be set before calling `startManager` - - *Default*: _NO_ - @see updateManager - */ -@property (nonatomic, getter = isUpdateManagerDisabled) BOOL disableUpdateManager; - - -/** - Reference to the initialized BITStoreUpdateManager module - - Returns the BITStoreUpdateManager instance initialized by BITHockeyManager - - @see configureWithIdentifier:delegate: - @see configureWithBetaIdentifier:liveIdentifier:delegate: - @see startManager - @see enableStoreUpdateManager - */ -@property (nonatomic, strong, readonly) BITStoreUpdateManager *storeUpdateManager; - - -/** - Flag the determines whether the App Store Update Manager should be enabled - - If this flag is enabled, then checking for updates when the app runs from the - app store will be turned on! - - Please note that the Store Update Manager instance will be initialized anyway! - - @warning This property needs to be set before calling `startManager` - - *Default*: _NO_ - @see storeUpdateManager - */ -@property (nonatomic, getter = isStoreUpdateManagerEnabled) BOOL enableStoreUpdateManager; - -/** - Reference to the initialized BITFeedbackManager module - - Returns the BITFeedbackManager instance initialized by BITHockeyManager - - @see configureWithIdentifier:delegate: - @see configureWithBetaIdentifier:liveIdentifier:delegate: - @see startManager - @see disableFeedbackManager - */ -@property (nonatomic, strong, readonly) BITFeedbackManager *feedbackManager; - - -/** - Flag the determines whether the Feedback Manager should be disabled - - If this flag is enabled, then letting the user give feedback and - get responses will be turned off! - - Please note that the Feedback Manager instance will be initialized anyway! - - @warning This property needs to be set before calling `startManager` - - *Default*: _NO_ - @see feedbackManager - */ -@property (nonatomic, getter = isFeedbackManagerDisabled) BOOL disableFeedbackManager; - -/** - Reference to the initialized BITAuthenticator module - - Returns the BITAuthenticator instance initialized by BITHockeyManager - - @see configureWithIdentifier:delegate: - @see configureWithBetaIdentifier:liveIdentifier:delegate: - @see startManager - */ -@property (nonatomic, strong, readonly) BITAuthenticator *authenticator; - - -///----------------------------------------------------------------------------- -/// @name Environment -///----------------------------------------------------------------------------- - -/** - Flag that determines whether the application is installed and running - from an App Store installation. - - Returns _YES_ if the app is installed and running from the App Store - Returns _NO_ if the app is installed via debug, ad-hoc or enterprise distribution - */ -@property (nonatomic, readonly, getter=isAppStoreEnvironment) BOOL appStoreEnvironment; - - -/** - Returns the app installation specific anonymous UUID - - The value returned by this method is unique and persisted per app installation - in the keychain. It is also being used in crash reports as `CrashReporter Key` - and internally when sending crash reports and feedback messages. - - This is not identical to the `[ASIdentifierManager advertisingIdentifier]` or - the `[UIDevice identifierForVendor]`! - */ -@property (nonatomic, readonly) NSString *installString; - - -///----------------------------------------------------------------------------- -/// @name Debug Logging -///----------------------------------------------------------------------------- - -/** - Flag that determines whether additional logging output should be generated - by the manager and all modules. - - This is ignored if the app is running in the App Store and reverts to the - default value in that case. - - @warning This property needs to be set before calling `startManager` - - *Default*: _NO_ - */ -@property (nonatomic, assign, getter=isDebugLogEnabled) BOOL debugLogEnabled; - - -///----------------------------------------------------------------------------- -/// @name Integration test -///----------------------------------------------------------------------------- - -/** - Pings the server with the HockeyApp app identifiers used for initialization - - Call this method once for debugging purposes to test if your SDK setup code - reaches the server successfully. - - Once invoked, check the apps page on HockeyApp for a verification. - - If you setup the SDK with a beta and live identifier, a call to both app IDs will be done. - - This call is ignored if the app is running in the App Store!. - */ -- (void)testIdentifier; - - -///----------------------------------------------------------------------------- -/// @name Additional meta data -///----------------------------------------------------------------------------- - -/** Set the userid that should used in the SDK components - - Right now this is used by the `BITCrashManager` to attach to a crash report. - `BITFeedbackManager` uses it too for assigning the user to a discussion thread. - - The value can be set at any time and will be stored in the keychain on the current - device only! To delete the value from the keychain set the value to `nil`. - - This property is optional and can be used as an alternative to the delegate. If you - want to define specific data for each component, use the delegate instead which does - overwrite the values set by this property. - - @warning When returning a non nil value, crash reports are not anonymous any more - and the crash alerts will not show the word "anonymous"! - - @warning This property needs to be set before calling `startManager` to be considered - for being added to crash reports as meta data. - - @see userName - @see userEmail - @see `[BITHockeyManagerDelegate userIDForHockeyManager:componentManager:]` - */ -@property (nonatomic, retain) NSString *userID; - - -/** Set the user name that should used in the SDK components - - Right now this is used by the `BITCrashManager` to attach to a crash report. - `BITFeedbackManager` uses it too for assigning the user to a discussion thread. - - The value can be set at any time and will be stored in the keychain on the current - device only! To delete the value from the keychain set the value to `nil`. - - This property is optional and can be used as an alternative to the delegate. If you - want to define specific data for each component, use the delegate instead which does - overwrite the values set by this property. - - @warning When returning a non nil value, crash reports are not anonymous any more - and the crash alerts will not show the word "anonymous"! - - @warning This property needs to be set before calling `startManager` to be considered - for being added to crash reports as meta data. - - @see userID - @see userEmail - @see `[BITHockeyManagerDelegate userNameForHockeyManager:componentManager:]` - */ -@property (nonatomic, retain) NSString *userName; - - -/** Set the users email address that should used in the SDK components - - Right now this is used by the `BITCrashManager` to attach to a crash report. - `BITFeedbackManager` uses it too for assigning the user to a discussion thread. - - The value can be set at any time and will be stored in the keychain on the current - device only! To delete the value from the keychain set the value to `nil`. - - This property is optional and can be used as an alternative to the delegate. If you - want to define specific data for each component, use the delegate instead which does - overwrite the values set by this property. - - @warning When returning a non nil value, crash reports are not anonymous any more - and the crash alerts will not show the word "anonymous"! - - @warning This property needs to be set before calling `startManager` to be considered - for being added to crash reports as meta data. - - @see userID - @see userName - @see `[BITHockeyManagerDelegate userEmailForHockeyManager:componentManager:]` - */ -@property (nonatomic, retain) NSString *userEmail; - - -///----------------------------------------------------------------------------- -/// @name SDK meta data -///----------------------------------------------------------------------------- - -/** - Returns the SDK Version (CFBundleShortVersionString). - */ -- (NSString *)version; - -/** - Returns the SDK Build (CFBundleVersion) as a string. - */ -- (NSString *)build; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyManagerDelegate.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyManagerDelegate.h deleted file mode 100644 index c8eeaced57..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITHockeyManagerDelegate.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import -#import "HockeySDKFeatureConfig.h" - -#if HOCKEYSDK_FEATURE_CRASH_REPORTER -#import "BITCrashManagerDelegate.h" -#endif - -#if HOCKEYSDK_FEATURE_UPDATES -#import "BITUpdateManagerDelegate.h" -#endif - -#if HOCKEYSDK_FEATURE_FEEDBACK -#import "BITFeedbackManagerDelegate.h" -#endif - -#if HOCKEYSDK_FEATURE_AUTHENTICATOR -#import "BITAuthenticator.h" -#endif - -@class BITHockeyManager; -@class BITHockeyBaseManager; - -/** - The `BITHockeyManagerDelegate` formal protocol defines methods further configuring - the behaviour of `BITHockeyManager`, as well as the delegate of the modules it manages. - */ - -@protocol BITHockeyManagerDelegate - -@optional - - -///----------------------------------------------------------------------------- -/// @name App Identifier usage -///----------------------------------------------------------------------------- - -/** - Implement to force the usage of the live identifier - - This is useful if you are e.g. distributing an enterprise app inside your company - and want to use the `liveIdentifier` for that even though it is not running from - the App Store. - - Example: - - - (BOOL)shouldUseLiveIdentifierForHockeyManager:(BITHockeyManager *)hockeyManager { - #ifdef (CONFIGURATION_AppStore) - return YES; - #endif - return NO; - } - - @param hockeyManager BITHockeyManager instance - */ -- (BOOL)shouldUseLiveIdentifierForHockeyManager:(BITHockeyManager *)hockeyManager; - - -///----------------------------------------------------------------------------- -/// @name UI presentation -///----------------------------------------------------------------------------- - - -// optional parent view controller for the feedback screen when invoked via the alert view, default is the root UIWindow instance -/** - Return a custom parent view controller for presenting modal sheets - - By default the SDK is using the root UIWindow instance to present any required - view controllers. Overwrite this if this doesn't result in a satisfying - behavior or if you want to define any other parent view controller. - - @param hockeyManager The `BITHockeyManager` HockeyManager instance invoking this delegate - @param componentManager The `BITHockeyBaseManager` component instance invoking this delegate, can be `BITCrashManager` or `BITFeedbackManager` - */ -- (UIViewController *)viewControllerForHockeyManager:(BITHockeyManager *)hockeyManager componentManager:(BITHockeyBaseManager *)componentManager; - - -///----------------------------------------------------------------------------- -/// @name Additional meta data -///----------------------------------------------------------------------------- - - -/** Return the userid that should used in the SDK components - - Right now this is used by the `BITCrashManager` to attach to a crash report. - `BITFeedbackManager` uses it too for assigning the user to a discussion thread. - - In addition, if this returns not nil for `BITFeedbackManager` the user will - not be asked for any user details by the component, including useerName or userEmail. - - You can find out the component requesting the userID like this: - - - (NSString *)userIDForHockeyManager:(BITHockeyManager *)hockeyManager componentManager:(BITHockeyBaseManager *)componentManager { - if (componentManager == hockeyManager.feedbackManager) { - return UserIDForFeedback; - } else if (componentManager == hockeyManager.crashManager) { - return UserIDForCrashReports; - } else { - return nil; - } - } - - For crash reports, this delegate is invoked on the startup after the crash! - - Alternatively you can also use `[BITHockeyManager userID]` which will cache the value in the keychain. - - @warning When returning a non nil value for the `BITCrashManager` component, crash reports - are not anonymous any more and the crash alerts will not show the word "anonymous"! - - @param hockeyManager The `BITHockeyManager` HockeyManager instance invoking this delegate - @param componentManager The `BITHockeyBaseManager` component instance invoking this delegate, can be `BITCrashManager` or `BITFeedbackManager` - @see userNameForHockeyManager:componentManager: - @see userEmailForHockeyManager:componentManager: - @see [BITHockeyManager userID] - */ -- (NSString *)userIDForHockeyManager:(BITHockeyManager *)hockeyManager componentManager:(BITHockeyBaseManager *)componentManager; - - -/** Return the user name that should used in the SDK components - - Right now this is used by the `BITCrashManager` to attach to a crash report. - `BITFeedbackManager` uses it too for assigning the user to a discussion thread. - - In addition, if this returns not nil for `BITFeedbackManager` the user will - not be asked for any user details by the component, including useerName or userEmail. - - You can find out the component requesting the user name like this: - - - (NSString *)userNameForHockeyManager:(BITHockeyManager *)hockeyManager componentManager:(BITHockeyBaseManager *)componentManager { - if (componentManager == hockeyManager.feedbackManager) { - return UserNameForFeedback; - } else if (componentManager == hockeyManager.crashManager) { - return UserNameForCrashReports; - } else { - return nil; - } - } - - For crash reports, this delegate is invoked on the startup after the crash! - - Alternatively you can also use `[BITHockeyManager userName]` which will cache the value in the keychain. - - @warning When returning a non nil value for the `BITCrashManager` component, crash reports - are not anonymous any more and the crash alerts will not show the word "anonymous"! - - @param hockeyManager The `BITHockeyManager` HockeyManager instance invoking this delegate - @param componentManager The `BITHockeyBaseManager` component instance invoking this delegate, can be `BITCrashManager` or `BITFeedbackManager` - @see userIDForHockeyManager:componentManager: - @see userEmailForHockeyManager:componentManager: - @see [BITHockeyManager userName] - */ -- (NSString *)userNameForHockeyManager:(BITHockeyManager *)hockeyManager componentManager:(BITHockeyBaseManager *)componentManager; - - -/** Return the users email address that should used in the SDK components - - Right now this is used by the `BITCrashManager` to attach to a crash report. - `BITFeedbackManager` uses it too for assigning the user to a discussion thread. - - In addition, if this returns not nil for `BITFeedbackManager` the user will - not be asked for any user details by the component, including useerName or userEmail. - - You can find out the component requesting the user email like this: - - - (NSString *)userEmailForHockeyManager:(BITHockeyManager *)hockeyManager componentManager:(BITHockeyBaseManager *)componentManager { - if (componentManager == hockeyManager.feedbackManager) { - return UserEmailForFeedback; - } else if (componentManager == hockeyManager.crashManager) { - return UserEmailForCrashReports; - } else { - return nil; - } - } - - For crash reports, this delegate is invoked on the startup after the crash! - - Alternatively you can also use `[BITHockeyManager userEmail]` which will cache the value in the keychain. - - @warning When returning a non nil value for the `BITCrashManager` component, crash reports - are not anonymous any more and the crash alerts will not show the word "anonymous"! - - @param hockeyManager The `BITHockeyManager` HockeyManager instance invoking this delegate - @param componentManager The `BITHockeyBaseManager` component instance invoking this delegate, can be `BITCrashManager` or `BITFeedbackManager` - @see userIDForHockeyManager:componentManager: - @see userNameForHockeyManager:componentManager: - @see [BITHockeyManager userEmail] - */ -- (NSString *)userEmailForHockeyManager:(BITHockeyManager *)hockeyManager componentManager:(BITHockeyBaseManager *)componentManager; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITStoreUpdateManager.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITStoreUpdateManager.h deleted file mode 100644 index 1b081b719f..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITStoreUpdateManager.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2013-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - - -#import -#import "BITHockeyBaseManager.h" - - -/** - * Defines the update check intervals - */ -typedef NS_ENUM(NSInteger, BITStoreUpdateSetting) { - /** - * Check every day - */ - BITStoreUpdateCheckDaily = 0, - /** - * Check every week - */ - BITStoreUpdateCheckWeekly = 1, - /** - * Check manually - */ - BITStoreUpdateCheckManually = 2 -}; - -@protocol BITStoreUpdateManagerDelegate; - -/** - The store update manager module. - - This is the HockeySDK module for handling app updates when having your app released in the App Store. - By default the module uses the current users locale to define the app store to check for updates. You - can modify this using the `countryCode` property. See the property documentation for details on its usage. - - When an update is detected, this module will show an alert asking the user if he/she wants to update or - ignore this version. If update was chosen, it will open the apps page in the app store app. - - You need to enable this module using `[BITHockeyManager enableStoreUpdateManager]` if you want to use this - feature. By default this module is disabled! - - When this module is enabled and **NOT** running in an App Store build/environment, it won't do any checks! - - The `BITStoreUpdateManagerDelegate` protocol informs the app about new detected app versions. - - @warning This module can **NOT** check if the current device and OS version match the minimum requirements of - the new app version! - - */ - -@interface BITStoreUpdateManager : BITHockeyBaseManager - -///----------------------------------------------------------------------------- -/// @name Update Checking -///----------------------------------------------------------------------------- - -/** - When to check for new updates. - - Defines when a the SDK should check if there is a new update available on the - server. This must be assigned one of the following, see `BITStoreUpdateSetting`: - - - `BITStoreUpdateCheckDaily`: Once a day - - `BITStoreUpdateCheckWeekly`: Once a week - - `BITStoreUpdateCheckManually`: Manually - - **Default**: BITStoreUpdateCheckWeekly - - @warning When setting this to `BITStoreUpdateCheckManually` you need to either - invoke the update checking process yourself with `checkForUpdate` somehow, e.g. by - proving an update check button for the user or integrating the Update View into your - user interface. - @see BITStoreUpdateSetting - @see countryCode - @see checkForUpdateOnLaunch - @see checkForUpdate - */ -@property (nonatomic, assign) BITStoreUpdateSetting updateSetting; - - -/** - Defines the store country the app is always available in, otherwise uses the users locale - - If this value is not defined, then it uses the device country if the current locale. - - If you are pre-defining a country and are releasing a new version on a specific date, - it can happen that users get an alert but the update is not yet available in their country! - - But if a user downloaded the app from another appstore than the locale is set and the app is not - available in the locales app store, then the user will never receive an update notification! - - More information about possible country codes is available here: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 - - @see updateSetting - @see checkForUpdateOnLaunch - @see checkForUpdate - */ -@property (nonatomic, strong) NSString *countryCode; - - -/** - Flag that determines whether the automatic update checks should be done. - - If this is enabled the update checks will be performed automatically depending on the - `updateSetting` property. If this is disabled the `updateSetting` property will have - no effect, and checking for updates is totally up to be done by yourself. - - *Default*: _YES_ - - @warning When setting this to `NO` you need to invoke update checks yourself! - @see updateSetting - @see countryCode - @see checkForUpdate - */ -@property (nonatomic, assign, getter=isCheckingForUpdateOnLaunch) BOOL checkForUpdateOnLaunch; - - -///----------------------------------------------------------------------------- -/// @name User Interface -///----------------------------------------------------------------------------- - - -/** - Flag that determines if the integrated update alert should be used - - If enabled, the integrated UIAlert based update notification will be used to inform - the user about a new update being available in the App Store. - - If disabled, you need to implement the `BITStoreUpdateManagerDelegate` protocol with - the method `[BITStoreUpdateManagerDelegate detectedUpdateFromStoreUpdateManager:newVersion:storeURL:]` - to be notified about new version and proceed yourself. - The manager will consider this identical to an `Ignore` user action using the alert - and not inform about this particular version any more, unless the app is updated - and this very same version shows up at a later time again as a new version. - - *Default*: _YES_ - - @warning If the HockeySDKResources bundle is missing in the application package, then the internal - update alert is also disabled and be treated identical to manually disabling this - property. - @see updateSetting - */ -@property (nonatomic, assign, getter=isUpdateUIEnabled) BOOL updateUIEnabled; - -///----------------------------------------------------------------------------- -/// @name Manual update checking -///----------------------------------------------------------------------------- - -/** - Check for an update - - Call this to trigger a check if there is a new update available on the HockeyApp servers. - - @see updateSetting - @see countryCode - @see checkForUpdateOnLaunch - */ -- (void)checkForUpdate; - - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITStoreUpdateManagerDelegate.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITStoreUpdateManagerDelegate.h deleted file mode 100644 index 0d629dc0d5..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITStoreUpdateManagerDelegate.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2013-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@class BITStoreUpdateManager; - -/** - The `BITStoreUpdateManagerDelegate` formal protocol defines methods for - more interaction with `BITStoreUpdateManager`. - */ - -@protocol BITStoreUpdateManagerDelegate - -@optional - - -///----------------------------------------------------------------------------- -/// @name Update information -///----------------------------------------------------------------------------- - -/** Informs which new version has been reported to be available - - @warning If this is invoked with a simulated new version, the storeURL could be _NIL_ if the current builds - bundle identifier is different to the bundle identifier used in the app store build. - @param storeUpdateManager The `BITStoreUpdateManager` instance invoking this delegate - @param newVersion The new version string reported by the App Store - @param storeURL The App Store URL for this app that could be invoked to let them perform the update. - */ --(void)detectedUpdateFromStoreUpdateManager:(BITStoreUpdateManager *)storeUpdateManager newVersion:(NSString *)newVersion storeURL:(NSURL *)storeURL; - - - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateManager.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateManager.h deleted file mode 100644 index 9fdf93d925..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateManager.h +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Author: Andreas Linde - * Peter Steinberger - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * Copyright (c) 2011 Andreas Linde. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - - -#import "BITHockeyBaseManager.h" - - -/** - * Update check interval - */ -typedef NS_ENUM (NSUInteger, BITUpdateSetting) { - /** - * On every startup or or when the app comes to the foreground - */ - BITUpdateCheckStartup = 0, - /** - * Once a day - */ - BITUpdateCheckDaily = 1, - /** - * Manually - */ - BITUpdateCheckManually = 2 -}; - -@protocol BITUpdateManagerDelegate; - -@class BITAppVersionMetaInfo; -@class BITUpdateViewController; - -/** - The update manager module. - - This is the HockeySDK module for handling app updates when using Ad-Hoc or Enterprise provisioning profiles. - This modul handles version updates, presents update and version information in a App Store like user interface, - collects usage information and provides additional authorization options when using Ad-Hoc provisioning profiles. - - This module automatically disables itself when running in an App Store build by default! - - The protocol `BITUpdateManagerDelegate` provides delegates to inform about events and adjust a few behaviors. - - To use the server side restriction feature, to provide updates only to specific users, you need to setup the - `BITAuthenticator` class. This allows the update request to tell the server which user is using the app on the - current device and then let the server decide which updates the device may see. - - */ - -@interface BITUpdateManager : BITHockeyBaseManager - -///----------------------------------------------------------------------------- -/// @name Update Checking -///----------------------------------------------------------------------------- - -// see HockeyUpdateSetting-enum. Will be saved in user defaults. -// default value: HockeyUpdateCheckStartup -/** - When to check for new updates. - - Defines when a the SDK should check if there is a new update available on the - server. This must be assigned one of the following, see `BITUpdateSetting`: - - - `BITUpdateCheckStartup`: On every startup or or when the app comes to the foreground - - `BITUpdateCheckDaily`: Once a day - - `BITUpdateCheckManually`: Manually - - When running the app from the App Store, this setting is ignored. - - **Default**: BITUpdateCheckStartup - - @warning When setting this to `BITUpdateCheckManually` you need to either - invoke the update checking process yourself with `checkForUpdate` somehow, e.g. by - proving an update check button for the user or integrating the Update View into your - user interface. - @see BITUpdateSetting - @see checkForUpdateOnLaunch - @see checkForUpdate - */ -@property (nonatomic, assign) BITUpdateSetting updateSetting; - - -/** - Flag that determines whether the automatic update checks should be done. - - If this is enabled the update checks will be performed automatically depending on the - `updateSetting` property. If this is disabled the `updateSetting` property will have - no effect, and checking for updates is totally up to be done by yourself. - - When running the app from the App Store, this setting is ignored. - - *Default*: _YES_ - - @warning When setting this to `NO` you need to invoke update checks yourself! - @see updateSetting - @see checkForUpdate - */ -@property (nonatomic, assign, getter=isCheckForUpdateOnLaunch) BOOL checkForUpdateOnLaunch; - - -// manually start an update check -/** - Check for an update - - Call this to trigger a check if there is a new update available on the HockeyApp servers. - - When running the app from the App Store, this setting is ignored. - - @see updateSetting - @see checkForUpdateOnLaunch - */ -- (void)checkForUpdate; - - -///----------------------------------------------------------------------------- -/// @name Update Notification -///----------------------------------------------------------------------------- - -/** - Flag that determines if updates alert should be repeatedly shown - - If enabled the update alert shows on every startup and whenever the app becomes active, - until the update is installed. - If disabled the update alert is only shown once ever and it is up to you to provide an - alternate way for the user to navigate to the update UI or update in another way. - - When running the app from the App Store, this setting is ignored. - - *Default*: _YES_ - */ -@property (nonatomic, assign) BOOL alwaysShowUpdateReminder; - - -/** - Flag that determines if the update alert should show an direct install option - - If enabled the update alert shows an additional option which allows to invoke the update - installation process directly, instead of viewing the update UI first. - By default the alert only shows a `Show` and `Ignore` option. - - When running the app from the App Store, this setting is ignored. - - *Default*: _NO_ - */ -@property (nonatomic, assign, getter=isShowingDirectInstallOption) BOOL showDirectInstallOption; - - -///----------------------------------------------------------------------------- -/// @name Expiry -///----------------------------------------------------------------------------- - -/** - Expiry date of the current app version - - If set, the app will get unusable at the given date by presenting a blocking view on - top of the apps UI so that no interaction is possible. To present a custom you, check - the documentation of the - `[BITUpdateManagerDelegate shouldDisplayExpiryAlertForUpdateManager:]` delegate. - - Once the expiry date is reached, the app will no longer check for updates or - send any usage data to the server! - - When running the app from the App Store, this setting is ignored. - - *Default*: nil - @see disableUpdateCheckOptionWhenExpired - @see [BITUpdateManagerDelegate shouldDisplayExpiryAlertForUpdateManager:] - @see [BITUpdateManagerDelegate didDisplayExpiryAlertForUpdateManager:] - @warning This only works when using Ad-Hoc provisioning profiles! - */ -@property (nonatomic, strong) NSDate *expiryDate; - -/** - Disable the update check button from expiry screen or alerts - - If do not want your users to be able to check for updates once a version is expired, - then enable this property. - - If this is not enabled, the users will be able to check for updates and install them - if any is available for the current device. - - *Default*: NO - @see expiryDate - @see [BITUpdateManagerDelegate shouldDisplayExpiryAlertForUpdateManager:] - @see [BITUpdateManagerDelegate didDisplayExpiryAlertForUpdateManager:] - @warning This only works when using Ad-Hoc provisioning profiles! -*/ -@property (nonatomic) BOOL disableUpdateCheckOptionWhenExpired; - - -///----------------------------------------------------------------------------- -/// @name User Interface -///----------------------------------------------------------------------------- - - -/** - Present the modal update user interface. - */ -- (void)showUpdateView; - - -/** - Create an update view - - @param modal Return a view ready for modal presentation with integrated navigation bar - @return BITUpdateViewController The update user interface view controller, - e.g. to push it onto a navigation stack. - */ -- (BITUpdateViewController *)hockeyViewController:(BOOL)modal; - - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateManagerDelegate.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateManagerDelegate.h deleted file mode 100644 index 4a1ac9bf6b..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateManagerDelegate.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -@class BITUpdateManager; - -/** - The `BITUpdateManagerDelegate` formal protocol defines methods further configuring - the behaviour of `BITUpdateManager`. - */ - -@protocol BITUpdateManagerDelegate - -@optional - - -///----------------------------------------------------------------------------- -/// @name Expiry -///----------------------------------------------------------------------------- - -/** - Return if expiry alert should be shown if date is reached - - If you want to display your own user interface when the expiry date is reached, - implement this method, present your user interface and return _NO_. In this case - it is your responsibility to make the app unusable! - - Note: This delegate will be invoked on startup and every time the app becomes - active again! - - When returning _YES_ the default blocking UI will be shown. - - When running the app from the App Store, this delegate is ignored. - - @param updateManager The `BITUpdateManager` instance invoking this delegate - @see [BITUpdateManager expiryDate] - @see [BITUpdateManagerDelegate didDisplayExpiryAlertForUpdateManager:] - */ -- (BOOL)shouldDisplayExpiryAlertForUpdateManager:(BITUpdateManager *)updateManager; - - -/** - Invoked once a default expiry alert is shown - - Once expiry date is reached and the default blocking UI is shown, - this delegate method is invoked to provide you the possibility to do any - desired additional processing. - - @param updateManager The `BITUpdateManager` instance invoking this delegate - @see [BITUpdateManager expiryDate] - @see [BITUpdateManagerDelegate shouldDisplayExpiryAlertForUpdateManager:] - */ -- (void)didDisplayExpiryAlertForUpdateManager:(BITUpdateManager *)updateManager; - - -///----------------------------------------------------------------------------- -/// @name Privacy -///----------------------------------------------------------------------------- - -/** Return NO if usage data should not be send - - The update module send usage data by default, if the application is _NOT_ - running in an App Store version. Implement this delegate and - return NO if you want to disable this. - - If you intend to implement a user setting to let them enable or disable - sending usage data, this delegate should be used to return that value. - - Usage data contains the following information: - - App Version - - iOS Version - - Device type - - Language - - Installation timestamp - - Usage time - - @param updateManager The `BITUpdateManager` instance invoking this delegate - @warning When setting this to `NO`, you will _NOT_ know if this user is actually testing! - */ -- (BOOL)updateManagerShouldSendUsageData:(BITUpdateManager *)updateManager; - - -///----------------------------------------------------------------------------- -/// @name Privacy -///----------------------------------------------------------------------------- - -/** - Invoked right before the app will exit to allow app update to start (>= iOS8 only) - - The iOS installation mechanism only starts if the app the should be updated is currently - not running. On all iOS versions up to iOS 7, the system did automatically exit the app - in these cases. Since iOS 8 this isn't done any longer. - - @param updateManager The `BITUpdateManager` instance invoking this delegate - */ -- (void)updateManagerWillExitApp:(BITUpdateManager *)updateManager; - - -#pragma mark - Deprecated - -///----------------------------------------------------------------------------- -/// @name Update View Presentation Helper -///----------------------------------------------------------------------------- - -/** - Provide a parent view controller for the update user interface - - If you don't have a `rootViewController` set on your `UIWindow` and the SDK cannot - automatically find the current top most `UIViewController`, you can provide the - `UIViewController` that should be used to present the update user interface modal. - - @param updateManager The `BITUpdateManager` instance invoking this delegate - - @deprecated Please use `BITHockeyManagerDelegate viewControllerForHockeyManager:componentManager:` instead - */ -- (UIViewController *)viewControllerForUpdateManager:(BITUpdateManager *)updateManager DEPRECATED_ATTRIBUTE; - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateViewController.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateViewController.h deleted file mode 100644 index e36f318270..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/BITUpdateViewController.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Author: Andreas Linde - * Peter Steinberger - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * Copyright (c) 2011 Andreas Linde, Peter Steinberger. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#import - -#import "BITHockeyBaseViewController.h" - - -@interface BITUpdateViewController : BITHockeyBaseViewController -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/HockeySDK.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/HockeySDK.h deleted file mode 100644 index 0d04c43832..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/HockeySDK.h +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - * Copyright (c) 2011 Andreas Linde. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef HockeySDK_h -#define HockeySDK_h - -#import "HockeySDKFeatureConfig.h" - -#import "BITHockeyManager.h" -#import "BITHockeyManagerDelegate.h" - -#if HOCKEYSDK_FEATURE_CRASH_REPORTER || HOCKEYSDK_FEATURE_FEEDBACK -#import "BITHockeyAttachment.h" -#endif - -#if HOCKEYSDK_FEATURE_CRASH_REPORTER -#import "BITCrashManager.h" -#import "BITCrashAttachment.h" -#import "BITCrashManagerDelegate.h" -#import "BITCrashDetails.h" -#import "BITCrashMetaData.h" -#endif /* HOCKEYSDK_FEATURE_CRASH_REPORTER */ - -#if HOCKEYSDK_FEATURE_UPDATES -#import "BITUpdateManager.h" -#import "BITUpdateManagerDelegate.h" -#import "BITUpdateViewController.h" -#endif /* HOCKEYSDK_FEATURE_UPDATES */ - -#if HOCKEYSDK_FEATURE_STORE_UPDATES -#import "BITStoreUpdateManager.h" -#import "BITStoreUpdateManagerDelegate.h" -#endif /* HOCKEYSDK_FEATURE_STORE_UPDATES */ - -#if HOCKEYSDK_FEATURE_FEEDBACK -#import "BITFeedbackManager.h" -#import "BITFeedbackManagerDelegate.h" -#import "BITFeedbackActivity.h" -#import "BITFeedbackComposeViewController.h" -#import "BITFeedbackComposeViewControllerDelegate.h" -#import "BITFeedbackListViewController.h" -#endif /* HOCKEYSDK_FEATURE_FEEDBACK */ - -#if HOCKEYSDK_FEATURE_AUTHENTICATOR -#import "BITAuthenticator.h" -#endif - -// Notification message which HockeyManager is listening to, to retry requesting updated from the server -#define BITHockeyNetworkDidBecomeReachableNotification @"BITHockeyNetworkDidBecomeReachable" - - -/** - * HockeySDK Crash Reporter error domain - */ -typedef NS_ENUM (NSInteger, BITCrashErrorReason) { - /** - * Unknown error - */ - BITCrashErrorUnknown, - /** - * API Server rejected app version - */ - BITCrashAPIAppVersionRejected, - /** - * API Server returned empty response - */ - BITCrashAPIReceivedEmptyResponse, - /** - * Connection error with status code - */ - BITCrashAPIErrorWithStatusCode -}; -extern NSString *const __attribute__((unused)) kBITCrashErrorDomain; - -/** - * HockeySDK Update error domain - */ -typedef NS_ENUM (NSInteger, BITUpdateErrorReason) { - /** - * Unknown error - */ - BITUpdateErrorUnknown, - /** - * API Server returned invalid status - */ - BITUpdateAPIServerReturnedInvalidStatus, - /** - * API Server returned invalid data - */ - BITUpdateAPIServerReturnedInvalidData, - /** - * API Server returned empty response - */ - BITUpdateAPIServerReturnedEmptyResponse, - /** - * Authorization secret missing - */ - BITUpdateAPIClientAuthorizationMissingSecret, - /** - * No internet connection - */ - BITUpdateAPIClientCannotCreateConnection -}; -extern NSString *const __attribute__((unused)) kBITUpdateErrorDomain; - - -/** - * HockeySDK Feedback error domain - */ -typedef NS_ENUM(NSInteger, BITFeedbackErrorReason) { - /** - * Unknown error - */ - BITFeedbackErrorUnknown, - /** - * API Server returned invalid status - */ - BITFeedbackAPIServerReturnedInvalidStatus, - /** - * API Server returned invalid data - */ - BITFeedbackAPIServerReturnedInvalidData, - /** - * API Server returned empty response - */ - BITFeedbackAPIServerReturnedEmptyResponse, - /** - * Authorization secret missing - */ - BITFeedbackAPIClientAuthorizationMissingSecret, - /** - * No internet connection - */ - BITFeedbackAPIClientCannotCreateConnection -}; -extern NSString *const __attribute__((unused)) kBITFeedbackErrorDomain; - -/** - * HockeySDK Authenticator error domain - */ -typedef NS_ENUM(NSInteger, BITAuthenticatorReason) { - /** - * Unknown error - */ - BITAuthenticatorErrorUnknown, - /** - * Network error - */ - BITAuthenticatorNetworkError, - - /** - * API Server returned invalid response - */ - BITAuthenticatorAPIServerReturnedInvalidResponse, - /** - * Not Authorized - */ - BITAuthenticatorNotAuthorized, - /** - * Unknown Application ID (configuration error) - */ - BITAuthenticatorUnknownApplicationID, - /** - * Authorization secret missing - */ - BITAuthenticatorAuthorizationSecretMissing, - /** - * Not yet identified - */ - BITAuthenticatorNotIdentified, -}; -extern NSString *const __attribute__((unused)) kBITAuthenticatorErrorDomain; - -/** - * HockeySDK global error domain - */ -typedef NS_ENUM(NSInteger, BITHockeyErrorReason) { - /** - * Unknown error - */ - BITHockeyErrorUnknown -}; -extern NSString *const __attribute__((unused)) kBITHockeyErrorDomain; - - -#endif diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/HockeySDKFeatureConfig.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/HockeySDKFeatureConfig.h deleted file mode 100644 index 1a8b387ebd..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Headers/HockeySDKFeatureConfig.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Author: Andreas Linde - * - * Copyright (c) 2013-2014 HockeyApp, Bit Stadium GmbH. - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef HockeySDK_HockeySDKFeatureConfig_h -#define HockeySDK_HockeySDKFeatureConfig_h - - -/** - * If true, include support for handling crash reports - * - * _Default_: Enabled - */ -#ifndef HOCKEYSDK_FEATURE_CRASH_REPORTER -# define HOCKEYSDK_FEATURE_CRASH_REPORTER 1 -#endif /* HOCKEYSDK_FEATURE_CRASH_REPORTER */ - - -/** - * If true, include support for managing user feedback - * - * _Default_: Enabled - */ -#ifndef HOCKEYSDK_FEATURE_FEEDBACK -# define HOCKEYSDK_FEATURE_FEEDBACK 1 -#endif /* HOCKEYSDK_FEATURE_FEEDBACK */ - - -/** - * If true, include support for informing the user about new updates pending in the App Store - * - * _Default_: Enabled - */ -#ifndef HOCKEYSDK_FEATURE_STORE_UPDATES -# define HOCKEYSDK_FEATURE_STORE_UPDATES 1 -#endif /* HOCKEYSDK_FEATURE_STORE_UPDATES */ - - -/** - * If true, include support for authentication installations for Ad-Hoc and Enterprise builds - * - * _Default_: Enabled - */ -#ifndef HOCKEYSDK_FEATURE_AUTHENTICATOR -# define HOCKEYSDK_FEATURE_AUTHENTICATOR 1 -#endif /* HOCKEYSDK_FEATURE_AUTHENTICATOR */ - - -/** - * If true, include support for handling in-app udpates for Ad-Hoc and Enterprise builds - * - * _Default_: Enabled - */ -#ifndef HOCKEYSDK_FEATURE_UPDATES -# define HOCKEYSDK_FEATURE_UPDATES 1 -#endif /* HOCKEYSDK_FEATURE_UPDATES */ - - -#endif /* HockeySDK_HockeySDKFeatureConfig_h */ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/HockeySDK b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/HockeySDK deleted file mode 100644 index 519d284c05..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/HockeySDK and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDK.xcconfig b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDK.xcconfig deleted file mode 100644 index 7f04f3fdd2..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDK.xcconfig +++ /dev/null @@ -1,3 +0,0 @@ -OTHER_LDFLAGS=$(inherited) -framework CoreText -framework CoreGraphics -framework Foundation -framework QuartzCore -framework SystemConfiguration -framework UIKit -framework Security -framework AssetsLibrary -framework MobileCoreServices -HOCKEYSDK_DOCSET_NAME=HockeySDK-iOS -GCC_PREPROCESSOR_DEFINITIONS=$(inherited) CONFIGURATION_$(CONFIGURATION) diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow.png deleted file mode 100644 index e0834c2b67..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow@2x.png deleted file mode 100644 index 943622c889..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow@3x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow@3x.png deleted file mode 100644 index 3aa46b08e9..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Arrow@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur.png deleted file mode 100644 index 907e9595f1..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur@2x.png deleted file mode 100644 index 55f5465410..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur@3x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur@3x.png deleted file mode 100644 index b4c8594cb0..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Blur@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel.png deleted file mode 100644 index 77fb4f0f04..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel@2x.png deleted file mode 100644 index a205001fe5..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel@3x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel@3x.png deleted file mode 100644 index 53e5db7aa3..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Cancel@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/IconGradient.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/IconGradient.png deleted file mode 100644 index d145d79e47..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/IconGradient.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/IconGradient@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/IconGradient@2x.png deleted file mode 100644 index d9076127d2..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/IconGradient@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Info.plist b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Info.plist deleted file mode 100644 index 6c07f94816..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Info.plist and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok.png deleted file mode 100644 index a3a872d25c..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok@2x.png deleted file mode 100644 index d3693d3e97..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok@3x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok@3x.png deleted file mode 100644 index 1b4664d414..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Ok@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle.png deleted file mode 100644 index 5b7ed3dd9a..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle@2x.png deleted file mode 100644 index 5531cd3933..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle@3x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle@3x.png deleted file mode 100644 index 0d21badc31..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/Rectangle@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied.png deleted file mode 100644 index 2ebaef0f63..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied@2x.png deleted file mode 100644 index c59864ba76..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied@3x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied@3x.png deleted file mode 100644 index e7f0878188..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/authorize_denied@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/bg.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/bg.png deleted file mode 100644 index 48024b3525..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/bg.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDelete.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDelete.png deleted file mode 100644 index ef386d9d31..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDelete.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDelete@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDelete@2x.png deleted file mode 100644 index 9669ae0a24..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDelete@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDeleteHighlighted.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDeleteHighlighted.png deleted file mode 100644 index a4445ce9ea..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDeleteHighlighted.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDeleteHighlighted@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDeleteHighlighted@2x.png deleted file mode 100644 index 5172002c51..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedDeleteHighlighted@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegular.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegular.png deleted file mode 100644 index 8623931434..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegular.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegular@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegular@2x.png deleted file mode 100644 index 6eecd777c9..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegular@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegularHighlighted.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegularHighlighted.png deleted file mode 100644 index 061685ec4a..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegularHighlighted.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegularHighlighted@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegularHighlighted@2x.png deleted file mode 100644 index 6cb8e2fac0..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/buttonRoundedRegularHighlighted@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/de.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/de.lproj/HockeySDK.strings deleted file mode 100644 index b9dbd1eb0c..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/de.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/en.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/en.lproj/HockeySDK.strings deleted file mode 100644 index 6e23907350..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/en.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/es.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/es.lproj/HockeySDK.strings deleted file mode 100644 index 31dc7dcc27..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/es.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity.png deleted file mode 100644 index 5f5104d0dc..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@2x.png deleted file mode 100644 index 535ef28241..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@2x~ipad.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@2x~ipad.png deleted file mode 100644 index 632b1f7099..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@2x~ipad.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@3x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@3x.png deleted file mode 100644 index 8ebc49c552..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity~ipad.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity~ipad.png deleted file mode 100644 index 654de35832..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/feedbackActivity~ipad.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/fr.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/fr.lproj/HockeySDK.strings deleted file mode 100644 index 3da03612dc..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/fr.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/hr.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/hr.lproj/HockeySDK.strings deleted file mode 100644 index 1e7a4f0b2e..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/hr.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/hu.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/hu.lproj/HockeySDK.strings deleted file mode 100644 index 7265fe8d08..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/hu.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/iconCamera.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/iconCamera.png deleted file mode 100644 index d429e3a926..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/iconCamera.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/iconCamera@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/iconCamera@2x.png deleted file mode 100644 index a1cf4bc568..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/iconCamera@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/it.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/it.lproj/HockeySDK.strings deleted file mode 100644 index df38103921..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/it.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/ja.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/ja.lproj/HockeySDK.strings deleted file mode 100644 index b23ac9336d..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/ja.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/nl.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/nl.lproj/HockeySDK.strings deleted file mode 100644 index 94b3b1ec36..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/nl.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/pt-PT.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/pt-PT.lproj/HockeySDK.strings deleted file mode 100644 index 4437285ed5..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/pt-PT.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/pt.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/pt.lproj/HockeySDK.strings deleted file mode 100644 index 706c719089..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/pt.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/ru.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/ru.lproj/HockeySDK.strings deleted file mode 100644 index 876384d01a..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/ru.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/zh-Hans.lproj/HockeySDK.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/zh-Hans.lproj/HockeySDK.strings deleted file mode 100644 index ba8ff7bf73..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/zh-Hans.lproj/HockeySDK.strings and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/Current b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/Current deleted file mode 120000 index 8c7e5a667f..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/Resources/HockeySDK.xcconfig b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/Resources/HockeySDK.xcconfig deleted file mode 120000 index 8ae24201e3..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/Resources/HockeySDK.xcconfig +++ /dev/null @@ -1 +0,0 @@ -../HockeySDK.framework/Resources/HockeySDK.xcconfig \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/Resources/HockeySDKResources.bundle b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/Resources/HockeySDKResources.bundle deleted file mode 120000 index 4150e0a084..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/HockeySDK.embeddedframework/Resources/HockeySDKResources.bundle +++ /dev/null @@ -1 +0,0 @@ -../HockeySDK.framework/Resources/HockeySDKResources.bundle \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/LICENSE b/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/LICENSE deleted file mode 100644 index 4c97598d23..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/HockeySDK-iOS/LICENSE +++ /dev/null @@ -1,124 +0,0 @@ -## Licenses - -The Hockey SDK is provided under the following license: - - The MIT License - Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. - All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -Except as noted below, PLCrashReporter -is provided under the following license: - - Copyright (c) 2008 - 2014 Plausible Labs Cooperative, Inc. - Copyright (c) 2012 - 2014 HockeyApp, Bit Stadium GmbH. - All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -The protobuf-c library, as well as the PLCrashLogWriterEncoding.c -file are licensed as follows: - - Copyright 2008, Dave Benson. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with - the License. You may obtain a copy of the License - at http://www.apache.org/licenses/LICENSE-2.0 Unless - required by applicable law or agreed to in writing, - software distributed under the License is distributed on - an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - -TTTAttributedLabel is licensed as follows: - - Copyright (c) 2011 Mattt Thompson (http://mattt.me/) - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -SFHFKeychainUtils is licensed as follows: - - Created by Buzz Andersen on 10/20/08. - Based partly on code by Jonathan Wight, Jon Crosby, and Mike Malone. - Copyright 2008 Sci-Fi Hi-Fi. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL-Info.plist b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL-Info.plist deleted file mode 100755 index 28fab22de3..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL-Info.plist +++ /dev/null @@ -1,51 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIcons - - CFBundleIcons~ipad - - CFBundleIdentifier - com.ogl.IntroOpenGL2 - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - opengles-2 - - UIStatusBarHidden - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL-Prefix.pch b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL-Prefix.pch deleted file mode 100755 index 2d745122c3..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL-Prefix.pch +++ /dev/null @@ -1,28 +0,0 @@ -// -// Prefix header for all source files of the 'IntroOpenGL' target in the 'IntroOpenGL' project -// - -#import - -#ifndef __IPHONE_5_0 -#warning "This project uses features only available in iOS SDK 5.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import - #import "RMGeometry.h" - -#define IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad - -#define dDeviceOrientation [[UIDevice currentDevice] orientation] -#define isPortrait UIDeviceOrientationIsPortrait(dDeviceOrientation) -#define isLandscape UIDeviceOrientationIsLandscape(dDeviceOrientation) - -//#define STATUS_HEIGHT [[UIDevice currentDevice] systemVersion]>=7 ? 0 : 10; - - #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] - - #define _(n) NSLocalizedString(n, nil) - -#endif diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL.xcodeproj/project.pbxproj b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL.xcodeproj/project.pbxproj deleted file mode 100755 index 0823cc19ae..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL.xcodeproj/project.pbxproj +++ /dev/null @@ -1,671 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 000E3CA7198693240074DF95 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 000E3CA6198693240074DF95 /* ImageIO.framework */; }; - 000E3CA9198693350074DF95 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 000E3CA8198693350074DF95 /* MobileCoreServices.framework */; }; - 003A78A8193E2B01007D28E0 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003A78A7193E2B01007D28E0 /* GLKit.framework */; }; - 003A78AA193E2B07007D28E0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003A78A9193E2B07007D28E0 /* OpenGLES.framework */; }; - 006C1FE518D35A9200F0C5F0 /* RMAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 006C1FDE18D35A9200F0C5F0 /* RMAppDelegate.m */; }; - 006C1FE718D35A9200F0C5F0 /* RMIntroPageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 006C1FE218D35A9200F0C5F0 /* RMIntroPageView.m */; }; - 006C1FE818D35A9200F0C5F0 /* RMIntroViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 006C1FE418D35A9200F0C5F0 /* RMIntroViewController.m */; }; - 006C1FEB18D35BD100F0C5F0 /* RMGeometry.m in Sources */ = {isa = PBXBuildFile; fileRef = 006C1FEA18D35BD100F0C5F0 /* RMGeometry.m */; }; - 006C1FEE18D35C1400F0C5F0 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 006C1FF018D35C1400F0C5F0 /* Localizable.strings */; }; - 006C206818D60E8600F0C5F0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 006C206718D60E8600F0C5F0 /* QuartzCore.framework */; }; - 007582B7191558D00016BCD1 /* timing.c in Sources */ = {isa = PBXBuildFile; fileRef = 007582B6191558D00016BCD1 /* timing.c */; }; - 0078937F18CE765200A15B38 /* texture_helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0078937E18CE765200A15B38 /* texture_helper.m */; }; - 0099100F1ACBE95E0003A2ED /* fast_arrow_shadow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FF31ACBE95E0003A2ED /* fast_arrow_shadow@2x.png */; }; - 009910101ACBE95E0003A2ED /* fast_arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FF41ACBE95E0003A2ED /* fast_arrow@2x.png */; }; - 009910111ACBE95E0003A2ED /* fast_body@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FF51ACBE95E0003A2ED /* fast_body@2x.png */; }; - 009910121ACBE95E0003A2ED /* fast_spiral@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FF61ACBE95E0003A2ED /* fast_spiral@2x.png */; }; - 009910131ACBE95E0003A2ED /* ic_bubble_dot@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FF71ACBE95E0003A2ED /* ic_bubble_dot@2x.png */; }; - 009910141ACBE95E0003A2ED /* ic_bubble@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FF81ACBE95E0003A2ED /* ic_bubble@2x.png */; }; - 009910151ACBE95E0003A2ED /* ic_cam_lens@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FF91ACBE95E0003A2ED /* ic_cam_lens@2x.png */; }; - 009910161ACBE95E0003A2ED /* ic_cam@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FFA1ACBE95E0003A2ED /* ic_cam@2x.png */; }; - 009910171ACBE95E0003A2ED /* ic_pencil@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FFB1ACBE95E0003A2ED /* ic_pencil@2x.png */; }; - 009910181ACBE95E0003A2ED /* ic_pin@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FFC1ACBE95E0003A2ED /* ic_pin@2x.png */; }; - 009910191ACBE95E0003A2ED /* ic_smile_eye@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FFD1ACBE95E0003A2ED /* ic_smile_eye@2x.png */; }; - 0099101A1ACBE95E0003A2ED /* ic_smile@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FFE1ACBE95E0003A2ED /* ic_smile@2x.png */; }; - 0099101B1ACBE95E0003A2ED /* ic_videocam@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 00990FFF1ACBE95E0003A2ED /* ic_videocam@2x.png */; }; - 0099101C1ACBE95E0003A2ED /* knot_down@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910001ACBE95E0003A2ED /* knot_down@2x.png */; }; - 0099101D1ACBE95E0003A2ED /* knot_up@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910011ACBE95E0003A2ED /* knot_up@2x.png */; }; - 0099101E1ACBE95E0003A2ED /* powerful_infinity_white@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910021ACBE95E0003A2ED /* powerful_infinity_white@2x.png */; }; - 0099101F1ACBE95E0003A2ED /* powerful_infinity@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910031ACBE95E0003A2ED /* powerful_infinity@2x.png */; }; - 009910201ACBE95E0003A2ED /* powerful_mask@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910041ACBE95E0003A2ED /* powerful_mask@2x.png */; }; - 009910211ACBE95E0003A2ED /* powerful_star@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910051ACBE95E0003A2ED /* powerful_star@2x.png */; }; - 009910221ACBE95E0003A2ED /* private_door@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910061ACBE95E0003A2ED /* private_door@2x.png */; }; - 009910231ACBE95E0003A2ED /* private_screw@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910071ACBE95E0003A2ED /* private_screw@2x.png */; }; - 009910241ACBE95E0003A2ED /* telegram_plane@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910081ACBE95E0003A2ED /* telegram_plane@2x.png */; }; - 009910251ACBE95E0003A2ED /* telegram_sphere@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 009910091ACBE95E0003A2ED /* telegram_sphere@2x.png */; }; - 009910261ACBE95E0003A2ED /* start_arrow_ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 0099100A1ACBE95E0003A2ED /* start_arrow_ipad.png */; }; - 009910271ACBE95E0003A2ED /* start_arrow_ipad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0099100B1ACBE95E0003A2ED /* start_arrow_ipad@2x.png */; }; - 009910281ACBE95E0003A2ED /* start_arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0099100C1ACBE95E0003A2ED /* start_arrow@2x.png */; }; - 0099102D1ACBEB220003A2ED /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0099102B1ACBEB220003A2ED /* LaunchScreen.xib */; }; - 0099102F1ACBEB5B0003A2ED /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0099102E1ACBEB5B0003A2ED /* Images.xcassets */; }; - 00D761331948B1B100961E77 /* RMRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 00D761321948B1B100961E77 /* RMRootViewController.m */; }; - 00D761361948B28E00961E77 /* RMLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 00D761351948B28E00961E77 /* RMLoginViewController.m */; }; - 00EAE19518F83BBB00D0B495 /* rngs.c in Sources */ = {isa = PBXBuildFile; fileRef = 00EAE19318F83BBB00D0B495 /* rngs.c */; }; - 00F0BD1F1AD5359300204D81 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00F0BD1E1AD5359300204D81 /* AssetsLibrary.framework */; }; - 00F0BD211AD5359D00204D81 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00F0BD201AD5359D00204D81 /* CoreText.framework */; }; - 00F0BD231AD535A500204D81 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00F0BD221AD535A500204D81 /* QuickLook.framework */; }; - 00F0BD251AD535AE00204D81 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00F0BD241AD535AE00204D81 /* Security.framework */; }; - 00F0BD271AD535BA00204D81 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00F0BD261AD535BA00204D81 /* SystemConfiguration.framework */; }; - 00F0BD2D1AD535F400204D81 /* HockeySDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00F0BD291AD535F400204D81 /* HockeySDK.framework */; }; - 00F0BD2E1AD535F400204D81 /* HockeySDK.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 00F0BD2B1AD535F400204D81 /* HockeySDK.xcconfig */; }; - 00F0BD2F1AD535F400204D81 /* HockeySDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 00F0BD2C1AD535F400204D81 /* HockeySDKResources.bundle */; }; - 0A8FBF8C179E073A0039BA29 /* platform_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 0A8FBF71179DFAEE0039BA29 /* platform_log.c */; }; - 0A8FBF90179E07440039BA29 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ADF1887178E2185005DA99E /* main.m */; }; - 0A8FBF91179E07600039BA29 /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 0A8FBF04179DEF7B0039BA29 /* buffer.c */; }; - 0A8FBF92179E07600039BA29 /* animations.c in Sources */ = {isa = PBXBuildFile; fileRef = 0A8FBF07179DEF7B0039BA29 /* animations.c */; }; - 0A8FBF94179E07600039BA29 /* shader.c in Sources */ = {isa = PBXBuildFile; fileRef = 0A8FBF0B179DEF7B0039BA29 /* shader.c */; }; - 0ACEE2B417E78AF5009DFC95 /* objects.c in Sources */ = {isa = PBXBuildFile; fileRef = 0ACEE2B017E78AF5009DFC95 /* objects.c */; }; - 0ACEE2B517E78AF5009DFC95 /* program.c in Sources */ = {isa = PBXBuildFile; fileRef = 0ACEE2B217E78AF5009DFC95 /* program.c */; }; - 0ADF1878178E2185005DA99E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ADF1877178E2185005DA99E /* UIKit.framework */; }; - 0ADF187A178E2185005DA99E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ADF1879178E2185005DA99E /* Foundation.framework */; }; - 0ADF187C178E2185005DA99E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ADF187B178E2185005DA99E /* CoreGraphics.framework */; }; - 0ADF1886178E2185005DA99E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0ADF1884178E2185005DA99E /* InfoPlist.strings */; }; - 0ADF188E178E2185005DA99E /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 0ADF188D178E2185005DA99E /* Default.png */; }; - 0ADF1890178E2185005DA99E /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0ADF188F178E2185005DA99E /* Default@2x.png */; }; - 0ADF1892178E2185005DA99E /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0ADF1891178E2185005DA99E /* Default-568h@2x.png */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 000E3CA6198693240074DF95 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; - 000E3CA8198693350074DF95 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; - 003A78A7193E2B01007D28E0 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; - 003A78A9193E2B07007D28E0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; - 006C1FDD18D35A9200F0C5F0 /* RMAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMAppDelegate.h; sourceTree = ""; }; - 006C1FDE18D35A9200F0C5F0 /* RMAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMAppDelegate.m; sourceTree = ""; }; - 006C1FE118D35A9200F0C5F0 /* RMIntroPageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMIntroPageView.h; sourceTree = ""; }; - 006C1FE218D35A9200F0C5F0 /* RMIntroPageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMIntroPageView.m; sourceTree = ""; }; - 006C1FE318D35A9200F0C5F0 /* RMIntroViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMIntroViewController.h; sourceTree = ""; }; - 006C1FE418D35A9200F0C5F0 /* RMIntroViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMIntroViewController.m; sourceTree = ""; }; - 006C1FE918D35BD100F0C5F0 /* RMGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMGeometry.h; sourceTree = ""; }; - 006C1FEA18D35BD100F0C5F0 /* RMGeometry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMGeometry.m; sourceTree = ""; }; - 006C1FEF18D35C1400F0C5F0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - 006C206718D60E8600F0C5F0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - 007582B5191558C10016BCD1 /* timing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timing.h; sourceTree = ""; }; - 007582B6191558D00016BCD1 /* timing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = timing.c; sourceTree = ""; }; - 0078937D18CE765200A15B38 /* texture_helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = texture_helper.h; sourceTree = SOURCE_ROOT; }; - 0078937E18CE765200A15B38 /* texture_helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = texture_helper.m; sourceTree = SOURCE_ROOT; }; - 00990FF31ACBE95E0003A2ED /* fast_arrow_shadow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_arrow_shadow@2x.png"; sourceTree = ""; }; - 00990FF41ACBE95E0003A2ED /* fast_arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_arrow@2x.png"; sourceTree = ""; }; - 00990FF51ACBE95E0003A2ED /* fast_body@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_body@2x.png"; sourceTree = ""; }; - 00990FF61ACBE95E0003A2ED /* fast_spiral@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fast_spiral@2x.png"; sourceTree = ""; }; - 00990FF71ACBE95E0003A2ED /* ic_bubble_dot@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_bubble_dot@2x.png"; sourceTree = ""; }; - 00990FF81ACBE95E0003A2ED /* ic_bubble@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_bubble@2x.png"; sourceTree = ""; }; - 00990FF91ACBE95E0003A2ED /* ic_cam_lens@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_cam_lens@2x.png"; sourceTree = ""; }; - 00990FFA1ACBE95E0003A2ED /* ic_cam@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_cam@2x.png"; sourceTree = ""; }; - 00990FFB1ACBE95E0003A2ED /* ic_pencil@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_pencil@2x.png"; sourceTree = ""; }; - 00990FFC1ACBE95E0003A2ED /* ic_pin@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_pin@2x.png"; sourceTree = ""; }; - 00990FFD1ACBE95E0003A2ED /* ic_smile_eye@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_smile_eye@2x.png"; sourceTree = ""; }; - 00990FFE1ACBE95E0003A2ED /* ic_smile@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_smile@2x.png"; sourceTree = ""; }; - 00990FFF1ACBE95E0003A2ED /* ic_videocam@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_videocam@2x.png"; sourceTree = ""; }; - 009910001ACBE95E0003A2ED /* knot_down@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "knot_down@2x.png"; sourceTree = ""; }; - 009910011ACBE95E0003A2ED /* knot_up@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "knot_up@2x.png"; sourceTree = ""; }; - 009910021ACBE95E0003A2ED /* powerful_infinity_white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_infinity_white@2x.png"; sourceTree = ""; }; - 009910031ACBE95E0003A2ED /* powerful_infinity@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_infinity@2x.png"; sourceTree = ""; }; - 009910041ACBE95E0003A2ED /* powerful_mask@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_mask@2x.png"; sourceTree = ""; }; - 009910051ACBE95E0003A2ED /* powerful_star@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "powerful_star@2x.png"; sourceTree = ""; }; - 009910061ACBE95E0003A2ED /* private_door@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "private_door@2x.png"; sourceTree = ""; }; - 009910071ACBE95E0003A2ED /* private_screw@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "private_screw@2x.png"; sourceTree = ""; }; - 009910081ACBE95E0003A2ED /* telegram_plane@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_plane@2x.png"; sourceTree = ""; }; - 009910091ACBE95E0003A2ED /* telegram_sphere@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "telegram_sphere@2x.png"; sourceTree = ""; }; - 0099100A1ACBE95E0003A2ED /* start_arrow_ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = start_arrow_ipad.png; sourceTree = ""; }; - 0099100B1ACBE95E0003A2ED /* start_arrow_ipad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "start_arrow_ipad@2x.png"; sourceTree = ""; }; - 0099100C1ACBE95E0003A2ED /* start_arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "start_arrow@2x.png"; sourceTree = ""; }; - 0099102C1ACBEB220003A2ED /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 0099102E1ACBEB5B0003A2ED /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = IntroOpenGL/Images.xcassets; sourceTree = SOURCE_ROOT; }; - 00D761311948B1B100961E77 /* RMRootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMRootViewController.h; sourceTree = ""; }; - 00D761321948B1B100961E77 /* RMRootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMRootViewController.m; sourceTree = ""; }; - 00D761341948B28E00961E77 /* RMLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMLoginViewController.h; sourceTree = ""; }; - 00D761351948B28E00961E77 /* RMLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMLoginViewController.m; sourceTree = ""; }; - 00EAE19318F83BBB00D0B495 /* rngs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rngs.c; sourceTree = ""; }; - 00EAE19418F83BBB00D0B495 /* rngs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rngs.h; sourceTree = ""; }; - 00F0BD1E1AD5359300204D81 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; - 00F0BD201AD5359D00204D81 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; }; - 00F0BD221AD535A500204D81 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; }; - 00F0BD241AD535AE00204D81 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; - 00F0BD261AD535BA00204D81 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - 00F0BD291AD535F400204D81 /* HockeySDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = HockeySDK.framework; sourceTree = ""; }; - 00F0BD2B1AD535F400204D81 /* HockeySDK.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = HockeySDK.xcconfig; sourceTree = ""; }; - 00F0BD2C1AD535F400204D81 /* HockeySDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = HockeySDKResources.bundle; sourceTree = ""; }; - 0A8FBF00179DEF700039BA29 /* platform_macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_macros.h; sourceTree = ""; }; - 0A8FBF01179DEF700039BA29 /* platform_log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_log.h; sourceTree = ""; }; - 0A8FBF04179DEF7B0039BA29 /* buffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = buffer.c; sourceTree = ""; }; - 0A8FBF05179DEF7B0039BA29 /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = ""; }; - 0A8FBF06179DEF7B0039BA29 /* shader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shader.h; sourceTree = ""; }; - 0A8FBF07179DEF7B0039BA29 /* animations.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = animations.c; sourceTree = ""; }; - 0A8FBF08179DEF7B0039BA29 /* animations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = animations.h; sourceTree = ""; }; - 0A8FBF0B179DEF7B0039BA29 /* shader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shader.c; sourceTree = ""; }; - 0A8FBF0C179DEF7B0039BA29 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; - 0A8FBF10179DEF7B0039BA29 /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; - 0A8FBF71179DFAEE0039BA29 /* platform_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform_log.c; sourceTree = ""; }; - 0ABADED6178E2E7800DED9FD /* platform_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = platform_gl.h; sourceTree = ""; }; - 0ACEE2B017E78AF5009DFC95 /* objects.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = objects.c; sourceTree = ""; }; - 0ACEE2B117E78AF5009DFC95 /* objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objects.h; sourceTree = ""; }; - 0ACEE2B217E78AF5009DFC95 /* program.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = program.c; sourceTree = ""; }; - 0ACEE2B317E78AF5009DFC95 /* program.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = program.h; sourceTree = ""; }; - 0ACEE2B617E7A037009DFC95 /* matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; - 0ACEE2BB17E7A065009DFC95 /* linmath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linmath.h; sourceTree = ""; }; - 0ADF1874178E2185005DA99E /* IntroOpenGL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IntroOpenGL.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 0ADF1877178E2185005DA99E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 0ADF1879178E2185005DA99E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 0ADF187B178E2185005DA99E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 0ADF1883178E2185005DA99E /* IntroOpenGL-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "IntroOpenGL-Info.plist"; sourceTree = ""; }; - 0ADF1885178E2185005DA99E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 0ADF1887178E2185005DA99E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 0ADF1889178E2185005DA99E /* IntroOpenGL-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "IntroOpenGL-Prefix.pch"; sourceTree = ""; }; - 0ADF188D178E2185005DA99E /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; - 0ADF188F178E2185005DA99E /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; - 0ADF1891178E2185005DA99E /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 0ADF1871178E2185005DA99E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 00F0BD271AD535BA00204D81 /* SystemConfiguration.framework in Frameworks */, - 00F0BD251AD535AE00204D81 /* Security.framework in Frameworks */, - 00F0BD231AD535A500204D81 /* QuickLook.framework in Frameworks */, - 00F0BD211AD5359D00204D81 /* CoreText.framework in Frameworks */, - 00F0BD1F1AD5359300204D81 /* AssetsLibrary.framework in Frameworks */, - 000E3CA9198693350074DF95 /* MobileCoreServices.framework in Frameworks */, - 00F0BD2D1AD535F400204D81 /* HockeySDK.framework in Frameworks */, - 000E3CA7198693240074DF95 /* ImageIO.framework in Frameworks */, - 003A78AA193E2B07007D28E0 /* OpenGLES.framework in Frameworks */, - 003A78A8193E2B01007D28E0 /* GLKit.framework in Frameworks */, - 006C206818D60E8600F0C5F0 /* QuartzCore.framework in Frameworks */, - 0ADF1878178E2185005DA99E /* UIKit.framework in Frameworks */, - 0ADF187A178E2185005DA99E /* Foundation.framework in Frameworks */, - 0ADF187C178E2185005DA99E /* CoreGraphics.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 006C1FF118D35C9800F0C5F0 /* Resources */ = { - isa = PBXGroup; - children = ( - 0099102E1ACBEB5B0003A2ED /* Images.xcassets */, - 00990FF31ACBE95E0003A2ED /* fast_arrow_shadow@2x.png */, - 00990FF41ACBE95E0003A2ED /* fast_arrow@2x.png */, - 00990FF51ACBE95E0003A2ED /* fast_body@2x.png */, - 00990FF61ACBE95E0003A2ED /* fast_spiral@2x.png */, - 00990FF71ACBE95E0003A2ED /* ic_bubble_dot@2x.png */, - 00990FF81ACBE95E0003A2ED /* ic_bubble@2x.png */, - 00990FF91ACBE95E0003A2ED /* ic_cam_lens@2x.png */, - 00990FFA1ACBE95E0003A2ED /* ic_cam@2x.png */, - 00990FFB1ACBE95E0003A2ED /* ic_pencil@2x.png */, - 00990FFC1ACBE95E0003A2ED /* ic_pin@2x.png */, - 00990FFD1ACBE95E0003A2ED /* ic_smile_eye@2x.png */, - 00990FFE1ACBE95E0003A2ED /* ic_smile@2x.png */, - 00990FFF1ACBE95E0003A2ED /* ic_videocam@2x.png */, - 009910001ACBE95E0003A2ED /* knot_down@2x.png */, - 009910011ACBE95E0003A2ED /* knot_up@2x.png */, - 009910021ACBE95E0003A2ED /* powerful_infinity_white@2x.png */, - 009910031ACBE95E0003A2ED /* powerful_infinity@2x.png */, - 009910041ACBE95E0003A2ED /* powerful_mask@2x.png */, - 009910051ACBE95E0003A2ED /* powerful_star@2x.png */, - 009910061ACBE95E0003A2ED /* private_door@2x.png */, - 009910071ACBE95E0003A2ED /* private_screw@2x.png */, - 009910081ACBE95E0003A2ED /* telegram_plane@2x.png */, - 009910091ACBE95E0003A2ED /* telegram_sphere@2x.png */, - 0099100A1ACBE95E0003A2ED /* start_arrow_ipad.png */, - 0099100B1ACBE95E0003A2ED /* start_arrow_ipad@2x.png */, - 0099100C1ACBE95E0003A2ED /* start_arrow@2x.png */, - ); - path = Resources; - sourceTree = ""; - }; - 00F0BD281AD535F400204D81 /* HockeySDK.embeddedframework */ = { - isa = PBXGroup; - children = ( - 00F0BD291AD535F400204D81 /* HockeySDK.framework */, - 00F0BD2A1AD535F400204D81 /* Resources */, - ); - name = HockeySDK.embeddedframework; - path = "HockeySDK-iOS/HockeySDK.embeddedframework"; - sourceTree = ""; - }; - 00F0BD2A1AD535F400204D81 /* Resources */ = { - isa = PBXGroup; - children = ( - 00F0BD2B1AD535F400204D81 /* HockeySDK.xcconfig */, - 00F0BD2C1AD535F400204D81 /* HockeySDKResources.bundle */, - ); - path = Resources; - sourceTree = ""; - }; - 0A8FBEFF179DEF700039BA29 /* common */ = { - isa = PBXGroup; - children = ( - 0A8FBF71179DFAEE0039BA29 /* platform_log.c */, - 0A8FBF00179DEF700039BA29 /* platform_macros.h */, - 0A8FBF01179DEF700039BA29 /* platform_log.h */, - 0078937D18CE765200A15B38 /* texture_helper.h */, - 0078937E18CE765200A15B38 /* texture_helper.m */, - ); - name = common; - path = ../common; - sourceTree = ""; - }; - 0A8FBF03179DEF7B0039BA29 /* core */ = { - isa = PBXGroup; - children = ( - 00EAE19318F83BBB00D0B495 /* rngs.c */, - 00EAE19418F83BBB00D0B495 /* rngs.h */, - 0A8FBF08179DEF7B0039BA29 /* animations.h */, - 0A8FBF07179DEF7B0039BA29 /* animations.c */, - 0ACEE2B117E78AF5009DFC95 /* objects.h */, - 0ACEE2B017E78AF5009DFC95 /* objects.c */, - 0ACEE2B317E78AF5009DFC95 /* program.h */, - 0ACEE2B217E78AF5009DFC95 /* program.c */, - 007582B5191558C10016BCD1 /* timing.h */, - 007582B6191558D00016BCD1 /* timing.c */, - 0A8FBF05179DEF7B0039BA29 /* buffer.h */, - 0A8FBF04179DEF7B0039BA29 /* buffer.c */, - 0A8FBF06179DEF7B0039BA29 /* shader.h */, - 0A8FBF0B179DEF7B0039BA29 /* shader.c */, - 0A8FBF0C179DEF7B0039BA29 /* config.h */, - 0ACEE2B617E7A037009DFC95 /* matrix.h */, - 0A8FBF10179DEF7B0039BA29 /* macros.h */, - ); - name = core; - path = ../../core; - sourceTree = ""; - }; - 0ACEE2B817E7A065009DFC95 /* linmath */ = { - isa = PBXGroup; - children = ( - 0ACEE2BB17E7A065009DFC95 /* linmath.h */, - ); - name = linmath; - path = ../../3rdparty/linmath; - sourceTree = ""; - }; - 0ADF186B178E2185005DA99E = { - isa = PBXGroup; - children = ( - 006C1FF118D35C9800F0C5F0 /* Resources */, - 0ACEE2B817E7A065009DFC95 /* linmath */, - 0A8FBF03179DEF7B0039BA29 /* core */, - 0A8FBEFF179DEF700039BA29 /* common */, - 0ADF1881178E2185005DA99E /* ios */, - 0ADF1876178E2185005DA99E /* Frameworks */, - 0ADF1875178E2185005DA99E /* Products */, - ); - sourceTree = ""; - }; - 0ADF1875178E2185005DA99E /* Products */ = { - isa = PBXGroup; - children = ( - 0ADF1874178E2185005DA99E /* IntroOpenGL.app */, - ); - name = Products; - sourceTree = ""; - }; - 0ADF1876178E2185005DA99E /* Frameworks */ = { - isa = PBXGroup; - children = ( - 00F0BD281AD535F400204D81 /* HockeySDK.embeddedframework */, - 00F0BD261AD535BA00204D81 /* SystemConfiguration.framework */, - 00F0BD241AD535AE00204D81 /* Security.framework */, - 00F0BD221AD535A500204D81 /* QuickLook.framework */, - 00F0BD201AD5359D00204D81 /* CoreText.framework */, - 00F0BD1E1AD5359300204D81 /* AssetsLibrary.framework */, - 000E3CA8198693350074DF95 /* MobileCoreServices.framework */, - 000E3CA6198693240074DF95 /* ImageIO.framework */, - 003A78A9193E2B07007D28E0 /* OpenGLES.framework */, - 003A78A7193E2B01007D28E0 /* GLKit.framework */, - 006C206718D60E8600F0C5F0 /* QuartzCore.framework */, - 0ADF1877178E2185005DA99E /* UIKit.framework */, - 0ADF1879178E2185005DA99E /* Foundation.framework */, - 0ADF187B178E2185005DA99E /* CoreGraphics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 0ADF1881178E2185005DA99E /* ios */ = { - isa = PBXGroup; - children = ( - 0099102B1ACBEB220003A2ED /* LaunchScreen.xib */, - 006C1FE118D35A9200F0C5F0 /* RMIntroPageView.h */, - 006C1FE218D35A9200F0C5F0 /* RMIntroPageView.m */, - 006C1FE318D35A9200F0C5F0 /* RMIntroViewController.h */, - 006C1FE418D35A9200F0C5F0 /* RMIntroViewController.m */, - 006C1FDD18D35A9200F0C5F0 /* RMAppDelegate.h */, - 006C1FDE18D35A9200F0C5F0 /* RMAppDelegate.m */, - 00D761311948B1B100961E77 /* RMRootViewController.h */, - 00D761321948B1B100961E77 /* RMRootViewController.m */, - 00D761341948B28E00961E77 /* RMLoginViewController.h */, - 00D761351948B28E00961E77 /* RMLoginViewController.m */, - 006C1FE918D35BD100F0C5F0 /* RMGeometry.h */, - 006C1FEA18D35BD100F0C5F0 /* RMGeometry.m */, - 0ADF1882178E2185005DA99E /* Supporting Files */, - 0ABADED6178E2E7800DED9FD /* platform_gl.h */, - ); - name = ios; - sourceTree = ""; - }; - 0ADF1882178E2185005DA99E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 006C1FF018D35C1400F0C5F0 /* Localizable.strings */, - 0ADF1883178E2185005DA99E /* IntroOpenGL-Info.plist */, - 0ADF1884178E2185005DA99E /* InfoPlist.strings */, - 0ADF1887178E2185005DA99E /* main.m */, - 0ADF1889178E2185005DA99E /* IntroOpenGL-Prefix.pch */, - 0ADF188D178E2185005DA99E /* Default.png */, - 0ADF188F178E2185005DA99E /* Default@2x.png */, - 0ADF1891178E2185005DA99E /* Default-568h@2x.png */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 0ADF1873178E2185005DA99E /* IntroOpenGL */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0ADF18A2178E2185005DA99E /* Build configuration list for PBXNativeTarget "IntroOpenGL" */; - buildPhases = ( - 0ADF1870178E2185005DA99E /* Sources */, - 0ADF1871178E2185005DA99E /* Frameworks */, - 0ADF1872178E2185005DA99E /* Resources */, - 00F0BD1D1AD5355600204D81 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = IntroOpenGL; - productName = airhockey; - productReference = 0ADF1874178E2185005DA99E /* IntroOpenGL.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0ADF186C178E2185005DA99E /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0460; - ORGANIZATIONNAME = "Learn OpenGL ES"; - TargetAttributes = { - 0ADF1873178E2185005DA99E = { - DevelopmentTeam = SWJJKVDDR2; - }; - }; - }; - buildConfigurationList = 0ADF186F178E2185005DA99E /* Build configuration list for PBXProject "IntroOpenGL" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 0ADF186B178E2185005DA99E; - productRefGroup = 0ADF1875178E2185005DA99E /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 0ADF1873178E2185005DA99E /* IntroOpenGL */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 0ADF1872178E2185005DA99E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 009910241ACBE95E0003A2ED /* telegram_plane@2x.png in Resources */, - 009910151ACBE95E0003A2ED /* ic_cam_lens@2x.png in Resources */, - 00F0BD2F1AD535F400204D81 /* HockeySDKResources.bundle in Resources */, - 009910111ACBE95E0003A2ED /* fast_body@2x.png in Resources */, - 0099101F1ACBE95E0003A2ED /* powerful_infinity@2x.png in Resources */, - 0099101E1ACBE95E0003A2ED /* powerful_infinity_white@2x.png in Resources */, - 009910181ACBE95E0003A2ED /* ic_pin@2x.png in Resources */, - 009910251ACBE95E0003A2ED /* telegram_sphere@2x.png in Resources */, - 0ADF1886178E2185005DA99E /* InfoPlist.strings in Resources */, - 009910281ACBE95E0003A2ED /* start_arrow@2x.png in Resources */, - 0099101B1ACBE95E0003A2ED /* ic_videocam@2x.png in Resources */, - 006C1FEE18D35C1400F0C5F0 /* Localizable.strings in Resources */, - 009910261ACBE95E0003A2ED /* start_arrow_ipad.png in Resources */, - 009910101ACBE95E0003A2ED /* fast_arrow@2x.png in Resources */, - 0099101D1ACBE95E0003A2ED /* knot_up@2x.png in Resources */, - 00F0BD2E1AD535F400204D81 /* HockeySDK.xcconfig in Resources */, - 0099101C1ACBE95E0003A2ED /* knot_down@2x.png in Resources */, - 0099100F1ACBE95E0003A2ED /* fast_arrow_shadow@2x.png in Resources */, - 0099102F1ACBEB5B0003A2ED /* Images.xcassets in Resources */, - 009910191ACBE95E0003A2ED /* ic_smile_eye@2x.png in Resources */, - 009910231ACBE95E0003A2ED /* private_screw@2x.png in Resources */, - 0ADF188E178E2185005DA99E /* Default.png in Resources */, - 009910211ACBE95E0003A2ED /* powerful_star@2x.png in Resources */, - 0099102D1ACBEB220003A2ED /* LaunchScreen.xib in Resources */, - 009910201ACBE95E0003A2ED /* powerful_mask@2x.png in Resources */, - 009910141ACBE95E0003A2ED /* ic_bubble@2x.png in Resources */, - 009910161ACBE95E0003A2ED /* ic_cam@2x.png in Resources */, - 0099101A1ACBE95E0003A2ED /* ic_smile@2x.png in Resources */, - 009910171ACBE95E0003A2ED /* ic_pencil@2x.png in Resources */, - 009910131ACBE95E0003A2ED /* ic_bubble_dot@2x.png in Resources */, - 0ADF1890178E2185005DA99E /* Default@2x.png in Resources */, - 009910121ACBE95E0003A2ED /* fast_spiral@2x.png in Resources */, - 009910271ACBE95E0003A2ED /* start_arrow_ipad@2x.png in Resources */, - 009910221ACBE95E0003A2ED /* private_door@2x.png in Resources */, - 0ADF1892178E2185005DA99E /* Default-568h@2x.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 00F0BD1D1AD5355600204D81 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "FILE=\"${SRCROOT}/HockeySDK-iOS/BuildAgent\"\nif [ -f \"$FILE\" ]; then\n\"$FILE\"\nfi"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 0ADF1870178E2185005DA99E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00EAE19518F83BBB00D0B495 /* rngs.c in Sources */, - 007582B7191558D00016BCD1 /* timing.c in Sources */, - 0A8FBF91179E07600039BA29 /* buffer.c in Sources */, - 00D761331948B1B100961E77 /* RMRootViewController.m in Sources */, - 0A8FBF92179E07600039BA29 /* animations.c in Sources */, - 006C1FE518D35A9200F0C5F0 /* RMAppDelegate.m in Sources */, - 0A8FBF94179E07600039BA29 /* shader.c in Sources */, - 0A8FBF90179E07440039BA29 /* main.m in Sources */, - 006C1FEB18D35BD100F0C5F0 /* RMGeometry.m in Sources */, - 006C1FE818D35A9200F0C5F0 /* RMIntroViewController.m in Sources */, - 00D761361948B28E00961E77 /* RMLoginViewController.m in Sources */, - 006C1FE718D35A9200F0C5F0 /* RMIntroPageView.m in Sources */, - 0A8FBF8C179E073A0039BA29 /* platform_log.c in Sources */, - 0078937F18CE765200A15B38 /* texture_helper.m in Sources */, - 0ACEE2B417E78AF5009DFC95 /* objects.c in Sources */, - 0ACEE2B517E78AF5009DFC95 /* program.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 006C1FF018D35C1400F0C5F0 /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 006C1FEF18D35C1400F0C5F0 /* en */, - ); - name = Localizable.strings; - sourceTree = ""; - }; - 0099102B1ACBEB220003A2ED /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 0099102C1ACBEB220003A2ED /* Base */, - ); - name = LaunchScreen.xib; - sourceTree = ""; - }; - 0ADF1884178E2185005DA99E /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 0ADF1885178E2185005DA99E /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 0ADF18A0178E2185005DA99E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer: Ilya Rimchikov (W66FJY7879)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Ilya Rimchikov (W66FJY7879)"; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 0ADF18A1178E2185005DA99E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Distribution: Ilya Rimchikov (SWJJKVDDR2)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Ilya Rimchikov (SWJJKVDDR2)"; - COPY_PHASE_STRIP = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 0ADF18A3178E2185005DA99E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/HockeySDK-iOS/HockeySDK.embeddedframework", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "IntroOpenGL-Prefix.pch"; - HEADER_SEARCH_PATHS = ../../3rdparty/libpng; - INFOPLIST_FILE = "IntroOpenGL-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = ""; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 0ADF18A4178E2185005DA99E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/HockeySDK-iOS/HockeySDK.embeddedframework", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "IntroOpenGL-Prefix.pch"; - HEADER_SEARCH_PATHS = ../../3rdparty/libpng; - INFOPLIST_FILE = "IntroOpenGL-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = ""; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 0ADF186F178E2185005DA99E /* Build configuration list for PBXProject "IntroOpenGL" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0ADF18A0178E2185005DA99E /* Debug */, - 0ADF18A1178E2185005DA99E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0ADF18A2178E2185005DA99E /* Build configuration list for PBXNativeTarget "IntroOpenGL" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0ADF18A3178E2185005DA99E /* Debug */, - 0ADF18A4178E2185005DA99E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0ADF186C178E2185005DA99E /* Project object */; -} diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100755 index 8d41d631fe..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/AppIcon.appiconset/Contents.json b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 1b96b3b213..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "57x57", - "scale" : "1x" - }, - { - "idiom" : "iphone", - "size" : "57x57", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "50x50", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "50x50", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "72x72", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "72x72", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Contents.json b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index a2a7d966d0..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "images" : [ - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default.png", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default@2x.png", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default-568h@2x.png", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default@2x.png", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default-568h@2x.png", - "minimum-system-version" : "7.0", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png deleted file mode 100755 index 0891b7aabf..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default.png deleted file mode 100755 index 4c8ca6f693..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default@2x.png b/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default@2x.png deleted file mode 100755 index 35b84cffeb..0000000000 Binary files a/submodules/TelegramUI/third-party/RMIntro/platform/ios/IntroOpenGL/Images.xcassets/LaunchImage.launchimage/Default@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMAppDelegate.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMAppDelegate.h deleted file mode 100644 index 734acf855e..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMAppDelegate.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// RMAppDelegate.h -// IntroOpenGL -// -// Created by Ilya Rimchikov on 19/01/14. -// -// - -#import -#import "RMIntroViewController.h" -#import "RMRootViewController.h" - -@interface RMAppDelegate : UIResponder -{ - RMRootViewController *_rootVC; -} -@property (strong, nonatomic) UIWindow *window; -//@property (nonatomic) RMTestView *iconView; -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMAppDelegate.m b/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMAppDelegate.m deleted file mode 100644 index da3fc21607..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMAppDelegate.m +++ /dev/null @@ -1,68 +0,0 @@ -// -// RMAppDelegate.m -// IntroOpenGL -// -// Created by Ilya Rimchikov on 19/01/14. -// -// - -#import "RMAppDelegate.h" -#import "RMIntroViewController.h" - -#import - - -@implementation RMAppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - [[BITHockeyManager sharedHockeyManager] configureWithIdentifier:@"55c68b3d58c8184bb3d5ee35715e79ee"]; - [[BITHockeyManager sharedHockeyManager] startManager]; - [[BITHockeyManager sharedHockeyManager].authenticator - authenticateInstallation]; - - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - - _rootVC = [[RMRootViewController alloc]init]; - _rootVC.view.backgroundColor = [UIColor greenColor]; - - self.window.rootViewController = _rootVC; - - [self.window makeKeyAndVisible]; - - return YES; -} - - -- (void)applicationWillResignActive:(UIApplication *)application -{ - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - -- (void)applicationWillEnterForeground:(UIApplication *)application -{ - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - - //_rootVC.draw_q=0; - //[_rootVC performSelector:@selector(startTimer) withObject:nil afterDelay:.1]; - //[_rootVC startTimer]; -} - -- (void)applicationWillTerminate:(UIApplication *)application -{ - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. -} - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGLKViewController.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGLKViewController.h deleted file mode 100644 index 3920efeda4..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGLKViewController.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// RMGLKViewController.h -// Intro -// -// Created by Ilya on 04/03/14. -// -// - -#import -#import - -@interface RMGLKViewController : GLKViewController - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGLKViewController.m b/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGLKViewController.m deleted file mode 100644 index 78b47b7789..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMGLKViewController.m +++ /dev/null @@ -1,66 +0,0 @@ -// -// RMGLKViewController.m -// Intro -// -// Created by Ilya on 04/03/14. -// -// - -#import "RMGLKViewController.h" -#include "game.h" - -@interface RMGLKViewController () { -} - -@property (strong, nonatomic) EAGLContext *context; - -- (void)setupGL; - -@end - -@implementation RMGLKViewController - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; - - if (!self.context) { - NSLog(@"Failed to create ES context"); - } - - GLKView *view = (GLKView *)self.view; - view.context = self.context; - //view.drawableDepthFormat = GLKViewDrawableDepthFormat24; - //view.drawableStencilFormat = GLKViewDrawableStencilFormat8; - //view.userInteractionEnabled = YES; - self.preferredFramesPerSecond = 60; - - [self setupGL]; -} - -- (void)dealloc -{ - if ([EAGLContext currentContext] == self.context) { - [EAGLContext setCurrentContext:nil]; - } -} - -- (void)setupGL -{ - [EAGLContext setCurrentContext:self.context]; - on_surface_created(); - - on_surface_changed(self.view.bounds.size.width, self.view.bounds.size.height); - //on_surface_changed(240*self.view.contentScaleFactor, 240*self.view.contentScaleFactor); -} - -#pragma mark - GLKView and GLKViewController delegate methods - -- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect -{ - on_draw_frame(); -} - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMLoginViewController.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMLoginViewController.h deleted file mode 100644 index 424aabc412..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMLoginViewController.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// RMLoginViewController.h -// IntroOpenGL -// -// Created by Ilya Rimchikov on 11/06/14. -// Copyright (c) 2014 Learn OpenGL ES. All rights reserved. -// - -#import - -@interface RMLoginViewController : UIViewController - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMLoginViewController.m b/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMLoginViewController.m deleted file mode 100644 index e487604a41..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMLoginViewController.m +++ /dev/null @@ -1,50 +0,0 @@ -// -// RMLoginViewController.m -// IntroOpenGL -// -// Created by Ilya Rimchikov on 11/06/14. -// Copyright (c) 2014 Learn OpenGL ES. All rights reserved. -// - -#import "RMLoginViewController.h" - -@interface RMLoginViewController () - -@end - -@implementation RMLoginViewController - -- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - self.view.backgroundColor = [UIColor colorWithWhite:.8 alpha:.8]; - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view. -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -/* -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender -{ - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMRootViewController.h b/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMRootViewController.h deleted file mode 100644 index 7284951314..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMRootViewController.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// RMRootViewController.h -// IntroOpenGL -// -// Created by Ilya Rimchikov on 11/06/14. -// Copyright (c) 2014 Learn OpenGL ES. All rights reserved. -// - -#import -#import "RMIntroViewController.h" -#import "RMLoginViewController.h" - -@interface RMRootViewController : UIViewController -{ - RMIntroViewController *_introVC; - RMLoginViewController *_loginVC; - -} - -- (void)startButtonPress; - - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMRootViewController.m b/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMRootViewController.m deleted file mode 100644 index 204ae8e536..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/RMRootViewController.m +++ /dev/null @@ -1,123 +0,0 @@ -// -// RMRootViewController.m -// IntroOpenGL -// -// Created by Ilya Rimchikov on 11/06/14. -// Copyright (c) 2014 Learn OpenGL ES. All rights reserved. -// - -#import "RMRootViewController.h" -#import "RMGeometry.h" - -@interface RMRootViewController () - -@end - -@implementation RMRootViewController - -- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - _introVC = [[RMIntroViewController alloc] init]; - _introVC.view.frame = CGRectChangedOriginY(self.view.frame, 0); - - _loginVC = [[RMLoginViewController alloc]init]; - _loginVC.view.frame = CGRectChangedOriginY(self.view.frame, 0); - - UIButton *back = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [back setTitle:@"Back" forState:UIControlStateNormal]; - [back setFont:[UIFont systemFontOfSize:24.]]; - [_loginVC.view addSubview:back]; - back.frame= CGRectMake(0, 100, 320, 100); - [back addTarget:self action:@selector(backButtonPress) forControlEvents:UIControlEventTouchUpInside]; - - UIButton *reset = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [reset setTitle:@"Free Intro Controller" forState:UIControlStateNormal]; - [reset setFont:[UIFont systemFontOfSize:24.]]; - [_loginVC.view addSubview:reset]; - reset.frame= CGRectMake(0, 200, 320, 100); - [reset addTarget:self action:@selector(resetButtonPress) forControlEvents:UIControlEventTouchUpInside]; - - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - [self.view addSubview:_introVC.view]; - - - // Do any additional setup after loading the view. -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -/* -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender -{ - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ - - - -- (NSUInteger)supportedInterfaceOrientations -{ - //if (IPAD) { - return UIInterfaceOrientationMaskAll; - //} - //return UIInterfaceOrientationMaskPortrait; -} - - -- (void)startButtonPress -{ - NSLog(@"startButtonPress"); - - [self.view addSubview:_loginVC.view]; - _loginVC.view.frame = CGRectChangedOriginX(_loginVC.view.frame, self.view.frame.size.width); - - - [_introVC stopTimer]; - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:.3]; - _loginVC.view.frame = CGRectChangedOriginX(_loginVC.view.frame, 0); - [UIView commitAnimations]; - -} - - -- (void)backButtonPress -{ - NSLog(@"back"); - - [_introVC startTimer]; - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:.3]; - _loginVC.view.frame = CGRectChangedOriginX(_loginVC.view.frame, self.view.bounds.size.width); - [UIView commitAnimations]; - //[self popViewControllerAnimated:YES]; -} - -- (void)resetButtonPress -{ - NSLog(@"reset"); - [_introVC.view removeFromSuperview]; - _introVC = nil; - - //self.viewControllers = [NSArray arrayWithObject:[self.viewControllers objectAtIndex:1]]; - //[nav popViewControllerAnimated:YES]; -} - -@end diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/en.lproj/InfoPlist.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/en.lproj/InfoPlist.strings deleted file mode 100755 index 477b28ff8f..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/en.lproj/Localizable.strings b/submodules/TelegramUI/third-party/RMIntro/platform/ios/en.lproj/Localizable.strings deleted file mode 100644 index aa5a2f2203..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/en.lproj/Localizable.strings +++ /dev/null @@ -1,27 +0,0 @@ -/* - Localizable.strings - intro - - Created by Ilya Rimchikov on 17/01/14. - Copyright (c) 2014 Ilya Rimchikov. All rights reserved. -*/ - -"RMIntroHeadlineTelegram" = "Telegram"; -"RMIntroDescriptionTelegram" = "The world's **fastest** messaging app.\nIt is **free** and **secure**."; - -"RMIntroHeadlineFast" = "Fast"; -"RMIntroDescriptionFast" = "**Telegram** delivers messages faster\nthan any other application."; - -"RMIntroHeadlineFree" = "Free"; -"RMIntroDescriptionFree" = "**Telegram** is free forever. No ads.\nNo subscription fees."; - -"RMIntroHeadlinePowerful" = "Powerful"; -"RMIntroDescriptionPowerful" = "**Telegram** has no limits on\nthe size of your media and chats."; - -"RMIntroHeadlineSecure" = "Secure"; -"RMIntroDescriptionSecure" = "**Telegram** keeps your messages\nsafe from hacker attacks."; - -"RMIntroHeadlineCloud" = "Cloud-Based"; -"RMIntroDescriptionCloud" = "**Telegram** lets you access your\nmessages from multiple devices."; - -"RMIntroStartMessaging" = "Start Messaging"; \ No newline at end of file diff --git a/submodules/TelegramUI/third-party/RMIntro/platform/ios/main.m b/submodules/TelegramUI/third-party/RMIntro/platform/ios/main.m deleted file mode 100755 index 641e6983b3..0000000000 --- a/submodules/TelegramUI/third-party/RMIntro/platform/ios/main.m +++ /dev/null @@ -1,10 +0,0 @@ -#import - -#import "RMAppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([RMAppDelegate class])); - } -} diff --git a/submodules/TelegramUIPreferences/Info.plist b/submodules/TelegramUIPreferences/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/TelegramUIPreferences/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TelegramUI/TelegramUI/CallListSettings.swift b/submodules/TelegramUIPreferences/Sources/CallListSettings.swift similarity index 86% rename from submodules/TelegramUI/TelegramUI/CallListSettings.swift rename to submodules/TelegramUIPreferences/Sources/CallListSettings.swift index d9168afe93..ff81d69b1a 100644 --- a/submodules/TelegramUI/TelegramUI/CallListSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/CallListSettings.swift @@ -33,12 +33,12 @@ public struct CallListSettings: PreferencesEntry, Equatable { return lhs.showTab == rhs.showTab } - func withUpdatedShowTab(_ showTab: Bool) -> CallListSettings { + public func withUpdatedShowTab(_ showTab: Bool) -> CallListSettings { return CallListSettings(showTab: showTab) } } -func updateCallListSettingsInteractively(accountManager: AccountManager, _ f: @escaping (CallListSettings) -> CallListSettings) -> Signal { +public func updateCallListSettingsInteractively(accountManager: AccountManager, _ f: @escaping (CallListSettings) -> CallListSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.callListSettings, { entry in let currentSettings: CallListSettings diff --git a/submodules/TelegramUI/TelegramUI/ChatArchiveSettings.swift b/submodules/TelegramUIPreferences/Sources/ChatArchiveSettings.swift similarity index 65% rename from submodules/TelegramUI/TelegramUI/ChatArchiveSettings.swift rename to submodules/TelegramUIPreferences/Sources/ChatArchiveSettings.swift index d6efdcd97e..a91e0f0b3e 100644 --- a/submodules/TelegramUI/TelegramUI/ChatArchiveSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/ChatArchiveSettings.swift @@ -2,26 +2,26 @@ import Foundation import Postbox import SwiftSignalKit -struct ChatArchiveSettings: Equatable, PreferencesEntry { - var isHiddenByDefault: Bool +public struct ChatArchiveSettings: Equatable, PreferencesEntry { + public var isHiddenByDefault: Bool - static var `default`: ChatArchiveSettings { + public static var `default`: ChatArchiveSettings { return ChatArchiveSettings(isHiddenByDefault: false) } - init(isHiddenByDefault: Bool) { + public init(isHiddenByDefault: Bool) { self.isHiddenByDefault = isHiddenByDefault } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { self.isHiddenByDefault = decoder.decodeInt32ForKey("isHiddenByDefault", orElse: 1) != 0 } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(self.isHiddenByDefault ? 1 : 0, forKey: "isHiddenByDefault") } - func isEqual(to: PreferencesEntry) -> Bool { + public func isEqual(to: PreferencesEntry) -> Bool { if let to = to as? ChatArchiveSettings { return self == to } else { @@ -30,7 +30,7 @@ struct ChatArchiveSettings: Equatable, PreferencesEntry { } } -func updateChatArchiveSettings(transaction: Transaction, _ f: @escaping (ChatArchiveSettings) -> ChatArchiveSettings) { +public func updateChatArchiveSettings(transaction: Transaction, _ f: @escaping (ChatArchiveSettings) -> ChatArchiveSettings) { transaction.updatePreferencesEntry(key: ApplicationSpecificPreferencesKeys.chatArchiveSettings, { entry in let currentSettings: ChatArchiveSettings if let entry = entry as? ChatArchiveSettings { diff --git a/submodules/TelegramUI/TelegramUI/ContactSynchronizationSettings.swift b/submodules/TelegramUIPreferences/Sources/ContactSynchronizationSettings.swift similarity index 89% rename from submodules/TelegramUI/TelegramUI/ContactSynchronizationSettings.swift rename to submodules/TelegramUIPreferences/Sources/ContactSynchronizationSettings.swift index 5b3df8ce67..98ae147d31 100644 --- a/submodules/TelegramUI/TelegramUI/ContactSynchronizationSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/ContactSynchronizationSettings.swift @@ -7,6 +7,11 @@ public enum ContactsSortOrder: Int32 { case natural } +public enum PresentationPersonNameOrder: Int32 { + case firstLast = 0 + case lastFirst = 1 +} + public struct ContactSynchronizationSettings: Equatable, PreferencesEntry { public var _legacySynchronizeDeviceContacts: Bool public var nameDisplayOrder: PresentationPersonNameOrder @@ -43,7 +48,7 @@ public struct ContactSynchronizationSettings: Equatable, PreferencesEntry { } } -func updateContactSettingsInteractively(accountManager: AccountManager, _ f: @escaping (ContactSynchronizationSettings) -> ContactSynchronizationSettings) -> Signal { +public func updateContactSettingsInteractively(accountManager: AccountManager, _ f: @escaping (ContactSynchronizationSettings) -> ContactSynchronizationSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.contactSynchronizationSettings, { entry in let currentSettings: ContactSynchronizationSettings diff --git a/submodules/TelegramUI/TelegramUI/ExperimentalSettings.swift b/submodules/TelegramUIPreferences/Sources/ExperimentalSettings.swift similarity index 89% rename from submodules/TelegramUI/TelegramUI/ExperimentalSettings.swift rename to submodules/TelegramUIPreferences/Sources/ExperimentalSettings.swift index 8821fb1f99..53c722b3f2 100644 --- a/submodules/TelegramUI/TelegramUI/ExperimentalSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/ExperimentalSettings.swift @@ -34,7 +34,7 @@ public struct ExperimentalSettings: PreferencesEntry, Equatable { } } -func updateExperimentalSettingsInteractively(accountManager: AccountManager, _ f: @escaping (ExperimentalSettings) -> ExperimentalSettings) -> Signal { +public func updateExperimentalSettingsInteractively(accountManager: AccountManager, _ f: @escaping (ExperimentalSettings) -> ExperimentalSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.experimentalSettings, { entry in let currentSettings: ExperimentalSettings diff --git a/submodules/TelegramUI/TelegramUI/ExperimentalUISettings.swift b/submodules/TelegramUIPreferences/Sources/ExperimentalUISettings.swift similarity index 92% rename from submodules/TelegramUI/TelegramUI/ExperimentalUISettings.swift rename to submodules/TelegramUIPreferences/Sources/ExperimentalUISettings.swift index 51b477d694..37d8e96724 100644 --- a/submodules/TelegramUI/TelegramUI/ExperimentalUISettings.swift +++ b/submodules/TelegramUIPreferences/Sources/ExperimentalUISettings.swift @@ -42,7 +42,7 @@ public struct ExperimentalUISettings: Equatable, PreferencesEntry { } } -func updateExperimentalUISettingsInteractively(accountManager: AccountManager, _ f: @escaping (ExperimentalUISettings) -> ExperimentalUISettings) -> Signal { +public func updateExperimentalUISettingsInteractively(accountManager: AccountManager, _ f: @escaping (ExperimentalUISettings) -> ExperimentalUISettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.experimentalUISettings, { entry in let currentSettings: ExperimentalUISettings diff --git a/submodules/TelegramUI/TelegramUI/GeneratedMediaStoreSettings.swift b/submodules/TelegramUIPreferences/Sources/GeneratedMediaStoreSettings.swift similarity index 84% rename from submodules/TelegramUI/TelegramUI/GeneratedMediaStoreSettings.swift rename to submodules/TelegramUIPreferences/Sources/GeneratedMediaStoreSettings.swift index 052e86d5ae..3b711ef296 100644 --- a/submodules/TelegramUI/TelegramUI/GeneratedMediaStoreSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/GeneratedMediaStoreSettings.swift @@ -10,7 +10,7 @@ public struct GeneratedMediaStoreSettings: PreferencesEntry, Equatable { return GeneratedMediaStoreSettings(storeEditedPhotos: true, storeCapturedMedia: true) } - init(storeEditedPhotos: Bool, storeCapturedMedia: Bool) { + public init(storeEditedPhotos: Bool, storeCapturedMedia: Bool) { self.storeEditedPhotos = storeEditedPhotos self.storeCapturedMedia = storeCapturedMedia } @@ -37,12 +37,12 @@ public struct GeneratedMediaStoreSettings: PreferencesEntry, Equatable { return lhs.storeEditedPhotos == rhs.storeEditedPhotos && lhs.storeCapturedMedia == rhs.storeCapturedMedia } - func withUpdatedStoreEditedPhotos(_ storeEditedPhotos: Bool) -> GeneratedMediaStoreSettings { + public func withUpdatedStoreEditedPhotos(_ storeEditedPhotos: Bool) -> GeneratedMediaStoreSettings { return GeneratedMediaStoreSettings(storeEditedPhotos: storeEditedPhotos, storeCapturedMedia: self.storeCapturedMedia) } } -func updateGeneratedMediaStoreSettingsInteractively(accountManager: AccountManager, _ f: @escaping (GeneratedMediaStoreSettings) -> GeneratedMediaStoreSettings) -> Signal { +public func updateGeneratedMediaStoreSettingsInteractively(accountManager: AccountManager, _ f: @escaping (GeneratedMediaStoreSettings) -> GeneratedMediaStoreSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.generatedMediaStoreSettings, { entry in let currentSettings: GeneratedMediaStoreSettings diff --git a/submodules/TelegramUI/TelegramUI/InAppNotificationSettings.swift b/submodules/TelegramUIPreferences/Sources/InAppNotificationSettings.swift similarity index 90% rename from submodules/TelegramUI/TelegramUI/InAppNotificationSettings.swift rename to submodules/TelegramUIPreferences/Sources/InAppNotificationSettings.swift index ac243b3caf..9f9335ca0b 100644 --- a/submodules/TelegramUI/TelegramUI/InAppNotificationSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/InAppNotificationSettings.swift @@ -44,7 +44,7 @@ public struct InAppNotificationSettings: PreferencesEntry, Equatable { return InAppNotificationSettings(playSounds: true, vibrate: false, displayPreviews: true, totalUnreadCountDisplayStyle: .raw, totalUnreadCountDisplayCategory: .messages, totalUnreadCountIncludeTags: [.regularChatsAndPrivateGroups], displayNameOnLockscreen: true, displayNotificationsFromAllAccounts: true) } - init(playSounds: Bool, vibrate: Bool, displayPreviews: Bool, totalUnreadCountDisplayStyle: TotalUnreadCountDisplayStyle, totalUnreadCountDisplayCategory: TotalUnreadCountDisplayCategory, totalUnreadCountIncludeTags: PeerSummaryCounterTags, displayNameOnLockscreen: Bool, displayNotificationsFromAllAccounts: Bool) { + public init(playSounds: Bool, vibrate: Bool, displayPreviews: Bool, totalUnreadCountDisplayStyle: TotalUnreadCountDisplayStyle, totalUnreadCountDisplayCategory: TotalUnreadCountDisplayCategory, totalUnreadCountIncludeTags: PeerSummaryCounterTags, displayNameOnLockscreen: Bool, displayNotificationsFromAllAccounts: Bool) { self.playSounds = playSounds self.vibrate = vibrate self.displayPreviews = displayPreviews @@ -90,7 +90,7 @@ public struct InAppNotificationSettings: PreferencesEntry, Equatable { } } -func updateInAppNotificationSettingsInteractively(accountManager: AccountManager, _ f: @escaping (InAppNotificationSettings) -> InAppNotificationSettings) -> Signal { +public func updateInAppNotificationSettingsInteractively(accountManager: AccountManager, _ f: @escaping (InAppNotificationSettings) -> InAppNotificationSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.inAppNotificationSettings, { entry in let currentSettings: InAppNotificationSettings diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePresentationSettings.swift b/submodules/TelegramUIPreferences/Sources/InstantPagePresentationSettings.swift similarity index 86% rename from submodules/TelegramUI/TelegramUI/InstantPagePresentationSettings.swift rename to submodules/TelegramUIPreferences/Sources/InstantPagePresentationSettings.swift index 8ceed436e4..b2b696215a 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPagePresentationSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/InstantPagePresentationSettings.swift @@ -77,28 +77,28 @@ public final class InstantPagePresentationSettings: PreferencesEntry, Equatable return true } - func withUpdatedThemeType(_ themeType: InstantPageThemeType) -> InstantPagePresentationSettings { + public func withUpdatedThemeType(_ themeType: InstantPageThemeType) -> InstantPagePresentationSettings { return InstantPagePresentationSettings(themeType: themeType, fontSize: self.fontSize, forceSerif: self.forceSerif, autoNightMode: self.autoNightMode, ignoreAutoNightModeUntil: self.ignoreAutoNightModeUntil) } - func withUpdatedFontSize(_ fontSize: InstantPagePresentationFontSize) -> InstantPagePresentationSettings { + public func withUpdatedFontSize(_ fontSize: InstantPagePresentationFontSize) -> InstantPagePresentationSettings { return InstantPagePresentationSettings(themeType: self.themeType, fontSize: fontSize, forceSerif: self.forceSerif, autoNightMode: self.autoNightMode, ignoreAutoNightModeUntil: self.ignoreAutoNightModeUntil) } - func withUpdatedForceSerif(_ forceSerif: Bool) -> InstantPagePresentationSettings { + public func withUpdatedForceSerif(_ forceSerif: Bool) -> InstantPagePresentationSettings { return InstantPagePresentationSettings(themeType: self.themeType, fontSize: self.fontSize, forceSerif: forceSerif, autoNightMode: self.autoNightMode, ignoreAutoNightModeUntil: self.ignoreAutoNightModeUntil) } - func withUpdatedAutoNightMode(_ autoNightMode: Bool) -> InstantPagePresentationSettings { + public func withUpdatedAutoNightMode(_ autoNightMode: Bool) -> InstantPagePresentationSettings { return InstantPagePresentationSettings(themeType: self.themeType, fontSize: self.fontSize, forceSerif: self.forceSerif, autoNightMode: autoNightMode, ignoreAutoNightModeUntil: self.ignoreAutoNightModeUntil) } - func withUpdatedIgnoreAutoNightModeUntil(_ ignoreAutoNightModeUntil: Int32) -> InstantPagePresentationSettings { + public func withUpdatedIgnoreAutoNightModeUntil(_ ignoreAutoNightModeUntil: Int32) -> InstantPagePresentationSettings { return InstantPagePresentationSettings(themeType: self.themeType, fontSize: self.fontSize, forceSerif: self.forceSerif, autoNightMode: autoNightMode, ignoreAutoNightModeUntil: ignoreAutoNightModeUntil) } } -func updateInstantPagePresentationSettingsInteractively(accountManager: AccountManager, _ f: @escaping (InstantPagePresentationSettings) -> InstantPagePresentationSettings) -> Signal { +public func updateInstantPagePresentationSettingsInteractively(accountManager: AccountManager, _ f: @escaping (InstantPagePresentationSettings) -> InstantPagePresentationSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.instantPagePresentationSettings, { entry in let currentSettings: InstantPagePresentationSettings diff --git a/submodules/TelegramUI/TelegramUI/LegacyAutomaticMediaDownloadSettings.swift b/submodules/TelegramUIPreferences/Sources/LegacyAutomaticMediaDownloadSettings.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/LegacyAutomaticMediaDownloadSettings.swift rename to submodules/TelegramUIPreferences/Sources/LegacyAutomaticMediaDownloadSettings.swift diff --git a/submodules/TelegramUI/TelegramUI/MediaAutoDownloadSettings.swift b/submodules/TelegramUIPreferences/Sources/MediaAutoDownloadSettings.swift similarity index 96% rename from submodules/TelegramUI/TelegramUI/MediaAutoDownloadSettings.swift rename to submodules/TelegramUIPreferences/Sources/MediaAutoDownloadSettings.swift index 541cd06a11..3075def7a7 100644 --- a/submodules/TelegramUI/TelegramUI/MediaAutoDownloadSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/MediaAutoDownloadSettings.swift @@ -217,7 +217,7 @@ public struct MediaAutoDownloadSettings: PreferencesEntry, Equatable { } } - func connectionSettings(for networkType: MediaAutoDownloadNetworkType) -> MediaAutoDownloadConnection { + public func connectionSettings(for networkType: MediaAutoDownloadNetworkType) -> MediaAutoDownloadConnection { switch networkType { case .cellular: return self.cellular @@ -226,7 +226,7 @@ public struct MediaAutoDownloadSettings: PreferencesEntry, Equatable { } } - func updatedWithAutodownloadSettings(_ autodownloadSettings: AutodownloadSettings) -> MediaAutoDownloadSettings { + public func updatedWithAutodownloadSettings(_ autodownloadSettings: AutodownloadSettings) -> MediaAutoDownloadSettings { var settings = self settings.presets = presetsWithAutodownloadSettings(autodownloadSettings) return settings @@ -246,7 +246,7 @@ private func presetsWithAutodownloadSettings(_ autodownloadSettings: Autodownloa return MediaAutoDownloadPresets(low: categoriesWithAutodownloadPreset(autodownloadSettings.lowPreset, preset: .low), medium: categoriesWithAutodownloadPreset(autodownloadSettings.mediumPreset, preset: .medium), high: categoriesWithAutodownloadPreset(autodownloadSettings.highPreset, preset: .high)) } -func updateMediaDownloadSettingsInteractively(accountManager: AccountManager, _ f: @escaping (MediaAutoDownloadSettings) -> MediaAutoDownloadSettings) -> Signal { +public func updateMediaDownloadSettingsInteractively(accountManager: AccountManager, _ f: @escaping (MediaAutoDownloadSettings) -> MediaAutoDownloadSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.automaticMediaDownloadSettings, { entry in let currentSettings: MediaAutoDownloadSettings @@ -306,7 +306,7 @@ private func categoryAndSizeForMedia(_ media: Media, categories: MediaAutoDownlo } } -func isAutodownloadEnabledForPeerType(_ peerType: MediaAutoDownloadPeerType, category: MediaAutoDownloadCategory) -> Bool { +public func isAutodownloadEnabledForPeerType(_ peerType: MediaAutoDownloadPeerType, category: MediaAutoDownloadCategory) -> Bool { switch peerType { case .contact: return category.contacts @@ -319,7 +319,7 @@ func isAutodownloadEnabledForPeerType(_ peerType: MediaAutoDownloadPeerType, cat } } -func isAutodownloadEnabledForAnyPeerType(category: MediaAutoDownloadCategory) -> Bool { +public func isAutodownloadEnabledForAnyPeerType(category: MediaAutoDownloadCategory) -> Bool { return category.contacts || category.otherPrivate || category.groups || category.channels } diff --git a/submodules/TelegramUI/TelegramUI/MediaInputSettings.swift b/submodules/TelegramUIPreferences/Sources/MediaInputSettings.swift similarity index 85% rename from submodules/TelegramUI/TelegramUI/MediaInputSettings.swift rename to submodules/TelegramUIPreferences/Sources/MediaInputSettings.swift index e7064f67b3..db6fba2ae2 100644 --- a/submodules/TelegramUI/TelegramUI/MediaInputSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/MediaInputSettings.swift @@ -33,12 +33,12 @@ public struct MediaInputSettings: PreferencesEntry, Equatable { return lhs.enableRaiseToSpeak == rhs.enableRaiseToSpeak } - func withUpdatedEnableRaiseToSpeak(_ enableRaiseToSpeak: Bool) -> MediaInputSettings { + public func withUpdatedEnableRaiseToSpeak(_ enableRaiseToSpeak: Bool) -> MediaInputSettings { return MediaInputSettings(enableRaiseToSpeak: enableRaiseToSpeak) } } -func updateMediaInputSettingsInteractively(accountManager: AccountManager, _ f: @escaping (MediaInputSettings) -> MediaInputSettings) -> Signal { +public func updateMediaInputSettingsInteractively(accountManager: AccountManager, _ f: @escaping (MediaInputSettings) -> MediaInputSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.mediaInputSettings, { entry in let currentSettings: MediaInputSettings diff --git a/submodules/TelegramUI/TelegramUI/MusicPlaybackSettings.swift b/submodules/TelegramUIPreferences/Sources/MusicPlaybackSettings.swift similarity index 86% rename from submodules/TelegramUI/TelegramUI/MusicPlaybackSettings.swift rename to submodules/TelegramUIPreferences/Sources/MusicPlaybackSettings.swift index 8528947332..8d6d48cd49 100644 --- a/submodules/TelegramUI/TelegramUI/MusicPlaybackSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/MusicPlaybackSettings.swift @@ -62,20 +62,20 @@ public struct MusicPlaybackSettings: PreferencesEntry, Equatable { return lhs.order == rhs.order && lhs.looping == rhs.looping && lhs.voicePlaybackRate == rhs.voicePlaybackRate } - func withUpdatedOrder(_ order: MusicPlaybackSettingsOrder) -> MusicPlaybackSettings { + public func withUpdatedOrder(_ order: MusicPlaybackSettingsOrder) -> MusicPlaybackSettings { return MusicPlaybackSettings(order: order, looping: self.looping, voicePlaybackRate: self.voicePlaybackRate) } - func withUpdatedLooping(_ looping: MusicPlaybackSettingsLooping) -> MusicPlaybackSettings { + public func withUpdatedLooping(_ looping: MusicPlaybackSettingsLooping) -> MusicPlaybackSettings { return MusicPlaybackSettings(order: self.order, looping: looping, voicePlaybackRate: self.voicePlaybackRate) } - func withUpdatedVoicePlaybackRate(_ voicePlaybackRate: AudioPlaybackRate) -> MusicPlaybackSettings { + public func withUpdatedVoicePlaybackRate(_ voicePlaybackRate: AudioPlaybackRate) -> MusicPlaybackSettings { return MusicPlaybackSettings(order: self.order, looping: self.looping, voicePlaybackRate: voicePlaybackRate) } } -func updateMusicPlaybackSettingsInteractively(accountManager: AccountManager, _ f: @escaping (MusicPlaybackSettings) -> MusicPlaybackSettings) -> Signal { +public func updateMusicPlaybackSettingsInteractively(accountManager: AccountManager, _ f: @escaping (MusicPlaybackSettings) -> MusicPlaybackSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.musicPlaybackSettings, { entry in let currentSettings: MusicPlaybackSettings diff --git a/submodules/TelegramUI/TelegramUI/PostboxKeys.swift b/submodules/TelegramUIPreferences/Sources/PostboxKeys.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/PostboxKeys.swift rename to submodules/TelegramUIPreferences/Sources/PostboxKeys.swift diff --git a/submodules/TelegramUI/TelegramUI/PresentationPasscodeSettings.swift b/submodules/TelegramUIPreferences/Sources/PresentationPasscodeSettings.swift similarity index 80% rename from submodules/TelegramUI/TelegramUI/PresentationPasscodeSettings.swift rename to submodules/TelegramUIPreferences/Sources/PresentationPasscodeSettings.swift index 6ff8197f03..6d212f46a2 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationPasscodeSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/PresentationPasscodeSettings.swift @@ -12,7 +12,7 @@ public struct PresentationPasscodeSettings: PreferencesEntry, Equatable { return PresentationPasscodeSettings(enableBiometrics: false, autolockTimeout: nil, biometricsDomainState: nil, shareBiometricsDomainState: nil) } - init(enableBiometrics: Bool, autolockTimeout: Int32?, biometricsDomainState: Data?, shareBiometricsDomainState: Data?) { + public init(enableBiometrics: Bool, autolockTimeout: Int32?, biometricsDomainState: Data?, shareBiometricsDomainState: Data?) { self.enableBiometrics = enableBiometrics self.autolockTimeout = autolockTimeout self.biometricsDomainState = biometricsDomainState @@ -57,30 +57,30 @@ public struct PresentationPasscodeSettings: PreferencesEntry, Equatable { return lhs.enableBiometrics == rhs.enableBiometrics && lhs.autolockTimeout == rhs.autolockTimeout && lhs.biometricsDomainState == rhs.biometricsDomainState && lhs.shareBiometricsDomainState == rhs.shareBiometricsDomainState } - func withUpdatedEnableBiometrics(_ enableBiometrics: Bool) -> PresentationPasscodeSettings { + public func withUpdatedEnableBiometrics(_ enableBiometrics: Bool) -> PresentationPasscodeSettings { return PresentationPasscodeSettings(enableBiometrics: enableBiometrics, autolockTimeout: self.autolockTimeout, biometricsDomainState: self.biometricsDomainState, shareBiometricsDomainState: self.shareBiometricsDomainState) } - func withUpdatedAutolockTimeout(_ autolockTimeout: Int32?) -> PresentationPasscodeSettings { + public func withUpdatedAutolockTimeout(_ autolockTimeout: Int32?) -> PresentationPasscodeSettings { return PresentationPasscodeSettings(enableBiometrics: self.enableBiometrics, autolockTimeout: autolockTimeout, biometricsDomainState: self.biometricsDomainState, shareBiometricsDomainState: self.shareBiometricsDomainState) } - func withUpdatedBiometricsDomainState(_ biometricsDomainState: Data?) -> PresentationPasscodeSettings { + public func withUpdatedBiometricsDomainState(_ biometricsDomainState: Data?) -> PresentationPasscodeSettings { return PresentationPasscodeSettings(enableBiometrics: self.enableBiometrics, autolockTimeout: autolockTimeout, biometricsDomainState: biometricsDomainState, shareBiometricsDomainState: self.shareBiometricsDomainState) } - func withUpdatedShareBiometricsDomainState(_ shareBiometricsDomainState: Data?) -> PresentationPasscodeSettings { + public func withUpdatedShareBiometricsDomainState(_ shareBiometricsDomainState: Data?) -> PresentationPasscodeSettings { return PresentationPasscodeSettings(enableBiometrics: self.enableBiometrics, autolockTimeout: autolockTimeout, biometricsDomainState: self.biometricsDomainState, shareBiometricsDomainState: shareBiometricsDomainState) } } -func updatePresentationPasscodeSettingsInteractively(accountManager: AccountManager, _ f: @escaping (PresentationPasscodeSettings) -> PresentationPasscodeSettings) -> Signal { +public func updatePresentationPasscodeSettingsInteractively(accountManager: AccountManager, _ f: @escaping (PresentationPasscodeSettings) -> PresentationPasscodeSettings) -> Signal { return accountManager.transaction { transaction -> Void in updatePresentationPasscodeSettingsInternal(transaction: transaction, f) } } -func updatePresentationPasscodeSettingsInternal(transaction: AccountManagerModifier, _ f: @escaping (PresentationPasscodeSettings) -> PresentationPasscodeSettings) { +public func updatePresentationPasscodeSettingsInternal(transaction: AccountManagerModifier, _ f: @escaping (PresentationPasscodeSettings) -> PresentationPasscodeSettings) { transaction.updateSharedData(ApplicationSpecificSharedDataKeys.presentationPasscodeSettings, { entry in let currentSettings: PresentationPasscodeSettings if let entry = entry as? PresentationPasscodeSettings { diff --git a/submodules/TelegramUI/TelegramUI/PresentationThemeSettings.swift b/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/PresentationThemeSettings.swift rename to submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift index bfb6d184d2..88cf1c3af1 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationThemeSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift @@ -57,7 +57,7 @@ public enum PresentationThemeReference: PostboxCoding, Equatable { } } - var index: Int64 { + public var index: Int64 { let namespace: Int32 let id: Int32 switch self { diff --git a/submodules/TelegramUI/TelegramUI/RenderedTotalUnreadCount.swift b/submodules/TelegramUIPreferences/Sources/RenderedTotalUnreadCount.swift similarity index 93% rename from submodules/TelegramUI/TelegramUI/RenderedTotalUnreadCount.swift rename to submodules/TelegramUIPreferences/Sources/RenderedTotalUnreadCount.swift index ee5a9782ff..c0c8767fbb 100644 --- a/submodules/TelegramUI/TelegramUI/RenderedTotalUnreadCount.swift +++ b/submodules/TelegramUIPreferences/Sources/RenderedTotalUnreadCount.swift @@ -12,7 +12,7 @@ public func renderedTotalUnreadCount(inAppNotificationSettings: InAppNotificatio return renderedTotalUnreadCount(inAppSettings: inAppNotificationSettings, totalUnreadState: totalUnreadState) } -func renderedTotalUnreadCount(inAppSettings: InAppNotificationSettings, totalUnreadState: ChatListTotalUnreadState) -> (Int32, RenderedTotalUnreadCountType) { +public func renderedTotalUnreadCount(inAppSettings: InAppNotificationSettings, totalUnreadState: ChatListTotalUnreadState) -> (Int32, RenderedTotalUnreadCountType) { let type: RenderedTotalUnreadCountType switch inAppSettings.totalUnreadCountDisplayStyle { case .raw: diff --git a/submodules/TelegramUI/TelegramUI/StickerSettings.swift b/submodules/TelegramUIPreferences/Sources/StickerSettings.swift similarity index 86% rename from submodules/TelegramUI/TelegramUI/StickerSettings.swift rename to submodules/TelegramUIPreferences/Sources/StickerSettings.swift index 77b5c2a830..79244f2e03 100644 --- a/submodules/TelegramUI/TelegramUI/StickerSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/StickerSettings.swift @@ -39,12 +39,12 @@ public struct StickerSettings: PreferencesEntry, Equatable { return lhs.emojiStickerSuggestionMode == rhs.emojiStickerSuggestionMode } - func withUpdatedEmojiStickerSuggestionMode(_ emojiStickerSuggestionMode: EmojiStickerSuggestionMode) -> StickerSettings { + public func withUpdatedEmojiStickerSuggestionMode(_ emojiStickerSuggestionMode: EmojiStickerSuggestionMode) -> StickerSettings { return StickerSettings(emojiStickerSuggestionMode: emojiStickerSuggestionMode) } } -func updateStickerSettingsInteractively(accountManager: AccountManager, _ f: @escaping (StickerSettings) -> StickerSettings) -> Signal { +public func updateStickerSettingsInteractively(accountManager: AccountManager, _ f: @escaping (StickerSettings) -> StickerSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.stickerSettings, { entry in let currentSettings: StickerSettings diff --git a/submodules/TelegramUIPreferences/Sources/TelegramUIPreferences.h b/submodules/TelegramUIPreferences/Sources/TelegramUIPreferences.h new file mode 100644 index 0000000000..72e77250e5 --- /dev/null +++ b/submodules/TelegramUIPreferences/Sources/TelegramUIPreferences.h @@ -0,0 +1,19 @@ +// +// TelegramUIPreferences.h +// TelegramUIPreferences +// +// Created by Peter on 6/13/19. +// Copyright © 2019 Telegram LLP. All rights reserved. +// + +#import + +//! Project version number for TelegramUIPreferences. +FOUNDATION_EXPORT double TelegramUIPreferencesVersionNumber; + +//! Project version string for TelegramUIPreferences. +FOUNDATION_EXPORT const unsigned char TelegramUIPreferencesVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramUI/TelegramUI/VoiceCallSettings.swift b/submodules/TelegramUIPreferences/Sources/VoiceCallSettings.swift similarity index 87% rename from submodules/TelegramUI/TelegramUI/VoiceCallSettings.swift rename to submodules/TelegramUIPreferences/Sources/VoiceCallSettings.swift index b2aabc038b..91f87db642 100644 --- a/submodules/TelegramUI/TelegramUI/VoiceCallSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/VoiceCallSettings.swift @@ -3,7 +3,7 @@ import Postbox import TelegramCore import SwiftSignalKit -func effectiveDataSaving(for settings: VoiceCallSettings?, autodownloadSettings: AutodownloadSettings) -> VoiceCallDataSaving { +public func effectiveDataSaving(for settings: VoiceCallSettings?, autodownloadSettings: AutodownloadSettings) -> VoiceCallDataSaving { if let settings = settings { if case .default = settings.dataSaving { switch (autodownloadSettings.mediumPreset.lessDataForPhoneCalls, autodownloadSettings.highPreset.lessDataForPhoneCalls) { @@ -37,7 +37,7 @@ public struct VoiceCallSettings: PreferencesEntry, Equatable { return VoiceCallSettings(dataSaving: .default, enableSystemIntegration: true) } - init(dataSaving: VoiceCallDataSaving, enableSystemIntegration: Bool) { + public init(dataSaving: VoiceCallDataSaving, enableSystemIntegration: Bool) { self.dataSaving = dataSaving self.enableSystemIntegration = enableSystemIntegration } @@ -71,7 +71,7 @@ public struct VoiceCallSettings: PreferencesEntry, Equatable { } } -func updateVoiceCallSettingsSettingsInteractively(accountManager: AccountManager, _ f: @escaping (VoiceCallSettings) -> VoiceCallSettings) -> Signal { +public func updateVoiceCallSettingsSettingsInteractively(accountManager: AccountManager, _ f: @escaping (VoiceCallSettings) -> VoiceCallSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.voiceCallSettings, { entry in let currentSettings: VoiceCallSettings diff --git a/submodules/TelegramUI/TelegramUI/VoipDerivedState.swift b/submodules/TelegramUIPreferences/Sources/VoipDerivedState.swift similarity index 65% rename from submodules/TelegramUI/TelegramUI/VoipDerivedState.swift rename to submodules/TelegramUIPreferences/Sources/VoipDerivedState.swift index 3e370e7905..eb11fd9455 100644 --- a/submodules/TelegramUI/TelegramUI/VoipDerivedState.swift +++ b/submodules/TelegramUIPreferences/Sources/VoipDerivedState.swift @@ -2,26 +2,26 @@ import Foundation import Postbox import SwiftSignalKit -struct VoipDerivedState: Equatable, PreferencesEntry { - var data: Data +public struct VoipDerivedState: Equatable, PreferencesEntry { + public var data: Data - static var `default`: VoipDerivedState { + public static var `default`: VoipDerivedState { return VoipDerivedState(data: Data()) } - init(data: Data) { + public init(data: Data) { self.data = data } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { self.data = decoder.decodeDataForKey("data") ?? Data() } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { encoder.encodeData(self.data, forKey: "data") } - func isEqual(to: PreferencesEntry) -> Bool { + public func isEqual(to: PreferencesEntry) -> Bool { if let to = to as? VoipDerivedState { return self == to } else { @@ -30,7 +30,7 @@ struct VoipDerivedState: Equatable, PreferencesEntry { } } -func updateVoipDerivedStateInteractively(postbox: Postbox, _ f: @escaping (VoipDerivedState) -> VoipDerivedState) -> Signal { +public func updateVoipDerivedStateInteractively(postbox: Postbox, _ f: @escaping (VoipDerivedState) -> VoipDerivedState) -> Signal { return postbox.transaction { transaction -> Void in transaction.updatePreferencesEntry(key: ApplicationSpecificPreferencesKeys.voipDerivedState, { entry in let currentSettings: VoipDerivedState diff --git a/submodules/TelegramUI/TelegramUI/WatchPresetSettings.swift b/submodules/TelegramUIPreferences/Sources/WatchPresetSettings.swift similarity index 92% rename from submodules/TelegramUI/TelegramUI/WatchPresetSettings.swift rename to submodules/TelegramUIPreferences/Sources/WatchPresetSettings.swift index 4f1551038b..a6d09d5bca 100644 --- a/submodules/TelegramUI/TelegramUI/WatchPresetSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/WatchPresetSettings.swift @@ -53,7 +53,7 @@ public struct WatchPresetSettings: PreferencesEntry, Equatable { } } -func updateWatchPresetSettingsInteractively(accountManager: AccountManager, _ f: @escaping (WatchPresetSettings) -> WatchPresetSettings) -> Signal { +public func updateWatchPresetSettingsInteractively(accountManager: AccountManager, _ f: @escaping (WatchPresetSettings) -> WatchPresetSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.watchPresetSettings, { entry in let currentSettings: WatchPresetSettings diff --git a/submodules/TelegramUI/TelegramUI/WebSearchSettings.swift b/submodules/TelegramUIPreferences/Sources/WebSearchSettings.swift similarity index 61% rename from submodules/TelegramUI/TelegramUI/WebSearchSettings.swift rename to submodules/TelegramUIPreferences/Sources/WebSearchSettings.swift index 2bd39e03ee..a21413a4d4 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/WebSearchSettings.swift @@ -2,26 +2,31 @@ import Foundation import Postbox import SwiftSignalKit -struct WebSearchSettings: Equatable, PreferencesEntry { - var scope: WebSearchScope +public enum WebSearchScope: Int32 { + case images + case gifs +} + +public struct WebSearchSettings: Equatable, PreferencesEntry { + public var scope: WebSearchScope - static var defaultSettings: WebSearchSettings { + public static var defaultSettings: WebSearchSettings { return WebSearchSettings(scope: .images) } - init(scope: WebSearchScope) { + public init(scope: WebSearchScope) { self.scope = scope } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { self.scope = WebSearchScope(rawValue: decoder.decodeInt32ForKey("scope", orElse: 0)) ?? .images } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(self.scope.rawValue, forKey: "scope") } - func isEqual(to: PreferencesEntry) -> Bool { + public func isEqual(to: PreferencesEntry) -> Bool { if let to = to as? WebSearchSettings { return self == to } else { @@ -30,7 +35,7 @@ struct WebSearchSettings: Equatable, PreferencesEntry { } } -func updateWebSearchSettingsInteractively(accountManager: AccountManager, _ f: @escaping (WebSearchSettings) -> WebSearchSettings) -> Signal { +public func updateWebSearchSettingsInteractively(accountManager: AccountManager, _ f: @escaping (WebSearchSettings) -> WebSearchSettings) -> Signal { return accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.webSearchSettings, { entry in let currentSettings: WebSearchSettings diff --git a/submodules/TelegramUIPreferences/TelegramUIPreferences_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUIPreferences/TelegramUIPreferences_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..616b207864 --- /dev/null +++ b/submodules/TelegramUIPreferences/TelegramUIPreferences_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,448 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D008185D22B58848008A895F /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185C22B58848008A895F /* Postbox.framework */; }; + D008185F22B58850008A895F /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185E22B58850008A895F /* TelegramCore.framework */; }; + D008186122B58853008A895F /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008186022B58853008A895F /* SwiftSignalKit.framework */; }; + D0AE312522B1DE420058D3BC /* TelegramUIPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE312322B1DE420058D3BC /* TelegramUIPreferences.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE313F22B1DEAC0058D3BC /* WebSearchSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE312B22B1DEAA0058D3BC /* WebSearchSettings.swift */; }; + D0AE314022B1DEAC0058D3BC /* StickerSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE312C22B1DEAB0058D3BC /* StickerSettings.swift */; }; + D0AE314122B1DEAC0058D3BC /* PresentationPasscodeSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE312D22B1DEAB0058D3BC /* PresentationPasscodeSettings.swift */; }; + D0AE314222B1DEAC0058D3BC /* InstantPagePresentationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE312E22B1DEAB0058D3BC /* InstantPagePresentationSettings.swift */; }; + D0AE314322B1DEAC0058D3BC /* ExperimentalSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE312F22B1DEAB0058D3BC /* ExperimentalSettings.swift */; }; + D0AE314422B1DEAC0058D3BC /* WatchPresetSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313022B1DEAB0058D3BC /* WatchPresetSettings.swift */; }; + D0AE314522B1DEAC0058D3BC /* RenderedTotalUnreadCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313122B1DEAB0058D3BC /* RenderedTotalUnreadCount.swift */; }; + D0AE314622B1DEAC0058D3BC /* InAppNotificationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313222B1DEAB0058D3BC /* InAppNotificationSettings.swift */; }; + D0AE314722B1DEAC0058D3BC /* MediaAutoDownloadSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313322B1DEAB0058D3BC /* MediaAutoDownloadSettings.swift */; }; + D0AE314822B1DEAC0058D3BC /* LegacyAutomaticMediaDownloadSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313422B1DEAB0058D3BC /* LegacyAutomaticMediaDownloadSettings.swift */; }; + D0AE314922B1DEAC0058D3BC /* MediaInputSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313522B1DEAB0058D3BC /* MediaInputSettings.swift */; }; + D0AE314A22B1DEAC0058D3BC /* ExperimentalUISettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313622B1DEAB0058D3BC /* ExperimentalUISettings.swift */; }; + D0AE314B22B1DEAC0058D3BC /* ChatArchiveSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313722B1DEAB0058D3BC /* ChatArchiveSettings.swift */; }; + D0AE314C22B1DEAC0058D3BC /* GeneratedMediaStoreSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313822B1DEAB0058D3BC /* GeneratedMediaStoreSettings.swift */; }; + D0AE314D22B1DEAC0058D3BC /* VoiceCallSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313922B1DEAC0058D3BC /* VoiceCallSettings.swift */; }; + D0AE314E22B1DEAC0058D3BC /* MusicPlaybackSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313A22B1DEAC0058D3BC /* MusicPlaybackSettings.swift */; }; + D0AE314F22B1DEAC0058D3BC /* PresentationThemeSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313B22B1DEAC0058D3BC /* PresentationThemeSettings.swift */; }; + D0AE315022B1DEAC0058D3BC /* CallListSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313C22B1DEAC0058D3BC /* CallListSettings.swift */; }; + D0AE315122B1DEAC0058D3BC /* ContactSynchronizationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313D22B1DEAC0058D3BC /* ContactSynchronizationSettings.swift */; }; + D0AE315222B1DEAC0058D3BC /* VoipDerivedState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE313E22B1DEAC0058D3BC /* VoipDerivedState.swift */; }; + D0AE315922B1DF770058D3BC /* PostboxKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE315822B1DF770058D3BC /* PostboxKeys.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D008185C22B58848008A895F /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008185E22B58850008A895F /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008186022B58853008A895F /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE312022B1DE420058D3BC /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE312322B1DE420058D3BC /* TelegramUIPreferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramUIPreferences.h; sourceTree = ""; }; + D0AE312422B1DE420058D3BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0AE312B22B1DEAA0058D3BC /* WebSearchSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebSearchSettings.swift; sourceTree = ""; }; + D0AE312C22B1DEAB0058D3BC /* StickerSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerSettings.swift; sourceTree = ""; }; + D0AE312D22B1DEAB0058D3BC /* PresentationPasscodeSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationPasscodeSettings.swift; sourceTree = ""; }; + D0AE312E22B1DEAB0058D3BC /* InstantPagePresentationSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePresentationSettings.swift; sourceTree = ""; }; + D0AE312F22B1DEAB0058D3BC /* ExperimentalSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExperimentalSettings.swift; sourceTree = ""; }; + D0AE313022B1DEAB0058D3BC /* WatchPresetSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchPresetSettings.swift; sourceTree = ""; }; + D0AE313122B1DEAB0058D3BC /* RenderedTotalUnreadCount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RenderedTotalUnreadCount.swift; sourceTree = ""; }; + D0AE313222B1DEAB0058D3BC /* InAppNotificationSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InAppNotificationSettings.swift; sourceTree = ""; }; + D0AE313322B1DEAB0058D3BC /* MediaAutoDownloadSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaAutoDownloadSettings.swift; sourceTree = ""; }; + D0AE313422B1DEAB0058D3BC /* LegacyAutomaticMediaDownloadSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyAutomaticMediaDownloadSettings.swift; sourceTree = ""; }; + D0AE313522B1DEAB0058D3BC /* MediaInputSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaInputSettings.swift; sourceTree = ""; }; + D0AE313622B1DEAB0058D3BC /* ExperimentalUISettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExperimentalUISettings.swift; sourceTree = ""; }; + D0AE313722B1DEAB0058D3BC /* ChatArchiveSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatArchiveSettings.swift; sourceTree = ""; }; + D0AE313822B1DEAB0058D3BC /* GeneratedMediaStoreSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedMediaStoreSettings.swift; sourceTree = ""; }; + D0AE313922B1DEAC0058D3BC /* VoiceCallSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VoiceCallSettings.swift; sourceTree = ""; }; + D0AE313A22B1DEAC0058D3BC /* MusicPlaybackSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MusicPlaybackSettings.swift; sourceTree = ""; }; + D0AE313B22B1DEAC0058D3BC /* PresentationThemeSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationThemeSettings.swift; sourceTree = ""; }; + D0AE313C22B1DEAC0058D3BC /* CallListSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallListSettings.swift; sourceTree = ""; }; + D0AE313D22B1DEAC0058D3BC /* ContactSynchronizationSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactSynchronizationSettings.swift; sourceTree = ""; }; + D0AE313E22B1DEAC0058D3BC /* VoipDerivedState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VoipDerivedState.swift; sourceTree = ""; }; + D0AE315822B1DF770058D3BC /* PostboxKeys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostboxKeys.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE311D22B1DE420058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D008186122B58853008A895F /* SwiftSignalKit.framework in Frameworks */, + D008185F22B58850008A895F /* TelegramCore.framework in Frameworks */, + D008185D22B58848008A895F /* Postbox.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D008185B22B58848008A895F /* Frameworks */ = { + isa = PBXGroup; + children = ( + D008186022B58853008A895F /* SwiftSignalKit.framework */, + D008185E22B58850008A895F /* TelegramCore.framework */, + D008185C22B58848008A895F /* Postbox.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + D0AE311622B1DE420058D3BC = { + isa = PBXGroup; + children = ( + D0AE312422B1DE420058D3BC /* Info.plist */, + D0AE312222B1DE420058D3BC /* Sources */, + D0AE312122B1DE420058D3BC /* Products */, + D008185B22B58848008A895F /* Frameworks */, + ); + sourceTree = ""; + }; + D0AE312122B1DE420058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE312022B1DE420058D3BC /* TelegramUIPreferences.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE312222B1DE420058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0AE315822B1DF770058D3BC /* PostboxKeys.swift */, + D0AE313C22B1DEAC0058D3BC /* CallListSettings.swift */, + D0AE313722B1DEAB0058D3BC /* ChatArchiveSettings.swift */, + D0AE313D22B1DEAC0058D3BC /* ContactSynchronizationSettings.swift */, + D0AE312F22B1DEAB0058D3BC /* ExperimentalSettings.swift */, + D0AE313622B1DEAB0058D3BC /* ExperimentalUISettings.swift */, + D0AE313822B1DEAB0058D3BC /* GeneratedMediaStoreSettings.swift */, + D0AE313222B1DEAB0058D3BC /* InAppNotificationSettings.swift */, + D0AE312E22B1DEAB0058D3BC /* InstantPagePresentationSettings.swift */, + D0AE313422B1DEAB0058D3BC /* LegacyAutomaticMediaDownloadSettings.swift */, + D0AE313322B1DEAB0058D3BC /* MediaAutoDownloadSettings.swift */, + D0AE313522B1DEAB0058D3BC /* MediaInputSettings.swift */, + D0AE313A22B1DEAC0058D3BC /* MusicPlaybackSettings.swift */, + D0AE312D22B1DEAB0058D3BC /* PresentationPasscodeSettings.swift */, + D0AE313B22B1DEAC0058D3BC /* PresentationThemeSettings.swift */, + D0AE313122B1DEAB0058D3BC /* RenderedTotalUnreadCount.swift */, + D0AE312C22B1DEAB0058D3BC /* StickerSettings.swift */, + D0AE313922B1DEAC0058D3BC /* VoiceCallSettings.swift */, + D0AE313E22B1DEAC0058D3BC /* VoipDerivedState.swift */, + D0AE313022B1DEAB0058D3BC /* WatchPresetSettings.swift */, + D0AE312B22B1DEAA0058D3BC /* WebSearchSettings.swift */, + D0AE312322B1DE420058D3BC /* TelegramUIPreferences.h */, + ); + path = Sources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE311B22B1DE420058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE312522B1DE420058D3BC /* TelegramUIPreferences.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE311F22B1DE420058D3BC /* TelegramUIPreferences */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE312822B1DE420058D3BC /* Build configuration list for PBXNativeTarget "TelegramUIPreferences" */; + buildPhases = ( + D0AE311B22B1DE420058D3BC /* Headers */, + D0AE311C22B1DE420058D3BC /* Sources */, + D0AE311D22B1DE420058D3BC /* Frameworks */, + D0AE311E22B1DE420058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TelegramUIPreferences; + productName = TelegramUIPreferences; + productReference = D0AE312022B1DE420058D3BC /* TelegramUIPreferences.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE311722B1DE420058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE311F22B1DE420058D3BC = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + }; + }; + }; + buildConfigurationList = D0AE311A22B1DE420058D3BC /* Build configuration list for PBXProject "TelegramUIPreferences_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE311622B1DE420058D3BC; + productRefGroup = D0AE312122B1DE420058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE311F22B1DE420058D3BC /* TelegramUIPreferences */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE311E22B1DE420058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE311C22B1DE420058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE314822B1DEAC0058D3BC /* LegacyAutomaticMediaDownloadSettings.swift in Sources */, + D0AE314022B1DEAC0058D3BC /* StickerSettings.swift in Sources */, + D0AE314B22B1DEAC0058D3BC /* ChatArchiveSettings.swift in Sources */, + D0AE315222B1DEAC0058D3BC /* VoipDerivedState.swift in Sources */, + D0AE314422B1DEAC0058D3BC /* WatchPresetSettings.swift in Sources */, + D0AE314622B1DEAC0058D3BC /* InAppNotificationSettings.swift in Sources */, + D0AE315922B1DF770058D3BC /* PostboxKeys.swift in Sources */, + D0AE314122B1DEAC0058D3BC /* PresentationPasscodeSettings.swift in Sources */, + D0AE314322B1DEAC0058D3BC /* ExperimentalSettings.swift in Sources */, + D0AE315122B1DEAC0058D3BC /* ContactSynchronizationSettings.swift in Sources */, + D0AE314D22B1DEAC0058D3BC /* VoiceCallSettings.swift in Sources */, + D0AE314522B1DEAC0058D3BC /* RenderedTotalUnreadCount.swift in Sources */, + D0AE313F22B1DEAC0058D3BC /* WebSearchSettings.swift in Sources */, + D0AE314A22B1DEAC0058D3BC /* ExperimentalUISettings.swift in Sources */, + D0AE314922B1DEAC0058D3BC /* MediaInputSettings.swift in Sources */, + D0AE314722B1DEAC0058D3BC /* MediaAutoDownloadSettings.swift in Sources */, + D0AE314222B1DEAC0058D3BC /* InstantPagePresentationSettings.swift in Sources */, + D0AE314C22B1DEAC0058D3BC /* GeneratedMediaStoreSettings.swift in Sources */, + D0AE314E22B1DEAC0058D3BC /* MusicPlaybackSettings.swift in Sources */, + D0AE315022B1DEAC0058D3BC /* CallListSettings.swift in Sources */, + D0AE314F22B1DEAC0058D3BC /* PresentationThemeSettings.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE312622B1DE420058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE312722B1DE420058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE312922B1DE420058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramUIPreferences; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE312A22B1DE420058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramUIPreferences; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE311A22B1DE420058D3BC /* Build configuration list for PBXProject "TelegramUIPreferences_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE312622B1DE420058D3BC /* DebugAppStoreLLC */, + D0AE312722B1DE420058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE312822B1DE420058D3BC /* Build configuration list for PBXNativeTarget "TelegramUIPreferences" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE312922B1DE420058D3BC /* DebugAppStoreLLC */, + D0AE312A22B1DE420058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE311722B1DE420058D3BC /* Project object */; +} diff --git a/submodules/TelegramVoip/Info.plist b/submodules/TelegramVoip/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/TelegramVoip/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TelegramUI/TelegramUI/OngoingCallContext.swift b/submodules/TelegramVoip/Sources/OngoingCallContext.swift similarity index 89% rename from submodules/TelegramUI/TelegramUI/OngoingCallContext.swift rename to submodules/TelegramVoip/Sources/OngoingCallContext.swift index b21b7ca625..ef378a70eb 100644 --- a/submodules/TelegramUI/TelegramUI/OngoingCallContext.swift +++ b/submodules/TelegramVoip/Sources/OngoingCallContext.swift @@ -2,8 +2,7 @@ import Foundation import SwiftSignalKit import TelegramCore import Postbox - -import TelegramUIPrivateModule +import TelegramUIPreferences private func callConnectionDescription(_ connection: CallSessionConnection) -> OngoingCallConnectionDescription { return OngoingCallConnectionDescription(connectionId: connection.id, ip: connection.ip, ipv6: connection.ipv6, port: connection.port, peerTag: connection.peerTag) @@ -11,7 +10,7 @@ private func callConnectionDescription(_ connection: CallSessionConnection) -> O private let callLogsLimit = 20 -func callLogNameForId(id: Int64, account: Account) -> String? { +public func callLogNameForId(id: Int64, account: Account) -> String? { let path = callLogsPath(account: account) let namePrefix = "\(id)_" @@ -27,7 +26,7 @@ func callLogNameForId(id: Int64, account: Account) -> String? { return nil } -func callLogsPath(account: Account) -> String { +public func callLogsPath(account: Account) -> String { return account.basePath + "/calls" } @@ -70,7 +69,7 @@ private let setupLogs: Bool = { return true }() -enum OngoingCallContextState { +public enum OngoingCallContextState { case initializing case connected case failed @@ -129,8 +128,8 @@ private func ongoingDataSavingForType(_ type: VoiceCallDataSaving) -> OngoingCal } } -final class OngoingCallContext { - let internalId: CallSessionInternalId +public final class OngoingCallContext { + public let internalId: CallSessionInternalId private let queue = Queue() private let account: Account @@ -139,7 +138,7 @@ final class OngoingCallContext { private var contextRef: Unmanaged? private let contextState = Promise(nil) - var state: Signal { + public var state: Signal { return self.contextState.get() |> map { $0.flatMap { @@ -156,18 +155,18 @@ final class OngoingCallContext { } private let receptionPromise = Promise(nil) - var reception: Signal { + public var reception: Signal { return self.receptionPromise.get() } private let audioSessionDisposable = MetaDisposable() private var networkTypeDisposable: Disposable? - static var maxLayer: Int32 { + public static var maxLayer: Int32 { return OngoingCallThreadLocalContext.maxLayer() } - init(account: Account, callSessionManager: CallSessionManager, internalId: CallSessionInternalId, proxyServer: ProxyServerSettings?, initialNetworkType: NetworkType, updatedNetworkType: Signal, serializedData: String?, dataSaving: VoiceCallDataSaving, derivedState: VoipDerivedState) { + public init(account: Account, callSessionManager: CallSessionManager, internalId: CallSessionInternalId, proxyServer: ProxyServerSettings?, initialNetworkType: NetworkType, updatedNetworkType: Signal, serializedData: String?, dataSaving: VoiceCallDataSaving, derivedState: VoipDerivedState) { let _ = setupLogs OngoingCallThreadLocalContext.applyServerConfig(serializedData) @@ -225,7 +224,7 @@ final class OngoingCallContext { } } - func start(key: Data, isOutgoing: Bool, connections: CallSessionConnectionSet, maxLayer: Int32, allowP2P: Bool, audioSessionActive: Signal, logName: String) { + public func start(key: Data, isOutgoing: Bool, connections: CallSessionConnectionSet, maxLayer: Int32, allowP2P: Bool, audioSessionActive: Signal, logName: String) { let logPath = logName.isEmpty ? "" : callLogsPath(account: self.account) + "/" + logName + ".log" self.audioSessionDisposable.set((audioSessionActive |> filter { $0 } @@ -238,7 +237,7 @@ final class OngoingCallContext { })) } - func stop(callId: CallId? = nil, sendDebugLogs: Bool = false) { + public func stop(callId: CallId? = nil, sendDebugLogs: Bool = false) { self.withContext { context in context.stop { debugLog, bytesSentWifi, bytesReceivedWifi, bytesSentMobile, bytesReceivedMobile in let delta = NetworkUsageStatsConnectionsEntry( @@ -261,13 +260,13 @@ final class OngoingCallContext { } } - func setIsMuted(_ value: Bool) { + public func setIsMuted(_ value: Bool) { self.withContext { context in context.setIsMuted(value) } } - func debugInfo() -> Signal<(String, String), NoError> { + public func debugInfo() -> Signal<(String, String), NoError> { let poll = Signal<(String, String), NoError> { subscriber in self.withContext { context in let version = context.version() @@ -283,7 +282,7 @@ final class OngoingCallContext { return (poll |> then(.complete() |> delay(0.5, queue: Queue.concurrentDefaultQueue()))) |> restart } - func needsRating(_ completion: @escaping (Bool) -> Void) { + public func needsRating(_ completion: @escaping (Bool) -> Void) { self.withContext { context in let needsRating = context.needRate() Queue.mainQueue().async { diff --git a/submodules/TelegramUI/TelegramUI/OngoingCallThreadLocalContext.h b/submodules/TelegramVoip/Sources/OngoingCallThreadLocalContext.h similarity index 100% rename from submodules/TelegramUI/TelegramUI/OngoingCallThreadLocalContext.h rename to submodules/TelegramVoip/Sources/OngoingCallThreadLocalContext.h diff --git a/submodules/TelegramUI/TelegramUI/OngoingCallThreadLocalContext.mm b/submodules/TelegramVoip/Sources/OngoingCallThreadLocalContext.mm similarity index 100% rename from submodules/TelegramUI/TelegramUI/OngoingCallThreadLocalContext.mm rename to submodules/TelegramVoip/Sources/OngoingCallThreadLocalContext.mm diff --git a/submodules/TelegramVoip/Sources/TelegramVoip.h b/submodules/TelegramVoip/Sources/TelegramVoip.h new file mode 100644 index 0000000000..2043b2c1d8 --- /dev/null +++ b/submodules/TelegramVoip/Sources/TelegramVoip.h @@ -0,0 +1,9 @@ +#import + +//! Project version number for TelegramVoip. +FOUNDATION_EXPORT double TelegramVoipVersionNumber; + +//! Project version string for TelegramVoip. +FOUNDATION_EXPORT const unsigned char TelegramVoipVersionString[]; + +#import diff --git a/submodules/TelegramVoip/TelegramVoip_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramVoip/TelegramVoip_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..9de71cb753 --- /dev/null +++ b/submodules/TelegramVoip/TelegramVoip_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,376 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0AE316922B2694E0058D3BC /* TelegramVoip.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE316722B2694E0058D3BC /* TelegramVoip.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE317122B269E40058D3BC /* OngoingCallThreadLocalContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = D0AE316F22B269E30058D3BC /* OngoingCallThreadLocalContext.mm */; }; + D0AE317222B269E40058D3BC /* OngoingCallThreadLocalContext.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE317022B269E40058D3BC /* OngoingCallThreadLocalContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0AE317622B26F020058D3BC /* OngoingCallContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AE317522B26F010058D3BC /* OngoingCallContext.swift */; }; + D0AE317922B26F400058D3BC /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE317822B26F400058D3BC /* Postbox.framework */; }; + D0AE317B22B26F470058D3BC /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE317A22B26F470058D3BC /* TelegramCore.framework */; }; + D0AE317D22B26F4B0058D3BC /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE317C22B26F4B0058D3BC /* SwiftSignalKit.framework */; }; + D0AE317F22B26F6B0058D3BC /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE317E22B26F6B0058D3BC /* TelegramUIPreferences.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0AE316422B2694E0058D3BC /* TelegramVoip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TelegramVoip.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE316722B2694E0058D3BC /* TelegramVoip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramVoip.h; sourceTree = ""; }; + D0AE316822B2694E0058D3BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0AE316F22B269E30058D3BC /* OngoingCallThreadLocalContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OngoingCallThreadLocalContext.mm; sourceTree = ""; }; + D0AE317022B269E40058D3BC /* OngoingCallThreadLocalContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OngoingCallThreadLocalContext.h; sourceTree = ""; }; + D0AE317522B26F010058D3BC /* OngoingCallContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OngoingCallContext.swift; sourceTree = ""; }; + D0AE317822B26F400058D3BC /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE317A22B26F470058D3BC /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE317C22B26F4B0058D3BC /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0AE317E22B26F6B0058D3BC /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0AE316122B2694E0058D3BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE317F22B26F6B0058D3BC /* TelegramUIPreferences.framework in Frameworks */, + D0AE317D22B26F4B0058D3BC /* SwiftSignalKit.framework in Frameworks */, + D0AE317B22B26F470058D3BC /* TelegramCore.framework in Frameworks */, + D0AE317922B26F400058D3BC /* Postbox.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0AE315A22B2694E0058D3BC = { + isa = PBXGroup; + children = ( + D0AE316822B2694E0058D3BC /* Info.plist */, + D0AE316622B2694E0058D3BC /* Sources */, + D0AE316522B2694E0058D3BC /* Products */, + D0AE317722B26F400058D3BC /* Frameworks */, + ); + sourceTree = ""; + }; + D0AE316522B2694E0058D3BC /* Products */ = { + isa = PBXGroup; + children = ( + D0AE316422B2694E0058D3BC /* TelegramVoip.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0AE316622B2694E0058D3BC /* Sources */ = { + isa = PBXGroup; + children = ( + D0AE317522B26F010058D3BC /* OngoingCallContext.swift */, + D0AE317022B269E40058D3BC /* OngoingCallThreadLocalContext.h */, + D0AE316F22B269E30058D3BC /* OngoingCallThreadLocalContext.mm */, + D0AE316722B2694E0058D3BC /* TelegramVoip.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0AE317722B26F400058D3BC /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0AE317E22B26F6B0058D3BC /* TelegramUIPreferences.framework */, + D0AE317C22B26F4B0058D3BC /* SwiftSignalKit.framework */, + D0AE317A22B26F470058D3BC /* TelegramCore.framework */, + D0AE317822B26F400058D3BC /* Postbox.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0AE315F22B2694E0058D3BC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE317222B269E40058D3BC /* OngoingCallThreadLocalContext.h in Headers */, + D0AE316922B2694E0058D3BC /* TelegramVoip.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0AE316322B2694E0058D3BC /* TelegramVoip */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0AE316C22B2694E0058D3BC /* Build configuration list for PBXNativeTarget "TelegramVoip" */; + buildPhases = ( + D0AE315F22B2694E0058D3BC /* Headers */, + D0AE316022B2694E0058D3BC /* Sources */, + D0AE316122B2694E0058D3BC /* Frameworks */, + D0AE316222B2694E0058D3BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TelegramVoip; + productName = TelegramVoip; + productReference = D0AE316422B2694E0058D3BC /* TelegramVoip.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0AE315B22B2694E0058D3BC /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D0AE316322B2694E0058D3BC = { + CreatedOnToolsVersion = 10.1; + LastSwiftMigration = 1010; + }; + }; + }; + buildConfigurationList = D0AE315E22B2694E0058D3BC /* Build configuration list for PBXProject "TelegramVoip_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0AE315A22B2694E0058D3BC; + productRefGroup = D0AE316522B2694E0058D3BC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0AE316322B2694E0058D3BC /* TelegramVoip */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0AE316222B2694E0058D3BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0AE316022B2694E0058D3BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0AE317122B269E40058D3BC /* OngoingCallThreadLocalContext.mm in Sources */, + D0AE317622B26F020058D3BC /* OngoingCallContext.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0AE316A22B2694E0058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0AE316B22B2694E0058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0AE316D22B2694E0058D3BC /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramVoip; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0AE316E22B2694E0058D3BC /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramVoip; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0AE315E22B2694E0058D3BC /* Build configuration list for PBXProject "TelegramVoip_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE316A22B2694E0058D3BC /* DebugAppStoreLLC */, + D0AE316B22B2694E0058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0AE316C22B2694E0058D3BC /* Build configuration list for PBXNativeTarget "TelegramVoip" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0AE316D22B2694E0058D3BC /* DebugAppStoreLLC */, + D0AE316E22B2694E0058D3BC /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0AE315B22B2694E0058D3BC /* Project object */; +} diff --git a/submodules/WatchCommon/Info.plist b/submodules/WatchCommon/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/WatchCommon/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Watch/Bridge/TGBridgeActionMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeActionMediaAttachment.h similarity index 91% rename from Watch/Bridge/TGBridgeActionMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeActionMediaAttachment.h index 2c1fb44db1..cc88fd83d9 100644 --- a/Watch/Bridge/TGBridgeActionMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeActionMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif typedef NS_ENUM(NSUInteger, TGBridgeMessageAction) { TGBridgeMessageActionNone = 0, diff --git a/Watch/Bridge/TGBridgeActionMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeActionMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeActionMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeActionMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeAudioMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeAudioMediaAttachment.h similarity index 74% rename from Watch/Bridge/TGBridgeAudioMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeAudioMediaAttachment.h index 01b70fe351..9a318ad24a 100644 --- a/Watch/Bridge/TGBridgeAudioMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeAudioMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @interface TGBridgeAudioMediaAttachment : TGBridgeMediaAttachment diff --git a/Watch/Bridge/TGBridgeAudioMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeAudioMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeAudioMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeAudioMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeBotCommandInfo.h b/submodules/WatchCommon/Sources/TGBridgeBotCommandInfo.h similarity index 100% rename from Watch/Bridge/TGBridgeBotCommandInfo.h rename to submodules/WatchCommon/Sources/TGBridgeBotCommandInfo.h diff --git a/Watch/Bridge/TGBridgeBotCommandInfo.m b/submodules/WatchCommon/Sources/TGBridgeBotCommandInfo.m similarity index 100% rename from Watch/Bridge/TGBridgeBotCommandInfo.m rename to submodules/WatchCommon/Sources/TGBridgeBotCommandInfo.m diff --git a/Watch/Bridge/TGBridgeBotInfo.h b/submodules/WatchCommon/Sources/TGBridgeBotInfo.h similarity index 100% rename from Watch/Bridge/TGBridgeBotInfo.h rename to submodules/WatchCommon/Sources/TGBridgeBotInfo.h diff --git a/Watch/Bridge/TGBridgeBotInfo.m b/submodules/WatchCommon/Sources/TGBridgeBotInfo.m similarity index 100% rename from Watch/Bridge/TGBridgeBotInfo.m rename to submodules/WatchCommon/Sources/TGBridgeBotInfo.m diff --git a/Watch/Bridge/TGBridgeChat.h b/submodules/WatchCommon/Sources/TGBridgeChat.h similarity index 86% rename from Watch/Bridge/TGBridgeChat.h rename to submodules/WatchCommon/Sources/TGBridgeChat.h index 6f94f3df87..4bcfb2a9df 100644 --- a/Watch/Bridge/TGBridgeChat.h +++ b/submodules/WatchCommon/Sources/TGBridgeChat.h @@ -1,5 +1,10 @@ -#import "TGBridgeCommon.h" -#import "TGBridgeMessage.h" +#if TARGET_OS_WATCH +#import +#import +#else +#import +#import +#endif @interface TGBridgeChat : NSObject diff --git a/Watch/Bridge/TGBridgeChat.m b/submodules/WatchCommon/Sources/TGBridgeChat.m similarity index 100% rename from Watch/Bridge/TGBridgeChat.m rename to submodules/WatchCommon/Sources/TGBridgeChat.m diff --git a/Watch/Bridge/TGBridgeChatMessages.h b/submodules/WatchCommon/Sources/TGBridgeChatMessages.h similarity index 64% rename from Watch/Bridge/TGBridgeChatMessages.h rename to submodules/WatchCommon/Sources/TGBridgeChatMessages.h index 04e7220be7..027884407d 100644 --- a/Watch/Bridge/TGBridgeChatMessages.h +++ b/submodules/WatchCommon/Sources/TGBridgeChatMessages.h @@ -1,4 +1,8 @@ -#import "TGBridgeCommon.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @class SSignal; diff --git a/Watch/Bridge/TGBridgeChatMessages.m b/submodules/WatchCommon/Sources/TGBridgeChatMessages.m similarity index 100% rename from Watch/Bridge/TGBridgeChatMessages.m rename to submodules/WatchCommon/Sources/TGBridgeChatMessages.m diff --git a/Watch/Bridge/TGBridgeCommon.h b/submodules/WatchCommon/Sources/TGBridgeCommon.h similarity index 100% rename from Watch/Bridge/TGBridgeCommon.h rename to submodules/WatchCommon/Sources/TGBridgeCommon.h diff --git a/Watch/Bridge/TGBridgeCommon.m b/submodules/WatchCommon/Sources/TGBridgeCommon.m similarity index 100% rename from Watch/Bridge/TGBridgeCommon.m rename to submodules/WatchCommon/Sources/TGBridgeCommon.m diff --git a/Watch/Bridge/TGBridgeContactMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeContactMediaAttachment.h similarity index 72% rename from Watch/Bridge/TGBridgeContactMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeContactMediaAttachment.h index 4d247e8d0f..5afec7815b 100644 --- a/Watch/Bridge/TGBridgeContactMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeContactMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @interface TGBridgeContactMediaAttachment : TGBridgeMediaAttachment diff --git a/Watch/Bridge/TGBridgeContactMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeContactMediaAttachment.m similarity index 89% rename from Watch/Bridge/TGBridgeContactMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeContactMediaAttachment.m index 50fb4aab15..4b2f482eaa 100644 --- a/Watch/Bridge/TGBridgeContactMediaAttachment.m +++ b/submodules/WatchCommon/Sources/TGBridgeContactMediaAttachment.m @@ -1,6 +1,6 @@ #import "TGBridgeContactMediaAttachment.h" -#import "../Extension/TGStringUtils.h" +//#import "../Extension/TGStringUtils.h" const NSInteger TGBridgeContactMediaAttachmentType = 0xB90A5663; @@ -42,10 +42,7 @@ NSString *const TGBridgeContactMediaPrettyPhoneNumberKey = @"prettyPhoneNumber"; if (firstName != nil && firstName.length != 0 && lastName != nil && lastName.length != 0) { - if (TGIsKorean()) - return [[NSString alloc] initWithFormat:@"%@ %@", lastName, firstName]; - else - return [[NSString alloc] initWithFormat:@"%@ %@", firstName, lastName]; + return [[NSString alloc] initWithFormat:@"%@ %@", firstName, lastName]; } else if (firstName != nil && firstName.length != 0) return firstName; diff --git a/Watch/Bridge/TGBridgeContext.h b/submodules/WatchCommon/Sources/TGBridgeContext.h similarity index 100% rename from Watch/Bridge/TGBridgeContext.h rename to submodules/WatchCommon/Sources/TGBridgeContext.h diff --git a/Watch/Bridge/TGBridgeContext.m b/submodules/WatchCommon/Sources/TGBridgeContext.m similarity index 97% rename from Watch/Bridge/TGBridgeContext.m rename to submodules/WatchCommon/Sources/TGBridgeContext.m index 4ae8cde2ff..4b0600e2fc 100644 --- a/Watch/Bridge/TGBridgeContext.m +++ b/submodules/WatchCommon/Sources/TGBridgeContext.m @@ -1,6 +1,6 @@ #import "TGBridgeContext.h" #import "TGBridgeCommon.h" -#import "TGWatchCommon.h" +//#import "TGWatchCommon.h" NSString *const TGBridgeContextAuthorized = @"authorized"; NSString *const TGBridgeContextUserId = @"userId"; @@ -16,7 +16,7 @@ NSString *const TGBridgeContextStartupDataVersion = @"version"; if (self != nil) { _authorized = [dictionary[TGBridgeContextAuthorized] boolValue]; - _userId = [dictionary[TGBridgeContextUserId] int32Value]; + _userId = (int32_t)[dictionary[TGBridgeContextUserId] intValue]; _micAccessAllowed = [dictionary[TGBridgeContextMicAccessAllowed] boolValue]; if (dictionary[TGBridgeContextStartupData] != nil) { diff --git a/Watch/Bridge/TGBridgeDocumentMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeDocumentMediaAttachment.h similarity index 86% rename from Watch/Bridge/TGBridgeDocumentMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeDocumentMediaAttachment.h index 328483412a..05a6992d7c 100644 --- a/Watch/Bridge/TGBridgeDocumentMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeDocumentMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @interface TGBridgeDocumentMediaAttachment : TGBridgeMediaAttachment diff --git a/Watch/Bridge/TGBridgeDocumentMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeDocumentMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeDocumentMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeDocumentMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeForwardedMessageMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeForwardedMessageMediaAttachment.h similarity index 61% rename from Watch/Bridge/TGBridgeForwardedMessageMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeForwardedMessageMediaAttachment.h index 16e1b648ca..79db88519e 100644 --- a/Watch/Bridge/TGBridgeForwardedMessageMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeForwardedMessageMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @interface TGBridgeForwardedMessageMediaAttachment : TGBridgeMediaAttachment diff --git a/Watch/Bridge/TGBridgeForwardedMessageMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeForwardedMessageMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeForwardedMessageMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeForwardedMessageMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeImageMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeImageMediaAttachment.h similarity index 60% rename from Watch/Bridge/TGBridgeImageMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeImageMediaAttachment.h index aff935c69f..bfa9d13089 100644 --- a/Watch/Bridge/TGBridgeImageMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeImageMediaAttachment.h @@ -1,6 +1,11 @@ -#import "TGBridgeMediaAttachment.h" #import +#if TARGET_OS_WATCH +#import +#else +#import +#endif + @interface TGBridgeImageMediaAttachment : TGBridgeMediaAttachment @property (nonatomic, assign) int64_t imageId; diff --git a/Watch/Bridge/TGBridgeImageMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeImageMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeImageMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeImageMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeLocationMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeLocationMediaAttachment.h similarity index 78% rename from Watch/Bridge/TGBridgeLocationMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeLocationMediaAttachment.h index c1a7bf54eb..42efbc4d35 100644 --- a/Watch/Bridge/TGBridgeLocationMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeLocationMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @interface TGBridgeVenueAttachment : NSObject diff --git a/Watch/Bridge/TGBridgeLocationMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeLocationMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeLocationMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeLocationMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeLocationVenue.h b/submodules/WatchCommon/Sources/TGBridgeLocationVenue.h similarity index 100% rename from Watch/Bridge/TGBridgeLocationVenue.h rename to submodules/WatchCommon/Sources/TGBridgeLocationVenue.h diff --git a/Watch/Bridge/TGBridgeLocationVenue.m b/submodules/WatchCommon/Sources/TGBridgeLocationVenue.m similarity index 100% rename from Watch/Bridge/TGBridgeLocationVenue.m rename to submodules/WatchCommon/Sources/TGBridgeLocationVenue.m diff --git a/Watch/Bridge/TGBridgeMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeMediaAttachment.h similarity index 63% rename from Watch/Bridge/TGBridgeMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeMediaAttachment.h index 4833e13b91..451d9562bc 100644 --- a/Watch/Bridge/TGBridgeMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeCommon.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @interface TGBridgeMediaAttachment : NSObject diff --git a/Watch/Bridge/TGBridgeMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeMessage.h b/submodules/WatchCommon/Sources/TGBridgeMessage.h similarity index 56% rename from Watch/Bridge/TGBridgeMessage.h rename to submodules/WatchCommon/Sources/TGBridgeMessage.h index 46d46a00b8..c88cb5cf34 100644 --- a/Watch/Bridge/TGBridgeMessage.h +++ b/submodules/WatchCommon/Sources/TGBridgeMessage.h @@ -1,16 +1,32 @@ -#import "TGBridgeCommon.h" -#import "TGBridgeImageMediaAttachment.h" -#import "TGBridgeVideoMediaAttachment.h" -#import "TGBridgeAudioMediaAttachment.h" -#import "TGBridgeDocumentMediaAttachment.h" -#import "TGBridgeLocationMediaAttachment.h" -#import "TGBridgeContactMediaAttachment.h" -#import "TGBridgeActionMediaAttachment.h" -#import "TGBridgeReplyMessageMediaAttachment.h" -#import "TGBridgeForwardedMessageMediaAttachment.h" -#import "TGBridgeWebPageMediaAttachment.h" -#import "TGBridgeMessageEntitiesAttachment.h" -#import "TGBridgeUnsupportedMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#else +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#endif typedef enum { TGBridgeTextCheckingResultTypeUndefined, diff --git a/Watch/Bridge/TGBridgeMessage.m b/submodules/WatchCommon/Sources/TGBridgeMessage.m similarity index 98% rename from Watch/Bridge/TGBridgeMessage.m rename to submodules/WatchCommon/Sources/TGBridgeMessage.m index 1793d98851..4f5e5bb6e7 100644 --- a/Watch/Bridge/TGBridgeMessage.m +++ b/submodules/WatchCommon/Sources/TGBridgeMessage.m @@ -1,5 +1,5 @@ #import "TGBridgeMessage.h" -#import "TGWatchCommon.h" +//#import "TGWatchCommon.h" #import "TGBridgePeerIdAdapter.h" NSString *const TGBridgeMessageIdentifierKey = @"identifier"; @@ -90,7 +90,7 @@ NSString *const TGBridgeMessagesArrayKey = @"messages"; { TGBridgeActionMediaAttachment *actionAttachment = (TGBridgeActionMediaAttachment *)attachment; if (actionAttachment.actionData[@"uid"] != nil) - [userIds addIndex:[actionAttachment.actionData[@"uid"] int32Value]]; + [userIds addIndex:(int32_t)[actionAttachment.actionData[@"uid"] intValue]]; } } diff --git a/Watch/Bridge/TGBridgeMessageEntities.h b/submodules/WatchCommon/Sources/TGBridgeMessageEntities.h similarity index 100% rename from Watch/Bridge/TGBridgeMessageEntities.h rename to submodules/WatchCommon/Sources/TGBridgeMessageEntities.h diff --git a/Watch/Bridge/TGBridgeMessageEntities.m b/submodules/WatchCommon/Sources/TGBridgeMessageEntities.m similarity index 100% rename from Watch/Bridge/TGBridgeMessageEntities.m rename to submodules/WatchCommon/Sources/TGBridgeMessageEntities.m diff --git a/submodules/WatchCommon/Sources/TGBridgeMessageEntitiesAttachment.h b/submodules/WatchCommon/Sources/TGBridgeMessageEntitiesAttachment.h new file mode 100644 index 0000000000..08b44e1900 --- /dev/null +++ b/submodules/WatchCommon/Sources/TGBridgeMessageEntitiesAttachment.h @@ -0,0 +1,13 @@ +#if TARGET_OS_WATCH +#import +#import +#else +#import +#import +#endif + +@interface TGBridgeMessageEntitiesAttachment : TGBridgeMediaAttachment + +@property (nonatomic, strong) NSArray *entities; + +@end diff --git a/Watch/Bridge/TGBridgeMessageEntitiesAttachment.m b/submodules/WatchCommon/Sources/TGBridgeMessageEntitiesAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeMessageEntitiesAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeMessageEntitiesAttachment.m diff --git a/Watch/Bridge/TGBridgePeerIdAdapter.h b/submodules/WatchCommon/Sources/TGBridgePeerIdAdapter.h similarity index 100% rename from Watch/Bridge/TGBridgePeerIdAdapter.h rename to submodules/WatchCommon/Sources/TGBridgePeerIdAdapter.h diff --git a/Watch/Bridge/TGBridgePeerNotificationSettings.h b/submodules/WatchCommon/Sources/TGBridgePeerNotificationSettings.h similarity index 78% rename from Watch/Bridge/TGBridgePeerNotificationSettings.h rename to submodules/WatchCommon/Sources/TGBridgePeerNotificationSettings.h index 262908e368..fce723cecb 100644 --- a/Watch/Bridge/TGBridgePeerNotificationSettings.h +++ b/submodules/WatchCommon/Sources/TGBridgePeerNotificationSettings.h @@ -1,4 +1,4 @@ -#import "TGBridgeCommon.h" +#import @interface TGBridgePeerNotificationSettings : NSObject diff --git a/Watch/Bridge/TGBridgePeerNotificationSettings.m b/submodules/WatchCommon/Sources/TGBridgePeerNotificationSettings.m similarity index 100% rename from Watch/Bridge/TGBridgePeerNotificationSettings.m rename to submodules/WatchCommon/Sources/TGBridgePeerNotificationSettings.m diff --git a/Watch/Bridge/TGBridgeReplyMarkupMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeReplyMarkupMediaAttachment.h similarity index 57% rename from Watch/Bridge/TGBridgeReplyMarkupMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeReplyMarkupMediaAttachment.h index c0114eb3fa..261137605c 100644 --- a/Watch/Bridge/TGBridgeReplyMarkupMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeReplyMarkupMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @class TGBridgeBotReplyMarkup; diff --git a/Watch/Bridge/TGBridgeReplyMarkupMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeReplyMarkupMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeReplyMarkupMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeReplyMarkupMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeReplyMessageMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeReplyMessageMediaAttachment.h similarity index 60% rename from Watch/Bridge/TGBridgeReplyMessageMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeReplyMessageMediaAttachment.h index 5c2cd80f08..d5b6aebf06 100644 --- a/Watch/Bridge/TGBridgeReplyMessageMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeReplyMessageMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @class TGBridgeMessage; diff --git a/Watch/Bridge/TGBridgeReplyMessageMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeReplyMessageMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeReplyMessageMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeReplyMessageMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeSubscriptions.h b/submodules/WatchCommon/Sources/TGBridgeSubscriptions.h similarity index 98% rename from Watch/Bridge/TGBridgeSubscriptions.h rename to submodules/WatchCommon/Sources/TGBridgeSubscriptions.h index 82f179715b..c0f2fa29e0 100644 --- a/Watch/Bridge/TGBridgeSubscriptions.h +++ b/submodules/WatchCommon/Sources/TGBridgeSubscriptions.h @@ -1,4 +1,8 @@ -#import "TGBridgeCommon.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif #import #import diff --git a/Watch/Bridge/TGBridgeSubscriptions.m b/submodules/WatchCommon/Sources/TGBridgeSubscriptions.m similarity index 100% rename from Watch/Bridge/TGBridgeSubscriptions.m rename to submodules/WatchCommon/Sources/TGBridgeSubscriptions.m diff --git a/Watch/Bridge/TGBridgeUnsupportedMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeUnsupportedMediaAttachment.h similarity index 63% rename from Watch/Bridge/TGBridgeUnsupportedMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeUnsupportedMediaAttachment.h index 8803a6a8f4..03145c0db4 100644 --- a/Watch/Bridge/TGBridgeUnsupportedMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeUnsupportedMediaAttachment.h @@ -1,4 +1,8 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @interface TGBridgeUnsupportedMediaAttachment : TGBridgeMediaAttachment diff --git a/Watch/Bridge/TGBridgeUnsupportedMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeUnsupportedMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeUnsupportedMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeUnsupportedMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeUser.h b/submodules/WatchCommon/Sources/TGBridgeUser.h similarity index 93% rename from Watch/Bridge/TGBridgeUser.h rename to submodules/WatchCommon/Sources/TGBridgeUser.h index f1ecadd951..fe4c16a51b 100644 --- a/Watch/Bridge/TGBridgeUser.h +++ b/submodules/WatchCommon/Sources/TGBridgeUser.h @@ -1,4 +1,8 @@ -#import "TGBridgeCommon.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif @class TGBridgeBotInfo; @class TGBridgeUserChange; diff --git a/Watch/Bridge/TGBridgeUser.m b/submodules/WatchCommon/Sources/TGBridgeUser.m similarity index 96% rename from Watch/Bridge/TGBridgeUser.m rename to submodules/WatchCommon/Sources/TGBridgeUser.m index 615e6a34a1..4c0fed8d97 100644 --- a/Watch/Bridge/TGBridgeUser.m +++ b/submodules/WatchCommon/Sources/TGBridgeUser.m @@ -1,8 +1,8 @@ #import "TGBridgeUser.h" -#import "TGWatchCommon.h" +//#import "TGWatchCommon.h" #import "TGBridgeBotInfo.h" -#import "../Extension/TGStringUtils.h" +//#import "../Extension/TGStringUtils.h" NSString *const TGBridgeUserIdentifierKey = @"identifier"; NSString *const TGBridgeUserFirstNameKey = @"firstName"; @@ -100,10 +100,7 @@ NSString *const TGBridgeUsersDictionaryKey = @"users"; if (firstName != nil && firstName.length != 0 && lastName != nil && lastName.length != 0) { - if (TGIsKorean()) - return [[NSString alloc] initWithFormat:@"%@ %@", lastName, firstName]; - else - return [[NSString alloc] initWithFormat:@"%@ %@", firstName, lastName]; + return [[NSString alloc] initWithFormat:@"%@ %@", firstName, lastName]; } else if (firstName != nil && firstName.length != 0) return firstName; @@ -214,15 +211,15 @@ NSString *const TGBridgeUsersDictionaryKey = @"users"; NSNumber *kindChange = change.fields[TGBridgeUserKindKey]; if (kindChange != nil) - user->_kind = [kindChange int32Value]; + user->_kind = (int32_t)[kindChange intValue]; NSNumber *botKindChange = change.fields[TGBridgeUserBotKindKey]; if (botKindChange != nil) - user->_botKind = [botKindChange int32Value]; + user->_botKind = (int32_t)[botKindChange intValue]; NSNumber *botVersionChange = change.fields[TGBridgeUserBotVersionKey]; if (botVersionChange != nil) - user->_botVersion = [botVersionChange int32Value]; + user->_botVersion = (int32_t)[botVersionChange intValue]; NSNumber *verifiedChange = change.fields[TGBridgeUserVerifiedKey]; if (verifiedChange != nil) diff --git a/Watch/Bridge/TGBridgeVideoMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeVideoMediaAttachment.h similarity index 68% rename from Watch/Bridge/TGBridgeVideoMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeVideoMediaAttachment.h index fca37e940f..b5e02dcf6d 100644 --- a/Watch/Bridge/TGBridgeVideoMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeVideoMediaAttachment.h @@ -1,4 +1,9 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif + #import @interface TGBridgeVideoMediaAttachment : TGBridgeMediaAttachment diff --git a/Watch/Bridge/TGBridgeVideoMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeVideoMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeVideoMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeVideoMediaAttachment.m diff --git a/Watch/Bridge/TGBridgeWebPageMediaAttachment.h b/submodules/WatchCommon/Sources/TGBridgeWebPageMediaAttachment.h similarity index 85% rename from Watch/Bridge/TGBridgeWebPageMediaAttachment.h rename to submodules/WatchCommon/Sources/TGBridgeWebPageMediaAttachment.h index c5e81d329a..dd87e33132 100644 --- a/Watch/Bridge/TGBridgeWebPageMediaAttachment.h +++ b/submodules/WatchCommon/Sources/TGBridgeWebPageMediaAttachment.h @@ -1,4 +1,9 @@ -#import "TGBridgeMediaAttachment.h" +#if TARGET_OS_WATCH +#import +#else +#import +#endif + #import @class TGBridgeImageMediaAttachment; diff --git a/Watch/Bridge/TGBridgeWebPageMediaAttachment.m b/submodules/WatchCommon/Sources/TGBridgeWebPageMediaAttachment.m similarity index 100% rename from Watch/Bridge/TGBridgeWebPageMediaAttachment.m rename to submodules/WatchCommon/Sources/TGBridgeWebPageMediaAttachment.m diff --git a/submodules/WatchCommon/Sources/WatchCommon.h b/submodules/WatchCommon/Sources/WatchCommon.h new file mode 100644 index 0000000000..740b833b89 --- /dev/null +++ b/submodules/WatchCommon/Sources/WatchCommon.h @@ -0,0 +1,35 @@ +#import + +//! Project version number for WatchCommon. +FOUNDATION_EXPORT double WatchCommonVersionNumber; + +//! Project version string for WatchCommon. +FOUNDATION_EXPORT const unsigned char WatchCommonVersionString[]; + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/submodules/WatchCommon/Sources/WatchCommonWatch.h b/submodules/WatchCommon/Sources/WatchCommonWatch.h new file mode 100644 index 0000000000..38e8745e0f --- /dev/null +++ b/submodules/WatchCommon/Sources/WatchCommonWatch.h @@ -0,0 +1,36 @@ +#import + +//! Project version number for WatchCommon. +FOUNDATION_EXPORT double WatchCommonVersionNumber; + +//! Project version string for WatchCommon. +FOUNDATION_EXPORT const unsigned char WatchCommonVersionString[]; + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + diff --git a/submodules/WatchCommon/WatchCommonWatch/Info.plist b/submodules/WatchCommon/WatchCommonWatch/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/WatchCommon/WatchCommonWatch/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/WatchCommon/WatchCommonWatch/WatchCommonWatch.h b/submodules/WatchCommon/WatchCommonWatch/WatchCommonWatch.h new file mode 100644 index 0000000000..2aa9040e2b --- /dev/null +++ b/submodules/WatchCommon/WatchCommonWatch/WatchCommonWatch.h @@ -0,0 +1,19 @@ +// +// WatchCommonWatch.h +// WatchCommonWatch +// +// Created by Peter on 6/15/19. +// Copyright © 2019 Telegram LLP. All rights reserved. +// + +#import + +//! Project version number for WatchCommonWatch. +FOUNDATION_EXPORT double WatchCommonWatchVersionNumber; + +//! Project version string for WatchCommonWatch. +FOUNDATION_EXPORT const unsigned char WatchCommonWatchVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/WatchCommon/WatchCommon_Xcode.xcodeproj/project.pbxproj b/submodules/WatchCommon/WatchCommon_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..80460f2196 --- /dev/null +++ b/submodules/WatchCommon/WatchCommon_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,895 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D00817AA22B4798B008A895F /* WatchCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817A822B4798B008A895F /* WatchCommon.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008181722B5710B008A895F /* TGBridgeUnsupportedMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817E522B57104008A895F /* TGBridgeUnsupportedMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008181822B5710B008A895F /* TGBridgeContactMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817E622B57105008A895F /* TGBridgeContactMediaAttachment.m */; }; + D008181922B5710B008A895F /* TGBridgeAudioMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817E722B57105008A895F /* TGBridgeAudioMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008181A22B5710B008A895F /* TGBridgeActionMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817E822B57105008A895F /* TGBridgeActionMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008181B22B5710B008A895F /* TGBridgeMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817E922B57105008A895F /* TGBridgeMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008181C22B5710B008A895F /* TGBridgeReplyMarkupMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817EA22B57105008A895F /* TGBridgeReplyMarkupMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008181D22B5710B008A895F /* TGBridgeContext.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817EB22B57105008A895F /* TGBridgeContext.m */; }; + D008181E22B5710B008A895F /* TGBridgeChat.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817EC22B57105008A895F /* TGBridgeChat.m */; }; + D008181F22B5710B008A895F /* TGBridgeImageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817ED22B57105008A895F /* TGBridgeImageMediaAttachment.m */; }; + D008182022B5710B008A895F /* TGBridgeContext.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817EE22B57105008A895F /* TGBridgeContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008182122B5710B008A895F /* TGBridgeLocationVenue.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817EF22B57105008A895F /* TGBridgeLocationVenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008182222B5710B008A895F /* TGBridgeChatMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F022B57105008A895F /* TGBridgeChatMessages.m */; }; + D008182322B5710B008A895F /* TGBridgeVideoMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817F122B57105008A895F /* TGBridgeVideoMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008182422B5710B008A895F /* TGBridgeAudioMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F222B57106008A895F /* TGBridgeAudioMediaAttachment.m */; }; + D008182522B5710B008A895F /* TGBridgeWebPageMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817F322B57106008A895F /* TGBridgeWebPageMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008182622B5710B008A895F /* TGBridgeReplyMarkupMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F422B57106008A895F /* TGBridgeReplyMarkupMediaAttachment.m */; }; + D008182722B5710B008A895F /* TGBridgeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F522B57106008A895F /* TGBridgeCommon.m */; }; + D008182822B5710B008A895F /* TGBridgeMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F622B57106008A895F /* TGBridgeMessage.m */; }; + D008182922B5710B008A895F /* TGBridgeLocationVenue.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F722B57106008A895F /* TGBridgeLocationVenue.m */; }; + D008182A22B5710B008A895F /* TGBridgeMessageEntities.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817F822B57106008A895F /* TGBridgeMessageEntities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008182B22B5710B008A895F /* TGBridgeSubscriptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F922B57106008A895F /* TGBridgeSubscriptions.m */; }; + D008182C22B5710B008A895F /* TGBridgeForwardedMessageMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817FA22B57106008A895F /* TGBridgeForwardedMessageMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008182D22B5710B008A895F /* TGBridgeForwardedMessageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817FB22B57107008A895F /* TGBridgeForwardedMessageMediaAttachment.m */; }; + D008182E22B5710B008A895F /* TGBridgeBotInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817FC22B57107008A895F /* TGBridgeBotInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008182F22B5710B008A895F /* TGBridgeBotCommandInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817FD22B57107008A895F /* TGBridgeBotCommandInfo.m */; }; + D008183022B5710B008A895F /* TGBridgeContactMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817FE22B57107008A895F /* TGBridgeContactMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008183122B5710B008A895F /* TGBridgeImageMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817FF22B57107008A895F /* TGBridgeImageMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008183222B5710B008A895F /* TGBridgeChat.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180022B57107008A895F /* TGBridgeChat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008183322B5710B008A895F /* TGBridgeUnsupportedMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180122B57107008A895F /* TGBridgeUnsupportedMediaAttachment.m */; }; + D008183422B5710B008A895F /* TGBridgeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180222B57107008A895F /* TGBridgeCommon.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008183522B5710B008A895F /* TGBridgeUser.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180322B57108008A895F /* TGBridgeUser.m */; }; + D008183622B5710B008A895F /* TGBridgeBotInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180422B57108008A895F /* TGBridgeBotInfo.m */; }; + D008183722B5710B008A895F /* TGBridgeActionMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180522B57108008A895F /* TGBridgeActionMediaAttachment.m */; }; + D008183822B5710B008A895F /* TGBridgeWebPageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180622B57108008A895F /* TGBridgeWebPageMediaAttachment.m */; }; + D008183922B5710B008A895F /* TGBridgeReplyMessageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180722B57108008A895F /* TGBridgeReplyMessageMediaAttachment.m */; }; + D008183A22B5710B008A895F /* TGBridgeReplyMessageMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180822B57108008A895F /* TGBridgeReplyMessageMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008183B22B5710B008A895F /* TGBridgeDocumentMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180922B57108008A895F /* TGBridgeDocumentMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008183C22B5710B008A895F /* TGBridgeSubscriptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180A22B57109008A895F /* TGBridgeSubscriptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008183D22B5710B008A895F /* TGBridgeMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180B22B57109008A895F /* TGBridgeMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008183E22B5710B008A895F /* TGBridgeMessageEntitiesAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180C22B57109008A895F /* TGBridgeMessageEntitiesAttachment.m */; }; + D008183F22B5710B008A895F /* TGBridgeMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180D22B57109008A895F /* TGBridgeMediaAttachment.m */; }; + D008184022B5710B008A895F /* TGBridgeMessageEntities.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180E22B57109008A895F /* TGBridgeMessageEntities.m */; }; + D008184122B5710B008A895F /* TGBridgeLocationMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180F22B57109008A895F /* TGBridgeLocationMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008184222B5710B008A895F /* TGBridgeBotCommandInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D008181022B5710A008A895F /* TGBridgeBotCommandInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008184322B5710B008A895F /* TGBridgeChatMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = D008181122B5710A008A895F /* TGBridgeChatMessages.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008184422B5710B008A895F /* TGBridgeMessageEntitiesAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D008181222B5710A008A895F /* TGBridgeMessageEntitiesAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008184522B5710B008A895F /* TGBridgeVideoMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008181322B5710A008A895F /* TGBridgeVideoMediaAttachment.m */; }; + D008184622B5710B008A895F /* TGBridgeDocumentMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008181422B5710A008A895F /* TGBridgeDocumentMediaAttachment.m */; }; + D008184722B5710B008A895F /* TGBridgeLocationMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008181522B5710A008A895F /* TGBridgeLocationMediaAttachment.m */; }; + D008184822B5710B008A895F /* TGBridgeUser.h in Headers */ = {isa = PBXBuildFile; fileRef = D008181622B5710A008A895F /* TGBridgeUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008186F22B58B45008A895F /* TGBridgeActionMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180522B57108008A895F /* TGBridgeActionMediaAttachment.m */; }; + D008187022B58B45008A895F /* TGBridgeAudioMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F222B57106008A895F /* TGBridgeAudioMediaAttachment.m */; }; + D008187122B58B45008A895F /* TGBridgeBotCommandInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817FD22B57107008A895F /* TGBridgeBotCommandInfo.m */; }; + D008187222B58B45008A895F /* TGBridgeBotInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180422B57108008A895F /* TGBridgeBotInfo.m */; }; + D008187322B58B45008A895F /* TGBridgeChat.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817EC22B57105008A895F /* TGBridgeChat.m */; }; + D008187422B58B45008A895F /* TGBridgeChatMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F022B57105008A895F /* TGBridgeChatMessages.m */; }; + D008187522B58B45008A895F /* TGBridgeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F522B57106008A895F /* TGBridgeCommon.m */; }; + D008187622B58B45008A895F /* TGBridgeContactMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817E622B57105008A895F /* TGBridgeContactMediaAttachment.m */; }; + D008187722B58B45008A895F /* TGBridgeContext.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817EB22B57105008A895F /* TGBridgeContext.m */; }; + D008187822B58B45008A895F /* TGBridgeDocumentMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008181422B5710A008A895F /* TGBridgeDocumentMediaAttachment.m */; }; + D008187922B58B45008A895F /* TGBridgeForwardedMessageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817FB22B57107008A895F /* TGBridgeForwardedMessageMediaAttachment.m */; }; + D008187A22B58B45008A895F /* TGBridgeImageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817ED22B57105008A895F /* TGBridgeImageMediaAttachment.m */; }; + D008187B22B58B45008A895F /* TGBridgeLocationMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008181522B5710A008A895F /* TGBridgeLocationMediaAttachment.m */; }; + D008187C22B58B45008A895F /* TGBridgeLocationVenue.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F722B57106008A895F /* TGBridgeLocationVenue.m */; }; + D008187D22B58B45008A895F /* TGBridgeMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180D22B57109008A895F /* TGBridgeMediaAttachment.m */; }; + D008187E22B58B45008A895F /* TGBridgeMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F622B57106008A895F /* TGBridgeMessage.m */; }; + D008187F22B58B45008A895F /* TGBridgeMessageEntities.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180E22B57109008A895F /* TGBridgeMessageEntities.m */; }; + D008188022B58B45008A895F /* TGBridgeMessageEntitiesAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180C22B57109008A895F /* TGBridgeMessageEntitiesAttachment.m */; }; + D008188122B58B45008A895F /* TGBridgeReplyMarkupMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F422B57106008A895F /* TGBridgeReplyMarkupMediaAttachment.m */; }; + D008188222B58B45008A895F /* TGBridgeReplyMessageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180722B57108008A895F /* TGBridgeReplyMessageMediaAttachment.m */; }; + D008188322B58B45008A895F /* TGBridgeSubscriptions.m in Sources */ = {isa = PBXBuildFile; fileRef = D00817F922B57106008A895F /* TGBridgeSubscriptions.m */; }; + D008188422B58B45008A895F /* TGBridgeUnsupportedMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180122B57107008A895F /* TGBridgeUnsupportedMediaAttachment.m */; }; + D008188522B58B45008A895F /* TGBridgeUser.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180322B57108008A895F /* TGBridgeUser.m */; }; + D008188622B58B45008A895F /* TGBridgeVideoMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008181322B5710A008A895F /* TGBridgeVideoMediaAttachment.m */; }; + D008188722B58B45008A895F /* TGBridgeWebPageMediaAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D008180622B57108008A895F /* TGBridgeWebPageMediaAttachment.m */; }; + D008188822B58B61008A895F /* TGBridgeActionMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817E822B57105008A895F /* TGBridgeActionMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008188922B58B61008A895F /* TGBridgeAudioMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817E722B57105008A895F /* TGBridgeAudioMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008188A22B58B61008A895F /* TGBridgeBotCommandInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D008181022B5710A008A895F /* TGBridgeBotCommandInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008188B22B58B61008A895F /* TGBridgeBotInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817FC22B57107008A895F /* TGBridgeBotInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008188C22B58B61008A895F /* TGBridgeChat.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180022B57107008A895F /* TGBridgeChat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008188D22B58B61008A895F /* TGBridgeChatMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = D008181122B5710A008A895F /* TGBridgeChatMessages.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008188E22B58B61008A895F /* TGBridgeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180222B57107008A895F /* TGBridgeCommon.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008188F22B58B61008A895F /* TGBridgeContactMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817FE22B57107008A895F /* TGBridgeContactMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189022B58B61008A895F /* TGBridgeContext.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817EE22B57105008A895F /* TGBridgeContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189122B58B61008A895F /* TGBridgeDocumentMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180922B57108008A895F /* TGBridgeDocumentMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189222B58B61008A895F /* TGBridgeForwardedMessageMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817FA22B57106008A895F /* TGBridgeForwardedMessageMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189322B58B61008A895F /* TGBridgeImageMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817FF22B57107008A895F /* TGBridgeImageMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189422B58B61008A895F /* TGBridgeLocationMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180F22B57109008A895F /* TGBridgeLocationMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189522B58B61008A895F /* TGBridgeLocationVenue.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817EF22B57105008A895F /* TGBridgeLocationVenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189622B58B61008A895F /* TGBridgeMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817E922B57105008A895F /* TGBridgeMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189722B58B61008A895F /* TGBridgeMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180B22B57109008A895F /* TGBridgeMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189822B58B61008A895F /* TGBridgeMessageEntities.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817F822B57106008A895F /* TGBridgeMessageEntities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189922B58B61008A895F /* TGBridgeMessageEntitiesAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D008181222B5710A008A895F /* TGBridgeMessageEntitiesAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189A22B58B61008A895F /* TGBridgeReplyMarkupMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817EA22B57105008A895F /* TGBridgeReplyMarkupMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189B22B58B61008A895F /* TGBridgeReplyMessageMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180822B57108008A895F /* TGBridgeReplyMessageMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189C22B58B61008A895F /* TGBridgeSubscriptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D008180A22B57109008A895F /* TGBridgeSubscriptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189D22B58B61008A895F /* TGBridgeUnsupportedMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817E522B57104008A895F /* TGBridgeUnsupportedMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189E22B58B61008A895F /* TGBridgeUser.h in Headers */ = {isa = PBXBuildFile; fileRef = D008181622B5710A008A895F /* TGBridgeUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D008189F22B58B61008A895F /* TGBridgeVideoMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817F122B57105008A895F /* TGBridgeVideoMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D00818A022B58B61008A895F /* TGBridgeWebPageMediaAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D00817F322B57106008A895F /* TGBridgeWebPageMediaAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D00818A322B58C90008A895F /* WatchCommonWatch.h in Headers */ = {isa = PBXBuildFile; fileRef = D00818A222B58C90008A895F /* WatchCommonWatch.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D00818A722B58EA9008A895F /* TGBridgePeerIdAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = D00818A622B58EA9008A895F /* TGBridgePeerIdAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D00818A822B58EAC008A895F /* TGBridgePeerIdAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = D00818A622B58EA9008A895F /* TGBridgePeerIdAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D00818AB22B58F76008A895F /* TGBridgePeerNotificationSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = D00818A922B58F76008A895F /* TGBridgePeerNotificationSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D00818AC22B58F76008A895F /* TGBridgePeerNotificationSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = D00818A922B58F76008A895F /* TGBridgePeerNotificationSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D00818AD22B58F76008A895F /* TGBridgePeerNotificationSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = D00818AA22B58F76008A895F /* TGBridgePeerNotificationSettings.m */; }; + D00818AE22B58F76008A895F /* TGBridgePeerNotificationSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = D00818AA22B58F76008A895F /* TGBridgePeerNotificationSettings.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D00817A522B4798B008A895F /* WatchCommon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WatchCommon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D00817A822B4798B008A895F /* WatchCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WatchCommon.h; sourceTree = ""; }; + D00817A922B4798B008A895F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D00817E522B57104008A895F /* TGBridgeUnsupportedMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeUnsupportedMediaAttachment.h; sourceTree = ""; }; + D00817E622B57105008A895F /* TGBridgeContactMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeContactMediaAttachment.m; sourceTree = ""; }; + D00817E722B57105008A895F /* TGBridgeAudioMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeAudioMediaAttachment.h; sourceTree = ""; }; + D00817E822B57105008A895F /* TGBridgeActionMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeActionMediaAttachment.h; sourceTree = ""; }; + D00817E922B57105008A895F /* TGBridgeMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeMediaAttachment.h; sourceTree = ""; }; + D00817EA22B57105008A895F /* TGBridgeReplyMarkupMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeReplyMarkupMediaAttachment.h; sourceTree = ""; }; + D00817EB22B57105008A895F /* TGBridgeContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeContext.m; sourceTree = ""; }; + D00817EC22B57105008A895F /* TGBridgeChat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeChat.m; sourceTree = ""; }; + D00817ED22B57105008A895F /* TGBridgeImageMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeImageMediaAttachment.m; sourceTree = ""; }; + D00817EE22B57105008A895F /* TGBridgeContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeContext.h; sourceTree = ""; }; + D00817EF22B57105008A895F /* TGBridgeLocationVenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeLocationVenue.h; sourceTree = ""; }; + D00817F022B57105008A895F /* TGBridgeChatMessages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeChatMessages.m; sourceTree = ""; }; + D00817F122B57105008A895F /* TGBridgeVideoMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeVideoMediaAttachment.h; sourceTree = ""; }; + D00817F222B57106008A895F /* TGBridgeAudioMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeAudioMediaAttachment.m; sourceTree = ""; }; + D00817F322B57106008A895F /* TGBridgeWebPageMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeWebPageMediaAttachment.h; sourceTree = ""; }; + D00817F422B57106008A895F /* TGBridgeReplyMarkupMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeReplyMarkupMediaAttachment.m; sourceTree = ""; }; + D00817F522B57106008A895F /* TGBridgeCommon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeCommon.m; sourceTree = ""; }; + D00817F622B57106008A895F /* TGBridgeMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeMessage.m; sourceTree = ""; }; + D00817F722B57106008A895F /* TGBridgeLocationVenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeLocationVenue.m; sourceTree = ""; }; + D00817F822B57106008A895F /* TGBridgeMessageEntities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeMessageEntities.h; sourceTree = ""; }; + D00817F922B57106008A895F /* TGBridgeSubscriptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeSubscriptions.m; sourceTree = ""; }; + D00817FA22B57106008A895F /* TGBridgeForwardedMessageMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeForwardedMessageMediaAttachment.h; sourceTree = ""; }; + D00817FB22B57107008A895F /* TGBridgeForwardedMessageMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeForwardedMessageMediaAttachment.m; sourceTree = ""; }; + D00817FC22B57107008A895F /* TGBridgeBotInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeBotInfo.h; sourceTree = ""; }; + D00817FD22B57107008A895F /* TGBridgeBotCommandInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeBotCommandInfo.m; sourceTree = ""; }; + D00817FE22B57107008A895F /* TGBridgeContactMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeContactMediaAttachment.h; sourceTree = ""; }; + D00817FF22B57107008A895F /* TGBridgeImageMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeImageMediaAttachment.h; sourceTree = ""; }; + D008180022B57107008A895F /* TGBridgeChat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeChat.h; sourceTree = ""; }; + D008180122B57107008A895F /* TGBridgeUnsupportedMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeUnsupportedMediaAttachment.m; sourceTree = ""; }; + D008180222B57107008A895F /* TGBridgeCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeCommon.h; sourceTree = ""; }; + D008180322B57108008A895F /* TGBridgeUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeUser.m; sourceTree = ""; }; + D008180422B57108008A895F /* TGBridgeBotInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeBotInfo.m; sourceTree = ""; }; + D008180522B57108008A895F /* TGBridgeActionMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeActionMediaAttachment.m; sourceTree = ""; }; + D008180622B57108008A895F /* TGBridgeWebPageMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeWebPageMediaAttachment.m; sourceTree = ""; }; + D008180722B57108008A895F /* TGBridgeReplyMessageMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeReplyMessageMediaAttachment.m; sourceTree = ""; }; + D008180822B57108008A895F /* TGBridgeReplyMessageMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeReplyMessageMediaAttachment.h; sourceTree = ""; }; + D008180922B57108008A895F /* TGBridgeDocumentMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeDocumentMediaAttachment.h; sourceTree = ""; }; + D008180A22B57109008A895F /* TGBridgeSubscriptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeSubscriptions.h; sourceTree = ""; }; + D008180B22B57109008A895F /* TGBridgeMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeMessage.h; sourceTree = ""; }; + D008180C22B57109008A895F /* TGBridgeMessageEntitiesAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeMessageEntitiesAttachment.m; sourceTree = ""; }; + D008180D22B57109008A895F /* TGBridgeMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeMediaAttachment.m; sourceTree = ""; }; + D008180E22B57109008A895F /* TGBridgeMessageEntities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeMessageEntities.m; sourceTree = ""; }; + D008180F22B57109008A895F /* TGBridgeLocationMediaAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeLocationMediaAttachment.h; sourceTree = ""; }; + D008181022B5710A008A895F /* TGBridgeBotCommandInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeBotCommandInfo.h; sourceTree = ""; }; + D008181122B5710A008A895F /* TGBridgeChatMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeChatMessages.h; sourceTree = ""; }; + D008181222B5710A008A895F /* TGBridgeMessageEntitiesAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeMessageEntitiesAttachment.h; sourceTree = ""; }; + D008181322B5710A008A895F /* TGBridgeVideoMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeVideoMediaAttachment.m; sourceTree = ""; }; + D008181422B5710A008A895F /* TGBridgeDocumentMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeDocumentMediaAttachment.m; sourceTree = ""; }; + D008181522B5710A008A895F /* TGBridgeLocationMediaAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeLocationMediaAttachment.m; sourceTree = ""; }; + D008181622B5710A008A895F /* TGBridgeUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeUser.h; sourceTree = ""; }; + D008186722B58A73008A895F /* WatchCommonWatch.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WatchCommonWatch.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D008186922B58A73008A895F /* WatchCommonWatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WatchCommonWatch.h; sourceTree = ""; }; + D008186A22B58A73008A895F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D00818A222B58C90008A895F /* WatchCommonWatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WatchCommonWatch.h; sourceTree = ""; }; + D00818A622B58EA9008A895F /* TGBridgePeerIdAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgePeerIdAdapter.h; sourceTree = ""; }; + D00818A922B58F76008A895F /* TGBridgePeerNotificationSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgePeerNotificationSettings.h; sourceTree = ""; }; + D00818AA22B58F76008A895F /* TGBridgePeerNotificationSettings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgePeerNotificationSettings.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D00817A222B4798B008A895F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D008186422B58A73008A895F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D008179B22B4798B008A895F = { + isa = PBXGroup; + children = ( + D00817A922B4798B008A895F /* Info.plist */, + D00817A722B4798B008A895F /* Sources */, + D008186822B58A73008A895F /* WatchCommonWatch */, + D00817A622B4798B008A895F /* Products */, + ); + sourceTree = ""; + }; + D00817A622B4798B008A895F /* Products */ = { + isa = PBXGroup; + children = ( + D00817A522B4798B008A895F /* WatchCommon.framework */, + D008186722B58A73008A895F /* WatchCommonWatch.framework */, + ); + name = Products; + sourceTree = ""; + }; + D00817A722B4798B008A895F /* Sources */ = { + isa = PBXGroup; + children = ( + D00818A922B58F76008A895F /* TGBridgePeerNotificationSettings.h */, + D00818AA22B58F76008A895F /* TGBridgePeerNotificationSettings.m */, + D00818A622B58EA9008A895F /* TGBridgePeerIdAdapter.h */, + D00817E822B57105008A895F /* TGBridgeActionMediaAttachment.h */, + D008180522B57108008A895F /* TGBridgeActionMediaAttachment.m */, + D00817E722B57105008A895F /* TGBridgeAudioMediaAttachment.h */, + D00817F222B57106008A895F /* TGBridgeAudioMediaAttachment.m */, + D008181022B5710A008A895F /* TGBridgeBotCommandInfo.h */, + D00817FD22B57107008A895F /* TGBridgeBotCommandInfo.m */, + D00817FC22B57107008A895F /* TGBridgeBotInfo.h */, + D008180422B57108008A895F /* TGBridgeBotInfo.m */, + D008180022B57107008A895F /* TGBridgeChat.h */, + D00817EC22B57105008A895F /* TGBridgeChat.m */, + D008181122B5710A008A895F /* TGBridgeChatMessages.h */, + D00817F022B57105008A895F /* TGBridgeChatMessages.m */, + D008180222B57107008A895F /* TGBridgeCommon.h */, + D00817F522B57106008A895F /* TGBridgeCommon.m */, + D00817FE22B57107008A895F /* TGBridgeContactMediaAttachment.h */, + D00817E622B57105008A895F /* TGBridgeContactMediaAttachment.m */, + D00817EE22B57105008A895F /* TGBridgeContext.h */, + D00817EB22B57105008A895F /* TGBridgeContext.m */, + D008180922B57108008A895F /* TGBridgeDocumentMediaAttachment.h */, + D008181422B5710A008A895F /* TGBridgeDocumentMediaAttachment.m */, + D00817FA22B57106008A895F /* TGBridgeForwardedMessageMediaAttachment.h */, + D00817FB22B57107008A895F /* TGBridgeForwardedMessageMediaAttachment.m */, + D00817FF22B57107008A895F /* TGBridgeImageMediaAttachment.h */, + D00817ED22B57105008A895F /* TGBridgeImageMediaAttachment.m */, + D008180F22B57109008A895F /* TGBridgeLocationMediaAttachment.h */, + D008181522B5710A008A895F /* TGBridgeLocationMediaAttachment.m */, + D00817EF22B57105008A895F /* TGBridgeLocationVenue.h */, + D00817F722B57106008A895F /* TGBridgeLocationVenue.m */, + D00817E922B57105008A895F /* TGBridgeMediaAttachment.h */, + D008180D22B57109008A895F /* TGBridgeMediaAttachment.m */, + D008180B22B57109008A895F /* TGBridgeMessage.h */, + D00817F622B57106008A895F /* TGBridgeMessage.m */, + D00817F822B57106008A895F /* TGBridgeMessageEntities.h */, + D008180E22B57109008A895F /* TGBridgeMessageEntities.m */, + D008181222B5710A008A895F /* TGBridgeMessageEntitiesAttachment.h */, + D008180C22B57109008A895F /* TGBridgeMessageEntitiesAttachment.m */, + D00817EA22B57105008A895F /* TGBridgeReplyMarkupMediaAttachment.h */, + D00817F422B57106008A895F /* TGBridgeReplyMarkupMediaAttachment.m */, + D008180822B57108008A895F /* TGBridgeReplyMessageMediaAttachment.h */, + D008180722B57108008A895F /* TGBridgeReplyMessageMediaAttachment.m */, + D008180A22B57109008A895F /* TGBridgeSubscriptions.h */, + D00817F922B57106008A895F /* TGBridgeSubscriptions.m */, + D00817E522B57104008A895F /* TGBridgeUnsupportedMediaAttachment.h */, + D008180122B57107008A895F /* TGBridgeUnsupportedMediaAttachment.m */, + D008181622B5710A008A895F /* TGBridgeUser.h */, + D008180322B57108008A895F /* TGBridgeUser.m */, + D00817F122B57105008A895F /* TGBridgeVideoMediaAttachment.h */, + D008181322B5710A008A895F /* TGBridgeVideoMediaAttachment.m */, + D00817F322B57106008A895F /* TGBridgeWebPageMediaAttachment.h */, + D008180622B57108008A895F /* TGBridgeWebPageMediaAttachment.m */, + D00818A222B58C90008A895F /* WatchCommonWatch.h */, + D00817A822B4798B008A895F /* WatchCommon.h */, + ); + path = Sources; + sourceTree = ""; + }; + D008186822B58A73008A895F /* WatchCommonWatch */ = { + isa = PBXGroup; + children = ( + D008186922B58A73008A895F /* WatchCommonWatch.h */, + D008186A22B58A73008A895F /* Info.plist */, + ); + path = WatchCommonWatch; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D00817A022B4798B008A895F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D00818AB22B58F76008A895F /* TGBridgePeerNotificationSettings.h in Headers */, + D008183D22B5710B008A895F /* TGBridgeMessage.h in Headers */, + D008181A22B5710B008A895F /* TGBridgeActionMediaAttachment.h in Headers */, + D008182122B5710B008A895F /* TGBridgeLocationVenue.h in Headers */, + D00818A822B58EAC008A895F /* TGBridgePeerIdAdapter.h in Headers */, + D008184122B5710B008A895F /* TGBridgeLocationMediaAttachment.h in Headers */, + D008182522B5710B008A895F /* TGBridgeWebPageMediaAttachment.h in Headers */, + D008183B22B5710B008A895F /* TGBridgeDocumentMediaAttachment.h in Headers */, + D008181722B5710B008A895F /* TGBridgeUnsupportedMediaAttachment.h in Headers */, + D008183422B5710B008A895F /* TGBridgeCommon.h in Headers */, + D008181B22B5710B008A895F /* TGBridgeMediaAttachment.h in Headers */, + D008184822B5710B008A895F /* TGBridgeUser.h in Headers */, + D008182E22B5710B008A895F /* TGBridgeBotInfo.h in Headers */, + D008182A22B5710B008A895F /* TGBridgeMessageEntities.h in Headers */, + D008184222B5710B008A895F /* TGBridgeBotCommandInfo.h in Headers */, + D008184322B5710B008A895F /* TGBridgeChatMessages.h in Headers */, + D008181C22B5710B008A895F /* TGBridgeReplyMarkupMediaAttachment.h in Headers */, + D008181922B5710B008A895F /* TGBridgeAudioMediaAttachment.h in Headers */, + D008182322B5710B008A895F /* TGBridgeVideoMediaAttachment.h in Headers */, + D008183022B5710B008A895F /* TGBridgeContactMediaAttachment.h in Headers */, + D008183C22B5710B008A895F /* TGBridgeSubscriptions.h in Headers */, + D008183122B5710B008A895F /* TGBridgeImageMediaAttachment.h in Headers */, + D008183A22B5710B008A895F /* TGBridgeReplyMessageMediaAttachment.h in Headers */, + D008183222B5710B008A895F /* TGBridgeChat.h in Headers */, + D00817AA22B4798B008A895F /* WatchCommon.h in Headers */, + D008184422B5710B008A895F /* TGBridgeMessageEntitiesAttachment.h in Headers */, + D008182022B5710B008A895F /* TGBridgeContext.h in Headers */, + D008182C22B5710B008A895F /* TGBridgeForwardedMessageMediaAttachment.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D008186222B58A73008A895F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D00818AC22B58F76008A895F /* TGBridgePeerNotificationSettings.h in Headers */, + D008189622B58B61008A895F /* TGBridgeMediaAttachment.h in Headers */, + D008189C22B58B61008A895F /* TGBridgeSubscriptions.h in Headers */, + D008188C22B58B61008A895F /* TGBridgeChat.h in Headers */, + D00818A722B58EA9008A895F /* TGBridgePeerIdAdapter.h in Headers */, + D008188F22B58B61008A895F /* TGBridgeContactMediaAttachment.h in Headers */, + D00818A022B58B61008A895F /* TGBridgeWebPageMediaAttachment.h in Headers */, + D008189A22B58B61008A895F /* TGBridgeReplyMarkupMediaAttachment.h in Headers */, + D00818A322B58C90008A895F /* WatchCommonWatch.h in Headers */, + D008189D22B58B61008A895F /* TGBridgeUnsupportedMediaAttachment.h in Headers */, + D008189122B58B61008A895F /* TGBridgeDocumentMediaAttachment.h in Headers */, + D008188822B58B61008A895F /* TGBridgeActionMediaAttachment.h in Headers */, + D008188B22B58B61008A895F /* TGBridgeBotInfo.h in Headers */, + D008189722B58B61008A895F /* TGBridgeMessage.h in Headers */, + D008189422B58B61008A895F /* TGBridgeLocationMediaAttachment.h in Headers */, + D008189922B58B61008A895F /* TGBridgeMessageEntitiesAttachment.h in Headers */, + D008189022B58B61008A895F /* TGBridgeContext.h in Headers */, + D008189522B58B61008A895F /* TGBridgeLocationVenue.h in Headers */, + D008188922B58B61008A895F /* TGBridgeAudioMediaAttachment.h in Headers */, + D008189B22B58B61008A895F /* TGBridgeReplyMessageMediaAttachment.h in Headers */, + D008189822B58B61008A895F /* TGBridgeMessageEntities.h in Headers */, + D008189322B58B61008A895F /* TGBridgeImageMediaAttachment.h in Headers */, + D008188A22B58B61008A895F /* TGBridgeBotCommandInfo.h in Headers */, + D008189E22B58B61008A895F /* TGBridgeUser.h in Headers */, + D008188D22B58B61008A895F /* TGBridgeChatMessages.h in Headers */, + D008189F22B58B61008A895F /* TGBridgeVideoMediaAttachment.h in Headers */, + D008188E22B58B61008A895F /* TGBridgeCommon.h in Headers */, + D008189222B58B61008A895F /* TGBridgeForwardedMessageMediaAttachment.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D00817A422B4798B008A895F /* WatchCommon */ = { + isa = PBXNativeTarget; + buildConfigurationList = D00817AD22B4798B008A895F /* Build configuration list for PBXNativeTarget "WatchCommon" */; + buildPhases = ( + D00817A022B4798B008A895F /* Headers */, + D00817A122B4798B008A895F /* Sources */, + D00817A222B4798B008A895F /* Frameworks */, + D00817A322B4798B008A895F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = WatchCommon; + productName = WatchCommon; + productReference = D00817A522B4798B008A895F /* WatchCommon.framework */; + productType = "com.apple.product-type.framework"; + }; + D008186622B58A73008A895F /* WatchCommonWatch */ = { + isa = PBXNativeTarget; + buildConfigurationList = D008186C22B58A73008A895F /* Build configuration list for PBXNativeTarget "WatchCommonWatch" */; + buildPhases = ( + D008186222B58A73008A895F /* Headers */, + D008186322B58A73008A895F /* Sources */, + D008186422B58A73008A895F /* Frameworks */, + D008186522B58A73008A895F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = WatchCommonWatch; + productName = WatchCommonWatch; + productReference = D008186722B58A73008A895F /* WatchCommonWatch.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D008179C22B4798B008A895F /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Telegram LLP"; + TargetAttributes = { + D00817A422B4798B008A895F = { + CreatedOnToolsVersion = 10.1; + }; + D008186622B58A73008A895F = { + CreatedOnToolsVersion = 10.1; + }; + }; + }; + buildConfigurationList = D008179F22B4798B008A895F /* Build configuration list for PBXProject "WatchCommon_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D008179B22B4798B008A895F; + productRefGroup = D00817A622B4798B008A895F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D00817A422B4798B008A895F /* WatchCommon */, + D008186622B58A73008A895F /* WatchCommonWatch */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D00817A322B4798B008A895F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D008186522B58A73008A895F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D00817A122B4798B008A895F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D008182F22B5710B008A895F /* TGBridgeBotCommandInfo.m in Sources */, + D008182822B5710B008A895F /* TGBridgeMessage.m in Sources */, + D008183822B5710B008A895F /* TGBridgeWebPageMediaAttachment.m in Sources */, + D008181822B5710B008A895F /* TGBridgeContactMediaAttachment.m in Sources */, + D008182B22B5710B008A895F /* TGBridgeSubscriptions.m in Sources */, + D008182922B5710B008A895F /* TGBridgeLocationVenue.m in Sources */, + D008183F22B5710B008A895F /* TGBridgeMediaAttachment.m in Sources */, + D008183622B5710B008A895F /* TGBridgeBotInfo.m in Sources */, + D008181F22B5710B008A895F /* TGBridgeImageMediaAttachment.m in Sources */, + D008182422B5710B008A895F /* TGBridgeAudioMediaAttachment.m in Sources */, + D008181E22B5710B008A895F /* TGBridgeChat.m in Sources */, + D008182722B5710B008A895F /* TGBridgeCommon.m in Sources */, + D008184622B5710B008A895F /* TGBridgeDocumentMediaAttachment.m in Sources */, + D008183722B5710B008A895F /* TGBridgeActionMediaAttachment.m in Sources */, + D008182D22B5710B008A895F /* TGBridgeForwardedMessageMediaAttachment.m in Sources */, + D008181D22B5710B008A895F /* TGBridgeContext.m in Sources */, + D008183522B5710B008A895F /* TGBridgeUser.m in Sources */, + D008184522B5710B008A895F /* TGBridgeVideoMediaAttachment.m in Sources */, + D008184022B5710B008A895F /* TGBridgeMessageEntities.m in Sources */, + D00818AD22B58F76008A895F /* TGBridgePeerNotificationSettings.m in Sources */, + D008184722B5710B008A895F /* TGBridgeLocationMediaAttachment.m in Sources */, + D008183322B5710B008A895F /* TGBridgeUnsupportedMediaAttachment.m in Sources */, + D008183922B5710B008A895F /* TGBridgeReplyMessageMediaAttachment.m in Sources */, + D008183E22B5710B008A895F /* TGBridgeMessageEntitiesAttachment.m in Sources */, + D008182622B5710B008A895F /* TGBridgeReplyMarkupMediaAttachment.m in Sources */, + D008182222B5710B008A895F /* TGBridgeChatMessages.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D008186322B58A73008A895F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D008187622B58B45008A895F /* TGBridgeContactMediaAttachment.m in Sources */, + D008188622B58B45008A895F /* TGBridgeVideoMediaAttachment.m in Sources */, + D008187022B58B45008A895F /* TGBridgeAudioMediaAttachment.m in Sources */, + D008188222B58B45008A895F /* TGBridgeReplyMessageMediaAttachment.m in Sources */, + D008188122B58B45008A895F /* TGBridgeReplyMarkupMediaAttachment.m in Sources */, + D008187422B58B45008A895F /* TGBridgeChatMessages.m in Sources */, + D008187F22B58B45008A895F /* TGBridgeMessageEntities.m in Sources */, + D008187322B58B45008A895F /* TGBridgeChat.m in Sources */, + D008187822B58B45008A895F /* TGBridgeDocumentMediaAttachment.m in Sources */, + D008187922B58B45008A895F /* TGBridgeForwardedMessageMediaAttachment.m in Sources */, + D008188422B58B45008A895F /* TGBridgeUnsupportedMediaAttachment.m in Sources */, + D008187C22B58B45008A895F /* TGBridgeLocationVenue.m in Sources */, + D008187B22B58B45008A895F /* TGBridgeLocationMediaAttachment.m in Sources */, + D008187222B58B45008A895F /* TGBridgeBotInfo.m in Sources */, + D008187E22B58B45008A895F /* TGBridgeMessage.m in Sources */, + D008188022B58B45008A895F /* TGBridgeMessageEntitiesAttachment.m in Sources */, + D008187722B58B45008A895F /* TGBridgeContext.m in Sources */, + D008188522B58B45008A895F /* TGBridgeUser.m in Sources */, + D008186F22B58B45008A895F /* TGBridgeActionMediaAttachment.m in Sources */, + D00818AE22B58F76008A895F /* TGBridgePeerNotificationSettings.m in Sources */, + D008187A22B58B45008A895F /* TGBridgeImageMediaAttachment.m in Sources */, + D008187D22B58B45008A895F /* TGBridgeMediaAttachment.m in Sources */, + D008188322B58B45008A895F /* TGBridgeSubscriptions.m in Sources */, + D008188722B58B45008A895F /* TGBridgeWebPageMediaAttachment.m in Sources */, + D008187122B58B45008A895F /* TGBridgeBotCommandInfo.m in Sources */, + D008187522B58B45008A895F /* TGBridgeCommon.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D00817AB22B4798B008A895F /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D00817AC22B4798B008A895F /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D00817AE22B4798B008A895F /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.WatchCommon; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D00817AF22B4798B008A895F /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.WatchCommon; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D008186D22B58A73008A895F /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = WatchCommonWatch/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-DTARGET_OS_WATCH=1"; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.WatchCommonWatch; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = 4; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 5.1; + }; + name = DebugAppStoreLLC; + }; + D008186E22B58A73008A895F /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = WatchCommonWatch/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_CFLAGS = "-DTARGET_OS_WATCH=1"; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.WatchCommonWatch; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = 4; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 5.1; + }; + name = ReleaseAppStoreLLC; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D008179F22B4798B008A895F /* Build configuration list for PBXProject "WatchCommon_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D00817AB22B4798B008A895F /* DebugAppStoreLLC */, + D00817AC22B4798B008A895F /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D00817AD22B4798B008A895F /* Build configuration list for PBXNativeTarget "WatchCommon" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D00817AE22B4798B008A895F /* DebugAppStoreLLC */, + D00817AF22B4798B008A895F /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D008186C22B58A73008A895F /* Build configuration list for PBXNativeTarget "WatchCommonWatch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D008186D22B58A73008A895F /* DebugAppStoreLLC */, + D008186E22B58A73008A895F /* ReleaseAppStoreLLC */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D008179C22B4798B008A895F /* Project object */; +} diff --git a/submodules/lottie-ios/Lottie_Xcode.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist b/submodules/lottie-ios/Lottie_Xcode.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist index 351a04ecf3..1e9f030153 100644 --- a/submodules/lottie-ios/Lottie_Xcode.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/submodules/lottie-ios/Lottie_Xcode.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,7 +12,7 @@ Lottie_iOS.xcscheme_^#shared#^_ orderHint - 31 + 44 diff --git a/tools/GenerateLocalization.sh b/tools/GenerateLocalization.sh index aec80ef109..3516dea959 100644 --- a/tools/GenerateLocalization.sh +++ b/tools/GenerateLocalization.sh @@ -1,3 +1,3 @@ #!/bin/sh -swift tools/GenerateLocalization.swift Telegram-iOS/en.lproj/Localizable.strings submodules/TelegramUI/TelegramUI/PresentationStrings.swift submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping +swift tools/GenerateLocalization.swift Telegram-iOS/en.lproj/Localizable.strings submodules/TelegramPresentationData/Sources/PresentationStrings.swift submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping diff --git a/tools/GenerateLocalization.swift b/tools/GenerateLocalization.swift index 97ce585064..489484976a 100644 --- a/tools/GenerateLocalization.swift +++ b/tools/GenerateLocalization.swift @@ -297,7 +297,7 @@ private func extractArgumentRanges(_ value: String) -> [(Int, NSRange)] { return result } -func formatWithArgumentRanges(_ value: String, _ ranges: [(Int, NSRange)], _ arguments: [String]) -> (String, [(Int, NSRange)]) { +public func formatWithArgumentRanges(_ value: String, _ ranges: [(Int, NSRange)], _ arguments: [String]) -> (String, [(Int, NSRange)]) { let string = value as NSString var resultingRanges: [(Int, NSRange)] = [] @@ -348,7 +348,7 @@ private final class DataReader { } private func loadMapping() -> ([Int], [String], [Int], [Int], [String]) { - guard let filePath = frameworkBundle.path(forResource: "PresentationStrings", ofType: "mapping") else { + guard let filePath = Bundle(for: PresentationStrings.self).path(forResource: "PresentationStrings", ofType: "mapping") else { fatalError() } guard let data = try? Data(contentsOf: URL(fileURLWithPath: filePath)) else { @@ -505,7 +505,7 @@ public final class PresentationStrings { result += """ - init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { + public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { self.primaryComponent = primaryComponent self.secondaryComponent = secondaryComponent self.groupingSeparator = groupingSeparator