diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
index e38ba953a7..5e3d9ae7bd 100644
--- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata
+++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
@@ -38,10 +38,19 @@
location = "group:submodules/SaveToCameraRoll/SaveToCameraRoll_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/TelegramNotices/TelegramNotices_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/TelegramPermissions/TelegramPermissions_Xcode.xcodeproj">
+
+
+
+
+
+
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/TinyThumbnail/TinyThumbnail_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/ImageTransparency/ImageTransparency_Xcode.xcodeproj">
+
+
@@ -96,7 +108,7 @@
location = "group:submodules/MediaResources/MediaResources_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/PhotoResources/PhotoResources_Xcode.xcodeproj">
@@ -119,17 +131,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/TouchDownGesture/TouchDownGesture_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/SwipeToDismissGesture/SwipeToDismissGesture_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/DirectionalPanGesture/DirectionalPanGesture_Xcode.xcodeproj">
+
+
@@ -176,16 +226,13 @@
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/LegacyUI/LegacyUI_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/OpenInExternalAppUI/OpenInExternalAppUI_Xcode.xcodeproj">
-
-
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/AlertUI/AlertUI_Xcode.xcodeproj">
@@ -208,21 +255,9 @@
-
-
-
-
-
-
-
-
@@ -239,10 +274,28 @@
location = "group:submodules/ContextUI/ContextUI_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/ComposePollUI/ComposePollUI_Xcode.xcodeproj">
+ location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/UndoUI/UndoUI_Xcode.xcodeproj">
+
+
+
+
+
+
+
+
+
+
+
+
Bool
func messageFromPreloadedChatHistoryViewForLocation(id: MessageId, location: ChatHistoryLocationInput, account: Account, chatLocation: ChatLocation, tagMask: MessageTags?) -> Signal<(MessageIndex?, Bool), NoError>
func makeOverlayAudioPlayerController(context: AccountContext, peerId: PeerId, type: MediaManagerPlayerType, initialMessageId: MessageId, initialOrder: MusicPlaybackSettingsOrder, parentNavigationController: NavigationController?) -> ViewController & OverlayAudioPlayerController
+ func makePeerInfoController(context: AccountContext, peer: Peer) -> ViewController?
+ func openExternalUrl(context: AccountContext, urlContext: OpenURLContext, url: String, forceExternal: Bool, presentationData: PresentationData, navigationController: NavigationController?, dismissInput: @escaping () -> Void)
+ func chatAvailableMessageActions(postbox: Postbox, accountPeerId: PeerId, messageIds: Set) -> Signal
func navigateToCurrentCall()
var hasOngoingCall: ValuePromise { get }
diff --git a/submodules/TelegramUI/TelegramUI/FetchMediaUtils.swift b/submodules/AccountContext/Sources/FetchMediaUtils.swift
similarity index 72%
rename from submodules/TelegramUI/TelegramUI/FetchMediaUtils.swift
rename to submodules/AccountContext/Sources/FetchMediaUtils.swift
index cef5730ee3..0afadbfd4b 100644
--- a/submodules/TelegramUI/TelegramUI/FetchMediaUtils.swift
+++ b/submodules/AccountContext/Sources/FetchMediaUtils.swift
@@ -4,23 +4,22 @@ import TelegramCore
import Postbox
import SwiftSignalKit
import TelegramUIPreferences
-import AccountContext
public func freeMediaFileInteractiveFetched(account: Account, fileReference: FileMediaReference) -> Signal {
return fetchedMediaResource(mediaBox: account.postbox.mediaBox, reference: fileReference.resourceReference(fileReference.media.resource))
}
-func freeMediaFileInteractiveFetched(fetchManager: FetchManager, fileReference: FileMediaReference, priority: FetchManagerPriority) -> Signal {
+public func freeMediaFileInteractiveFetched(fetchManager: FetchManager, fileReference: FileMediaReference, priority: FetchManagerPriority) -> Signal {
let file = fileReference.media
let mediaReference = AnyMediaReference.standalone(media: fileReference.media)
return fetchManager.interactivelyFetched(category: fetchCategoryForFile(file), location: .chat(PeerId(namespace: 0, id: 0)), locationKey: .free, mediaReference: mediaReference, resourceReference: mediaReference.resourceReference(file.resource), ranges: IndexSet(integersIn: 0 ..< Int(Int32.max) as Range), statsCategory: statsCategoryForFileWithAttributes(file.attributes), elevatedPriority: false, userInitiated: false, priority: priority, storeToDownloadsPeerType: nil)
}
-func freeMediaFileResourceInteractiveFetched(account: Account, fileReference: FileMediaReference, resource: MediaResource) -> Signal {
+public func freeMediaFileResourceInteractiveFetched(account: Account, fileReference: FileMediaReference, resource: MediaResource) -> Signal {
return fetchedMediaResource(mediaBox: account.postbox.mediaBox, reference: fileReference.resourceReference(resource))
}
-func cancelFreeMediaFileInteractiveFetch(account: Account, file: TelegramMediaFile) {
+public func cancelFreeMediaFileInteractiveFetch(account: Account, file: TelegramMediaFile) {
account.postbox.mediaBox.cancelInteractiveResourceFetch(file.resource)
}
@@ -38,12 +37,12 @@ public func messageMediaFileInteractiveFetched(context: AccountContext, message:
return messageMediaFileInteractiveFetched(fetchManager: context.fetchManager, messageId: message.id, messageReference: MessageReference(message), file: file, userInitiated: userInitiated, priority: .userInitiated)
}
-func messageMediaFileInteractiveFetched(fetchManager: FetchManager, messageId: MessageId, messageReference: MessageReference, file: TelegramMediaFile, ranges: IndexSet = IndexSet(integersIn: 0 ..< Int(Int32.max) as Range), userInitiated: Bool, priority: FetchManagerPriority) -> Signal {
+public func messageMediaFileInteractiveFetched(fetchManager: FetchManager, messageId: MessageId, messageReference: MessageReference, file: TelegramMediaFile, ranges: IndexSet = IndexSet(integersIn: 0 ..< Int(Int32.max) as Range), userInitiated: Bool, priority: FetchManagerPriority) -> Signal {
let mediaReference = AnyMediaReference.message(message: messageReference, media: file)
return fetchManager.interactivelyFetched(category: fetchCategoryForFile(file), location: .chat(messageId.peerId), locationKey: .messageId(messageId), mediaReference: mediaReference, resourceReference: mediaReference.resourceReference(file.resource), ranges: ranges, statsCategory: statsCategoryForFileWithAttributes(file.attributes), elevatedPriority: false, userInitiated: userInitiated, priority: priority, storeToDownloadsPeerType: nil)
}
-func messageMediaFileCancelInteractiveFetch(context: AccountContext, messageId: MessageId, file: TelegramMediaFile) {
+public func messageMediaFileCancelInteractiveFetch(context: AccountContext, messageId: MessageId, file: TelegramMediaFile) {
context.fetchManager.cancelInteractiveFetches(category: fetchCategoryForFile(file), location: .chat(messageId.peerId), locationKey: .messageId(messageId), resource: file.resource)
}
@@ -51,15 +50,15 @@ public func messageMediaImageInteractiveFetched(context: AccountContext, message
return messageMediaImageInteractiveFetched(fetchManager: context.fetchManager, messageId: message.id, messageReference: MessageReference(message), image: image, resource: resource, userInitiated: true, priority: .userInitiated, storeToDownloadsPeerType: storeToDownloadsPeerType)
}
-func messageMediaImageInteractiveFetched(fetchManager: FetchManager, messageId: MessageId, messageReference: MessageReference, image: TelegramMediaImage, resource: MediaResource, userInitiated: Bool, priority: FetchManagerPriority, storeToDownloadsPeerType: MediaAutoDownloadPeerType?) -> Signal {
+public func messageMediaImageInteractiveFetched(fetchManager: FetchManager, messageId: MessageId, messageReference: MessageReference, image: TelegramMediaImage, resource: MediaResource, userInitiated: Bool, priority: FetchManagerPriority, storeToDownloadsPeerType: MediaAutoDownloadPeerType?) -> Signal {
let mediaReference = AnyMediaReference.message(message: messageReference, media: image)
return fetchManager.interactivelyFetched(category: .image, location: .chat(messageId.peerId), locationKey: .messageId(messageId), mediaReference: mediaReference, resourceReference: mediaReference.resourceReference(resource), ranges: FetchCompleteRange, statsCategory: .image, elevatedPriority: false, userInitiated: userInitiated, priority: priority, storeToDownloadsPeerType: storeToDownloadsPeerType)
}
-func messageMediaImageCancelInteractiveFetch(context: AccountContext, messageId: MessageId, image: TelegramMediaImage, resource: MediaResource) {
+public func messageMediaImageCancelInteractiveFetch(context: AccountContext, messageId: MessageId, image: TelegramMediaImage, resource: MediaResource) {
context.fetchManager.cancelInteractiveFetches(category: .image, location: .chat(messageId.peerId), locationKey: .messageId(messageId), resource: resource)
}
-func messageMediaFileStatus(context: AccountContext, messageId: MessageId, file: TelegramMediaFile) -> Signal {
+public func messageMediaFileStatus(context: AccountContext, messageId: MessageId, file: TelegramMediaFile) -> Signal {
return context.fetchManager.fetchStatus(category: fetchCategoryForFile(file), location: .chat(messageId.peerId), locationKey: .messageId(messageId), resource: file.resource)
}
diff --git a/submodules/TelegramUI/TelegramUI/IsMediaStreamable.swift b/submodules/AccountContext/Sources/IsMediaStreamable.swift
similarity index 87%
rename from submodules/TelegramUI/TelegramUI/IsMediaStreamable.swift
rename to submodules/AccountContext/Sources/IsMediaStreamable.swift
index a2528758e8..320dd7f351 100644
--- a/submodules/TelegramUI/TelegramUI/IsMediaStreamable.swift
+++ b/submodules/AccountContext/Sources/IsMediaStreamable.swift
@@ -2,7 +2,7 @@ import Foundation
import Postbox
import TelegramCore
-func isMediaStreamable(message: Message, media: TelegramMediaFile) -> Bool {
+public func isMediaStreamable(message: Message, media: TelegramMediaFile) -> Bool {
if message.containsSecretMedia {
return false
}
@@ -31,7 +31,7 @@ func isMediaStreamable(message: Message, media: TelegramMediaFile) -> Bool {
return false
}
-func isMediaStreamable(media: TelegramMediaFile) -> Bool {
+public func isMediaStreamable(media: TelegramMediaFile) -> Bool {
guard let size = media.size else {
return false
}
diff --git a/submodules/CountrySelectionUI/CountrySelectionUI_Xcode.xcodeproj/project.pbxproj b/submodules/CountrySelectionUI/CountrySelectionUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..93a5689204
--- /dev/null
+++ b/submodules/CountrySelectionUI/CountrySelectionUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,579 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C2952300A11000FAB518 /* CountrySelectionUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C2932300A11000FAB518 /* CountrySelectionUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C2A12300A18C00FAB518 /* AuthorizationSequenceCountrySelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C29F2300A18B00FAB518 /* AuthorizationSequenceCountrySelectionController.swift */; };
+ D0C9C2A22300A18C00FAB518 /* AuthorizationSequenceCountrySelectionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2A02300A18C00FAB518 /* AuthorizationSequenceCountrySelectionControllerNode.swift */; };
+ D0C9C2A52300A19900FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2A42300A19900FAB518 /* Foundation.framework */; };
+ D0C9C2A72300A19C00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2A62300A19C00FAB518 /* UIKit.framework */; };
+ D0C9C2A92300A19F00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2A82300A19F00FAB518 /* Display.framework */; };
+ D0C9C2AB2300A1A500FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2AA2300A1A500FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9C2AD2300A1AC00FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2AC2300A1AC00FAB518 /* TelegramPresentationData.framework */; };
+ D0C9C2AF2300A1B100FAB518 /* TelegramStringFormatting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2AE2300A1B100FAB518 /* TelegramStringFormatting.framework */; };
+ D0C9C2B52300A1F300FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2B42300A1F300FAB518 /* FrameworkBundle.swift */; };
+ D0C9C2D02300A2D400FAB518 /* SearchBarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2CF2300A2D400FAB518 /* SearchBarNode.framework */; };
+ D0C9C4472300DE5100FAB518 /* CountryList.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4462300DE5100FAB518 /* CountryList.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C2902300A11000FAB518 /* CountrySelectionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CountrySelectionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C2932300A11000FAB518 /* CountrySelectionUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CountrySelectionUI.h; sourceTree = ""; };
+ D0C9C2942300A11000FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C29F2300A18B00FAB518 /* AuthorizationSequenceCountrySelectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceCountrySelectionController.swift; sourceTree = ""; };
+ D0C9C2A02300A18C00FAB518 /* AuthorizationSequenceCountrySelectionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceCountrySelectionControllerNode.swift; sourceTree = ""; };
+ D0C9C2A42300A19900FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C2A62300A19C00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C2A82300A19F00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C2AA2300A1A500FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C2AC2300A1AC00FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C2AE2300A1B100FAB518 /* TelegramStringFormatting.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramStringFormatting.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C2B42300A1F300FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; };
+ D0C9C2CF2300A2D400FAB518 /* SearchBarNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SearchBarNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4462300DE5100FAB518 /* CountryList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CountryList.swift; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C28D2300A11000FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C2D02300A2D400FAB518 /* SearchBarNode.framework in Frameworks */,
+ D0C9C2AF2300A1B100FAB518 /* TelegramStringFormatting.framework in Frameworks */,
+ D0C9C2AD2300A1AC00FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C2AB2300A1A500FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9C2A92300A19F00FAB518 /* Display.framework in Frameworks */,
+ D0C9C2A72300A19C00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C2A52300A19900FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C2862300A11000FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C2942300A11000FAB518 /* Info.plist */,
+ D0C9C2922300A11000FAB518 /* Sources */,
+ D0C9C2912300A11000FAB518 /* Products */,
+ D0C9C2A32300A19900FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C2912300A11000FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C2902300A11000FAB518 /* CountrySelectionUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C2922300A11000FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4462300DE5100FAB518 /* CountryList.swift */,
+ D0C9C29F2300A18B00FAB518 /* AuthorizationSequenceCountrySelectionController.swift */,
+ D0C9C2A02300A18C00FAB518 /* AuthorizationSequenceCountrySelectionControllerNode.swift */,
+ D0C9C2B42300A1F300FAB518 /* FrameworkBundle.swift */,
+ D0C9C2932300A11000FAB518 /* CountrySelectionUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C2A32300A19900FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C2CF2300A2D400FAB518 /* SearchBarNode.framework */,
+ D0C9C2AE2300A1B100FAB518 /* TelegramStringFormatting.framework */,
+ D0C9C2AC2300A1AC00FAB518 /* TelegramPresentationData.framework */,
+ D0C9C2AA2300A1A500FAB518 /* AsyncDisplayKit.framework */,
+ D0C9C2A82300A19F00FAB518 /* Display.framework */,
+ D0C9C2A62300A19C00FAB518 /* UIKit.framework */,
+ D0C9C2A42300A19900FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C28B2300A11000FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C2952300A11000FAB518 /* CountrySelectionUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C28F2300A11000FAB518 /* CountrySelectionUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C2982300A11000FAB518 /* Build configuration list for PBXNativeTarget "CountrySelectionUI" */;
+ buildPhases = (
+ D0C9C28B2300A11000FAB518 /* Headers */,
+ D0C9C28C2300A11000FAB518 /* Sources */,
+ D0C9C28D2300A11000FAB518 /* Frameworks */,
+ D0C9C28E2300A11000FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = CountrySelectionUI;
+ productName = CountrySelectionUI;
+ productReference = D0C9C2902300A11000FAB518 /* CountrySelectionUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C2872300A11000FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C28F2300A11000FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C28A2300A11000FAB518 /* Build configuration list for PBXProject "CountrySelectionUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C2862300A11000FAB518;
+ productRefGroup = D0C9C2912300A11000FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C28F2300A11000FAB518 /* CountrySelectionUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C28E2300A11000FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C28C2300A11000FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C4472300DE5100FAB518 /* CountryList.swift in Sources */,
+ D0C9C2A22300A18C00FAB518 /* AuthorizationSequenceCountrySelectionControllerNode.swift in Sources */,
+ D0C9C2A12300A18C00FAB518 /* AuthorizationSequenceCountrySelectionController.swift in Sources */,
+ D0C9C2B52300A1F300FAB518 /* FrameworkBundle.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C2962300A11000FAB518 /* 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;
+ };
+ D0C9C2972300A11000FAB518 /* 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;
+ };
+ D0C9C2992300A11000FAB518 /* 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.CountrySelectionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C29A2300A11000FAB518 /* 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.CountrySelectionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C29B2300A14F00FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C29C2300A14F00FAB518 /* DebugHockeyapp */ = {
+ 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.CountrySelectionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C29D2300A15A00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C29E2300A15A00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.CountrySelectionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C28A2300A11000FAB518 /* Build configuration list for PBXProject "CountrySelectionUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C2962300A11000FAB518 /* DebugAppStoreLLC */,
+ D0C9C29B2300A14F00FAB518 /* DebugHockeyapp */,
+ D0C9C2972300A11000FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C29D2300A15A00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C2982300A11000FAB518 /* Build configuration list for PBXNativeTarget "CountrySelectionUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C2992300A11000FAB518 /* DebugAppStoreLLC */,
+ D0C9C29C2300A14F00FAB518 /* DebugHockeyapp */,
+ D0C9C29A2300A11000FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C29E2300A15A00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C2872300A11000FAB518 /* Project object */;
+}
diff --git a/submodules/CountrySelectionUI/Info.plist b/submodules/CountrySelectionUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/CountrySelectionUI/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/AuthorizationSequenceCountrySelectionController.swift b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift
similarity index 89%
rename from submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionController.swift
rename to submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift
index f431dbb9eb..977e8b9507 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionController.swift
+++ b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift
@@ -4,6 +4,7 @@ import Display
import AsyncDisplayKit
import TelegramPresentationData
import TelegramStringFormatting
+import SearchBarNode
private func loadCountryCodes() -> [(String, Int)] {
guard let filePath = frameworkBundle.path(forResource: "PhoneCountries", ofType: "txt") else {
@@ -113,8 +114,8 @@ private final class AuthorizationSequenceCountrySelectionNavigationContentNode:
}
}
-final class AuthorizationSequenceCountrySelectionController: ViewController {
- static func lookupCountryNameById(_ id: String, strings: PresentationStrings) -> String? {
+public final class AuthorizationSequenceCountrySelectionController: ViewController {
+ public static func lookupCountryNameById(_ id: String, strings: PresentationStrings) -> String? {
for (itemId, _) in countryCodes {
if id == itemId {
let locale = localeWithStrings(strings)
@@ -127,7 +128,8 @@ final class AuthorizationSequenceCountrySelectionController: ViewController {
}
return nil
}
- static func lookupCountryIdByCode(_ code: Int) -> String? {
+
+ public static func lookupCountryIdByCode(_ code: Int) -> String? {
for (itemId, itemCode) in countryCodes {
if itemCode == code {
return itemId
@@ -146,10 +148,10 @@ final class AuthorizationSequenceCountrySelectionController: ViewController {
return self.displayNode as! AuthorizationSequenceCountrySelectionControllerNode
}
- var completeWithCountryCode: ((Int, String) -> Void)?
- var dismissed: (() -> Void)?
+ public var completeWithCountryCode: ((Int, String) -> Void)?
+ public var dismissed: (() -> Void)?
- init(strings: PresentationStrings, theme: PresentationTheme, displayCodes: Bool = true) {
+ public init(strings: PresentationStrings, theme: PresentationTheme, displayCodes: Bool = true) {
self.theme = theme
self.strings = strings
self.displayCodes = displayCodes
@@ -172,7 +174,7 @@ final class AuthorizationSequenceCountrySelectionController: ViewController {
self.navigationBar?.setContentNode(navigationContentNode, animated: false)
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@@ -185,14 +187,14 @@ final class AuthorizationSequenceCountrySelectionController: ViewController {
self.displayNodeDidLoad()
}
- override func viewDidAppear(_ animated: Bool) {
+ override public func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.controllerNode.animateIn()
self.navigationContentNode?.activate()
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
+ override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, transition: transition)
self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition)
@@ -203,7 +205,7 @@ final class AuthorizationSequenceCountrySelectionController: ViewController {
self.dismiss(completion: nil)
}
- override func dismiss(completion: (() -> Void)? = nil) {
+ override public func dismiss(completion: (() -> Void)? = nil) {
self.navigationContentNode?.deactivate()
self.controllerNode.animateOut(completion: { [weak self] in
self?.presentingViewController?.dismiss(animated: true, completion: nil)
diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionControllerNode.swift b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/AuthorizationSequenceCountrySelectionControllerNode.swift
rename to submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/CountryList.swift b/submodules/CountrySelectionUI/Sources/CountryList.swift
similarity index 90%
rename from submodules/TelegramUI/TelegramUI/CountryList.swift
rename to submodules/CountrySelectionUI/Sources/CountryList.swift
index 6a792cee1e..c1e8a8f76f 100644
--- a/submodules/TelegramUI/TelegramUI/CountryList.swift
+++ b/submodules/CountrySelectionUI/Sources/CountryList.swift
@@ -64,7 +64,7 @@ private func loadCountriesInfo() -> [(Int, String, String)] {
let phoneCountriesInfo = loadCountriesInfo()
-let countryCodeToIdAndName: [Int: (String, String)] = {
+public let countryCodeToIdAndName: [Int: (String, String)] = {
var dict: [Int: (String, String)] = [:]
for (code, id, name) in phoneCountriesInfo {
if dict[code] == nil {
@@ -74,12 +74,17 @@ let countryCodeToIdAndName: [Int: (String, String)] = {
return dict
}()
-struct CountryCodeAndId: Hashable {
+public struct CountryCodeAndId: Hashable {
let code: Int
let id: String
+
+ public init(code: Int, id: String) {
+ self.code = code
+ self.id = id
+ }
}
-let countryCodeAndIdToName: [CountryCodeAndId: String] = {
+public let countryCodeAndIdToName: [CountryCodeAndId: String] = {
var dict: [CountryCodeAndId: String] = [:]
for (code, id, name) in phoneCountriesInfo {
dict[CountryCodeAndId(code: code, id: id)] = name
diff --git a/submodules/CountrySelectionUI/Sources/CountrySelectionUI.h b/submodules/CountrySelectionUI/Sources/CountrySelectionUI.h
new file mode 100644
index 0000000000..3505c8a4d6
--- /dev/null
+++ b/submodules/CountrySelectionUI/Sources/CountrySelectionUI.h
@@ -0,0 +1,19 @@
+//
+// CountrySelectionUI.h
+// CountrySelectionUI
+//
+// Created by Peter on 8/11/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for CountrySelectionUI.
+FOUNDATION_EXPORT double CountrySelectionUIVersionNumber;
+
+//! Project version string for CountrySelectionUI.
+FOUNDATION_EXPORT const unsigned char CountrySelectionUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/CountrySelectionUI/Sources/FrameworkBundle.swift b/submodules/CountrySelectionUI/Sources/FrameworkBundle.swift
new file mode 100644
index 0000000000..8ca13d7d92
--- /dev/null
+++ b/submodules/CountrySelectionUI/Sources/FrameworkBundle.swift
@@ -0,0 +1,13 @@
+import Foundation
+import UIKit
+
+private class FrameworkBundleClass: NSObject {
+}
+
+let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self)
+
+extension UIImage {
+ convenience init?(bundleImageName: String) {
+ self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil)
+ }
+}
diff --git a/submodules/DateSelectionUI/DateSelectionUI_Xcode.xcodeproj/project.pbxproj b/submodules/DateSelectionUI/DateSelectionUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..7e1c6e12dc
--- /dev/null
+++ b/submodules/DateSelectionUI/DateSelectionUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,571 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C4D12300E60C00FAB518 /* DateSelectionUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C4CF2300E60C00FAB518 /* DateSelectionUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C4D82300E64900FAB518 /* DateSelectionActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4D72300E64800FAB518 /* DateSelectionActionSheetController.swift */; };
+ D0C9C4E32300EDB800FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4E22300EDB800FAB518 /* Foundation.framework */; };
+ D0C9C4E52300EDC000FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4E42300EDC000FAB518 /* UIKit.framework */; };
+ D0C9C4E72300EDC400FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4E62300EDC400FAB518 /* Display.framework */; };
+ D0C9C4E92300EDC900FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4E82300EDC900FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9C4EB2300EDCE00FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4EA2300EDCE00FAB518 /* TelegramPresentationData.framework */; };
+ D0C9C4ED2300EDD400FAB518 /* TelegramStringFormatting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4EC2300EDD400FAB518 /* TelegramStringFormatting.framework */; };
+ D0C9C4EF2300EE0E00FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4EE2300EE0E00FAB518 /* SwiftSignalKit.framework */; };
+ D0C9C4F12300EE2C00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4F02300EE2C00FAB518 /* AccountContext.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C4CC2300E60C00FAB518 /* DateSelectionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DateSelectionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4CF2300E60C00FAB518 /* DateSelectionUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DateSelectionUI.h; sourceTree = ""; };
+ D0C9C4D02300E60C00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C4D72300E64800FAB518 /* DateSelectionActionSheetController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateSelectionActionSheetController.swift; sourceTree = ""; };
+ D0C9C4E22300EDB800FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C4E42300EDC000FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C4E62300EDC400FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4E82300EDC900FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4EA2300EDCE00FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4EC2300EDD400FAB518 /* TelegramStringFormatting.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramStringFormatting.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4EE2300EE0E00FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4F02300EE2C00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C4C92300E60C00FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C4F12300EE2C00FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9C4EF2300EE0E00FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9C4ED2300EDD400FAB518 /* TelegramStringFormatting.framework in Frameworks */,
+ D0C9C4EB2300EDCE00FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C4E92300EDC900FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9C4E72300EDC400FAB518 /* Display.framework in Frameworks */,
+ D0C9C4E52300EDC000FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C4E32300EDB800FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C4C22300E60C00FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4D02300E60C00FAB518 /* Info.plist */,
+ D0C9C4CE2300E60C00FAB518 /* Sources */,
+ D0C9C4CD2300E60C00FAB518 /* Products */,
+ D0C9C4E12300EDB800FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C4CD2300E60C00FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4CC2300E60C00FAB518 /* DateSelectionUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C4CE2300E60C00FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4D72300E64800FAB518 /* DateSelectionActionSheetController.swift */,
+ D0C9C4CF2300E60C00FAB518 /* DateSelectionUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C4E12300EDB800FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4F02300EE2C00FAB518 /* AccountContext.framework */,
+ D0C9C4EE2300EE0E00FAB518 /* SwiftSignalKit.framework */,
+ D0C9C4EC2300EDD400FAB518 /* TelegramStringFormatting.framework */,
+ D0C9C4EA2300EDCE00FAB518 /* TelegramPresentationData.framework */,
+ D0C9C4E82300EDC900FAB518 /* AsyncDisplayKit.framework */,
+ D0C9C4E62300EDC400FAB518 /* Display.framework */,
+ D0C9C4E42300EDC000FAB518 /* UIKit.framework */,
+ D0C9C4E22300EDB800FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C4C72300E60C00FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C4D12300E60C00FAB518 /* DateSelectionUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C4CB2300E60C00FAB518 /* DateSelectionUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C4D42300E60C00FAB518 /* Build configuration list for PBXNativeTarget "DateSelectionUI" */;
+ buildPhases = (
+ D0C9C4C72300E60C00FAB518 /* Headers */,
+ D0C9C4C82300E60C00FAB518 /* Sources */,
+ D0C9C4C92300E60C00FAB518 /* Frameworks */,
+ D0C9C4CA2300E60C00FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = DateSelectionUI;
+ productName = DateSelectionUI;
+ productReference = D0C9C4CC2300E60C00FAB518 /* DateSelectionUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C4C32300E60C00FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C4CB2300E60C00FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C4C62300E60C00FAB518 /* Build configuration list for PBXProject "DateSelectionUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C4C22300E60C00FAB518;
+ productRefGroup = D0C9C4CD2300E60C00FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C4CB2300E60C00FAB518 /* DateSelectionUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C4CA2300E60C00FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C4C82300E60C00FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C4D82300E64900FAB518 /* DateSelectionActionSheetController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C4D22300E60C00FAB518 /* 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;
+ };
+ D0C9C4D32300E60C00FAB518 /* 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;
+ };
+ D0C9C4D52300E60C00FAB518 /* 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.DateSelectionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C4D62300E60C00FAB518 /* 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.DateSelectionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C4DD2300ED8800FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C4DE2300ED8800FAB518 /* DebugHockeyapp */ = {
+ 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.DateSelectionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C4DF2300ED9600FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C4E02300ED9600FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.DateSelectionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C4C62300E60C00FAB518 /* Build configuration list for PBXProject "DateSelectionUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C4D22300E60C00FAB518 /* DebugAppStoreLLC */,
+ D0C9C4DD2300ED8800FAB518 /* DebugHockeyapp */,
+ D0C9C4D32300E60C00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C4DF2300ED9600FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C4D42300E60C00FAB518 /* Build configuration list for PBXNativeTarget "DateSelectionUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C4D52300E60C00FAB518 /* DebugAppStoreLLC */,
+ D0C9C4DE2300ED8800FAB518 /* DebugHockeyapp */,
+ D0C9C4D62300E60C00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C4E02300ED9600FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C4C32300E60C00FAB518 /* Project object */;
+}
diff --git a/submodules/DateSelectionUI/Info.plist b/submodules/DateSelectionUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/DateSelectionUI/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/DateSelectionActionSheetController.swift b/submodules/DateSelectionUI/Sources/DateSelectionActionSheetController.swift
similarity index 92%
rename from submodules/TelegramUI/TelegramUI/DateSelectionActionSheetController.swift
rename to submodules/DateSelectionUI/Sources/DateSelectionActionSheetController.swift
index 2fe02a1825..81ebef320a 100644
--- a/submodules/TelegramUI/TelegramUI/DateSelectionActionSheetController.swift
+++ b/submodules/DateSelectionUI/Sources/DateSelectionActionSheetController.swift
@@ -2,23 +2,20 @@ import Foundation
import UIKit
import Display
import AsyncDisplayKit
-import UIKit
-import SwiftSignalKit
-import TelegramCore
-import Photos
import TelegramPresentationData
import TelegramStringFormatting
+import SwiftSignalKit
import AccountContext
-final class DateSelectionActionSheetController: ActionSheetController {
+public final class DateSelectionActionSheetController: ActionSheetController {
private var presentationDisposable: Disposable?
private let _ready = Promise()
- override var ready: Promise {
+ override public var ready: Promise {
return self._ready
}
- init(context: AccountContext, title: String?, currentValue: Int32, minimumDate: Date? = nil, maximumDate: Date? = nil, emptyTitle: String? = nil, applyValue: @escaping (Int32?) -> Void) {
+ public init(context: AccountContext, title: String?, currentValue: Int32, minimumDate: Date? = nil, maximumDate: Date? = nil, emptyTitle: String? = nil, applyValue: @escaping (Int32?) -> Void) {
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let theme = presentationData.theme
let strings = presentationData.strings
@@ -61,7 +58,7 @@ final class DateSelectionActionSheetController: ActionSheetController {
])
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
diff --git a/submodules/DateSelectionUI/Sources/DateSelectionUI.h b/submodules/DateSelectionUI/Sources/DateSelectionUI.h
new file mode 100644
index 0000000000..f52f7827f6
--- /dev/null
+++ b/submodules/DateSelectionUI/Sources/DateSelectionUI.h
@@ -0,0 +1,19 @@
+//
+// DateSelectionUI.h
+// DateSelectionUI
+//
+// Created by Peter on 8/12/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for DateSelectionUI.
+FOUNDATION_EXPORT double DateSelectionUIVersionNumber;
+
+//! Project version string for DateSelectionUI.
+FOUNDATION_EXPORT const unsigned char DateSelectionUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/GalleryUI/GalleryUI_Xcode.xcodeproj/project.pbxproj b/submodules/GalleryUI/GalleryUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..3c52c9051e
--- /dev/null
+++ b/submodules/GalleryUI/GalleryUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,703 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C2F52300A51400FAB518 /* GalleryUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C2F32300A51400FAB518 /* GalleryUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C3082300A58500FAB518 /* GalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2FB2300A58400FAB518 /* GalleryItem.swift */; };
+ D0C9C3092300A58500FAB518 /* GalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2FC2300A58400FAB518 /* GalleryController.swift */; };
+ D0C9C30A2300A58500FAB518 /* GalleryNavigationCheckNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2FD2300A58400FAB518 /* GalleryNavigationCheckNode.swift */; };
+ D0C9C30B2300A58500FAB518 /* GalleryFooterNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2FE2300A58400FAB518 /* GalleryFooterNode.swift */; };
+ D0C9C30C2300A58500FAB518 /* GalleryControllerPresentationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2FF2300A58400FAB518 /* GalleryControllerPresentationState.swift */; };
+ D0C9C30D2300A58500FAB518 /* GalleryNavigationRecipientNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3002300A58400FAB518 /* GalleryNavigationRecipientNode.swift */; };
+ D0C9C30E2300A58500FAB518 /* GalleryControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3012300A58400FAB518 /* GalleryControllerNode.swift */; };
+ D0C9C30F2300A58500FAB518 /* GalleryItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3022300A58500FAB518 /* GalleryItemNode.swift */; };
+ D0C9C3102300A58500FAB518 /* GalleryFooterContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3032300A58500FAB518 /* GalleryFooterContentNode.swift */; };
+ D0C9C3112300A58500FAB518 /* GalleryVideoDecoration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3042300A58500FAB518 /* GalleryVideoDecoration.swift */; };
+ D0C9C3122300A58500FAB518 /* GalleryThumbnailContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3052300A58500FAB518 /* GalleryThumbnailContainerNode.swift */; };
+ D0C9C3132300A58500FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3062300A58500FAB518 /* FrameworkBundle.swift */; };
+ D0C9C3142300A58500FAB518 /* GalleryPagerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3072300A58500FAB518 /* GalleryPagerNode.swift */; };
+ D0C9C31B2300A9B900FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C31A2300A9B900FAB518 /* Foundation.framework */; };
+ D0C9C31D2300A9BD00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C31C2300A9BD00FAB518 /* UIKit.framework */; };
+ D0C9C31F2300A9C000FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C31E2300A9C000FAB518 /* Display.framework */; };
+ D0C9C3212300A9C500FAB518 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3202300A9C500FAB518 /* QuickLook.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+ D0C9C3232300A9C800FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3222300A9C800FAB518 /* Postbox.framework */; };
+ D0C9C3252300A9CD00FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3242300A9CD00FAB518 /* SwiftSignalKit.framework */; };
+ D0C9C3272300A9D100FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3262300A9D100FAB518 /* TelegramCore.framework */; };
+ D0C9C3292300A9D500FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3282300A9D500FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9C32B2300A9D900FAB518 /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C32A2300A9D900FAB518 /* SafariServices.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+ D0C9C32D2300A9E900FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C32C2300A9E900FAB518 /* TelegramPresentationData.framework */; };
+ D0C9C32F2300A9EF00FAB518 /* TextFormat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C32E2300A9EF00FAB518 /* TextFormat.framework */; };
+ D0C9C3312300A9F400FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3302300A9F400FAB518 /* AccountContext.framework */; };
+ D0C9C3442300AA8A00FAB518 /* ChatImageGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3362300AA8700FAB518 /* ChatImageGalleryItem.swift */; };
+ D0C9C3452300AA8A00FAB518 /* UniversalVideoGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3372300AA8700FAB518 /* UniversalVideoGalleryItem.swift */; };
+ D0C9C3462300AA8A00FAB518 /* ChatExternalFileGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3382300AA8700FAB518 /* ChatExternalFileGalleryItem.swift */; };
+ D0C9C3492300AA8A00FAB518 /* SecretMediaPreviewFooterContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C33B2300AA8700FAB518 /* SecretMediaPreviewFooterContentNode.swift */; };
+ D0C9C34A2300AA8A00FAB518 /* ChatItemGalleryFooterContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C33C2300AA8800FAB518 /* ChatItemGalleryFooterContentNode.swift */; };
+ D0C9C34C2300AA8A00FAB518 /* ZoomableContentGalleryItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C33E2300AA8800FAB518 /* ZoomableContentGalleryItemNode.swift */; };
+ D0C9C34D2300AA8A00FAB518 /* ChatAnimationGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C33F2300AA8800FAB518 /* ChatAnimationGalleryItem.swift */; };
+ D0C9C34E2300AA8A00FAB518 /* SecretMediaPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3402300AA8900FAB518 /* SecretMediaPreviewController.swift */; };
+ D0C9C34F2300AA8A00FAB518 /* ChatDocumentGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3412300AA8900FAB518 /* ChatDocumentGalleryItem.swift */; };
+ D0C9C3502300AA8A00FAB518 /* ChatVideoGalleryItemScrubberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3422300AA8900FAB518 /* ChatVideoGalleryItemScrubberView.swift */; };
+ D0C9C3962300B45700FAB518 /* TelegramUniversalVideoContent.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3952300B45700FAB518 /* TelegramUniversalVideoContent.framework */; };
+ D0C9C3C32300B73200FAB518 /* WebsiteType.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3C22300B73200FAB518 /* WebsiteType.framework */; };
+ D0C9C3FD2300D59B00FAB518 /* ScreenCaptureDetection.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3FC2300D59B00FAB518 /* ScreenCaptureDetection.framework */; };
+ D0C9C43B2300D6DC00FAB518 /* OpenInExternalAppUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C43A2300D6DC00FAB518 /* OpenInExternalAppUI.framework */; };
+ D0C9C4412300D91200FAB518 /* GalleryItemTransitionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4402300D91200FAB518 /* GalleryItemTransitionNode.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C2F02300A51400FAB518 /* GalleryUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GalleryUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C2F32300A51400FAB518 /* GalleryUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GalleryUI.h; sourceTree = ""; };
+ D0C9C2F42300A51400FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C2FB2300A58400FAB518 /* GalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryItem.swift; sourceTree = ""; };
+ D0C9C2FC2300A58400FAB518 /* GalleryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryController.swift; sourceTree = ""; };
+ D0C9C2FD2300A58400FAB518 /* GalleryNavigationCheckNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryNavigationCheckNode.swift; sourceTree = ""; };
+ D0C9C2FE2300A58400FAB518 /* GalleryFooterNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryFooterNode.swift; sourceTree = ""; };
+ D0C9C2FF2300A58400FAB518 /* GalleryControllerPresentationState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryControllerPresentationState.swift; sourceTree = ""; };
+ D0C9C3002300A58400FAB518 /* GalleryNavigationRecipientNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryNavigationRecipientNode.swift; sourceTree = ""; };
+ D0C9C3012300A58400FAB518 /* GalleryControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryControllerNode.swift; sourceTree = ""; };
+ D0C9C3022300A58500FAB518 /* GalleryItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryItemNode.swift; sourceTree = ""; };
+ D0C9C3032300A58500FAB518 /* GalleryFooterContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryFooterContentNode.swift; sourceTree = ""; };
+ D0C9C3042300A58500FAB518 /* GalleryVideoDecoration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryVideoDecoration.swift; sourceTree = ""; };
+ D0C9C3052300A58500FAB518 /* GalleryThumbnailContainerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryThumbnailContainerNode.swift; sourceTree = ""; };
+ D0C9C3062300A58500FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; };
+ D0C9C3072300A58500FAB518 /* GalleryPagerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryPagerNode.swift; sourceTree = ""; };
+ D0C9C31A2300A9B900FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C31C2300A9BD00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C31E2300A9C000FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3202300A9C500FAB518 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; };
+ D0C9C3222300A9C800FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3242300A9CD00FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3262300A9D100FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3282300A9D500FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C32A2300A9D900FAB518 /* SafariServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SafariServices.framework; path = System/Library/Frameworks/SafariServices.framework; sourceTree = SDKROOT; };
+ D0C9C32C2300A9E900FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C32E2300A9EF00FAB518 /* TextFormat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TextFormat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3302300A9F400FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3362300AA8700FAB518 /* ChatImageGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatImageGalleryItem.swift; sourceTree = ""; };
+ D0C9C3372300AA8700FAB518 /* UniversalVideoGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UniversalVideoGalleryItem.swift; sourceTree = ""; };
+ D0C9C3382300AA8700FAB518 /* ChatExternalFileGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatExternalFileGalleryItem.swift; sourceTree = ""; };
+ D0C9C33B2300AA8700FAB518 /* SecretMediaPreviewFooterContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretMediaPreviewFooterContentNode.swift; sourceTree = ""; };
+ D0C9C33C2300AA8800FAB518 /* ChatItemGalleryFooterContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatItemGalleryFooterContentNode.swift; sourceTree = ""; };
+ D0C9C33E2300AA8800FAB518 /* ZoomableContentGalleryItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZoomableContentGalleryItemNode.swift; sourceTree = ""; };
+ D0C9C33F2300AA8800FAB518 /* ChatAnimationGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatAnimationGalleryItem.swift; sourceTree = ""; };
+ D0C9C3402300AA8900FAB518 /* SecretMediaPreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretMediaPreviewController.swift; sourceTree = ""; };
+ D0C9C3412300AA8900FAB518 /* ChatDocumentGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatDocumentGalleryItem.swift; sourceTree = ""; };
+ D0C9C3422300AA8900FAB518 /* ChatVideoGalleryItemScrubberView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatVideoGalleryItemScrubberView.swift; sourceTree = ""; };
+ D0C9C3952300B45700FAB518 /* TelegramUniversalVideoContent.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUniversalVideoContent.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3C22300B73200FAB518 /* WebsiteType.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WebsiteType.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3FC2300D59B00FAB518 /* ScreenCaptureDetection.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ScreenCaptureDetection.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C43A2300D6DC00FAB518 /* OpenInExternalAppUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = OpenInExternalAppUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4402300D91200FAB518 /* GalleryItemTransitionNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GalleryItemTransitionNode.swift; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C2ED2300A51400FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C43B2300D6DC00FAB518 /* OpenInExternalAppUI.framework in Frameworks */,
+ D0C9C3FD2300D59B00FAB518 /* ScreenCaptureDetection.framework in Frameworks */,
+ D0C9C3C32300B73200FAB518 /* WebsiteType.framework in Frameworks */,
+ D0C9C3962300B45700FAB518 /* TelegramUniversalVideoContent.framework in Frameworks */,
+ D0C9C3312300A9F400FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9C32F2300A9EF00FAB518 /* TextFormat.framework in Frameworks */,
+ D0C9C32D2300A9E900FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C32B2300A9D900FAB518 /* SafariServices.framework in Frameworks */,
+ D0C9C3292300A9D500FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9C3272300A9D100FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9C3252300A9CD00FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9C3232300A9C800FAB518 /* Postbox.framework in Frameworks */,
+ D0C9C3212300A9C500FAB518 /* QuickLook.framework in Frameworks */,
+ D0C9C31F2300A9C000FAB518 /* Display.framework in Frameworks */,
+ D0C9C31D2300A9BD00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C31B2300A9B900FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C2E62300A51400FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C2F42300A51400FAB518 /* Info.plist */,
+ D0C9C2F22300A51400FAB518 /* Sources */,
+ D0C9C2F12300A51400FAB518 /* Products */,
+ D0C9C3192300A9B900FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C2F12300A51400FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C2F02300A51400FAB518 /* GalleryUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C2F22300A51400FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C3522300AA8C00FAB518 /* Items */,
+ D0C9C33C2300AA8800FAB518 /* ChatItemGalleryFooterContentNode.swift */,
+ D0C9C3422300AA8900FAB518 /* ChatVideoGalleryItemScrubberView.swift */,
+ D0C9C3402300AA8900FAB518 /* SecretMediaPreviewController.swift */,
+ D0C9C33B2300AA8700FAB518 /* SecretMediaPreviewFooterContentNode.swift */,
+ D0C9C33E2300AA8800FAB518 /* ZoomableContentGalleryItemNode.swift */,
+ D0C9C2FC2300A58400FAB518 /* GalleryController.swift */,
+ D0C9C3012300A58400FAB518 /* GalleryControllerNode.swift */,
+ D0C9C2FF2300A58400FAB518 /* GalleryControllerPresentationState.swift */,
+ D0C9C3032300A58500FAB518 /* GalleryFooterContentNode.swift */,
+ D0C9C2FE2300A58400FAB518 /* GalleryFooterNode.swift */,
+ D0C9C2FB2300A58400FAB518 /* GalleryItem.swift */,
+ D0C9C3022300A58500FAB518 /* GalleryItemNode.swift */,
+ D0C9C2FD2300A58400FAB518 /* GalleryNavigationCheckNode.swift */,
+ D0C9C3002300A58400FAB518 /* GalleryNavigationRecipientNode.swift */,
+ D0C9C3072300A58500FAB518 /* GalleryPagerNode.swift */,
+ D0C9C3052300A58500FAB518 /* GalleryThumbnailContainerNode.swift */,
+ D0C9C3042300A58500FAB518 /* GalleryVideoDecoration.swift */,
+ D0C9C3062300A58500FAB518 /* FrameworkBundle.swift */,
+ D0C9C2F32300A51400FAB518 /* GalleryUI.h */,
+ D0C9C4402300D91200FAB518 /* GalleryItemTransitionNode.swift */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C3192300A9B900FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C43A2300D6DC00FAB518 /* OpenInExternalAppUI.framework */,
+ D0C9C3FC2300D59B00FAB518 /* ScreenCaptureDetection.framework */,
+ D0C9C3C22300B73200FAB518 /* WebsiteType.framework */,
+ D0C9C3952300B45700FAB518 /* TelegramUniversalVideoContent.framework */,
+ D0C9C3302300A9F400FAB518 /* AccountContext.framework */,
+ D0C9C32E2300A9EF00FAB518 /* TextFormat.framework */,
+ D0C9C32C2300A9E900FAB518 /* TelegramPresentationData.framework */,
+ D0C9C32A2300A9D900FAB518 /* SafariServices.framework */,
+ D0C9C3282300A9D500FAB518 /* AsyncDisplayKit.framework */,
+ D0C9C3262300A9D100FAB518 /* TelegramCore.framework */,
+ D0C9C3242300A9CD00FAB518 /* SwiftSignalKit.framework */,
+ D0C9C3222300A9C800FAB518 /* Postbox.framework */,
+ D0C9C3202300A9C500FAB518 /* QuickLook.framework */,
+ D0C9C31E2300A9C000FAB518 /* Display.framework */,
+ D0C9C31C2300A9BD00FAB518 /* UIKit.framework */,
+ D0C9C31A2300A9B900FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ D0C9C3522300AA8C00FAB518 /* Items */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C33F2300AA8800FAB518 /* ChatAnimationGalleryItem.swift */,
+ D0C9C3412300AA8900FAB518 /* ChatDocumentGalleryItem.swift */,
+ D0C9C3382300AA8700FAB518 /* ChatExternalFileGalleryItem.swift */,
+ D0C9C3362300AA8700FAB518 /* ChatImageGalleryItem.swift */,
+ D0C9C3372300AA8700FAB518 /* UniversalVideoGalleryItem.swift */,
+ );
+ path = Items;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C2EB2300A51400FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C2F52300A51400FAB518 /* GalleryUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C2EF2300A51400FAB518 /* GalleryUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C2F82300A51400FAB518 /* Build configuration list for PBXNativeTarget "GalleryUI" */;
+ buildPhases = (
+ D0C9C2EB2300A51400FAB518 /* Headers */,
+ D0C9C2EC2300A51400FAB518 /* Sources */,
+ D0C9C2ED2300A51400FAB518 /* Frameworks */,
+ D0C9C2EE2300A51400FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = GalleryUI;
+ productName = GalleryUI;
+ productReference = D0C9C2F02300A51400FAB518 /* GalleryUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C2E72300A51400FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C2EF2300A51400FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C2EA2300A51400FAB518 /* Build configuration list for PBXProject "GalleryUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C2E62300A51400FAB518;
+ productRefGroup = D0C9C2F12300A51400FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C2EF2300A51400FAB518 /* GalleryUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C2EE2300A51400FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C2EC2300A51400FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C30E2300A58500FAB518 /* GalleryControllerNode.swift in Sources */,
+ D0C9C3502300AA8A00FAB518 /* ChatVideoGalleryItemScrubberView.swift in Sources */,
+ D0C9C34C2300AA8A00FAB518 /* ZoomableContentGalleryItemNode.swift in Sources */,
+ D0C9C3102300A58500FAB518 /* GalleryFooterContentNode.swift in Sources */,
+ D0C9C30A2300A58500FAB518 /* GalleryNavigationCheckNode.swift in Sources */,
+ D0C9C34E2300AA8A00FAB518 /* SecretMediaPreviewController.swift in Sources */,
+ D0C9C30C2300A58500FAB518 /* GalleryControllerPresentationState.swift in Sources */,
+ D0C9C4412300D91200FAB518 /* GalleryItemTransitionNode.swift in Sources */,
+ D0C9C30D2300A58500FAB518 /* GalleryNavigationRecipientNode.swift in Sources */,
+ D0C9C3092300A58500FAB518 /* GalleryController.swift in Sources */,
+ D0C9C30F2300A58500FAB518 /* GalleryItemNode.swift in Sources */,
+ D0C9C3142300A58500FAB518 /* GalleryPagerNode.swift in Sources */,
+ D0C9C3452300AA8A00FAB518 /* UniversalVideoGalleryItem.swift in Sources */,
+ D0C9C3122300A58500FAB518 /* GalleryThumbnailContainerNode.swift in Sources */,
+ D0C9C3462300AA8A00FAB518 /* ChatExternalFileGalleryItem.swift in Sources */,
+ D0C9C34D2300AA8A00FAB518 /* ChatAnimationGalleryItem.swift in Sources */,
+ D0C9C3442300AA8A00FAB518 /* ChatImageGalleryItem.swift in Sources */,
+ D0C9C34F2300AA8A00FAB518 /* ChatDocumentGalleryItem.swift in Sources */,
+ D0C9C3132300A58500FAB518 /* FrameworkBundle.swift in Sources */,
+ D0C9C3082300A58500FAB518 /* GalleryItem.swift in Sources */,
+ D0C9C3112300A58500FAB518 /* GalleryVideoDecoration.swift in Sources */,
+ D0C9C34A2300AA8A00FAB518 /* ChatItemGalleryFooterContentNode.swift in Sources */,
+ D0C9C30B2300A58500FAB518 /* GalleryFooterNode.swift in Sources */,
+ D0C9C3492300AA8A00FAB518 /* SecretMediaPreviewFooterContentNode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C2F62300A51400FAB518 /* 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;
+ };
+ D0C9C2F72300A51400FAB518 /* 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;
+ };
+ D0C9C2F92300A51400FAB518 /* 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.GalleryUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C2FA2300A51400FAB518 /* 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.GalleryUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C3152300A99100FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C3162300A99100FAB518 /* DebugHockeyapp */ = {
+ 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.GalleryUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C3172300A99D00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C3182300A99D00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.GalleryUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C2EA2300A51400FAB518 /* Build configuration list for PBXProject "GalleryUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C2F62300A51400FAB518 /* DebugAppStoreLLC */,
+ D0C9C3152300A99100FAB518 /* DebugHockeyapp */,
+ D0C9C2F72300A51400FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C3172300A99D00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C2F82300A51400FAB518 /* Build configuration list for PBXNativeTarget "GalleryUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C2F92300A51400FAB518 /* DebugAppStoreLLC */,
+ D0C9C3162300A99100FAB518 /* DebugHockeyapp */,
+ D0C9C2FA2300A51400FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C3182300A99D00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C2E72300A51400FAB518 /* Project object */;
+}
diff --git a/submodules/GalleryUI/Info.plist b/submodules/GalleryUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/GalleryUI/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/ChatItemGalleryFooterContentNode.swift b/submodules/GalleryUI/Sources/ChatItemGalleryFooterContentNode.swift
similarity index 97%
rename from submodules/TelegramUI/TelegramUI/ChatItemGalleryFooterContentNode.swift
rename to submodules/GalleryUI/Sources/ChatItemGalleryFooterContentNode.swift
index 6bb4ed3cd7..0fa498e7f7 100644
--- a/submodules/TelegramUI/TelegramUI/ChatItemGalleryFooterContentNode.swift
+++ b/submodules/GalleryUI/Sources/ChatItemGalleryFooterContentNode.swift
@@ -12,6 +12,7 @@ import TelegramStringFormatting
import AccountContext
import RadialStatusNode
import ShareController
+import OpenInExternalAppUI
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)
@@ -808,7 +809,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, UIScroll
}
private func commitDeleteMessages(_ messages: [Message], ask: Bool) {
- self.messageContextDisposable.set((chatAvailableMessageActions(postbox: self.context.account.postbox, accountPeerId: self.context.account.peerId, messageIds: Set(messages.map { $0.id })) |> deliverOnMainQueue).start(next: { [weak self] actions in
+ self.messageContextDisposable.set((self.context.sharedContext.chatAvailableMessageActions(postbox: self.context.account.postbox, accountPeerId: self.context.account.peerId, messageIds: Set(messages.map { $0.id })) |> deliverOnMainQueue).start(next: { [weak self] actions in
if let strongSelf = self, let controllerInteration = strongSelf.controllerInteraction, !actions.options.isEmpty {
let actionSheet = ActionSheetController(presentationTheme: strongSelf.theme)
var items: [ActionSheetItem] = []
@@ -906,7 +907,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, UIScroll
if let strongSelf = self {
let openInController = OpenInActionSheetController(context: strongSelf.context, item: item, additionalAction: nil, openUrl: { [weak self] url in
if let strongSelf = self {
- openExternalUrl(context: strongSelf.context, url: url, forceExternal: true, presentationData: presentationData, navigationController: nil, dismissInput: {})
+ strongSelf.context.sharedContext.openExternalUrl(context: strongSelf.context, urlContext: .generic, url: url, forceExternal: true, presentationData: presentationData, navigationController: nil, dismissInput: {})
}
})
strongSelf.controllerInteraction?.presentController(openInController, nil)
@@ -915,7 +916,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, UIScroll
} else {
preferredAction = .custom(action: ShareControllerAction(title: presentationData.strings.Web_OpenExternal, action: { [weak self] in
if let strongSelf = self {
- openExternalUrl(context: strongSelf.context, url: content.url, presentationData: presentationData, navigationController: nil, dismissInput: {})
+ strongSelf.context.sharedContext.openExternalUrl(context: strongSelf.context, urlContext: .generic, url: content.url, forceExternal: false, presentationData: presentationData, navigationController: nil, dismissInput: {})
}
}))
}
@@ -1017,7 +1018,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, UIScroll
if let strongSelf = self {
let openInController = OpenInActionSheetController(context: strongSelf.context, item: item, additionalAction: nil, openUrl: { [weak self] url in
if let strongSelf = self {
- openExternalUrl(context: strongSelf.context, url: url, forceExternal: true, presentationData: presentationData, navigationController: nil, dismissInput: {})
+ strongSelf.context.sharedContext.openExternalUrl(context: strongSelf.context, urlContext: .generic, url: url, forceExternal: true, presentationData: presentationData, navigationController: nil, dismissInput: {})
}
})
strongSelf.controllerInteraction?.presentController(openInController, nil)
@@ -1026,7 +1027,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, UIScroll
} else {
preferredAction = .custom(action: ShareControllerAction(title: presentationData.strings.Web_OpenExternal, action: { [weak self] in
if let strongSelf = self {
- openExternalUrl(context: strongSelf.context, url: content.url, presentationData: presentationData, navigationController: nil, dismissInput: {})
+ strongSelf.context.sharedContext.openExternalUrl(context: strongSelf.context, urlContext: .generic, url: content.url, forceExternal: false, presentationData: presentationData, navigationController: nil, dismissInput: {})
}
}))
}
diff --git a/submodules/TelegramUI/TelegramUI/ChatVideoGalleryItemScrubberView.swift b/submodules/GalleryUI/Sources/ChatVideoGalleryItemScrubberView.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatVideoGalleryItemScrubberView.swift
rename to submodules/GalleryUI/Sources/ChatVideoGalleryItemScrubberView.swift
diff --git a/submodules/GalleryUI/Sources/FrameworkBundle.swift b/submodules/GalleryUI/Sources/FrameworkBundle.swift
new file mode 100644
index 0000000000..3f7a202833
--- /dev/null
+++ b/submodules/GalleryUI/Sources/FrameworkBundle.swift
@@ -0,0 +1,14 @@
+import Foundation
+import UIKit
+
+private class FrameworkBundleClass: NSObject {
+}
+
+let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self)
+private let screenScaleFactor = Int(UIScreen.main.scale)
+
+extension UIImage {
+ convenience init?(bundleImageName: String) {
+ self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil)
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/GalleryController.swift b/submodules/GalleryUI/Sources/GalleryController.swift
similarity index 93%
rename from submodules/TelegramUI/TelegramUI/GalleryController.swift
rename to submodules/GalleryUI/Sources/GalleryController.swift
index a2c7f2c041..d18273ba99 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryController.swift
+++ b/submodules/GalleryUI/Sources/GalleryController.swift
@@ -10,6 +10,9 @@ import SafariServices
import TelegramPresentationData
import TextFormat
import AccountContext
+import TelegramUniversalVideoContent
+import WebsiteType
+import OpenInExternalAppUI
private func tagsForMessage(_ message: Message) -> MessageTags? {
for media in message.media {
@@ -95,7 +98,7 @@ private let internalMimePrefixes: [String] = [
"image/png"
]
-func internalDocumentItemSupportsMimeType(_ type: String, fileName: String?) -> Bool {
+public func internalDocumentItemSupportsMimeType(_ type: String, fileName: String?) -> Bool {
if let fileName = fileName {
let ext = (fileName as NSString).pathExtension
if internalExtensions.contains(ext.lowercased()) {
@@ -123,7 +126,7 @@ private let italicFont = Font.italic(16.0)
private let boldItalicFont = Font.semiboldItalic(16.0)
private let fixedFont = UIFont(name: "Menlo-Regular", size: 15.0) ?? textFont
-func galleryCaptionStringWithAppliedEntities(_ text: String, entities: [MessageTextEntity]) -> NSAttributedString {
+public func galleryCaptionStringWithAppliedEntities(_ text: String, entities: [MessageTextEntity]) -> NSAttributedString {
return stringWithAppliedEntities(text, entities: entities, baseColor: .white, linkColor: UIColor(rgb: 0x5ac8fa), baseFont: textFont, linkFont: textFont, boldFont: boldFont, italicFont: italicFont, boldItalicFont: boldItalicFont, fixedFont: fixedFont, blockQuoteFont: textFont, underlineLinks: false)
}
@@ -136,7 +139,7 @@ private func galleryMessageCaptionText(_ message: Message) -> String {
return message.text
}
-func galleryItemForEntry(context: AccountContext, presentationData: PresentationData, entry: MessageHistoryEntry, isCentral: Bool = false, streamVideos: Bool, loopVideos: Bool = false, hideControls: Bool = false, fromPlayingVideo: Bool = false, landscape: Bool = false, timecode: Double? = nil, tempFilePath: String? = nil, playbackCompleted: @escaping () -> Void = {}, performAction: @escaping (GalleryControllerInteractionTapAction) -> Void = { _ in }, openActionOptions: @escaping (GalleryControllerInteractionTapAction) -> Void = { _ in }) -> GalleryItem? {
+public func galleryItemForEntry(context: AccountContext, presentationData: PresentationData, entry: MessageHistoryEntry, isCentral: Bool = false, streamVideos: Bool, loopVideos: Bool = false, hideControls: Bool = false, fromPlayingVideo: Bool = false, landscape: Bool = false, timecode: Double? = nil, tempFilePath: String? = nil, playbackCompleted: @escaping () -> Void = {}, performAction: @escaping (GalleryControllerInteractionTapAction) -> Void = { _ in }, openActionOptions: @escaping (GalleryControllerInteractionTapAction) -> Void = { _ in }) -> GalleryItem? {
let message = entry.message
let location = entry.location
if let (media, mediaImage) = mediaForMessage(message: message) {
@@ -192,7 +195,7 @@ func galleryItemForEntry(context: AccountContext, presentationData: Presentation
}
} else if let webpage = media as? TelegramMediaWebpage, case let .Loaded(webpageContent) = webpage.content {
var content: UniversalVideoContent?
- switch websiteType(of: webpageContent) {
+ switch websiteType(of: webpageContent.websiteName) {
case .instagram where webpageContent.file != nil && webpageContent.image != nil && webpageContent.file!.isVideo:
content = NativeVideoContent(id: .message(message.stableId, webpageContent.file?.id ?? webpage.webpageId), fileReference: .message(message: MessageReference(message), media: webpageContent.file!), imageReference: webpageContent.image.flatMap({ ImageMediaReference.message(message: MessageReference(message), media: $0) }), streamVideo: .conservative, enableSound: true)
default:
@@ -217,21 +220,21 @@ func galleryItemForEntry(context: AccountContext, presentationData: Presentation
return nil
}
-final class GalleryTransitionArguments {
- let transitionNode: (ASDisplayNode, () -> (UIView?, UIView?))
- let addToTransitionSurface: (UIView) -> Void
+public final class GalleryTransitionArguments {
+ public let transitionNode: (ASDisplayNode, () -> (UIView?, UIView?))
+ public let addToTransitionSurface: (UIView) -> Void
- init(transitionNode: (ASDisplayNode, () -> (UIView?, UIView?)), addToTransitionSurface: @escaping (UIView) -> Void) {
+ public init(transitionNode: (ASDisplayNode, () -> (UIView?, UIView?)), addToTransitionSurface: @escaping (UIView) -> Void) {
self.transitionNode = transitionNode
self.addToTransitionSurface = addToTransitionSurface
}
}
-final class GalleryControllerPresentationArguments {
- let animated: Bool
- let transitionArguments: (MessageId, Media) -> GalleryTransitionArguments?
+public final class GalleryControllerPresentationArguments {
+ public let animated: Bool
+ public let transitionArguments: (MessageId, Media) -> GalleryTransitionArguments?
- init(animated: Bool = true, transitionArguments: @escaping (MessageId, Media) -> GalleryTransitionArguments?) {
+ public init(animated: Bool = true, transitionArguments: @escaping (MessageId, Media) -> GalleryTransitionArguments?) {
self.animated = animated
self.transitionArguments = transitionArguments
}
@@ -251,12 +254,12 @@ private enum GalleryMessageHistoryView {
}
}
-enum GalleryControllerItemSource {
+public enum GalleryControllerItemSource {
case peerMessagesAtId(MessageId)
case standaloneMessage(Message)
}
-enum GalleryControllerInteractionTapAction {
+public enum GalleryControllerInteractionTapAction {
case url(url: String, concealed: Bool)
case textMention(String)
case peerMention(PeerId, String)
@@ -269,9 +272,9 @@ public enum GalleryControllerItemNodeAction {
case timecode(Double)
}
-class GalleryController: ViewController {
- static let darkNavigationTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: UIColor(rgb: 0x525252), primaryTextColor: .white, backgroundColor: UIColor(white: 0.0, alpha: 0.6), separatorColor: UIColor(white: 0.0, alpha: 0.8), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear)
- static let lightNavigationTheme = NavigationBarTheme(buttonColor: UIColor(rgb: 0x007ee5), disabledButtonColor: UIColor(rgb: 0xd0d0d0), primaryTextColor: .black, backgroundColor: UIColor(red: 0.968626451, green: 0.968626451, blue: 0.968626451, alpha: 1.0), separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear)
+public class GalleryController: ViewController {
+ public static let darkNavigationTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: UIColor(rgb: 0x525252), primaryTextColor: .white, backgroundColor: UIColor(white: 0.0, alpha: 0.6), separatorColor: UIColor(white: 0.0, alpha: 0.8), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear)
+ public static let lightNavigationTheme = NavigationBarTheme(buttonColor: UIColor(rgb: 0x007ee5), disabledButtonColor: UIColor(rgb: 0xd0d0d0), primaryTextColor: .black, backgroundColor: UIColor(red: 0.968626451, green: 0.968626451, blue: 0.968626451, alpha: 1.0), separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear)
private var galleryNode: GalleryControllerNode {
return self.displayNode as! GalleryControllerNode
@@ -284,14 +287,14 @@ class GalleryController: ViewController {
private let streamVideos: Bool
private let _ready = Promise()
- override var ready: Promise {
+ override public var ready: Promise {
return self._ready
}
private var didSetReady = false
private var adjustedForInitialPreviewingLayout = false
- var temporaryDoNotWaitForReady = false
+ public var temporaryDoNotWaitForReady = false
private let fromPlayingVideo: Bool
private let landscape: Bool
private let timecode: Double?
@@ -321,7 +324,7 @@ class GalleryController: ViewController {
private var performAction: (GalleryControllerInteractionTapAction) -> Void
private var openActionOptions: (GalleryControllerInteractionTapAction) -> Void
- init(context: AccountContext, source: GalleryControllerItemSource, invertItemOrder: Bool = false, streamSingleVideo: Bool = false, fromPlayingVideo: Bool = false, landscape: Bool = false, timecode: Double? = nil, synchronousLoad: Bool = false, replaceRootController: @escaping (ViewController, ValuePromise?) -> Void, baseNavigationController: NavigationController?, actionInteraction: GalleryControllerActionInteraction? = nil) {
+ public init(context: AccountContext, source: GalleryControllerItemSource, invertItemOrder: Bool = false, streamSingleVideo: Bool = false, fromPlayingVideo: Bool = false, landscape: Bool = false, timecode: Double? = nil, synchronousLoad: Bool = false, replaceRootController: @escaping (ViewController, ValuePromise?) -> Void, baseNavigationController: NavigationController?, actionInteraction: GalleryControllerActionInteraction? = nil) {
self.context = context
self.source = source
self.replaceRootController = replaceRootController
@@ -746,7 +749,7 @@ class GalleryController: ViewController {
}
}
- @objc func donePressed() {
+ @objc private func donePressed() {
self.dismiss(forceAway: false)
}
@@ -778,7 +781,7 @@ class GalleryController: ViewController {
})
}
- override func loadDisplayNode() {
+ override public func loadDisplayNode() {
let controllerInteraction = GalleryControllerInteraction(presentController: { [weak self] controller, arguments in
if let strongSelf = self {
strongSelf.present(controller, in: .window(.root), with: arguments, blockInteraction: true)
@@ -896,11 +899,11 @@ class GalleryController: ViewController {
}
}
- override func viewWillAppear(_ animated: Bool) {
+ override public func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
- override func viewDidAppear(_ animated: Bool) {
+ override public func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
var nodeAnimatesItself = false
@@ -939,13 +942,13 @@ class GalleryController: ViewController {
self.accountInUseDisposable.set(self.context.sharedContext.setAccountUserInterfaceInUse(self.context.account.id))
}
- override func viewDidDisappear(_ animated: Bool) {
+ override public func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.accountInUseDisposable.set(nil)
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
+ override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, transition: transition)
self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size)
diff --git a/submodules/TelegramUI/TelegramUI/GalleryControllerNode.swift b/submodules/GalleryUI/Sources/GalleryControllerNode.swift
similarity index 90%
rename from submodules/TelegramUI/TelegramUI/GalleryControllerNode.swift
rename to submodules/GalleryUI/Sources/GalleryControllerNode.swift
index 965ce5ce8d..35d936f616 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryControllerNode.swift
+++ b/submodules/GalleryUI/Sources/GalleryControllerNode.swift
@@ -5,30 +5,30 @@ import Display
import Postbox
import SwipeToDismissGesture
-class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecognizerDelegate {
- var statusBar: StatusBar?
- var navigationBar: NavigationBar?
- let footerNode: GalleryFooterNode
- var currentThumbnailContainerNode: GalleryThumbnailContainerNode?
- var overlayNode: ASDisplayNode?
- var transitionDataForCentralItem: (() -> ((ASDisplayNode, () -> (UIView?, UIView?))?, (UIView) -> Void)?)?
- var dismiss: (() -> Void)?
+open class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecognizerDelegate {
+ public var statusBar: StatusBar?
+ public var navigationBar: NavigationBar?
+ public let footerNode: GalleryFooterNode
+ public var currentThumbnailContainerNode: GalleryThumbnailContainerNode?
+ public var overlayNode: ASDisplayNode?
+ public var transitionDataForCentralItem: (() -> ((ASDisplayNode, () -> (UIView?, UIView?))?, (UIView) -> Void)?)?
+ public var dismiss: (() -> Void)?
- var containerLayout: (CGFloat, ContainerViewLayout)?
- var backgroundNode: ASDisplayNode
- var scrollView: UIScrollView
- var pager: GalleryPagerNode
+ public var containerLayout: (CGFloat, ContainerViewLayout)?
+ public var backgroundNode: ASDisplayNode
+ public var scrollView: UIScrollView
+ public var pager: GalleryPagerNode
- var beginCustomDismiss: () -> Void = { }
- var completeCustomDismiss: () -> Void = { }
- var baseNavigationController: () -> NavigationController? = { return nil }
+ public var beginCustomDismiss: () -> Void = { }
+ public var completeCustomDismiss: () -> Void = { }
+ public var baseNavigationController: () -> NavigationController? = { return nil }
private var presentationState = GalleryControllerPresentationState()
private var isDismissed = false
- var areControlsHidden = false
- var isBackgroundExtendedOverNavigationBar = true {
+ public var areControlsHidden = false
+ public var isBackgroundExtendedOverNavigationBar = true {
didSet {
if let (navigationBarHeight, layout) = self.containerLayout {
self.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: self.isBackgroundExtendedOverNavigationBar ? 0.0 : navigationBarHeight), size: CGSize(width: layout.size.width, height: layout.size.height - (self.isBackgroundExtendedOverNavigationBar ? 0.0 : navigationBarHeight)))
@@ -36,7 +36,7 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
}
}
- init(controllerInteraction: GalleryControllerInteraction, pageGap: CGFloat = 20.0) {
+ public init(controllerInteraction: GalleryControllerInteraction, pageGap: CGFloat = 20.0) {
self.backgroundNode = ASDisplayNode()
self.backgroundNode.backgroundColor = UIColor.black
self.scrollView = UIScrollView()
@@ -216,7 +216,7 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
}
}
- override func didLoad() {
+ override open func didLoad() {
super.didLoad()
if #available(iOSApplicationExtension 11.0, iOS 11.0, *), !self.isLayerBacked {
@@ -224,7 +224,7 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
}
}
- func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
+ open func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
self.containerLayout = (navigationBarHeight, layout)
transition.updateFrame(node: self.backgroundNode, frame: CGRect(origin: CGPoint(x: 0.0, y: self.isBackgroundExtendedOverNavigationBar ? 0.0 : navigationBarHeight), size: CGSize(width: layout.size.width, height: layout.size.height - (self.isBackgroundExtendedOverNavigationBar ? 0.0 : navigationBarHeight))))
@@ -263,7 +263,7 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
self.pager.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: transition)
}
- func setControlsHidden(_ hidden: Bool, animated: Bool) {
+ open func setControlsHidden(_ hidden: Bool, animated: Bool) {
self.areControlsHidden = hidden
if animated {
UIView.animate(withDuration: 0.3, animations: {
@@ -282,14 +282,14 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
}
}
- func updateThumbnailContainerNodeAlpha(_ transition: ContainedViewLayoutTransition) {
+ open func updateThumbnailContainerNodeAlpha(_ transition: ContainedViewLayoutTransition) {
if let currentThumbnailContainerNode = self.currentThumbnailContainerNode, let layout = self.containerLayout?.1 {
let visible = layout.size.width < layout.size.height && !self.areControlsHidden
transition.updateAlpha(node: currentThumbnailContainerNode, alpha: visible ? 1.0 : 0.0)
}
}
- func animateIn(animateContent: Bool) {
+ open func animateIn(animateContent: Bool) {
self.backgroundNode.backgroundColor = self.backgroundNode.backgroundColor?.withAlphaComponent(0.0)
self.statusBar?.alpha = 0.0
self.navigationBar?.alpha = 0.0
@@ -311,7 +311,7 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
}
}
- func animateOut(animateContent: Bool, completion: @escaping () -> Void) {
+ open func animateOut(animateContent: Bool, completion: @escaping () -> Void) {
self.isDismissed = true
self.pager.isScrollEnabled = false
@@ -349,13 +349,13 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
}
}
- func updateDismissTransition(_ value: CGFloat) {
+ open func updateDismissTransition(_ value: CGFloat) {
}
- func updateDistanceFromEquilibrium(_ value: CGFloat) {
+ open func updateDistanceFromEquilibrium(_ value: CGFloat) {
}
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
+ open func scrollViewDidScroll(_ scrollView: UIScrollView) {
if self.isDismissed {
return
}
@@ -385,7 +385,7 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
}
}
- func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) {
+ open func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) {
targetContentOffset.pointee = scrollView.contentOffset
let distanceFromEquilibrium = scrollView.contentOffset.y - scrollView.contentSize.height / 3.0
@@ -433,14 +433,14 @@ class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGestureRecog
}
}
- func updatePresentationState(_ f: (GalleryControllerPresentationState) -> GalleryControllerPresentationState, transition: ContainedViewLayoutTransition) {
+ open func updatePresentationState(_ f: (GalleryControllerPresentationState) -> GalleryControllerPresentationState, transition: ContainedViewLayoutTransition) {
self.presentationState = f(self.presentationState)
if let (navigationBarHeight, layout) = self.containerLayout {
self.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: transition)
}
}
- @objc func panGesture(_ recognizer: SwipeToDismissGestureRecognizer) {
+ @objc private func panGesture(_ recognizer: SwipeToDismissGestureRecognizer) {
switch recognizer.state {
case .began:
break
diff --git a/submodules/GalleryUI/Sources/GalleryControllerPresentationState.swift b/submodules/GalleryUI/Sources/GalleryControllerPresentationState.swift
new file mode 100644
index 0000000000..7fd9620cb5
--- /dev/null
+++ b/submodules/GalleryUI/Sources/GalleryControllerPresentationState.swift
@@ -0,0 +1,17 @@
+import Foundation
+
+public final class GalleryControllerPresentationState {
+ public let footerContentNode: GalleryFooterContentNode?
+
+ public init() {
+ self.footerContentNode = nil
+ }
+
+ public init(footerContentNode: GalleryFooterContentNode?) {
+ self.footerContentNode = footerContentNode
+ }
+
+ public func withUpdatedFooterContentNode(_ footerContentNode: GalleryFooterContentNode?) -> GalleryControllerPresentationState {
+ return GalleryControllerPresentationState(footerContentNode: footerContentNode)
+ }
+}
diff --git a/submodules/GalleryUI/Sources/GalleryFooterContentNode.swift b/submodules/GalleryUI/Sources/GalleryFooterContentNode.swift
new file mode 100644
index 0000000000..9fe0dadf41
--- /dev/null
+++ b/submodules/GalleryUI/Sources/GalleryFooterContentNode.swift
@@ -0,0 +1,33 @@
+import Foundation
+import UIKit
+import AsyncDisplayKit
+import Display
+import SwiftSignalKit
+
+public final class GalleryControllerInteraction {
+ public let presentController: (ViewController, ViewControllerPresentationArguments?) -> Void
+ public let dismissController: () -> Void
+ public let replaceRootController: (ViewController, ValuePromise?) -> Void
+
+ public init(presentController: @escaping (ViewController, ViewControllerPresentationArguments?) -> Void, dismissController: @escaping () -> Void, replaceRootController: @escaping (ViewController, ValuePromise?) -> Void) {
+ self.presentController = presentController
+ self.dismissController = dismissController
+ self.replaceRootController = replaceRootController
+ }
+}
+
+open class GalleryFooterContentNode: ASDisplayNode {
+ public var requestLayout: ((ContainedViewLayoutTransition) -> Void)?
+ public var controllerInteraction: GalleryControllerInteraction?
+
+ open func updateLayout(size: CGSize, metrics: LayoutMetrics, leftInset: CGFloat, rightInset: CGFloat, bottomInset: CGFloat, contentInset: CGFloat, transition: ContainedViewLayoutTransition) -> CGFloat {
+ return 0.0
+ }
+
+ open func animateIn(fromHeight: CGFloat, previousContentNode: GalleryFooterContentNode, transition: ContainedViewLayoutTransition) {
+ }
+
+ open func animateOut(toHeight: CGFloat, nextContentNode: GalleryFooterContentNode, transition: ContainedViewLayoutTransition, completion: @escaping () -> Void) {
+ completion()
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/GalleryFooterNode.swift b/submodules/GalleryUI/Sources/GalleryFooterNode.swift
similarity index 91%
rename from submodules/TelegramUI/TelegramUI/GalleryFooterNode.swift
rename to submodules/GalleryUI/Sources/GalleryFooterNode.swift
index cfcd4eefeb..7537360dce 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryFooterNode.swift
+++ b/submodules/GalleryUI/Sources/GalleryFooterNode.swift
@@ -3,7 +3,7 @@ import UIKit
import AsyncDisplayKit
import Display
-final class GalleryFooterNode: ASDisplayNode {
+public final class GalleryFooterNode: ASDisplayNode {
private let backgroundNode: ASDisplayNode
private var currentFooterContentNode: GalleryFooterContentNode?
@@ -11,7 +11,7 @@ final class GalleryFooterNode: ASDisplayNode {
private let controllerInteraction: GalleryControllerInteraction
- init(controllerInteraction: GalleryControllerInteraction) {
+ public init(controllerInteraction: GalleryControllerInteraction) {
self.controllerInteraction = controllerInteraction
self.backgroundNode = ASDisplayNode()
@@ -22,7 +22,7 @@ final class GalleryFooterNode: ASDisplayNode {
self.addSubnode(self.backgroundNode)
}
- func updateLayout(_ layout: ContainerViewLayout, footerContentNode: GalleryFooterContentNode?, thumbnailPanelHeight: CGFloat, transition: ContainedViewLayoutTransition) {
+ public func updateLayout(_ layout: ContainerViewLayout, footerContentNode: GalleryFooterContentNode?, thumbnailPanelHeight: CGFloat, transition: ContainedViewLayoutTransition) {
self.currentLayout = (layout, thumbnailPanelHeight)
let cleanInsets = layout.insets(options: [])
@@ -69,7 +69,7 @@ final class GalleryFooterNode: ASDisplayNode {
}
}
- override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
+ override public func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if !self.backgroundNode.frame.contains(point) {
return nil
}
diff --git a/submodules/GalleryUI/Sources/GalleryItem.swift b/submodules/GalleryUI/Sources/GalleryItem.swift
new file mode 100644
index 0000000000..89cfa918e5
--- /dev/null
+++ b/submodules/GalleryUI/Sources/GalleryItem.swift
@@ -0,0 +1,27 @@
+import Foundation
+
+public struct GalleryItemOriginData: Equatable {
+ public var title: String?
+ public var timestamp: Int32?
+
+ public init(title: String?, timestamp: Int32?) {
+ self.title = title
+ self.timestamp = timestamp
+ }
+}
+
+public struct GalleryItemIndexData: Equatable {
+ public var position: Int32
+ public var totalCount: Int32
+
+ public init(position: Int32, totalCount: Int32) {
+ self.position = position
+ self.totalCount = totalCount
+ }
+}
+
+public protocol GalleryItem {
+ func node() -> GalleryItemNode
+ func updateNode(node: GalleryItemNode)
+ func thumbnailItem() -> (Int64, GalleryThumbnailItem)?
+}
diff --git a/submodules/TelegramUI/TelegramUI/GalleryItemNode.swift b/submodules/GalleryUI/Sources/GalleryItemNode.swift
similarity index 85%
rename from submodules/TelegramUI/TelegramUI/GalleryItemNode.swift
rename to submodules/GalleryUI/Sources/GalleryItemNode.swift
index cbe3019609..7a91e6988a 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryItemNode.swift
+++ b/submodules/GalleryUI/Sources/GalleryItemNode.swift
@@ -12,7 +12,7 @@ public enum GalleryItemNodeNavigationStyle {
open class GalleryItemNode: ASDisplayNode {
private var _index: Int?
- var index: Int {
+ public var index: Int {
get {
return self._index!
} set(value) {
@@ -20,13 +20,13 @@ open class GalleryItemNode: ASDisplayNode {
}
}
- var toggleControlsVisibility: () -> Void = { }
- var dismiss: () -> Void = { }
- var beginCustomDismiss: () -> Void = { }
- var completeCustomDismiss: () -> Void = { }
- var baseNavigationController: () -> NavigationController? = { return nil }
+ public var toggleControlsVisibility: () -> Void = { }
+ public var dismiss: () -> Void = { }
+ public var beginCustomDismiss: () -> Void = { }
+ public var completeCustomDismiss: () -> Void = { }
+ public var baseNavigationController: () -> NavigationController? = { return nil }
- override init() {
+ override public init() {
super.init()
self.setViewBlock({
diff --git a/submodules/GalleryUI/Sources/GalleryItemTransitionNode.swift b/submodules/GalleryUI/Sources/GalleryItemTransitionNode.swift
new file mode 100644
index 0000000000..040a3e0ad4
--- /dev/null
+++ b/submodules/GalleryUI/Sources/GalleryItemTransitionNode.swift
@@ -0,0 +1,7 @@
+import Foundation
+import AccountContext
+
+public protocol GalleryItemTransitionNode: class {
+ func isAvailableForGalleryTransition() -> Bool
+ var decoration: UniversalVideoDecoration? { get }
+}
diff --git a/submodules/TelegramUI/TelegramUI/GalleryNavigationCheckNode.swift b/submodules/GalleryUI/Sources/GalleryNavigationCheckNode.swift
similarity index 69%
rename from submodules/TelegramUI/TelegramUI/GalleryNavigationCheckNode.swift
rename to submodules/GalleryUI/Sources/GalleryNavigationCheckNode.swift
index 3a53d69013..2c0abd29e4 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryNavigationCheckNode.swift
+++ b/submodules/GalleryUI/Sources/GalleryNavigationCheckNode.swift
@@ -5,10 +5,10 @@ import Display
import TelegramPresentationData
import CheckNode
-final class GalleryNavigationCheckNode: ASDisplayNode, NavigationButtonCustomDisplayNode {
+public final class GalleryNavigationCheckNode: ASDisplayNode, NavigationButtonCustomDisplayNode {
private var checkNode: CheckNode
- init(theme: PresentationTheme) {
+ public init(theme: PresentationTheme) {
self.checkNode = CheckNode(strokeColor: theme.list.itemCheckColors.strokeColor, fillColor: theme.list.itemCheckColors.fillColor, foregroundColor: theme.list.itemCheckColors.foregroundColor, style: .navigation)
super.init()
@@ -16,27 +16,27 @@ final class GalleryNavigationCheckNode: ASDisplayNode, NavigationButtonCustomDis
self.addSubnode(self.checkNode)
}
- var isHighlightable: Bool {
+ public var isHighlightable: Bool {
return false
}
- var isChecked: Bool {
+ public var isChecked: Bool {
return self.checkNode.isChecked
}
- func setIsChecked(_ isChecked: Bool, animated: Bool) {
+ public func setIsChecked(_ isChecked: Bool, animated: Bool) {
self.checkNode.setIsChecked(isChecked, animated: animated)
}
- func addTarget(target: AnyObject?, action: Selector) {
+ public func addTarget(target: AnyObject?, action: Selector) {
self.checkNode.addTarget(target: target, action: action)
}
- override func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize {
+ override public func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize {
return CGSize(width: 39.0, height: 39.0)
}
- override func layout() {
+ override public func layout() {
super.layout()
let size = self.bounds.size
diff --git a/submodules/TelegramUI/TelegramUI/GalleryNavigationRecipientNode.swift b/submodules/GalleryUI/Sources/GalleryNavigationRecipientNode.swift
similarity index 81%
rename from submodules/TelegramUI/TelegramUI/GalleryNavigationRecipientNode.swift
rename to submodules/GalleryUI/Sources/GalleryNavigationRecipientNode.swift
index a3f9e70a32..8dc795867d 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryNavigationRecipientNode.swift
+++ b/submodules/GalleryUI/Sources/GalleryNavigationRecipientNode.swift
@@ -4,11 +4,11 @@ import AsyncDisplayKit
import Display
import LegacyComponents
-final class GalleryNavigationRecipientNode: ASDisplayNode, NavigationButtonCustomDisplayNode {
+public final class GalleryNavigationRecipientNode: ASDisplayNode, NavigationButtonCustomDisplayNode {
private var iconNode: ASImageNode
private var textNode: ImmediateTextNode
- init(color: UIColor, title: String) {
+ public init(color: UIColor, title: String) {
self.iconNode = ASImageNode()
self.iconNode.alpha = 0.45
self.iconNode.image = TGComponentsImageNamed("PhotoPickerArrow")
@@ -28,16 +28,16 @@ final class GalleryNavigationRecipientNode: ASDisplayNode, NavigationButtonCusto
}
}
- var isHighlightable: Bool {
+ public var isHighlightable: Bool {
return false
}
- override func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize {
+ override public func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize {
let textSize = self.textNode.updateLayout(CGSize(width: constrainedSize.width - 50.0, height: constrainedSize.height))
return CGSize(width: textSize.width + 12.0, height: 30.0)
}
- override func layout() {
+ override public func layout() {
super.layout()
if let image = self.iconNode.image {
diff --git a/submodules/TelegramUI/TelegramUI/GalleryPagerNode.swift b/submodules/GalleryUI/Sources/GalleryPagerNode.swift
similarity index 89%
rename from submodules/TelegramUI/TelegramUI/GalleryPagerNode.swift
rename to submodules/GalleryUI/Sources/GalleryPagerNode.swift
index ca32017143..fea7e407af 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryPagerNode.swift
+++ b/submodules/GalleryUI/Sources/GalleryPagerNode.swift
@@ -5,7 +5,7 @@ import Display
import SwiftSignalKit
import Postbox
-struct GalleryPagerInsertItem {
+public struct GalleryPagerInsertItem {
public let index: Int
public let item: GalleryItem
public let previousIndex: Int?
@@ -17,31 +17,38 @@ struct GalleryPagerInsertItem {
}
}
-struct GalleryPagerUpdateItem {
- let index: Int
- let previousIndex: Int
- let item: GalleryItem
+public struct GalleryPagerUpdateItem {
+ public let index: Int
+ public let previousIndex: Int
+ public let item: GalleryItem
- init(index: Int, previousIndex: Int, item: GalleryItem) {
+ public init(index: Int, previousIndex: Int, item: GalleryItem) {
self.index = index
self.previousIndex = previousIndex
self.item = item
}
}
-struct GalleryPagerTransaction {
- let deleteItems: [Int]
- let insertItems: [GalleryPagerInsertItem]
- let updateItems: [GalleryPagerUpdateItem]
- let focusOnItem: Int?
+public struct GalleryPagerTransaction {
+ public let deleteItems: [Int]
+ public let insertItems: [GalleryPagerInsertItem]
+ public let updateItems: [GalleryPagerUpdateItem]
+ public let focusOnItem: Int?
+
+ public init(deleteItems: [Int], insertItems: [GalleryPagerInsertItem], updateItems: [GalleryPagerUpdateItem], focusOnItem: Int?) {
+ self.deleteItems = deleteItems
+ self.insertItems = insertItems
+ self.updateItems = updateItems
+ self.focusOnItem = focusOnItem
+ }
}
-final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
+public final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
private let pageGap: CGFloat
private let scrollView: UIScrollView
- private(set) var items: [GalleryItem] = []
+ public private(set) var items: [GalleryItem] = []
private var itemNodes: [GalleryItemNode] = []
private var ignoreDidScroll = false
private var ignoreCentralItemIndexUpdate = false
@@ -55,16 +62,16 @@ final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
private var containerLayout: (ContainerViewLayout, CGFloat)?
- var centralItemIndexUpdated: (Int?) -> Void = { _ in }
+ public var centralItemIndexUpdated: (Int?) -> Void = { _ in }
private var invalidatedItems = false
- var centralItemIndexOffsetUpdated: (([GalleryItem]?, Int, CGFloat)?) -> Void = { _ in }
- var toggleControlsVisibility: () -> Void = { }
- var dismiss: () -> Void = { }
- var beginCustomDismiss: () -> Void = { }
- var completeCustomDismiss: () -> Void = { }
- var baseNavigationController: () -> NavigationController? = { return nil }
+ public var centralItemIndexOffsetUpdated: (([GalleryItem]?, Int, CGFloat)?) -> Void = { _ in }
+ public var toggleControlsVisibility: () -> Void = { }
+ public var dismiss: () -> Void = { }
+ public var beginCustomDismiss: () -> Void = { }
+ public var completeCustomDismiss: () -> Void = { }
+ public var baseNavigationController: () -> NavigationController? = { return nil }
- init(pageGap: CGFloat) {
+ public init(pageGap: CGFloat) {
self.pageGap = pageGap
self.scrollView = UIScrollView()
if #available(iOSApplicationExtension 11.0, iOS 11.0, *) {
@@ -85,7 +92,7 @@ final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
self.view.addSubview(self.scrollView)
}
- var isScrollEnabled: Bool {
+ public var isScrollEnabled: Bool {
get {
return self.scrollView.isScrollEnabled
}
@@ -94,7 +101,7 @@ final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
+ public func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
self.containerLayout = (layout, navigationBarHeight)
var centralPoint: CGPoint?
@@ -129,14 +136,14 @@ final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func ready() -> Signal {
+ public func ready() -> Signal {
if let itemNode = self.centralItemNode() {
return itemNode.ready()
}
return .single(Void())
}
- func centralItemNode() -> GalleryItemNode? {
+ public func centralItemNode() -> GalleryItemNode? {
if let centralItemIndex = self.centralItemIndex, let centralItemNode = self.visibleItemNode(at: centralItemIndex) {
return centralItemNode
} else {
@@ -144,7 +151,7 @@ final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func replaceItems(_ items: [GalleryItem], centralItemIndex: Int?, keepFirst: Bool = false) {
+ public func replaceItems(_ items: [GalleryItem], centralItemIndex: Int?, keepFirst: Bool = false) {
var updateItems: [GalleryPagerUpdateItem] = []
let deleteItems: [Int] = []
var insertItems: [GalleryPagerInsertItem] = []
@@ -158,7 +165,7 @@ final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
self.transaction(GalleryPagerTransaction(deleteItems: deleteItems, insertItems: insertItems, updateItems: updateItems, focusOnItem: centralItemIndex))
}
- func transaction(_ transaction: GalleryPagerTransaction) {
+ public func transaction(_ transaction: GalleryPagerTransaction) {
for updatedItem in transaction.updateItems {
self.items[updatedItem.previousIndex] = updatedItem.item
if let itemNode = self.visibleItemNode(at: updatedItem.previousIndex) {
@@ -397,23 +404,23 @@ final class GalleryPagerNode: ASDisplayNode, UIScrollViewDelegate {
self.updateCentralIndexOffset(transition: .immediate)
}
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
+ public func scrollViewDidScroll(_ scrollView: UIScrollView) {
if !self.ignoreDidScroll {
self.updateItemNodes(transition: .immediate)
}
}
- func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
+ public func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if !decelerate {
self.ensureItemsLoaded(force: false)
}
}
- func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
+ public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
self.ensureItemsLoaded(force: true)
}
- func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
+ public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
self.ensureItemsLoaded(force: true)
}
diff --git a/submodules/TelegramUI/TelegramUI/GalleryThumbnailContainerNode.swift b/submodules/GalleryUI/Sources/GalleryThumbnailContainerNode.swift
similarity index 91%
rename from submodules/TelegramUI/TelegramUI/GalleryThumbnailContainerNode.swift
rename to submodules/GalleryUI/Sources/GalleryThumbnailContainerNode.swift
index 88e1ccffbb..6f373b8a7c 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryThumbnailContainerNode.swift
+++ b/submodules/GalleryUI/Sources/GalleryThumbnailContainerNode.swift
@@ -8,7 +8,7 @@ private let itemBaseSize = CGSize(width: 23.0, height: 42.0)
private let spacing: CGFloat = 2.0
private let maxWidth: CGFloat = 75.0
-protocol GalleryThumbnailItem {
+public protocol GalleryThumbnailItem {
func isEqual(to: GalleryThumbnailItem) -> Bool
var image: (Signal<(TransformImageArguments) -> DrawingContext?, NoError>, CGSize) { get }
}
@@ -48,12 +48,12 @@ private final class GalleryThumbnailItemNode: ASDisplayNode {
}
}
-final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
- let groupId: Int64
+public final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
+ public let groupId: Int64
private let scrollNode: ASScrollNode
- private(set) var items: [GalleryThumbnailItem] = []
- private(set) var indexes: [Int] = []
+ public private(set) var items: [GalleryThumbnailItem] = []
+ public private(set) var indexes: [Int] = []
private var itemNodes: [GalleryThumbnailItemNode] = []
private var centralIndexAndProgress: (Int, CGFloat?)?
private var currentLayout: CGSize?
@@ -62,7 +62,7 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
public var itemChanged: ((Int) -> Void)?
- init(groupId: Int64) {
+ public init(groupId: Int64) {
self.groupId = groupId
self.scrollNode = ASScrollNode()
@@ -86,7 +86,7 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func updateItems(_ items: [GalleryThumbnailItem], indexes: [Int], centralIndex: Int, progress: CGFloat) {
+ public func updateItems(_ items: [GalleryThumbnailItem], indexes: [Int], centralIndex: Int, progress: CGFloat) {
self.indexes = indexes
var items: [GalleryThumbnailItem] = items.count <= 1 ? [] : items
var updated = false
@@ -103,7 +103,7 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
if updated {
var itemNodes: [GalleryThumbnailItemNode] = []
for item in items {
- if let index = self.items.index(where: { $0.isEqual(to: item) }) {
+ if let index = self.items.firstIndex(where: { $0.isEqual(to: item) }) {
itemNodes.append(self.itemNodes[index])
} else {
itemNodes.append(GalleryThumbnailItemNode(item: item))
@@ -129,14 +129,14 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func updateCentralIndexAndProgress(centralIndex: Int, progress: CGFloat, transition: ContainedViewLayoutTransition = .immediate) {
+ public func updateCentralIndexAndProgress(centralIndex: Int, progress: CGFloat, transition: ContainedViewLayoutTransition = .immediate) {
self.centralIndexAndProgress = (centralIndex, progress)
if let size = self.currentLayout {
self.updateLayout(size: size, transition: transition)
}
}
- func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) {
+ public func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) {
self.currentLayout = size
if let (centralIndex, progress) = self.centralIndexAndProgress {
self.updateLayout(size: size, centralIndex: centralIndex, progress: progress, transition: transition)
@@ -148,7 +148,7 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
return CGPoint(x: -contentInset.left + (CGFloat(index) + progress) * (itemBaseSize.width + spacing), y: 0.0)
}
- func updateLayout(size: CGSize, centralIndex: Int, progress: CGFloat?, transition: ContainedViewLayoutTransition) {
+ public func updateLayout(size: CGSize, centralIndex: Int, progress: CGFloat?, transition: ContainedViewLayoutTransition) {
self.currentLayout = size
self.scrollNode.frame = CGRect(origin: CGPoint(), size: size)
let centralSpacing: CGFloat = 8.0
@@ -231,7 +231,7 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func animateOut(toRight: Bool) {
+ public func animateOut(toRight: Bool) {
let collection = toRight ? self.itemNodes : self.itemNodes.reversed()
let offset: CGFloat = toRight ? -15.0 : 15.0
var delay: Double = 0.0
@@ -242,7 +242,7 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
+ public func scrollViewDidScroll(_ scrollView: UIScrollView) {
guard let currentLayout = self.currentLayout else {
return
}
@@ -267,7 +267,7 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
+ public func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
guard let currentLayout = self.currentLayout else {
return
}
@@ -283,7 +283,7 @@ final class GalleryThumbnailContainerNode: ASDisplayNode, UIScrollViewDelegate {
}
}
- func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
+ public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
guard let currentLayout = self.currentLayout, !scrollView.isTracking else {
return
}
diff --git a/submodules/GalleryUI/Sources/GalleryUI.h b/submodules/GalleryUI/Sources/GalleryUI.h
new file mode 100644
index 0000000000..96745aa2f0
--- /dev/null
+++ b/submodules/GalleryUI/Sources/GalleryUI.h
@@ -0,0 +1,19 @@
+//
+// GalleryUI.h
+// GalleryUI
+//
+// Created by Peter on 8/11/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for GalleryUI.
+FOUNDATION_EXPORT double GalleryUIVersionNumber;
+
+//! Project version string for GalleryUI.
+FOUNDATION_EXPORT const unsigned char GalleryUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift b/submodules/GalleryUI/Sources/GalleryVideoDecoration.swift
similarity index 88%
rename from submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift
rename to submodules/GalleryUI/Sources/GalleryVideoDecoration.swift
index 009e8d82c9..3a57b5d066 100644
--- a/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift
+++ b/submodules/GalleryUI/Sources/GalleryVideoDecoration.swift
@@ -7,20 +7,20 @@ import UniversalMediaPlayer
import AccountContext
import PhotoResources
-final class GalleryVideoDecoration: UniversalVideoDecoration {
- let backgroundNode: ASDisplayNode? = nil
- let contentContainerNode: ASDisplayNode
- let foregroundNode: ASDisplayNode? = nil
+public final class GalleryVideoDecoration: UniversalVideoDecoration {
+ public let backgroundNode: ASDisplayNode? = nil
+ public let contentContainerNode: ASDisplayNode
+ public let foregroundNode: ASDisplayNode? = nil
private var contentNode: (ASDisplayNode & UniversalVideoContentNode)?
private var validLayoutSize: CGSize?
- init() {
+ public init() {
self.contentContainerNode = ASDisplayNode()
}
- func updateContentNode(_ contentNode: (UniversalVideoContentNode & ASDisplayNode)?) {
+ public func updateContentNode(_ contentNode: (UniversalVideoContentNode & ASDisplayNode)?) {
if self.contentNode !== contentNode {
let previous = self.contentNode
self.contentNode = contentNode
@@ -43,7 +43,7 @@ final class GalleryVideoDecoration: UniversalVideoDecoration {
}
}
- func updateCorners(_ corners: ImageCorners) {
+ public func updateCorners(_ corners: ImageCorners) {
self.contentContainerNode.clipsToBounds = true
if isRoundEqualCorners(corners) {
self.contentContainerNode.cornerRadius = corners.topLeft.radius
@@ -70,7 +70,7 @@ final class GalleryVideoDecoration: UniversalVideoDecoration {
}
}
- func updateClippingFrame(_ frame: CGRect, completion: (() -> Void)?) {
+ public func updateClippingFrame(_ frame: CGRect, completion: (() -> Void)?) {
self.contentContainerNode.layer.animate(from: NSValue(cgRect: self.contentContainerNode.bounds), to: NSValue(cgRect: frame), keyPath: "bounds", timingFunction: kCAMediaTimingFunctionSpring, duration: 0.25, removeOnCompletion: false, completion: { _ in
})
@@ -89,10 +89,10 @@ final class GalleryVideoDecoration: UniversalVideoDecoration {
}
}
- func updateContentNodeSnapshot(_ snapshot: UIView?) {
+ public func updateContentNodeSnapshot(_ snapshot: UIView?) {
}
- func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) {
+ public func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) {
self.validLayoutSize = size
let bounds = CGRect(origin: CGPoint(), size: size)
@@ -112,9 +112,9 @@ final class GalleryVideoDecoration: UniversalVideoDecoration {
}
}
- func setStatus(_ status: Signal) {
+ public func setStatus(_ status: Signal) {
}
- func tap() {
+ public func tap() {
}
}
diff --git a/submodules/TelegramUI/TelegramUI/ChatAnimationGalleryItem.swift b/submodules/GalleryUI/Sources/Items/ChatAnimationGalleryItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatAnimationGalleryItem.swift
rename to submodules/GalleryUI/Sources/Items/ChatAnimationGalleryItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatDocumentGalleryItem.swift b/submodules/GalleryUI/Sources/Items/ChatDocumentGalleryItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatDocumentGalleryItem.swift
rename to submodules/GalleryUI/Sources/Items/ChatDocumentGalleryItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatExternalFileGalleryItem.swift b/submodules/GalleryUI/Sources/Items/ChatExternalFileGalleryItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatExternalFileGalleryItem.swift
rename to submodules/GalleryUI/Sources/Items/ChatExternalFileGalleryItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift b/submodules/GalleryUI/Sources/Items/ChatImageGalleryItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift
rename to submodules/GalleryUI/Sources/Items/ChatImageGalleryItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift b/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift
similarity index 97%
rename from submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift
rename to submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift
index 0176cd3ca2..7281d6bfcb 100644
--- a/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift
+++ b/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift
@@ -9,13 +9,14 @@ import TelegramPresentationData
import UniversalMediaPlayer
import AccountContext
import RadialStatusNode
+import TelegramUniversalVideoContent
-enum UniversalVideoGalleryItemContentInfo {
+public enum UniversalVideoGalleryItemContentInfo {
case message(Message)
case webPage(TelegramMediaWebpage, Media)
}
-class UniversalVideoGalleryItem: GalleryItem {
+public class UniversalVideoGalleryItem: GalleryItem {
let context: AccountContext
let presentationData: PresentationData
let content: UniversalVideoContent
@@ -32,7 +33,7 @@ class UniversalVideoGalleryItem: GalleryItem {
let performAction: (GalleryControllerInteractionTapAction) -> Void
let openActionOptions: (GalleryControllerInteractionTapAction) -> Void
- init(context: AccountContext, presentationData: PresentationData, content: UniversalVideoContent, originData: GalleryItemOriginData?, indexData: GalleryItemIndexData?, contentInfo: UniversalVideoGalleryItemContentInfo?, caption: NSAttributedString, credit: NSAttributedString? = nil, hideControls: Bool = false, fromPlayingVideo: Bool = false, landscape: Bool = false, timecode: Double? = nil, playbackCompleted: @escaping () -> Void = {}, performAction: @escaping (GalleryControllerInteractionTapAction) -> Void, openActionOptions: @escaping (GalleryControllerInteractionTapAction) -> Void) {
+ public init(context: AccountContext, presentationData: PresentationData, content: UniversalVideoContent, originData: GalleryItemOriginData?, indexData: GalleryItemIndexData?, contentInfo: UniversalVideoGalleryItemContentInfo?, caption: NSAttributedString, credit: NSAttributedString? = nil, hideControls: Bool = false, fromPlayingVideo: Bool = false, landscape: Bool = false, timecode: Double? = nil, playbackCompleted: @escaping () -> Void = {}, performAction: @escaping (GalleryControllerInteractionTapAction) -> Void, openActionOptions: @escaping (GalleryControllerInteractionTapAction) -> Void) {
self.context = context
self.presentationData = presentationData
self.content = content
@@ -50,7 +51,7 @@ class UniversalVideoGalleryItem: GalleryItem {
self.openActionOptions = openActionOptions
}
- func node() -> GalleryItemNode {
+ public func node() -> GalleryItemNode {
let node = UniversalVideoGalleryItemNode(context: self.context, presentationData: self.presentationData, performAction: self.performAction, openActionOptions: self.openActionOptions)
if let indexData = self.indexData {
@@ -62,7 +63,7 @@ class UniversalVideoGalleryItem: GalleryItem {
return node
}
- func updateNode(node: GalleryItemNode) {
+ public func updateNode(node: GalleryItemNode) {
if let node = node as? UniversalVideoGalleryItemNode {
if let indexData = self.indexData {
node._title.set(.single("\(indexData.position + 1) \(self.presentationData.strings.Common_of) \(indexData.totalCount)"))
@@ -72,7 +73,7 @@ class UniversalVideoGalleryItem: GalleryItem {
}
}
- func thumbnailItem() -> (Int64, GalleryThumbnailItem)? {
+ public func thumbnailItem() -> (Int64, GalleryThumbnailItem)? {
guard let contentInfo = self.contentInfo else {
return nil
}
@@ -879,7 +880,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
let fromTransform: CATransform3D
let toTransform: CATransform3D
- if let interactiveMediaNode = node.0 as? ChatMessageInteractiveMediaNode, interactiveMediaNode.automaticPlayback ?? false, videoNode.hasAttachedContext {
+ if let interactiveMediaNode = node.0 as? GalleryItemTransitionNode, interactiveMediaNode.isAvailableForGalleryTransition(), videoNode.hasAttachedContext {
copyView.removeFromSuperview()
let previousFrame = videoNode.frame
@@ -896,7 +897,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
let targetScale = max(transformedFrame.size.width / videoNode.layer.bounds.size.width, transformedFrame.size.height / videoNode.layer.bounds.size.height)
videoNode.backgroundColor = .clear
- if let bubbleDecoration = interactiveMediaNode.videoNodeDecoration, let decoration = videoNode.decoration as? GalleryVideoDecoration {
+ if let bubbleDecoration = interactiveMediaNode.decoration as? ChatBubbleVideoDecoration, let decoration = videoNode.decoration as? GalleryVideoDecoration {
transformedSuperFrame = transformedSuperFrame.offsetBy(dx: bubbleDecoration.corners.extendedEdges.right / 2.0 - bubbleDecoration.corners.extendedEdges.left / 2.0, dy: 0.0)
if let item = self.item {
let size = item.content.dimensions.aspectFilled(bubbleDecoration.contentContainerNode.frame.size)
@@ -921,7 +922,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
videoNode.continuePlayingWithoutSound()
}
}
- } else if let _ = node.0 as? InstantPagePlayableVideoNode, videoNode.hasAttachedContext {
+ } else if let _ = node.0 as? GalleryItemTransitionNode, videoNode.hasAttachedContext {
copyView.removeFromSuperview()
let previousFrame = videoNode.frame
diff --git a/submodules/TelegramUI/TelegramUI/SecretMediaPreviewController.swift b/submodules/GalleryUI/Sources/SecretMediaPreviewController.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SecretMediaPreviewController.swift
rename to submodules/GalleryUI/Sources/SecretMediaPreviewController.swift
index 17ab4b4e25..9244ec960a 100644
--- a/submodules/TelegramUI/TelegramUI/SecretMediaPreviewController.swift
+++ b/submodules/GalleryUI/Sources/SecretMediaPreviewController.swift
@@ -8,6 +8,7 @@ import SwiftSignalKit
import TelegramPresentationData
import AccountContext
import RadialStatusNode
+import ScreenCaptureDetection
private func galleryMediaForMedia(media: Media) -> Media? {
if let media = media as? TelegramMediaImage {
diff --git a/submodules/TelegramUI/TelegramUI/SecretMediaPreviewFooterContentNode.swift b/submodules/GalleryUI/Sources/SecretMediaPreviewFooterContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecretMediaPreviewFooterContentNode.swift
rename to submodules/GalleryUI/Sources/SecretMediaPreviewFooterContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ZoomableContentGalleryItemNode.swift b/submodules/GalleryUI/Sources/ZoomableContentGalleryItemNode.swift
similarity index 93%
rename from submodules/TelegramUI/TelegramUI/ZoomableContentGalleryItemNode.swift
rename to submodules/GalleryUI/Sources/ZoomableContentGalleryItemNode.swift
index 5d034a7595..7c7851232a 100644
--- a/submodules/TelegramUI/TelegramUI/ZoomableContentGalleryItemNode.swift
+++ b/submodules/GalleryUI/Sources/ZoomableContentGalleryItemNode.swift
@@ -3,15 +3,15 @@ import UIKit
import Display
import AsyncDisplayKit
-class ZoomableContentGalleryItemNode: GalleryItemNode, UIScrollViewDelegate {
- let scrollNode: ASScrollNode
+open class ZoomableContentGalleryItemNode: GalleryItemNode, UIScrollViewDelegate {
+ public let scrollNode: ASScrollNode
private var containerLayout: ContainerViewLayout?
private var ignoreZoom = false
private var ignoreZoomTransition: ContainedViewLayoutTransition?
- var zoomableContent: (CGSize, ASDisplayNode)? {
+ public var zoomableContent: (CGSize, ASDisplayNode)? {
didSet {
if oldValue?.1 !== self.zoomableContent?.1 {
if let node = oldValue?.1 {
@@ -26,7 +26,7 @@ class ZoomableContentGalleryItemNode: GalleryItemNode, UIScrollViewDelegate {
}
}
- override init() {
+ override public init() {
self.scrollNode = ASScrollNode()
if #available(iOSApplicationExtension 11.0, iOS 11.0, *) {
self.scrollNode.view.contentInsetAdjustmentBehavior = .never
@@ -51,7 +51,7 @@ class ZoomableContentGalleryItemNode: GalleryItemNode, UIScrollViewDelegate {
self.addSubnode(self.scrollNode)
}
- @objc func contentTap(_ recognizer: TapLongTapOrDoubleTapGestureRecognizer) {
+ @objc open func contentTap(_ recognizer: TapLongTapOrDoubleTapGestureRecognizer) {
if recognizer.state == .ended {
if let (gesture, location) = recognizer.lastRecognizedGestureAndLocation {
switch gesture {
@@ -82,7 +82,7 @@ class ZoomableContentGalleryItemNode: GalleryItemNode, UIScrollViewDelegate {
}
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
+ override open func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: transition)
var shouldResetContents = false
@@ -194,11 +194,11 @@ class ZoomableContentGalleryItemNode: GalleryItemNode, UIScrollViewDelegate {
}
}
- func viewForZooming(in scrollView: UIScrollView) -> UIView? {
+ open func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.zoomableContent?.1.view
}
- func scrollViewDidZoom(_ scrollView: UIScrollView) {
+ open func scrollViewDidZoom(_ scrollView: UIScrollView) {
if !self.ignoreZoom {
self.centerScrollViewContents(transition: self.ignoreZoomTransition ?? .immediate)
}
@@ -209,7 +209,7 @@ class ZoomableContentGalleryItemNode: GalleryItemNode, UIScrollViewDelegate {
}
}
- override func contentSize() -> CGSize? {
+ override open func contentSize() -> CGSize? {
if let (_, contentNode) = self.zoomableContent {
let size = contentNode.view.convert(contentNode.bounds, to: self.view).size
return CGSize(width: floor(size.width), height: floor(size.height))
diff --git a/submodules/GameUI/GameUI_Xcode.xcodeproj/project.pbxproj b/submodules/GameUI/GameUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..d8823adb7f
--- /dev/null
+++ b/submodules/GameUI/GameUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,591 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C18E22FFA17D00FAB518 /* GameUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C18C22FFA17D00FAB518 /* GameUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C19B23001E2700FAB518 /* GameControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C19823001E2700FAB518 /* GameControllerNode.swift */; };
+ D0C9C19C23001E2700FAB518 /* GameControllerTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C19923001E2700FAB518 /* GameControllerTitleView.swift */; };
+ D0C9C19D23001E2700FAB518 /* GameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C19A23001E2700FAB518 /* GameController.swift */; };
+ D0C9C1A023001E5A00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C19F23001E5A00FAB518 /* Foundation.framework */; };
+ D0C9C1A223001EFD00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1A123001EFD00FAB518 /* UIKit.framework */; };
+ D0C9C1A423001F0000FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1A323001F0000FAB518 /* Display.framework */; };
+ D0C9C1A623001F0400FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1A523001F0400FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9C1A823001F0800FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1A723001F0800FAB518 /* TelegramCore.framework */; };
+ D0C9C1AA23001F0D00FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1A923001F0D00FAB518 /* SwiftSignalKit.framework */; };
+ D0C9C1AC23001F1300FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1AB23001F1300FAB518 /* Postbox.framework */; };
+ D0C9C1AE23001F1900FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1AD23001F1900FAB518 /* TelegramPresentationData.framework */; };
+ D0C9C1B023001F1D00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1AF23001F1D00FAB518 /* AccountContext.framework */; };
+ D0C9C1B223001F2500FAB518 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1B123001F2500FAB518 /* WebKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+ D0C9C1B423001F3D00FAB518 /* ShareController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C1B323001F3D00FAB518 /* ShareController.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C18922FFA17D00FAB518 /* GameUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GameUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C18C22FFA17D00FAB518 /* GameUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GameUI.h; sourceTree = ""; };
+ D0C9C18D22FFA17D00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C19823001E2700FAB518 /* GameControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameControllerNode.swift; sourceTree = ""; };
+ D0C9C19923001E2700FAB518 /* GameControllerTitleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameControllerTitleView.swift; sourceTree = ""; };
+ D0C9C19A23001E2700FAB518 /* GameController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameController.swift; sourceTree = ""; };
+ D0C9C19F23001E5A00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C1A123001EFD00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C1A323001F0000FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C1A523001F0400FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C1A723001F0800FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C1A923001F0D00FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C1AB23001F1300FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C1AD23001F1900FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C1AF23001F1D00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C1B123001F2500FAB518 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
+ D0C9C1B323001F3D00FAB518 /* ShareController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ShareController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C18622FFA17D00FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C1B423001F3D00FAB518 /* ShareController.framework in Frameworks */,
+ D0C9C1B223001F2500FAB518 /* WebKit.framework in Frameworks */,
+ D0C9C1B023001F1D00FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9C1AE23001F1900FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C1AC23001F1300FAB518 /* Postbox.framework in Frameworks */,
+ D0C9C1AA23001F0D00FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9C1A823001F0800FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9C1A623001F0400FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9C1A423001F0000FAB518 /* Display.framework in Frameworks */,
+ D0C9C1A223001EFD00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C1A023001E5A00FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C17F22FFA17D00FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C18D22FFA17D00FAB518 /* Info.plist */,
+ D0C9C18B22FFA17D00FAB518 /* Sources */,
+ D0C9C18A22FFA17D00FAB518 /* Products */,
+ D0C9C19E23001E5A00FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C18A22FFA17D00FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C18922FFA17D00FAB518 /* GameUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C18B22FFA17D00FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C19A23001E2700FAB518 /* GameController.swift */,
+ D0C9C19823001E2700FAB518 /* GameControllerNode.swift */,
+ D0C9C19923001E2700FAB518 /* GameControllerTitleView.swift */,
+ D0C9C18C22FFA17D00FAB518 /* GameUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C19E23001E5A00FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C1B323001F3D00FAB518 /* ShareController.framework */,
+ D0C9C1B123001F2500FAB518 /* WebKit.framework */,
+ D0C9C1AF23001F1D00FAB518 /* AccountContext.framework */,
+ D0C9C1AD23001F1900FAB518 /* TelegramPresentationData.framework */,
+ D0C9C1AB23001F1300FAB518 /* Postbox.framework */,
+ D0C9C1A923001F0D00FAB518 /* SwiftSignalKit.framework */,
+ D0C9C1A723001F0800FAB518 /* TelegramCore.framework */,
+ D0C9C1A523001F0400FAB518 /* AsyncDisplayKit.framework */,
+ D0C9C1A323001F0000FAB518 /* Display.framework */,
+ D0C9C1A123001EFD00FAB518 /* UIKit.framework */,
+ D0C9C19F23001E5A00FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C18422FFA17D00FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C18E22FFA17D00FAB518 /* GameUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C18822FFA17D00FAB518 /* GameUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C19122FFA17D00FAB518 /* Build configuration list for PBXNativeTarget "GameUI" */;
+ buildPhases = (
+ D0C9C18422FFA17D00FAB518 /* Headers */,
+ D0C9C18522FFA17D00FAB518 /* Sources */,
+ D0C9C18622FFA17D00FAB518 /* Frameworks */,
+ D0C9C18722FFA17D00FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = GameUI;
+ productName = GameUI;
+ productReference = D0C9C18922FFA17D00FAB518 /* GameUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C18022FFA17D00FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C18822FFA17D00FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C18322FFA17D00FAB518 /* Build configuration list for PBXProject "GameUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C17F22FFA17D00FAB518;
+ productRefGroup = D0C9C18A22FFA17D00FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C18822FFA17D00FAB518 /* GameUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C18722FFA17D00FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C18522FFA17D00FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C19B23001E2700FAB518 /* GameControllerNode.swift in Sources */,
+ D0C9C19D23001E2700FAB518 /* GameController.swift in Sources */,
+ D0C9C19C23001E2700FAB518 /* GameControllerTitleView.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C18F22FFA17D00FAB518 /* 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;
+ };
+ D0C9C19022FFA17D00FAB518 /* 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;
+ };
+ D0C9C19222FFA17D00FAB518 /* 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.GameUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C19322FFA17D00FAB518 /* 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.GameUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C19423001D9F00FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C19523001D9F00FAB518 /* DebugHockeyapp */ = {
+ 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.GameUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C19623001DBE00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C19723001DBE00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.GameUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C18322FFA17D00FAB518 /* Build configuration list for PBXProject "GameUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C18F22FFA17D00FAB518 /* DebugAppStoreLLC */,
+ D0C9C19423001D9F00FAB518 /* DebugHockeyapp */,
+ D0C9C19022FFA17D00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C19623001DBE00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C19122FFA17D00FAB518 /* Build configuration list for PBXNativeTarget "GameUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C19222FFA17D00FAB518 /* DebugAppStoreLLC */,
+ D0C9C19523001D9F00FAB518 /* DebugHockeyapp */,
+ D0C9C19322FFA17D00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C19723001DBE00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C18022FFA17D00FAB518 /* Project object */;
+}
diff --git a/submodules/GameUI/Info.plist b/submodules/GameUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/GameUI/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/GameController.swift b/submodules/GameUI/Sources/GameController.swift
similarity index 83%
rename from submodules/TelegramUI/TelegramUI/GameController.swift
rename to submodules/GameUI/Sources/GameController.swift
index 6c17dce60f..d82d782767 100644
--- a/submodules/TelegramUI/TelegramUI/GameController.swift
+++ b/submodules/GameUI/Sources/GameController.swift
@@ -8,7 +8,7 @@ import Postbox
import TelegramPresentationData
import AccountContext
-final class GameController: ViewController {
+public final class GameController: ViewController {
private var controllerNode: GameControllerNode {
return self.displayNode as! GameControllerNode
}
@@ -19,7 +19,7 @@ final class GameController: ViewController {
private var presentationData: PresentationData
- init(context: AccountContext, url: String, message: Message) {
+ public init(context: AccountContext, url: String, message: Message) {
self.context = context
self.url = url
self.message = message
@@ -53,7 +53,7 @@ final class GameController: ViewController {
}
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@@ -61,38 +61,37 @@ final class GameController: ViewController {
assert(true)
}
- @objc func closePressed() {
+ @objc private func closePressed() {
self.dismiss()
}
- @objc func sharePressed() {
+ @objc private func sharePressed() {
self.controllerNode.shareWithoutScore()
}
- override func loadDisplayNode() {
+ override public func loadDisplayNode() {
self.displayNode = GameControllerNode(context: self.context, presentationData: self.presentationData, url: self.url, present: { [weak self] c, a in
self?.present(c, in: .window(.root), with: a)
}, message: self.message)
}
- override func dismiss(completion: (() -> Void)? = nil) {
+ override public func dismiss(completion: (() -> Void)? = nil) {
self.controllerNode.animateOut(completion: { [weak self] in
self?.presentingViewController?.dismiss(animated: false, completion: nil)
completion?()
})
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
+ override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, transition: transition)
self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition)
}
- override var presentationController: UIPresentationController? {
+ override public var presentationController: UIPresentationController? {
get {
return nil
} set(value) {
-
}
}
}
diff --git a/submodules/TelegramUI/TelegramUI/GameControllerNode.swift b/submodules/GameUI/Sources/GameControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/GameControllerNode.swift
rename to submodules/GameUI/Sources/GameControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/GameControllerTitleView.swift b/submodules/GameUI/Sources/GameControllerTitleView.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/GameControllerTitleView.swift
rename to submodules/GameUI/Sources/GameControllerTitleView.swift
index d8fe704e93..528d9828b1 100644
--- a/submodules/TelegramUI/TelegramUI/GameControllerTitleView.swift
+++ b/submodules/GameUI/Sources/GameControllerTitleView.swift
@@ -5,7 +5,6 @@ import Display
import Postbox
import TelegramCore
import SwiftSignalKit
-import LegacyComponents
import TelegramPresentationData
final class GameControllerTitleView: UIView {
diff --git a/submodules/GameUI/Sources/GameUI.h b/submodules/GameUI/Sources/GameUI.h
new file mode 100644
index 0000000000..18da9568d0
--- /dev/null
+++ b/submodules/GameUI/Sources/GameUI.h
@@ -0,0 +1,19 @@
+//
+// GameUI.h
+// GameUI
+//
+// Created by Peter on 8/11/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for GameUI.
+FOUNDATION_EXPORT double GameUIVersionNumber;
+
+//! Project version string for GameUI.
+FOUNDATION_EXPORT const unsigned char GameUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/ImageCompression/ImageCompression_Xcode.xcodeproj/project.pbxproj b/submodules/ImageCompression/ImageCompression_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..da44f63bcf
--- /dev/null
+++ b/submodules/ImageCompression/ImageCompression_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,551 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C4AB2300E50200FAB518 /* ImageCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C4A92300E50200FAB518 /* ImageCompression.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C4B62300E57200FAB518 /* ImageCompression.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4B52300E57200FAB518 /* ImageCompression.swift */; };
+ D0C9C4B92300E59B00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4B82300E59A00FAB518 /* Foundation.framework */; };
+ D0C9C4BB2300E59C00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4BA2300E59C00FAB518 /* UIKit.framework */; };
+ D0C9C4BD2300E5A000FAB518 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4BC2300E5A000FAB518 /* AVFoundation.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C4A62300E50200FAB518 /* ImageCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ImageCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4A92300E50200FAB518 /* ImageCompression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImageCompression.h; sourceTree = ""; };
+ D0C9C4AA2300E50200FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C4B52300E57200FAB518 /* ImageCompression.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageCompression.swift; sourceTree = ""; };
+ D0C9C4B82300E59A00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C4BA2300E59C00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C4BC2300E5A000FAB518 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C4A32300E50200FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C4BD2300E5A000FAB518 /* AVFoundation.framework in Frameworks */,
+ D0C9C4BB2300E59C00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C4B92300E59B00FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C49C2300E50200FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4AA2300E50200FAB518 /* Info.plist */,
+ D0C9C4A82300E50200FAB518 /* Sources */,
+ D0C9C4A72300E50200FAB518 /* Products */,
+ D0C9C4B72300E59900FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C4A72300E50200FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4A62300E50200FAB518 /* ImageCompression.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C4A82300E50200FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4B52300E57200FAB518 /* ImageCompression.swift */,
+ D0C9C4A92300E50200FAB518 /* ImageCompression.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C4B72300E59900FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4BC2300E5A000FAB518 /* AVFoundation.framework */,
+ D0C9C4BA2300E59C00FAB518 /* UIKit.framework */,
+ D0C9C4B82300E59A00FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C4A12300E50200FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C4AB2300E50200FAB518 /* ImageCompression.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C4A52300E50200FAB518 /* ImageCompression */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C4AE2300E50200FAB518 /* Build configuration list for PBXNativeTarget "ImageCompression" */;
+ buildPhases = (
+ D0C9C4A12300E50200FAB518 /* Headers */,
+ D0C9C4A22300E50200FAB518 /* Sources */,
+ D0C9C4A32300E50200FAB518 /* Frameworks */,
+ D0C9C4A42300E50200FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ImageCompression;
+ productName = ImageCompression;
+ productReference = D0C9C4A62300E50200FAB518 /* ImageCompression.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C49D2300E50200FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C4A52300E50200FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C4A02300E50200FAB518 /* Build configuration list for PBXProject "ImageCompression_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C49C2300E50200FAB518;
+ productRefGroup = D0C9C4A72300E50200FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C4A52300E50200FAB518 /* ImageCompression */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C4A42300E50200FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C4A22300E50200FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C4B62300E57200FAB518 /* ImageCompression.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C4AC2300E50200FAB518 /* 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;
+ };
+ D0C9C4AD2300E50200FAB518 /* 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;
+ };
+ D0C9C4AF2300E50200FAB518 /* 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.ImageCompression;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C4B02300E50200FAB518 /* 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.ImageCompression;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C4B12300E53B00FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C4B22300E53B00FAB518 /* DebugHockeyapp */ = {
+ 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.ImageCompression;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C4B32300E54900FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C4B42300E54900FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.ImageCompression;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C4A02300E50200FAB518 /* Build configuration list for PBXProject "ImageCompression_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C4AC2300E50200FAB518 /* DebugAppStoreLLC */,
+ D0C9C4B12300E53B00FAB518 /* DebugHockeyapp */,
+ D0C9C4AD2300E50200FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C4B32300E54900FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C4AE2300E50200FAB518 /* Build configuration list for PBXNativeTarget "ImageCompression" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C4AF2300E50200FAB518 /* DebugAppStoreLLC */,
+ D0C9C4B22300E53B00FAB518 /* DebugHockeyapp */,
+ D0C9C4B02300E50200FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C4B42300E54900FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C49D2300E50200FAB518 /* Project object */;
+}
diff --git a/submodules/ImageCompression/Info.plist b/submodules/ImageCompression/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/ImageCompression/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/ImageCompression/Sources/ImageCompression.h b/submodules/ImageCompression/Sources/ImageCompression.h
new file mode 100644
index 0000000000..b0c98db10b
--- /dev/null
+++ b/submodules/ImageCompression/Sources/ImageCompression.h
@@ -0,0 +1,19 @@
+//
+// ImageCompression.h
+// ImageCompression
+//
+// Created by Peter on 8/12/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for ImageCompression.
+FOUNDATION_EXPORT double ImageCompressionVersionNumber;
+
+//! Project version string for ImageCompression.
+FOUNDATION_EXPORT const unsigned char ImageCompressionVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ImageCompression.swift b/submodules/ImageCompression/Sources/ImageCompression.swift
similarity index 86%
rename from submodules/TelegramUI/TelegramUI/ImageCompression.swift
rename to submodules/ImageCompression/Sources/ImageCompression.swift
index 6397b1e429..b4fd52325b 100644
--- a/submodules/TelegramUI/TelegramUI/ImageCompression.swift
+++ b/submodules/ImageCompression/Sources/ImageCompression.swift
@@ -1,13 +1,8 @@
import Foundation
import AVFoundation
import UIKit
-import Display
-import TelegramCore
-import Postbox
-import TelegramUIPrivateModule
-
-func compressImageToJPEG(_ image: UIImage, quality: Float) -> Data? {
+public func compressImageToJPEG(_ image: UIImage, quality: Float) -> Data? {
let data = NSMutableData()
guard let destination = CGImageDestinationCreateWithData(data as CFMutableData, "public.jpeg" as CFString, 1, nil) else {
return nil
@@ -30,7 +25,7 @@ func compressImageToJPEG(_ image: UIImage, quality: Float) -> Data? {
}
@available(iOSApplicationExtension 11.0, iOS 11.0, *)
-func compressImage(_ image: UIImage, quality: Float) -> Data? {
+public func compressImage(_ image: UIImage, quality: Float) -> Data? {
let data = NSMutableData()
guard let destination = CGImageDestinationCreateWithData(data as CFMutableData, AVFileType.heic as CFString, 1, nil) else {
return nil
diff --git a/submodules/LegacyUI/Info.plist b/submodules/LegacyUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/LegacyUI/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/LegacyUI/LegacyUI_Xcode.xcodeproj/project.pbxproj b/submodules/LegacyUI/LegacyUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..205fd2a02c
--- /dev/null
+++ b/submodules/LegacyUI/LegacyUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,627 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C45F2300E24D00FAB518 /* LegacyUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C45D2300E24D00FAB518 /* LegacyUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C46C2300E2D700FAB518 /* LegacyEmptyController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4692300E2D700FAB518 /* LegacyEmptyController.swift */; };
+ D0C9C46D2300E2D700FAB518 /* LegacyControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C46A2300E2D700FAB518 /* LegacyControllerNode.swift */; };
+ D0C9C46E2300E2D700FAB518 /* LegacyController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C46B2300E2D700FAB518 /* LegacyController.swift */; };
+ D0C9C4712300E2E800FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4702300E2E800FAB518 /* Foundation.framework */; };
+ D0C9C4732300E2EC00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4722300E2EC00FAB518 /* UIKit.framework */; };
+ D0C9C4752300E2F100FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4742300E2F100FAB518 /* Display.framework */; };
+ D0C9C4772300E2F400FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4762300E2F400FAB518 /* SwiftSignalKit.framework */; };
+ D0C9C4792300E2F900FAB518 /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4782300E2F900FAB518 /* LegacyComponents.framework */; };
+ D0C9C47B2300E2FD00FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C47A2300E2FD00FAB518 /* TelegramPresentationData.framework */; };
+ D0C9C4812300E35400FAB518 /* TelegramInitializeLegacyComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4802300E35400FAB518 /* TelegramInitializeLegacyComponents.swift */; };
+ D0C9C4832300E35E00FAB518 /* MtProtoKitDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4822300E35E00FAB518 /* MtProtoKitDynamic.framework */; };
+ D0C9C4852300E36A00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4842300E36A00FAB518 /* Postbox.framework */; };
+ D0C9C4872300E36F00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4862300E36F00FAB518 /* TelegramCore.framework */; };
+ D0C9C4892300E37900FAB518 /* DeviceAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4882300E37900FAB518 /* DeviceAccess.framework */; };
+ D0C9C48B2300E37F00FAB518 /* TelegramAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C48A2300E37F00FAB518 /* TelegramAudio.framework */; };
+ D0C9C48D2300E38700FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C48C2300E38700FAB518 /* AccountContext.framework */; };
+ D0C9C48F2300E3B500FAB518 /* LegacyComponentsStickers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C48E2300E3B500FAB518 /* LegacyComponentsStickers.swift */; };
+ D0C9C4922300E3DA00FAB518 /* LegacyHTTPOperationImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4902300E3DA00FAB518 /* LegacyHTTPOperationImpl.swift */; };
+ D0C9C4932300E3DA00FAB518 /* LegacyPeerAvatarPlaceholderDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4912300E3DA00FAB518 /* LegacyPeerAvatarPlaceholderDataSource.swift */; };
+ D0C9C4952300E3E900FAB518 /* LegacyLocationVenueIconDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4942300E3E900FAB518 /* LegacyLocationVenueIconDataSource.swift */; };
+ D0C9C4972300E3FC00FAB518 /* LegacyImageDownloadActor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4962300E3FC00FAB518 /* LegacyImageDownloadActor.swift */; };
+ D0C9C4992300E42D00FAB518 /* LegacyMediaLocations.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4982300E42D00FAB518 /* LegacyMediaLocations.swift */; };
+ D0C9C49B2300E4C300FAB518 /* LegacyNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C49A2300E4C300FAB518 /* LegacyNavigationController.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C45A2300E24D00FAB518 /* LegacyUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LegacyUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C45D2300E24D00FAB518 /* LegacyUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LegacyUI.h; sourceTree = ""; };
+ D0C9C45E2300E24D00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C4692300E2D700FAB518 /* LegacyEmptyController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyEmptyController.swift; sourceTree = ""; };
+ D0C9C46A2300E2D700FAB518 /* LegacyControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyControllerNode.swift; sourceTree = ""; };
+ D0C9C46B2300E2D700FAB518 /* LegacyController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyController.swift; sourceTree = ""; };
+ D0C9C4702300E2E800FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C4722300E2EC00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C4742300E2F100FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4762300E2F400FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4782300E2F900FAB518 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C47A2300E2FD00FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4802300E35400FAB518 /* TelegramInitializeLegacyComponents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelegramInitializeLegacyComponents.swift; sourceTree = ""; };
+ D0C9C4822300E35E00FAB518 /* MtProtoKitDynamic.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MtProtoKitDynamic.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4842300E36A00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4862300E36F00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4882300E37900FAB518 /* DeviceAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeviceAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C48A2300E37F00FAB518 /* TelegramAudio.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramAudio.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C48C2300E38700FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C48E2300E3B500FAB518 /* LegacyComponentsStickers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyComponentsStickers.swift; sourceTree = ""; };
+ D0C9C4902300E3DA00FAB518 /* LegacyHTTPOperationImpl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyHTTPOperationImpl.swift; sourceTree = ""; };
+ D0C9C4912300E3DA00FAB518 /* LegacyPeerAvatarPlaceholderDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyPeerAvatarPlaceholderDataSource.swift; sourceTree = ""; };
+ D0C9C4942300E3E900FAB518 /* LegacyLocationVenueIconDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyLocationVenueIconDataSource.swift; sourceTree = ""; };
+ D0C9C4962300E3FC00FAB518 /* LegacyImageDownloadActor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyImageDownloadActor.swift; sourceTree = ""; };
+ D0C9C4982300E42D00FAB518 /* LegacyMediaLocations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyMediaLocations.swift; sourceTree = ""; };
+ D0C9C49A2300E4C300FAB518 /* LegacyNavigationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyNavigationController.swift; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C4572300E24D00FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C48D2300E38700FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9C48B2300E37F00FAB518 /* TelegramAudio.framework in Frameworks */,
+ D0C9C4892300E37900FAB518 /* DeviceAccess.framework in Frameworks */,
+ D0C9C4872300E36F00FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9C4852300E36A00FAB518 /* Postbox.framework in Frameworks */,
+ D0C9C4832300E35E00FAB518 /* MtProtoKitDynamic.framework in Frameworks */,
+ D0C9C47B2300E2FD00FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C4792300E2F900FAB518 /* LegacyComponents.framework in Frameworks */,
+ D0C9C4772300E2F400FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9C4752300E2F100FAB518 /* Display.framework in Frameworks */,
+ D0C9C4732300E2EC00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C4712300E2E800FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C4502300E24D00FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C45E2300E24D00FAB518 /* Info.plist */,
+ D0C9C45C2300E24D00FAB518 /* Sources */,
+ D0C9C45B2300E24D00FAB518 /* Products */,
+ D0C9C46F2300E2E800FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C45B2300E24D00FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C45A2300E24D00FAB518 /* LegacyUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C45C2300E24D00FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C49A2300E4C300FAB518 /* LegacyNavigationController.swift */,
+ D0C9C4982300E42D00FAB518 /* LegacyMediaLocations.swift */,
+ D0C9C4962300E3FC00FAB518 /* LegacyImageDownloadActor.swift */,
+ D0C9C4942300E3E900FAB518 /* LegacyLocationVenueIconDataSource.swift */,
+ D0C9C4902300E3DA00FAB518 /* LegacyHTTPOperationImpl.swift */,
+ D0C9C4912300E3DA00FAB518 /* LegacyPeerAvatarPlaceholderDataSource.swift */,
+ D0C9C48E2300E3B500FAB518 /* LegacyComponentsStickers.swift */,
+ D0C9C4802300E35400FAB518 /* TelegramInitializeLegacyComponents.swift */,
+ D0C9C46B2300E2D700FAB518 /* LegacyController.swift */,
+ D0C9C46A2300E2D700FAB518 /* LegacyControllerNode.swift */,
+ D0C9C4692300E2D700FAB518 /* LegacyEmptyController.swift */,
+ D0C9C45D2300E24D00FAB518 /* LegacyUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C46F2300E2E800FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C48C2300E38700FAB518 /* AccountContext.framework */,
+ D0C9C48A2300E37F00FAB518 /* TelegramAudio.framework */,
+ D0C9C4882300E37900FAB518 /* DeviceAccess.framework */,
+ D0C9C4862300E36F00FAB518 /* TelegramCore.framework */,
+ D0C9C4842300E36A00FAB518 /* Postbox.framework */,
+ D0C9C4822300E35E00FAB518 /* MtProtoKitDynamic.framework */,
+ D0C9C47A2300E2FD00FAB518 /* TelegramPresentationData.framework */,
+ D0C9C4782300E2F900FAB518 /* LegacyComponents.framework */,
+ D0C9C4762300E2F400FAB518 /* SwiftSignalKit.framework */,
+ D0C9C4742300E2F100FAB518 /* Display.framework */,
+ D0C9C4722300E2EC00FAB518 /* UIKit.framework */,
+ D0C9C4702300E2E800FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C4552300E24D00FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C45F2300E24D00FAB518 /* LegacyUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C4592300E24D00FAB518 /* LegacyUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C4622300E24D00FAB518 /* Build configuration list for PBXNativeTarget "LegacyUI" */;
+ buildPhases = (
+ D0C9C4552300E24D00FAB518 /* Headers */,
+ D0C9C4562300E24D00FAB518 /* Sources */,
+ D0C9C4572300E24D00FAB518 /* Frameworks */,
+ D0C9C4582300E24D00FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = LegacyUI;
+ productName = LegacyUI;
+ productReference = D0C9C45A2300E24D00FAB518 /* LegacyUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C4512300E24D00FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C4592300E24D00FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C4542300E24D00FAB518 /* Build configuration list for PBXProject "LegacyUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C4502300E24D00FAB518;
+ productRefGroup = D0C9C45B2300E24D00FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C4592300E24D00FAB518 /* LegacyUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C4582300E24D00FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C4562300E24D00FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C49B2300E4C300FAB518 /* LegacyNavigationController.swift in Sources */,
+ D0C9C4992300E42D00FAB518 /* LegacyMediaLocations.swift in Sources */,
+ D0C9C4972300E3FC00FAB518 /* LegacyImageDownloadActor.swift in Sources */,
+ D0C9C4932300E3DA00FAB518 /* LegacyPeerAvatarPlaceholderDataSource.swift in Sources */,
+ D0C9C46D2300E2D700FAB518 /* LegacyControllerNode.swift in Sources */,
+ D0C9C4812300E35400FAB518 /* TelegramInitializeLegacyComponents.swift in Sources */,
+ D0C9C46C2300E2D700FAB518 /* LegacyEmptyController.swift in Sources */,
+ D0C9C46E2300E2D700FAB518 /* LegacyController.swift in Sources */,
+ D0C9C4922300E3DA00FAB518 /* LegacyHTTPOperationImpl.swift in Sources */,
+ D0C9C48F2300E3B500FAB518 /* LegacyComponentsStickers.swift in Sources */,
+ D0C9C4952300E3E900FAB518 /* LegacyLocationVenueIconDataSource.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C4602300E24D00FAB518 /* 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;
+ };
+ D0C9C4612300E24D00FAB518 /* 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;
+ };
+ D0C9C4632300E24D00FAB518 /* 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.LegacyUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C4642300E24D00FAB518 /* 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.LegacyUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C4652300E28100FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C4662300E28100FAB518 /* DebugHockeyapp */ = {
+ 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.LegacyUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C4672300E28D00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C4682300E28D00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.LegacyUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C4542300E24D00FAB518 /* Build configuration list for PBXProject "LegacyUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C4602300E24D00FAB518 /* DebugAppStoreLLC */,
+ D0C9C4652300E28100FAB518 /* DebugHockeyapp */,
+ D0C9C4612300E24D00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C4672300E28D00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C4622300E24D00FAB518 /* Build configuration list for PBXNativeTarget "LegacyUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C4632300E24D00FAB518 /* DebugAppStoreLLC */,
+ D0C9C4662300E28100FAB518 /* DebugHockeyapp */,
+ D0C9C4642300E24D00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C4682300E28D00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C4512300E24D00FAB518 /* Project object */;
+}
diff --git a/submodules/TelegramUI/TelegramUI/LegacyComponentsStickers.swift b/submodules/LegacyUI/Sources/LegacyComponentsStickers.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LegacyComponentsStickers.swift
rename to submodules/LegacyUI/Sources/LegacyComponentsStickers.swift
diff --git a/submodules/TelegramUI/TelegramUI/LegacyController.swift b/submodules/LegacyUI/Sources/LegacyController.swift
similarity index 91%
rename from submodules/TelegramUI/TelegramUI/LegacyController.swift
rename to submodules/LegacyUI/Sources/LegacyController.swift
index 565e1724a1..bccfc2f78f 100644
--- a/submodules/TelegramUI/TelegramUI/LegacyController.swift
+++ b/submodules/LegacyUI/Sources/LegacyController.swift
@@ -89,11 +89,11 @@ private final class LegacyComponentsOverlayWindowManagerImpl: NSObject, LegacyCo
}
}
-final class LegacyControllerContext: NSObject, LegacyComponentsContext {
- private(set) weak var controller: ViewController?
+public final class LegacyControllerContext: NSObject, LegacyComponentsContext {
+ public private(set) weak var controller: ViewController?
private let theme: PresentationTheme?
- init(controller: ViewController?, theme: PresentationTheme?) {
+ public init(controller: ViewController?, theme: PresentationTheme?) {
self.controller = controller
self.theme = theme
@@ -234,18 +234,18 @@ final class LegacyControllerContext: NSObject, LegacyComponentsContext {
}
- func makeOverlayWindowManager() -> LegacyComponentsOverlayWindowManager! {
+ public func makeOverlayWindowManager() -> LegacyComponentsOverlayWindowManager! {
return LegacyComponentsOverlayWindowManagerImpl(parentController: self.controller, theme: self.theme)
}
- func applicationStatusBarAlpha() -> CGFloat {
+ public func applicationStatusBarAlpha() -> CGFloat {
if let controller = self.controller {
return controller.statusBar.alpha
}
return 0.0
}
- func setApplicationStatusBarAlpha(_ alpha: CGFloat) {
+ public func setApplicationStatusBarAlpha(_ alpha: CGFloat) {
if let controller = self.controller {
controller.statusBar.alpha = alpha
self.updateDeferScreenEdgeGestures()
@@ -262,18 +262,18 @@ final class LegacyControllerContext: NSObject, LegacyComponentsContext {
}
}
- func animateApplicationStatusBarAppearance(_ statusBarAnimation: Int32, delay: TimeInterval, duration: TimeInterval, completion: (() -> Void)!) {
+ public func animateApplicationStatusBarAppearance(_ statusBarAnimation: Int32, delay: TimeInterval, duration: TimeInterval, completion: (() -> Void)!) {
completion?()
}
- func animateApplicationStatusBarAppearance(_ statusBarAnimation: Int32, duration: TimeInterval, completion: (() -> Void)!) {
+ public func animateApplicationStatusBarAppearance(_ statusBarAnimation: Int32, duration: TimeInterval, completion: (() -> Void)!) {
self.animateApplicationStatusBarAppearance(statusBarAnimation, delay: 0.0, duration: duration, completion: completion)
}
- func animateApplicationStatusBarStyleTransition(withDuration duration: TimeInterval) {
+ public func animateApplicationStatusBarStyleTransition(withDuration duration: TimeInterval) {
}
- func safeAreaInset() -> UIEdgeInsets {
+ public func safeAreaInset() -> UIEdgeInsets {
if let controller = self.controller as? LegacyController, let validLayout = controller.validLayout {
var safeInsets = validLayout.safeInsets
if safeInsets.top.isEqual(to: 44.0) {
@@ -287,7 +287,7 @@ final class LegacyControllerContext: NSObject, LegacyComponentsContext {
return UIEdgeInsets()
}
- func prefersLightStatusBar() -> Bool {
+ public func prefersLightStatusBar() -> Bool {
if let controller = self.controller {
switch controller.statusBar.statusBarStyle {
case .Black:
@@ -303,7 +303,7 @@ final class LegacyControllerContext: NSObject, LegacyComponentsContext {
}
}
-public class LegacyController: ViewController, PresentableController {
+open class LegacyController: ViewController, PresentableController {
public private(set) var legacyController: UIViewController!
private let presentation: LegacyControllerPresentation
@@ -318,17 +318,17 @@ public class LegacyController: ViewController, PresentableController {
fileprivate var validLayout: ContainerViewLayout?
- var controllerLoaded: (() -> Void)?
+ public var controllerLoaded: (() -> Void)?
public var presentationCompleted: (() -> Void)?
private let sizeClass: SVariable = SVariable()
- var enableSizeClassSignal: Bool = false
- var sizeClassSignal: SSignal {
+ public var enableSizeClassSignal: Bool = false
+ public var sizeClassSignal: SSignal {
return self.sizeClass.signal()!
}
private var enableContainerLayoutUpdates = false
- var disposables = DisposableSet()
+ public var disposables = DisposableSet()
public init(presentation: LegacyControllerPresentation, theme: PresentationTheme? = nil, strings: PresentationStrings? = nil, initialLayout: ContainerViewLayout? = nil) {
self.sizeClass.set(SSignal.single(UIUserInterfaceSizeClass.compact.rawValue as NSNumber))
@@ -368,12 +368,12 @@ public class LegacyController: ViewController, PresentableController {
}
}
- override public func loadDisplayNode() {
+ override open func loadDisplayNode() {
self.displayNode = LegacyControllerNode()
self.displayNodeDidLoad()
}
- override public func viewWillAppear(_ animated: Bool) {
+ override open func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if self.ignoreAppearanceMethodInvocations() {
@@ -398,7 +398,7 @@ public class LegacyController: ViewController, PresentableController {
self.legacyController.viewWillAppear(animated && passControllerAppearanceAnimated(in: true, presentation: self.presentation))
}
- override public func viewWillDisappear(_ animated: Bool) {
+ override open func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if self.ignoreAppearanceMethodInvocations() {
@@ -410,7 +410,7 @@ public class LegacyController: ViewController, PresentableController {
private var viewDidAppearProcessed = false
- override public func viewDidAppear(_ animated: Bool) {
+ override open func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.enableContainerLayoutUpdates = true
if self.ignoreAppearanceMethodInvocations() {
@@ -448,7 +448,7 @@ public class LegacyController: ViewController, PresentableController {
}
}
- override public func viewDidDisappear(_ animated: Bool) {
+ override open func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.viewDidAppearProcessed = false
@@ -459,7 +459,7 @@ public class LegacyController: ViewController, PresentableController {
self.legacyController.viewDidDisappear(animated && passControllerAppearanceAnimated(in: false, presentation: self.presentation))
}
- override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
+ override open func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
let previousSizeClass: UIUserInterfaceSizeClass
if let validLayout = self.validLayout, case .regular = validLayout.metrics.widthClass {
previousSizeClass = .regular
@@ -523,7 +523,7 @@ public class LegacyController: ViewController, PresentableController {
}
}
- func dismissWithAnimation() {
+ public func dismissWithAnimation() {
self.controllerNode.animateModalOut { [weak self] in
self?.presentingViewController?.dismiss(animated: false, completion: nil)
}
diff --git a/submodules/TelegramUI/TelegramUI/LegacyControllerNode.swift b/submodules/LegacyUI/Sources/LegacyControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LegacyControllerNode.swift
rename to submodules/LegacyUI/Sources/LegacyControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/LegacyEmptyController.swift b/submodules/LegacyUI/Sources/LegacyEmptyController.swift
similarity index 85%
rename from submodules/TelegramUI/TelegramUI/LegacyEmptyController.swift
rename to submodules/LegacyUI/Sources/LegacyEmptyController.swift
index fc25416d48..8f4d117e79 100644
--- a/submodules/TelegramUI/TelegramUI/LegacyEmptyController.swift
+++ b/submodules/LegacyUI/Sources/LegacyEmptyController.swift
@@ -3,21 +3,21 @@ import UIKit
import LegacyComponents
import Display
-final class LegacyEmptyController: TGViewController {
- override init!(context: LegacyComponentsContext!) {
+public final class LegacyEmptyController: TGViewController {
+ override public init!(context: LegacyComponentsContext!) {
super.init(context: context)
}
- required init?(coder aDecoder: NSCoder) {
+ required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
- override func viewDidLoad() {
+ override public func viewDidLoad() {
self.view.backgroundColor = nil
self.view.isOpaque = false
}
- override func present(context generator: ((LegacyComponentsContext?) -> UIViewController?)!) {
+ override public func present(context generator: ((LegacyComponentsContext?) -> UIViewController?)!) {
if let context = self.context as? LegacyControllerContext, let controller = context.controller {
let context = legacyContextGet()
let presentationData = context?.sharedContext.currentPresentationData.with { $0 }
diff --git a/submodules/TelegramUI/TelegramUI/LegacyHTTPOperationImpl.swift b/submodules/LegacyUI/Sources/LegacyHTTPOperationImpl.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LegacyHTTPOperationImpl.swift
rename to submodules/LegacyUI/Sources/LegacyHTTPOperationImpl.swift
diff --git a/submodules/TelegramUI/TelegramUI/LegacyImageDownloadActor.swift b/submodules/LegacyUI/Sources/LegacyImageDownloadActor.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LegacyImageDownloadActor.swift
rename to submodules/LegacyUI/Sources/LegacyImageDownloadActor.swift
diff --git a/submodules/TelegramUI/TelegramUI/LegacyLocationVenueIconDataSource.swift b/submodules/LegacyUI/Sources/LegacyLocationVenueIconDataSource.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LegacyLocationVenueIconDataSource.swift
rename to submodules/LegacyUI/Sources/LegacyLocationVenueIconDataSource.swift
diff --git a/submodules/TelegramUI/TelegramUI/LegacyMediaLocations.swift b/submodules/LegacyUI/Sources/LegacyMediaLocations.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LegacyMediaLocations.swift
rename to submodules/LegacyUI/Sources/LegacyMediaLocations.swift
diff --git a/submodules/TelegramUI/TelegramUI/LegacyNavigationController.swift b/submodules/LegacyUI/Sources/LegacyNavigationController.swift
similarity index 56%
rename from submodules/TelegramUI/TelegramUI/LegacyNavigationController.swift
rename to submodules/LegacyUI/Sources/LegacyNavigationController.swift
index fa0c72acd2..76d56ee8fd 100644
--- a/submodules/TelegramUI/TelegramUI/LegacyNavigationController.swift
+++ b/submodules/LegacyUI/Sources/LegacyNavigationController.swift
@@ -2,7 +2,7 @@ import Foundation
import UIKit
import LegacyComponents
-func makeLegacyNavigationController(rootController: UIViewController) -> TGNavigationController {
+public func makeLegacyNavigationController(rootController: UIViewController) -> TGNavigationController {
return TGNavigationController.make(withRootController: rootController)
}
diff --git a/submodules/TelegramUI/TelegramUI/LegacyPeerAvatarPlaceholderDataSource.swift b/submodules/LegacyUI/Sources/LegacyPeerAvatarPlaceholderDataSource.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LegacyPeerAvatarPlaceholderDataSource.swift
rename to submodules/LegacyUI/Sources/LegacyPeerAvatarPlaceholderDataSource.swift
diff --git a/submodules/LegacyUI/Sources/LegacyUI.h b/submodules/LegacyUI/Sources/LegacyUI.h
new file mode 100644
index 0000000000..f42c305222
--- /dev/null
+++ b/submodules/LegacyUI/Sources/LegacyUI.h
@@ -0,0 +1,19 @@
+//
+// LegacyUI.h
+// LegacyUI
+//
+// Created by Peter on 8/12/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for LegacyUI.
+FOUNDATION_EXPORT double LegacyUIVersionNumber;
+
+//! Project version string for LegacyUI.
+FOUNDATION_EXPORT const unsigned char LegacyUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/TelegramInitializeLegacyComponents.swift b/submodules/LegacyUI/Sources/TelegramInitializeLegacyComponents.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/TelegramInitializeLegacyComponents.swift
rename to submodules/LegacyUI/Sources/TelegramInitializeLegacyComponents.swift
index 9d14c7a4e5..c456274e06 100644
--- a/submodules/TelegramUI/TelegramUI/TelegramInitializeLegacyComponents.swift
+++ b/submodules/LegacyUI/Sources/TelegramInitializeLegacyComponents.swift
@@ -22,7 +22,7 @@ public func updateLegacyLocalization(strings: PresentationStrings) {
legacyLocalization = TGLocalization(version: 0, code: strings.primaryComponent.languageCode, dict: strings.primaryComponent.dict, isActive: true)
}
-func updateLegacyTheme() {
+public func updateLegacyTheme() {
TGCheckButtonView.resetCache()
}
diff --git a/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift
index b12b445457..891b215e93 100644
--- a/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift
+++ b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift
@@ -75,6 +75,8 @@ private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: Unsa
let readCount = min(resourceSize - context.readingOffset, Int(bufferSize))
let requestRange: Range = context.readingOffset ..< (context.readingOffset + readCount)
+ precondition(readCount < 1 * 1024 * 1024)
+
if let maximumFetchSize = context.maximumFetchSize {
context.touchedRanges.insert(integersIn: requestRange)
var totalCount = 0
@@ -122,12 +124,14 @@ private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: Unsa
let readingOffset = context.readingOffset
let readCount = max(0, min(fileSize - readingOffset, Int(bufferSize)))
let range = readingOffset ..< (readingOffset + readCount)
+ precondition(readCount < 1 * 1024 * 1024)
lseek(fd, off_t(range.lowerBound), SEEK_SET)
var data = Data(count: readCount)
- data.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer) -> Void in
- let readBytes = read(fd, bytes, readCount)
- assert(readBytes <= readCount)
+ data.withUnsafeMutableBytes { bytes -> Void in
+ precondition(bytes.baseAddress != nil)
+ let readBytes = read(fd, bytes.baseAddress, readCount)
+ precondition(readBytes <= readCount)
}
fetchedData = data
close(fd)
@@ -143,13 +147,17 @@ private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: Unsa
let readCount = max(0, min(next.size - readingOffset, Int(bufferSize)))
let range = readingOffset ..< (readingOffset + readCount)
+ precondition(readCount < 1 * 1024 * 1024)
+
let fd = open(next.path, O_RDONLY, S_IRUSR)
if fd >= 0 {
lseek(fd, off_t(range.lowerBound), SEEK_SET)
var data = Data(count: readCount)
- data.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer) -> Void in
- let readBytes = read(fd, bytes, readCount)
+ data.withUnsafeMutableBytes { bytes -> Void in
+ precondition(bytes.baseAddress != nil)
+ let readBytes = read(fd, bytes.baseAddress, readCount)
assert(readBytes <= readCount)
+ precondition(readBytes <= readCount)
}
fetchedData = data
close(fd)
@@ -168,8 +176,9 @@ private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: Unsa
}
}
if let fetchedData = fetchedData {
- fetchedData.withUnsafeBytes { (bytes: UnsafePointer) -> Void in
- memcpy(buffer, bytes, fetchedData.count)
+ fetchedData.withUnsafeBytes { bytes -> Void in
+ precondition(bytes.baseAddress != nil)
+ memcpy(buffer, bytes.baseAddress, fetchedData.count)
}
fetchedCount = Int32(fetchedData.count)
context.readingOffset += Int(fetchedCount)
diff --git a/submodules/OpenInExternalAppUI/Info.plist b/submodules/OpenInExternalAppUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/OpenInExternalAppUI/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/OpenInExternalAppUI/OpenInExternalAppUI_Xcode.xcodeproj/project.pbxproj b/submodules/OpenInExternalAppUI/OpenInExternalAppUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..e0469f8a62
--- /dev/null
+++ b/submodules/OpenInExternalAppUI/OpenInExternalAppUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,603 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C40F2300D60C00FAB518 /* OpenInExternalAppUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C40D2300D60C00FAB518 /* OpenInExternalAppUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C41C2300D67800FAB518 /* OpenInOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4192300D67800FAB518 /* OpenInOptions.swift */; };
+ D0C9C41D2300D67800FAB518 /* OpenInActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C41A2300D67800FAB518 /* OpenInActionSheetController.swift */; };
+ D0C9C41E2300D67800FAB518 /* OpenInAppIconResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C41B2300D67800FAB518 /* OpenInAppIconResources.swift */; };
+ D0C9C4212300D68A00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4202300D68A00FAB518 /* Foundation.framework */; };
+ D0C9C4232300D68D00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4222300D68D00FAB518 /* UIKit.framework */; };
+ D0C9C4252300D69000FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4242300D69000FAB518 /* Display.framework */; };
+ D0C9C4272300D69500FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4262300D69500FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9C4292300D69900FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4282300D69900FAB518 /* SwiftSignalKit.framework */; };
+ D0C9C42B2300D69D00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C42A2300D69D00FAB518 /* Postbox.framework */; };
+ D0C9C42D2300D6A200FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C42C2300D6A200FAB518 /* TelegramCore.framework */; };
+ D0C9C42F2300D6A700FAB518 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C42E2300D6A700FAB518 /* MapKit.framework */; };
+ D0C9C4312300D6AB00FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4302300D6AB00FAB518 /* TelegramPresentationData.framework */; };
+ D0C9C4332300D6B100FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4322300D6B100FAB518 /* AccountContext.framework */; };
+ D0C9C4352300D6B500FAB518 /* PhotoResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4342300D6B500FAB518 /* PhotoResources.framework */; };
+ D0C9C4372300D6C100FAB518 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4362300D6C000FAB518 /* CoreLocation.framework */; };
+ D0C9C4392300D6C400FAB518 /* UrlEscaping.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4382300D6C400FAB518 /* UrlEscaping.framework */; };
+ D0C9C43F2300D75500FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C43E2300D75500FAB518 /* FrameworkBundle.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C40A2300D60C00FAB518 /* OpenInExternalAppUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = OpenInExternalAppUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C40D2300D60C00FAB518 /* OpenInExternalAppUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenInExternalAppUI.h; sourceTree = ""; };
+ D0C9C40E2300D60C00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C4192300D67800FAB518 /* OpenInOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenInOptions.swift; sourceTree = ""; };
+ D0C9C41A2300D67800FAB518 /* OpenInActionSheetController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenInActionSheetController.swift; sourceTree = ""; };
+ D0C9C41B2300D67800FAB518 /* OpenInAppIconResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenInAppIconResources.swift; sourceTree = ""; };
+ D0C9C4202300D68A00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C4222300D68D00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C4242300D69000FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4262300D69500FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4282300D69900FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C42A2300D69D00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C42C2300D6A200FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C42E2300D6A700FAB518 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; };
+ D0C9C4302300D6AB00FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4322300D6B100FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4342300D6B500FAB518 /* PhotoResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PhotoResources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4362300D6C000FAB518 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
+ D0C9C4382300D6C400FAB518 /* UrlEscaping.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UrlEscaping.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C43E2300D75500FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C4072300D60C00FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C4392300D6C400FAB518 /* UrlEscaping.framework in Frameworks */,
+ D0C9C4372300D6C100FAB518 /* CoreLocation.framework in Frameworks */,
+ D0C9C4352300D6B500FAB518 /* PhotoResources.framework in Frameworks */,
+ D0C9C4332300D6B100FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9C4312300D6AB00FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C42F2300D6A700FAB518 /* MapKit.framework in Frameworks */,
+ D0C9C42D2300D6A200FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9C42B2300D69D00FAB518 /* Postbox.framework in Frameworks */,
+ D0C9C4292300D69900FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9C4272300D69500FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9C4252300D69000FAB518 /* Display.framework in Frameworks */,
+ D0C9C4232300D68D00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C4212300D68A00FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C4002300D60C00FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C40E2300D60C00FAB518 /* Info.plist */,
+ D0C9C40C2300D60C00FAB518 /* Sources */,
+ D0C9C40B2300D60C00FAB518 /* Products */,
+ D0C9C41F2300D68A00FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C40B2300D60C00FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C40A2300D60C00FAB518 /* OpenInExternalAppUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C40C2300D60C00FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C41A2300D67800FAB518 /* OpenInActionSheetController.swift */,
+ D0C9C41B2300D67800FAB518 /* OpenInAppIconResources.swift */,
+ D0C9C4192300D67800FAB518 /* OpenInOptions.swift */,
+ D0C9C43E2300D75500FAB518 /* FrameworkBundle.swift */,
+ D0C9C40D2300D60C00FAB518 /* OpenInExternalAppUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C41F2300D68A00FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4382300D6C400FAB518 /* UrlEscaping.framework */,
+ D0C9C4362300D6C000FAB518 /* CoreLocation.framework */,
+ D0C9C4342300D6B500FAB518 /* PhotoResources.framework */,
+ D0C9C4322300D6B100FAB518 /* AccountContext.framework */,
+ D0C9C4302300D6AB00FAB518 /* TelegramPresentationData.framework */,
+ D0C9C42E2300D6A700FAB518 /* MapKit.framework */,
+ D0C9C42C2300D6A200FAB518 /* TelegramCore.framework */,
+ D0C9C42A2300D69D00FAB518 /* Postbox.framework */,
+ D0C9C4282300D69900FAB518 /* SwiftSignalKit.framework */,
+ D0C9C4262300D69500FAB518 /* AsyncDisplayKit.framework */,
+ D0C9C4242300D69000FAB518 /* Display.framework */,
+ D0C9C4222300D68D00FAB518 /* UIKit.framework */,
+ D0C9C4202300D68A00FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C4052300D60C00FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C40F2300D60C00FAB518 /* OpenInExternalAppUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C4092300D60C00FAB518 /* OpenInExternalAppUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C4122300D60C00FAB518 /* Build configuration list for PBXNativeTarget "OpenInExternalAppUI" */;
+ buildPhases = (
+ D0C9C4052300D60C00FAB518 /* Headers */,
+ D0C9C4062300D60C00FAB518 /* Sources */,
+ D0C9C4072300D60C00FAB518 /* Frameworks */,
+ D0C9C4082300D60C00FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = OpenInExternalAppUI;
+ productName = OpenInExternalAppUI;
+ productReference = D0C9C40A2300D60C00FAB518 /* OpenInExternalAppUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C4012300D60C00FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C4092300D60C00FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C4042300D60C00FAB518 /* Build configuration list for PBXProject "OpenInExternalAppUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C4002300D60C00FAB518;
+ productRefGroup = D0C9C40B2300D60C00FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C4092300D60C00FAB518 /* OpenInExternalAppUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C4082300D60C00FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C4062300D60C00FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C43F2300D75500FAB518 /* FrameworkBundle.swift in Sources */,
+ D0C9C41D2300D67800FAB518 /* OpenInActionSheetController.swift in Sources */,
+ D0C9C41C2300D67800FAB518 /* OpenInOptions.swift in Sources */,
+ D0C9C41E2300D67800FAB518 /* OpenInAppIconResources.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C4102300D60C00FAB518 /* 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;
+ };
+ D0C9C4112300D60C00FAB518 /* 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;
+ };
+ D0C9C4132300D60C00FAB518 /* 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.OpenInExternalAppUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C4142300D60C00FAB518 /* 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.OpenInExternalAppUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C4152300D65600FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C4162300D65600FAB518 /* DebugHockeyapp */ = {
+ 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.OpenInExternalAppUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C4172300D66100FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C4182300D66100FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.OpenInExternalAppUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C4042300D60C00FAB518 /* Build configuration list for PBXProject "OpenInExternalAppUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C4102300D60C00FAB518 /* DebugAppStoreLLC */,
+ D0C9C4152300D65600FAB518 /* DebugHockeyapp */,
+ D0C9C4112300D60C00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C4172300D66100FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C4122300D60C00FAB518 /* Build configuration list for PBXNativeTarget "OpenInExternalAppUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C4132300D60C00FAB518 /* DebugAppStoreLLC */,
+ D0C9C4162300D65600FAB518 /* DebugHockeyapp */,
+ D0C9C4142300D60C00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C4182300D66100FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C4012300D60C00FAB518 /* Project object */;
+}
diff --git a/submodules/OpenInExternalAppUI/Sources/FrameworkBundle.swift b/submodules/OpenInExternalAppUI/Sources/FrameworkBundle.swift
new file mode 100644
index 0000000000..8ca13d7d92
--- /dev/null
+++ b/submodules/OpenInExternalAppUI/Sources/FrameworkBundle.swift
@@ -0,0 +1,13 @@
+import Foundation
+import UIKit
+
+private class FrameworkBundleClass: NSObject {
+}
+
+let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self)
+
+extension UIImage {
+ convenience init?(bundleImageName: String) {
+ self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil)
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift b/submodules/OpenInExternalAppUI/Sources/OpenInActionSheetController.swift
similarity index 95%
rename from submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift
rename to submodules/OpenInExternalAppUI/Sources/OpenInActionSheetController.swift
index 4c1208b353..2b59aa3d95 100644
--- a/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift
+++ b/submodules/OpenInExternalAppUI/Sources/OpenInActionSheetController.swift
@@ -11,19 +11,24 @@ import AccountContext
import PhotoResources
public struct OpenInControllerAction {
- let title: String
- let action: () -> Void
+ public let title: String
+ public let action: () -> Void
+
+ public init(title: String, action: @escaping () -> Void) {
+ self.title = title
+ self.action = action
+ }
}
-final class OpenInActionSheetController: ActionSheetController {
+public final class OpenInActionSheetController: ActionSheetController {
private var presentationDisposable: Disposable?
private let _ready = Promise()
- override var ready: Promise {
+ override public var ready: Promise {
return self._ready
}
- init(context: AccountContext, item: OpenInItem, additionalAction: OpenInControllerAction? = nil, openUrl: @escaping (String) -> Void) {
+ public init(context: AccountContext, item: OpenInItem, additionalAction: OpenInControllerAction? = nil, openUrl: @escaping (String) -> Void) {
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let theme = presentationData.theme
let strings = presentationData.strings
@@ -77,7 +82,7 @@ final class OpenInActionSheetController: ActionSheetController {
])
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
diff --git a/submodules/TelegramUI/TelegramUI/OpenInAppIconResources.swift b/submodules/OpenInExternalAppUI/Sources/OpenInAppIconResources.swift
similarity index 96%
rename from submodules/TelegramUI/TelegramUI/OpenInAppIconResources.swift
rename to submodules/OpenInExternalAppUI/Sources/OpenInAppIconResources.swift
index d3b1856128..4c5379f68c 100644
--- a/submodules/TelegramUI/TelegramUI/OpenInAppIconResources.swift
+++ b/submodules/OpenInExternalAppUI/Sources/OpenInAppIconResources.swift
@@ -60,7 +60,7 @@ public class OpenInAppIconResource: TelegramMediaResource {
}
}
-func fetchOpenInAppIconResource(resource: OpenInAppIconResource) -> Signal {
+public func fetchOpenInAppIconResource(resource: OpenInAppIconResource) -> Signal {
return Signal { subscriber in
subscriber.putNext(.reset)
diff --git a/submodules/OpenInExternalAppUI/Sources/OpenInExternalAppUI.h b/submodules/OpenInExternalAppUI/Sources/OpenInExternalAppUI.h
new file mode 100644
index 0000000000..fa78128498
--- /dev/null
+++ b/submodules/OpenInExternalAppUI/Sources/OpenInExternalAppUI.h
@@ -0,0 +1,19 @@
+//
+// OpenInExternalAppUI.h
+// OpenInExternalAppUI
+//
+// Created by Peter on 8/12/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for OpenInExternalAppUI.
+FOUNDATION_EXPORT double OpenInExternalAppUIVersionNumber;
+
+//! Project version string for OpenInExternalAppUI.
+FOUNDATION_EXPORT const unsigned char OpenInExternalAppUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/OpenInOptions.swift b/submodules/OpenInExternalAppUI/Sources/OpenInOptions.swift
similarity index 96%
rename from submodules/TelegramUI/TelegramUI/OpenInOptions.swift
rename to submodules/OpenInExternalAppUI/Sources/OpenInOptions.swift
index 2bca820ecc..f392d0bd34 100644
--- a/submodules/TelegramUI/TelegramUI/OpenInOptions.swift
+++ b/submodules/OpenInExternalAppUI/Sources/OpenInOptions.swift
@@ -6,33 +6,33 @@ import MapKit
import AccountContext
import UrlEscaping
-enum OpenInItem {
+public enum OpenInItem {
case url(url: String)
case location(location: TelegramMediaMap, withDirections: Bool)
}
-enum OpenInApplication {
+public enum OpenInApplication {
case safari
case maps
case other(title: String, identifier: Int64, scheme: String, store: String?)
}
-enum OpenInAction {
+public enum OpenInAction {
case none
case openUrl(url: String)
case openLocation(latitude: Double, longitude: Double, withDirections: Bool)
}
-final class OpenInOption {
- let application: OpenInApplication
- let action: () -> OpenInAction
+public final class OpenInOption {
+ public let application: OpenInApplication
+ public let action: () -> OpenInAction
- init(application: OpenInApplication, action: @escaping () -> OpenInAction) {
+ public init(application: OpenInApplication, action: @escaping () -> OpenInAction) {
self.application = application
self.action = action
}
- var title: String {
+ public var title: String {
get {
switch self.application {
case .safari:
@@ -46,7 +46,7 @@ final class OpenInOption {
}
}
-func availableOpenInOptions(context: AccountContext, item: OpenInItem) -> [OpenInOption] {
+public func availableOpenInOptions(context: AccountContext, item: OpenInItem) -> [OpenInOption] {
return allOpenInOptions(context: context, item: item).filter { option in
if case let .other(_, _, scheme, _) = option.application {
return context.sharedContext.applicationBindings.canOpenUrl("\(scheme)://")
diff --git a/submodules/PassportUI/Info.plist b/submodules/PassportUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/PassportUI/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/PassportUI/PassportUI_Xcode.xcodeproj/project.pbxproj b/submodules/PassportUI/PassportUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..c38de867f1
--- /dev/null
+++ b/submodules/PassportUI/PassportUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,775 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C1F02300222100FAB518 /* PassportUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C1EE2300222100FAB518 /* PassportUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C220230022AB00FAB518 /* SecureIdValueFormFileItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C1FA230022A400FAB518 /* SecureIdValueFormFileItem.swift */; };
+ D0C9C221230022AB00FAB518 /* SecureIdDocumentGalleryFooterContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C1FB230022A400FAB518 /* SecureIdDocumentGalleryFooterContentNode.swift */; };
+ D0C9C222230022AB00FAB518 /* SecureIdDocumentImageGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C1FC230022A400FAB518 /* SecureIdDocumentImageGalleryItem.swift */; };
+ D0C9C223230022AB00FAB518 /* SecureIdAuthListFieldNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C1FD230022A400FAB518 /* SecureIdAuthListFieldNode.swift */; };
+ D0C9C224230022AB00FAB518 /* SecureIdDocumentFormController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C1FE230022A400FAB518 /* SecureIdDocumentFormController.swift */; };
+ D0C9C225230022AB00FAB518 /* SecureIdDocumentFormControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C1FF230022A400FAB518 /* SecureIdDocumentFormControllerNode.swift */; };
+ D0C9C226230022AB00FAB518 /* SecureIdValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C200230022A400FAB518 /* SecureIdValues.swift */; };
+ D0C9C227230022AB00FAB518 /* SecureIdAuthListContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C201230022A400FAB518 /* SecureIdAuthListContentNode.swift */; };
+ D0C9C228230022AB00FAB518 /* SecureIdDocumentGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C202230022A500FAB518 /* SecureIdDocumentGalleryController.swift */; };
+ D0C9C229230022AB00FAB518 /* SecureIdAuthControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C203230022A500FAB518 /* SecureIdAuthControllerNode.swift */; };
+ D0C9C22A230022AB00FAB518 /* SecureIdVerificationDocumentsContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C204230022A500FAB518 /* SecureIdVerificationDocumentsContext.swift */; };
+ D0C9C22B230022AB00FAB518 /* SecureIdValueFormPhoneItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C205230022A500FAB518 /* SecureIdValueFormPhoneItem.swift */; };
+ D0C9C22C230022AB00FAB518 /* FormControllerActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C206230022A500FAB518 /* FormControllerActionItem.swift */; };
+ D0C9C22D230022AB00FAB518 /* FormEditableBlockItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C207230022A500FAB518 /* FormEditableBlockItemNode.swift */; };
+ D0C9C22E230022AB00FAB518 /* FormControllerScrollerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C208230022A600FAB518 /* FormControllerScrollerNode.swift */; };
+ D0C9C22F230022AB00FAB518 /* FormControllerTextItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C209230022A600FAB518 /* FormControllerTextItem.swift */; };
+ D0C9C230230022AB00FAB518 /* SecureIdAuthHeaderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C20A230022A600FAB518 /* SecureIdAuthHeaderNode.swift */; };
+ D0C9C231230022AB00FAB518 /* SecureIdAuthAcceptNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C20B230022A600FAB518 /* SecureIdAuthAcceptNode.swift */; };
+ D0C9C232230022AB00FAB518 /* SecureIdDocumentTypeSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C20C230022A600FAB518 /* SecureIdDocumentTypeSelectionController.swift */; };
+ D0C9C233230022AB00FAB518 /* SecureIdAuthControllerState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C20D230022A600FAB518 /* SecureIdAuthControllerState.swift */; };
+ D0C9C234230022AB00FAB518 /* FormControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C20E230022A700FAB518 /* FormControllerNode.swift */; };
+ D0C9C235230022AB00FAB518 /* FormController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C20F230022A700FAB518 /* FormController.swift */; };
+ D0C9C236230022AB00FAB518 /* FormBlockItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C210230022A700FAB518 /* FormBlockItemNode.swift */; };
+ D0C9C237230022AB00FAB518 /* SecureIdAuthFormContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C211230022A700FAB518 /* SecureIdAuthFormContentNode.swift */; };
+ D0C9C238230022AB00FAB518 /* FormControllerTextInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C212230022A700FAB518 /* FormControllerTextInputItem.swift */; };
+ D0C9C239230022AB00FAB518 /* SecureIdAuthPasswordOptionContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C213230022A700FAB518 /* SecureIdAuthPasswordOptionContentNode.swift */; };
+ D0C9C23A230022AB00FAB518 /* SecureIdAuthPasswordSetupContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C214230022A700FAB518 /* SecureIdAuthPasswordSetupContentNode.swift */; };
+ D0C9C23B230022AB00FAB518 /* SecureIdAuthFormFieldNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C215230022A800FAB518 /* SecureIdAuthFormFieldNode.swift */; };
+ D0C9C23C230022AB00FAB518 /* SecureIdAuthController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C216230022A800FAB518 /* SecureIdAuthController.swift */; };
+ D0C9C23D230022AB00FAB518 /* FormControllerDetailActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C217230022A800FAB518 /* FormControllerDetailActionItem.swift */; };
+ D0C9C23E230022AB00FAB518 /* SecureIdLocalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C218230022A800FAB518 /* SecureIdLocalResource.swift */; };
+ D0C9C23F230022AB00FAB518 /* SecureIdPlaintextFormController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C219230022A800FAB518 /* SecureIdPlaintextFormController.swift */; };
+ D0C9C240230022AB00FAB518 /* SecureIdPlaintextFormControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C21A230022A800FAB518 /* SecureIdPlaintextFormControllerNode.swift */; };
+ D0C9C241230022AB00FAB518 /* SecureIdVerificationDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C21B230022A900FAB518 /* SecureIdVerificationDocument.swift */; };
+ D0C9C242230022AB00FAB518 /* FormControllerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C21D230022AB00FAB518 /* FormControllerItem.swift */; };
+ D0C9C243230022AB00FAB518 /* SecureIdAuthContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C21E230022AB00FAB518 /* SecureIdAuthContentNode.swift */; };
+ D0C9C244230022AB00FAB518 /* FormControllerHeaderItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C21F230022AB00FAB518 /* FormControllerHeaderItem.swift */; };
+ D0C9C247230022C100FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C246230022C100FAB518 /* UIKit.framework */; };
+ D0C9C249230022C300FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C248230022C200FAB518 /* Foundation.framework */; };
+ D0C9C24B230022C500FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C24A230022C500FAB518 /* Postbox.framework */; };
+ D0C9C24D230022C900FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C24C230022C900FAB518 /* TelegramCore.framework */; };
+ D0C9C24F230022CE00FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C24E230022CE00FAB518 /* SwiftSignalKit.framework */; };
+ D0C9C251230022D400FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C250230022D400FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9C253230022D800FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C252230022D800FAB518 /* Display.framework */; };
+ D0C9C255230022E000FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C254230022E000FAB518 /* TelegramPresentationData.framework */; };
+ D0C9C25923009EC900FAB518 /* FindSecureIdValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C25823009EC900FAB518 /* FindSecureIdValue.swift */; };
+ D0C9C2812300A04900FAB518 /* PhoneInputNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2802300A04900FAB518 /* PhoneInputNode.framework */; };
+ D0C9C2852300A0BF00FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2842300A0BF00FAB518 /* FrameworkBundle.swift */; };
+ D0C9C2B32300A1D300FAB518 /* CountrySelectionUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2B22300A1D300FAB518 /* CountrySelectionUI.framework */; };
+ D0C9C3332300AA0100FAB518 /* GalleryUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3322300AA0100FAB518 /* GalleryUI.framework */; };
+ D0C9C4492300E15E00FAB518 /* LegacySecureIdAttachmentMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C4482300E15E00FAB518 /* LegacySecureIdAttachmentMenu.swift */; };
+ D0C9C44B2300E17600FAB518 /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C44A2300E17600FAB518 /* LegacyComponents.framework */; };
+ D0C9C44D2300E17A00FAB518 /* OverlayStatusController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C44C2300E17A00FAB518 /* OverlayStatusController.framework */; };
+ D0C9C44F2300E1D600FAB518 /* LegacySecureIdScanController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C44E2300E1D600FAB518 /* LegacySecureIdScanController.swift */; };
+ D0C9C47D2300E31700FAB518 /* LegacyUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C47C2300E31700FAB518 /* LegacyUI.framework */; };
+ D0C9C4BF2300E5B400FAB518 /* ImageCompression.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4BE2300E5B400FAB518 /* ImageCompression.framework */; };
+ D0C9C4DA2300E67200FAB518 /* DateSelectionUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4D92300E67200FAB518 /* DateSelectionUI.framework */; };
+ D0C9C52D2300EFB100FAB518 /* PasswordSetupUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C52C2300EFB100FAB518 /* PasswordSetupUI.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C1EB2300222100FAB518 /* PassportUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PassportUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C1EE2300222100FAB518 /* PassportUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PassportUI.h; sourceTree = ""; };
+ D0C9C1EF2300222100FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C1FA230022A400FAB518 /* SecureIdValueFormFileItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdValueFormFileItem.swift; sourceTree = ""; };
+ D0C9C1FB230022A400FAB518 /* SecureIdDocumentGalleryFooterContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdDocumentGalleryFooterContentNode.swift; sourceTree = ""; };
+ D0C9C1FC230022A400FAB518 /* SecureIdDocumentImageGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdDocumentImageGalleryItem.swift; sourceTree = ""; };
+ D0C9C1FD230022A400FAB518 /* SecureIdAuthListFieldNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthListFieldNode.swift; sourceTree = ""; };
+ D0C9C1FE230022A400FAB518 /* SecureIdDocumentFormController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdDocumentFormController.swift; sourceTree = ""; };
+ D0C9C1FF230022A400FAB518 /* SecureIdDocumentFormControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdDocumentFormControllerNode.swift; sourceTree = ""; };
+ D0C9C200230022A400FAB518 /* SecureIdValues.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdValues.swift; sourceTree = ""; };
+ D0C9C201230022A400FAB518 /* SecureIdAuthListContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthListContentNode.swift; sourceTree = ""; };
+ D0C9C202230022A500FAB518 /* SecureIdDocumentGalleryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdDocumentGalleryController.swift; sourceTree = ""; };
+ D0C9C203230022A500FAB518 /* SecureIdAuthControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthControllerNode.swift; sourceTree = ""; };
+ D0C9C204230022A500FAB518 /* SecureIdVerificationDocumentsContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdVerificationDocumentsContext.swift; sourceTree = ""; };
+ D0C9C205230022A500FAB518 /* SecureIdValueFormPhoneItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdValueFormPhoneItem.swift; sourceTree = ""; };
+ D0C9C206230022A500FAB518 /* FormControllerActionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormControllerActionItem.swift; sourceTree = ""; };
+ D0C9C207230022A500FAB518 /* FormEditableBlockItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormEditableBlockItemNode.swift; sourceTree = ""; };
+ D0C9C208230022A600FAB518 /* FormControllerScrollerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormControllerScrollerNode.swift; sourceTree = ""; };
+ D0C9C209230022A600FAB518 /* FormControllerTextItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormControllerTextItem.swift; sourceTree = ""; };
+ D0C9C20A230022A600FAB518 /* SecureIdAuthHeaderNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthHeaderNode.swift; sourceTree = ""; };
+ D0C9C20B230022A600FAB518 /* SecureIdAuthAcceptNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthAcceptNode.swift; sourceTree = ""; };
+ D0C9C20C230022A600FAB518 /* SecureIdDocumentTypeSelectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdDocumentTypeSelectionController.swift; sourceTree = ""; };
+ D0C9C20D230022A600FAB518 /* SecureIdAuthControllerState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthControllerState.swift; sourceTree = ""; };
+ D0C9C20E230022A700FAB518 /* FormControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormControllerNode.swift; sourceTree = ""; };
+ D0C9C20F230022A700FAB518 /* FormController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormController.swift; sourceTree = ""; };
+ D0C9C210230022A700FAB518 /* FormBlockItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormBlockItemNode.swift; sourceTree = ""; };
+ D0C9C211230022A700FAB518 /* SecureIdAuthFormContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthFormContentNode.swift; sourceTree = ""; };
+ D0C9C212230022A700FAB518 /* FormControllerTextInputItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormControllerTextInputItem.swift; sourceTree = ""; };
+ D0C9C213230022A700FAB518 /* SecureIdAuthPasswordOptionContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthPasswordOptionContentNode.swift; sourceTree = ""; };
+ D0C9C214230022A700FAB518 /* SecureIdAuthPasswordSetupContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthPasswordSetupContentNode.swift; sourceTree = ""; };
+ D0C9C215230022A800FAB518 /* SecureIdAuthFormFieldNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthFormFieldNode.swift; sourceTree = ""; };
+ D0C9C216230022A800FAB518 /* SecureIdAuthController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthController.swift; sourceTree = ""; };
+ D0C9C217230022A800FAB518 /* FormControllerDetailActionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormControllerDetailActionItem.swift; sourceTree = ""; };
+ D0C9C218230022A800FAB518 /* SecureIdLocalResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdLocalResource.swift; sourceTree = ""; };
+ D0C9C219230022A800FAB518 /* SecureIdPlaintextFormController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdPlaintextFormController.swift; sourceTree = ""; };
+ D0C9C21A230022A800FAB518 /* SecureIdPlaintextFormControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdPlaintextFormControllerNode.swift; sourceTree = ""; };
+ D0C9C21B230022A900FAB518 /* SecureIdVerificationDocument.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdVerificationDocument.swift; sourceTree = ""; };
+ D0C9C21D230022AB00FAB518 /* FormControllerItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormControllerItem.swift; sourceTree = ""; };
+ D0C9C21E230022AB00FAB518 /* SecureIdAuthContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureIdAuthContentNode.swift; sourceTree = ""; };
+ D0C9C21F230022AB00FAB518 /* FormControllerHeaderItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormControllerHeaderItem.swift; sourceTree = ""; };
+ D0C9C246230022C100FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C248230022C200FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C24A230022C500FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C24C230022C900FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C24E230022CE00FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C250230022D400FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C252230022D800FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C254230022E000FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C25823009EC900FAB518 /* FindSecureIdValue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FindSecureIdValue.swift; sourceTree = ""; };
+ D0C9C2802300A04900FAB518 /* PhoneInputNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PhoneInputNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C2842300A0BF00FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; };
+ D0C9C2B22300A1D300FAB518 /* CountrySelectionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CountrySelectionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3322300AA0100FAB518 /* GalleryUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GalleryUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4482300E15E00FAB518 /* LegacySecureIdAttachmentMenu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacySecureIdAttachmentMenu.swift; sourceTree = ""; };
+ D0C9C44A2300E17600FAB518 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C44C2300E17A00FAB518 /* OverlayStatusController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = OverlayStatusController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C44E2300E1D600FAB518 /* LegacySecureIdScanController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacySecureIdScanController.swift; sourceTree = ""; };
+ D0C9C47C2300E31700FAB518 /* LegacyUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4BE2300E5B400FAB518 /* ImageCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ImageCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4D92300E67200FAB518 /* DateSelectionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DateSelectionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C52C2300EFB100FAB518 /* PasswordSetupUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PasswordSetupUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C1E82300222100FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C52D2300EFB100FAB518 /* PasswordSetupUI.framework in Frameworks */,
+ D0C9C4DA2300E67200FAB518 /* DateSelectionUI.framework in Frameworks */,
+ D0C9C4BF2300E5B400FAB518 /* ImageCompression.framework in Frameworks */,
+ D0C9C47D2300E31700FAB518 /* LegacyUI.framework in Frameworks */,
+ D0C9C44D2300E17A00FAB518 /* OverlayStatusController.framework in Frameworks */,
+ D0C9C44B2300E17600FAB518 /* LegacyComponents.framework in Frameworks */,
+ D0C9C3332300AA0100FAB518 /* GalleryUI.framework in Frameworks */,
+ D0C9C2B32300A1D300FAB518 /* CountrySelectionUI.framework in Frameworks */,
+ D0C9C2812300A04900FAB518 /* PhoneInputNode.framework in Frameworks */,
+ D0C9C255230022E000FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C253230022D800FAB518 /* Display.framework in Frameworks */,
+ D0C9C251230022D400FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9C24F230022CE00FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9C24D230022C900FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9C24B230022C500FAB518 /* Postbox.framework in Frameworks */,
+ D0C9C249230022C300FAB518 /* Foundation.framework in Frameworks */,
+ D0C9C247230022C100FAB518 /* UIKit.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C1E12300222100FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C1EF2300222100FAB518 /* Info.plist */,
+ D0C9C1ED2300222100FAB518 /* Sources */,
+ D0C9C1EC2300222100FAB518 /* Products */,
+ D0C9C245230022BF00FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C1EC2300222100FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C1EB2300222100FAB518 /* PassportUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C1ED2300222100FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C21C230022AB00FAB518 /* Form */,
+ D0C9C20B230022A600FAB518 /* SecureIdAuthAcceptNode.swift */,
+ D0C9C21E230022AB00FAB518 /* SecureIdAuthContentNode.swift */,
+ D0C9C216230022A800FAB518 /* SecureIdAuthController.swift */,
+ D0C9C203230022A500FAB518 /* SecureIdAuthControllerNode.swift */,
+ D0C9C20D230022A600FAB518 /* SecureIdAuthControllerState.swift */,
+ D0C9C211230022A700FAB518 /* SecureIdAuthFormContentNode.swift */,
+ D0C9C215230022A800FAB518 /* SecureIdAuthFormFieldNode.swift */,
+ D0C9C20A230022A600FAB518 /* SecureIdAuthHeaderNode.swift */,
+ D0C9C201230022A400FAB518 /* SecureIdAuthListContentNode.swift */,
+ D0C9C1FD230022A400FAB518 /* SecureIdAuthListFieldNode.swift */,
+ D0C9C213230022A700FAB518 /* SecureIdAuthPasswordOptionContentNode.swift */,
+ D0C9C214230022A700FAB518 /* SecureIdAuthPasswordSetupContentNode.swift */,
+ D0C9C1FE230022A400FAB518 /* SecureIdDocumentFormController.swift */,
+ D0C9C1FF230022A400FAB518 /* SecureIdDocumentFormControllerNode.swift */,
+ D0C9C202230022A500FAB518 /* SecureIdDocumentGalleryController.swift */,
+ D0C9C1FB230022A400FAB518 /* SecureIdDocumentGalleryFooterContentNode.swift */,
+ D0C9C1FC230022A400FAB518 /* SecureIdDocumentImageGalleryItem.swift */,
+ D0C9C20C230022A600FAB518 /* SecureIdDocumentTypeSelectionController.swift */,
+ D0C9C218230022A800FAB518 /* SecureIdLocalResource.swift */,
+ D0C9C219230022A800FAB518 /* SecureIdPlaintextFormController.swift */,
+ D0C9C21A230022A800FAB518 /* SecureIdPlaintextFormControllerNode.swift */,
+ D0C9C1FA230022A400FAB518 /* SecureIdValueFormFileItem.swift */,
+ D0C9C205230022A500FAB518 /* SecureIdValueFormPhoneItem.swift */,
+ D0C9C200230022A400FAB518 /* SecureIdValues.swift */,
+ D0C9C21B230022A900FAB518 /* SecureIdVerificationDocument.swift */,
+ D0C9C204230022A500FAB518 /* SecureIdVerificationDocumentsContext.swift */,
+ D0C9C25823009EC900FAB518 /* FindSecureIdValue.swift */,
+ D0C9C4482300E15E00FAB518 /* LegacySecureIdAttachmentMenu.swift */,
+ D0C9C44E2300E1D600FAB518 /* LegacySecureIdScanController.swift */,
+ D0C9C2842300A0BF00FAB518 /* FrameworkBundle.swift */,
+ D0C9C1EE2300222100FAB518 /* PassportUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C21C230022AB00FAB518 /* Form */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C210230022A700FAB518 /* FormBlockItemNode.swift */,
+ D0C9C20F230022A700FAB518 /* FormController.swift */,
+ D0C9C206230022A500FAB518 /* FormControllerActionItem.swift */,
+ D0C9C217230022A800FAB518 /* FormControllerDetailActionItem.swift */,
+ D0C9C21F230022AB00FAB518 /* FormControllerHeaderItem.swift */,
+ D0C9C21D230022AB00FAB518 /* FormControllerItem.swift */,
+ D0C9C20E230022A700FAB518 /* FormControllerNode.swift */,
+ D0C9C208230022A600FAB518 /* FormControllerScrollerNode.swift */,
+ D0C9C212230022A700FAB518 /* FormControllerTextInputItem.swift */,
+ D0C9C209230022A600FAB518 /* FormControllerTextItem.swift */,
+ D0C9C207230022A500FAB518 /* FormEditableBlockItemNode.swift */,
+ );
+ path = Form;
+ sourceTree = "";
+ };
+ D0C9C245230022BF00FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C52C2300EFB100FAB518 /* PasswordSetupUI.framework */,
+ D0C9C4D92300E67200FAB518 /* DateSelectionUI.framework */,
+ D0C9C4BE2300E5B400FAB518 /* ImageCompression.framework */,
+ D0C9C47C2300E31700FAB518 /* LegacyUI.framework */,
+ D0C9C44C2300E17A00FAB518 /* OverlayStatusController.framework */,
+ D0C9C44A2300E17600FAB518 /* LegacyComponents.framework */,
+ D0C9C3322300AA0100FAB518 /* GalleryUI.framework */,
+ D0C9C2B22300A1D300FAB518 /* CountrySelectionUI.framework */,
+ D0C9C2802300A04900FAB518 /* PhoneInputNode.framework */,
+ D0C9C254230022E000FAB518 /* TelegramPresentationData.framework */,
+ D0C9C252230022D800FAB518 /* Display.framework */,
+ D0C9C250230022D400FAB518 /* AsyncDisplayKit.framework */,
+ D0C9C24E230022CE00FAB518 /* SwiftSignalKit.framework */,
+ D0C9C24C230022C900FAB518 /* TelegramCore.framework */,
+ D0C9C24A230022C500FAB518 /* Postbox.framework */,
+ D0C9C248230022C200FAB518 /* Foundation.framework */,
+ D0C9C246230022C100FAB518 /* UIKit.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C1E62300222100FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C1F02300222100FAB518 /* PassportUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C1EA2300222100FAB518 /* PassportUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C1F32300222100FAB518 /* Build configuration list for PBXNativeTarget "PassportUI" */;
+ buildPhases = (
+ D0C9C1E62300222100FAB518 /* Headers */,
+ D0C9C1E72300222100FAB518 /* Sources */,
+ D0C9C1E82300222100FAB518 /* Frameworks */,
+ D0C9C1E92300222100FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PassportUI;
+ productName = PassportUI;
+ productReference = D0C9C1EB2300222100FAB518 /* PassportUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C1E22300222100FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C1EA2300222100FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C1E52300222100FAB518 /* Build configuration list for PBXProject "PassportUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C1E12300222100FAB518;
+ productRefGroup = D0C9C1EC2300222100FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C1EA2300222100FAB518 /* PassportUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C1E92300222100FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C1E72300222100FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C222230022AB00FAB518 /* SecureIdDocumentImageGalleryItem.swift in Sources */,
+ D0C9C221230022AB00FAB518 /* SecureIdDocumentGalleryFooterContentNode.swift in Sources */,
+ D0C9C44F2300E1D600FAB518 /* LegacySecureIdScanController.swift in Sources */,
+ D0C9C229230022AB00FAB518 /* SecureIdAuthControllerNode.swift in Sources */,
+ D0C9C240230022AB00FAB518 /* SecureIdPlaintextFormControllerNode.swift in Sources */,
+ D0C9C4492300E15E00FAB518 /* LegacySecureIdAttachmentMenu.swift in Sources */,
+ D0C9C22F230022AB00FAB518 /* FormControllerTextItem.swift in Sources */,
+ D0C9C226230022AB00FAB518 /* SecureIdValues.swift in Sources */,
+ D0C9C242230022AB00FAB518 /* FormControllerItem.swift in Sources */,
+ D0C9C243230022AB00FAB518 /* SecureIdAuthContentNode.swift in Sources */,
+ D0C9C23F230022AB00FAB518 /* SecureIdPlaintextFormController.swift in Sources */,
+ D0C9C244230022AB00FAB518 /* FormControllerHeaderItem.swift in Sources */,
+ D0C9C232230022AB00FAB518 /* SecureIdDocumentTypeSelectionController.swift in Sources */,
+ D0C9C231230022AB00FAB518 /* SecureIdAuthAcceptNode.swift in Sources */,
+ D0C9C25923009EC900FAB518 /* FindSecureIdValue.swift in Sources */,
+ D0C9C225230022AB00FAB518 /* SecureIdDocumentFormControllerNode.swift in Sources */,
+ D0C9C234230022AB00FAB518 /* FormControllerNode.swift in Sources */,
+ D0C9C22A230022AB00FAB518 /* SecureIdVerificationDocumentsContext.swift in Sources */,
+ D0C9C224230022AB00FAB518 /* SecureIdDocumentFormController.swift in Sources */,
+ D0C9C23C230022AB00FAB518 /* SecureIdAuthController.swift in Sources */,
+ D0C9C22E230022AB00FAB518 /* FormControllerScrollerNode.swift in Sources */,
+ D0C9C22C230022AB00FAB518 /* FormControllerActionItem.swift in Sources */,
+ D0C9C2852300A0BF00FAB518 /* FrameworkBundle.swift in Sources */,
+ D0C9C237230022AB00FAB518 /* SecureIdAuthFormContentNode.swift in Sources */,
+ D0C9C22D230022AB00FAB518 /* FormEditableBlockItemNode.swift in Sources */,
+ D0C9C239230022AB00FAB518 /* SecureIdAuthPasswordOptionContentNode.swift in Sources */,
+ D0C9C23D230022AB00FAB518 /* FormControllerDetailActionItem.swift in Sources */,
+ D0C9C227230022AB00FAB518 /* SecureIdAuthListContentNode.swift in Sources */,
+ D0C9C241230022AB00FAB518 /* SecureIdVerificationDocument.swift in Sources */,
+ D0C9C228230022AB00FAB518 /* SecureIdDocumentGalleryController.swift in Sources */,
+ D0C9C223230022AB00FAB518 /* SecureIdAuthListFieldNode.swift in Sources */,
+ D0C9C238230022AB00FAB518 /* FormControllerTextInputItem.swift in Sources */,
+ D0C9C23A230022AB00FAB518 /* SecureIdAuthPasswordSetupContentNode.swift in Sources */,
+ D0C9C230230022AB00FAB518 /* SecureIdAuthHeaderNode.swift in Sources */,
+ D0C9C23B230022AB00FAB518 /* SecureIdAuthFormFieldNode.swift in Sources */,
+ D0C9C233230022AB00FAB518 /* SecureIdAuthControllerState.swift in Sources */,
+ D0C9C235230022AB00FAB518 /* FormController.swift in Sources */,
+ D0C9C22B230022AB00FAB518 /* SecureIdValueFormPhoneItem.swift in Sources */,
+ D0C9C220230022AB00FAB518 /* SecureIdValueFormFileItem.swift in Sources */,
+ D0C9C23E230022AB00FAB518 /* SecureIdLocalResource.swift in Sources */,
+ D0C9C236230022AB00FAB518 /* FormBlockItemNode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C1F12300222100FAB518 /* 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;
+ };
+ D0C9C1F22300222100FAB518 /* 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;
+ };
+ D0C9C1F42300222100FAB518 /* 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.PassportUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C1F52300222100FAB518 /* 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.PassportUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C1F62300225100FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C1F72300225100FAB518 /* DebugHockeyapp */ = {
+ 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.PassportUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C1F82300225D00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C1F92300225D00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.PassportUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C1E52300222100FAB518 /* Build configuration list for PBXProject "PassportUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C1F12300222100FAB518 /* DebugAppStoreLLC */,
+ D0C9C1F62300225100FAB518 /* DebugHockeyapp */,
+ D0C9C1F22300222100FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C1F82300225D00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C1F32300222100FAB518 /* Build configuration list for PBXNativeTarget "PassportUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C1F42300222100FAB518 /* DebugAppStoreLLC */,
+ D0C9C1F72300225100FAB518 /* DebugHockeyapp */,
+ D0C9C1F52300222100FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C1F92300225D00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C1E22300222100FAB518 /* Project object */;
+}
diff --git a/submodules/TelegramUI/TelegramUI/FindSecureIdValue.swift b/submodules/PassportUI/Sources/FindSecureIdValue.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/FindSecureIdValue.swift
rename to submodules/PassportUI/Sources/FindSecureIdValue.swift
diff --git a/submodules/TelegramUI/TelegramUI/FormBlockItemNode.swift b/submodules/PassportUI/Sources/Form/FormBlockItemNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/FormBlockItemNode.swift
rename to submodules/PassportUI/Sources/Form/FormBlockItemNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/FormController.swift b/submodules/PassportUI/Sources/Form/FormController.swift
similarity index 80%
rename from submodules/TelegramUI/TelegramUI/FormController.swift
rename to submodules/PassportUI/Sources/Form/FormController.swift
index 081a9e203a..731cd4efc4 100644
--- a/submodules/TelegramUI/TelegramUI/FormController.swift
+++ b/submodules/PassportUI/Sources/Form/FormController.swift
@@ -6,8 +6,8 @@ import Display
import TelegramCore
import TelegramPresentationData
-class FormController>: ViewController {
- var controllerNode: Node {
+public class FormController>: ViewController {
+ public var controllerNode: Node {
return self.displayNode as! Node
}
@@ -29,7 +29,7 @@ class FormController Void)? = nil) {
+ override public func dismiss(completion: (() -> Void)? = nil) {
self.controllerNode.view.endEditing(true)
self.controllerNode.animateOut(completion: { [weak self] in
self?.presentingViewController?.dismiss(animated: false, completion: nil)
@@ -46,7 +46,7 @@ class FormController Bool
func item(params: ItemParams, strings: PresentationStrings) -> FormControllerItem
}
-enum FormControllerItemNeighbor {
+public enum FormControllerItemNeighbor {
case none
case spacer
case item(FormControllerItemNode)
}
-struct FormControllerItemPreLayout {
+public struct FormControllerItemPreLayout {
let aligningInset: CGFloat
}
-struct FormControllerItemLayoutParams {
+public struct FormControllerItemLayoutParams {
let maxAligningInset: CGFloat
}
-protocol FormControllerItem {
+public protocol FormControllerItem {
func node() -> ASDisplayNode & FormControllerItemNode
func update(node: ASDisplayNode & FormControllerItemNode, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, width: CGFloat, previousNeighbor: FormControllerItemNeighbor, nextNeighbor: FormControllerItemNeighbor, transition: ContainedViewLayoutTransition) -> (FormControllerItemPreLayout, (FormControllerItemLayoutParams) -> CGFloat)
}
-protocol FormControllerItemNode {
+public protocol FormControllerItemNode {
var preventsTouchesToOtherItems: Bool { get }
func touchesToOtherItemsPrevented()
}
diff --git a/submodules/TelegramUI/TelegramUI/FormControllerNode.swift b/submodules/PassportUI/Sources/Form/FormControllerNode.swift
similarity index 97%
rename from submodules/TelegramUI/TelegramUI/FormControllerNode.swift
rename to submodules/PassportUI/Sources/Form/FormControllerNode.swift
index c33f299c0f..cd76c108eb 100644
--- a/submodules/TelegramUI/TelegramUI/FormControllerNode.swift
+++ b/submodules/PassportUI/Sources/Form/FormControllerNode.swift
@@ -82,18 +82,18 @@ struct FormControllerInternalState {
}
}
-struct FormControllerState {
+public struct FormControllerState {
let layoutState: FormControllerLayoutState
let presentationState: FormControllerPresentationState
let innerState: InnerState
}
-enum FormControllerItemEntry {
+public enum FormControllerItemEntry {
case entry(Entry)
case spacer
}
-protocol FormControllerInnerState {
+public protocol FormControllerInnerState {
associatedtype Entry: FormControllerEntry
func isEqual(to: Self) -> Bool
@@ -105,7 +105,7 @@ private enum FilteredItemNeighbor {
case item(FormControllerItem)
}
-class FormControllerNode: ViewControllerTracingNode, UIScrollViewDelegate {
+public class FormControllerNode: ViewControllerTracingNode, UIScrollViewDelegate {
private typealias InternalState = FormControllerInternalState
typealias State = FormControllerState
typealias Entry = InnerState.Entry
@@ -131,7 +131,7 @@ class FormControllerNode: View
preconditionFailure()
}
- required init(initParams: InitParams, presentationData: PresentationData) {
+ required public init(initParams: InitParams, presentationData: PresentationData) {
self.internalState = FormControllerInternalState(layoutState: nil, presentationState: FormControllerPresentationState(theme: presentationData.theme, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat), innerState: nil)
self.scrollNode = FormControllerScrollerNode()
diff --git a/submodules/TelegramUI/TelegramUI/FormControllerScrollerNode.swift b/submodules/PassportUI/Sources/Form/FormControllerScrollerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/FormControllerScrollerNode.swift
rename to submodules/PassportUI/Sources/Form/FormControllerScrollerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/FormControllerTextInputItem.swift b/submodules/PassportUI/Sources/Form/FormControllerTextInputItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/FormControllerTextInputItem.swift
rename to submodules/PassportUI/Sources/Form/FormControllerTextInputItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/FormControllerTextItem.swift b/submodules/PassportUI/Sources/Form/FormControllerTextItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/FormControllerTextItem.swift
rename to submodules/PassportUI/Sources/Form/FormControllerTextItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/FormEditableBlockItemNode.swift b/submodules/PassportUI/Sources/Form/FormEditableBlockItemNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/FormEditableBlockItemNode.swift
rename to submodules/PassportUI/Sources/Form/FormEditableBlockItemNode.swift
diff --git a/submodules/PassportUI/Sources/FrameworkBundle.swift b/submodules/PassportUI/Sources/FrameworkBundle.swift
new file mode 100644
index 0000000000..8ca13d7d92
--- /dev/null
+++ b/submodules/PassportUI/Sources/FrameworkBundle.swift
@@ -0,0 +1,13 @@
+import Foundation
+import UIKit
+
+private class FrameworkBundleClass: NSObject {
+}
+
+let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self)
+
+extension UIImage {
+ convenience init?(bundleImageName: String) {
+ self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil)
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/LegacySecureIdAttachmentMenu.swift b/submodules/PassportUI/Sources/LegacySecureIdAttachmentMenu.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/LegacySecureIdAttachmentMenu.swift
rename to submodules/PassportUI/Sources/LegacySecureIdAttachmentMenu.swift
index 84f85bd1f6..042ab70189 100644
--- a/submodules/TelegramUI/TelegramUI/LegacySecureIdAttachmentMenu.swift
+++ b/submodules/PassportUI/Sources/LegacySecureIdAttachmentMenu.swift
@@ -7,6 +7,8 @@ import Postbox
import TelegramCore
import OverlayStatusController
import AccountContext
+import LegacyUI
+import ImageCompression
enum SecureIdAttachmentMenuType {
case generic
diff --git a/submodules/TelegramUI/TelegramUI/LegacySecureIdScanController.swift b/submodules/PassportUI/Sources/LegacySecureIdScanController.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/LegacySecureIdScanController.swift
rename to submodules/PassportUI/Sources/LegacySecureIdScanController.swift
index a4675b66a3..3bb3b78d3b 100644
--- a/submodules/TelegramUI/TelegramUI/LegacySecureIdScanController.swift
+++ b/submodules/PassportUI/Sources/LegacySecureIdScanController.swift
@@ -3,6 +3,7 @@ import UIKit
import Display
import LegacyComponents
import TelegramPresentationData
+import LegacyUI
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/submodules/PassportUI/Sources/PassportUI.h b/submodules/PassportUI/Sources/PassportUI.h
new file mode 100644
index 0000000000..7031f66464
--- /dev/null
+++ b/submodules/PassportUI/Sources/PassportUI.h
@@ -0,0 +1,19 @@
+//
+// PassportUI.h
+// PassportUI
+//
+// Created by Peter on 8/11/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for PassportUI.
+FOUNDATION_EXPORT double PassportUIVersionNumber;
+
+//! Project version string for PassportUI.
+FOUNDATION_EXPORT const unsigned char PassportUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthAcceptNode.swift b/submodules/PassportUI/Sources/SecureIdAuthAcceptNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthAcceptNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthAcceptNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthContentNode.swift b/submodules/PassportUI/Sources/SecureIdAuthContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthContentNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthController.swift b/submodules/PassportUI/Sources/SecureIdAuthController.swift
similarity index 95%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthController.swift
rename to submodules/PassportUI/Sources/SecureIdAuthController.swift
index 29e99d44c6..ce49d5a7f2 100644
--- a/submodules/TelegramUI/TelegramUI/SecureIdAuthController.swift
+++ b/submodules/PassportUI/Sources/SecureIdAuthController.swift
@@ -10,6 +10,7 @@ import TextFormat
import ProgressNavigationButtonNode
import AccountContext
import AlertUI
+import PasswordSetupUI
public enum SecureIdRequestResult: String {
case success = "success"
@@ -59,12 +60,12 @@ final class SecureIdAuthControllerInteraction {
}
}
-enum SecureIdAuthControllerMode {
+public enum SecureIdAuthControllerMode {
case form(peerId: PeerId, scope: String, publicKey: String, callbackUrl: String, opaquePayload: Data, opaqueNonce: Data)
case list
}
-final class SecureIdAuthController: ViewController {
+public final class SecureIdAuthController: ViewController {
private var controllerNode: SecureIdAuthControllerNode {
return self.displayNode as! SecureIdAuthControllerNode
}
@@ -85,7 +86,7 @@ final class SecureIdAuthController: ViewController {
private let hapticFeedback = HapticFeedback()
- init(context: AccountContext, mode: SecureIdAuthControllerMode) {
+ public init(context: AccountContext, mode: SecureIdAuthControllerMode) {
self.context = context
self.presentationData = context.sharedContext.currentPresentationData.with { $0 }
@@ -270,7 +271,7 @@ final class SecureIdAuthController: ViewController {
}
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@@ -282,7 +283,7 @@ final class SecureIdAuthController: ViewController {
self.recoveryDisposable.dispose()
}
- override func viewDidAppear(_ animated: Bool) {
+ override public func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if !self.didPlayPresentationAnimation {
@@ -291,14 +292,14 @@ final class SecureIdAuthController: ViewController {
}
}
- override func dismiss(completion: (() -> Void)? = nil) {
+ override public func dismiss(completion: (() -> Void)? = nil) {
self.controllerNode.animateOut(completion: { [weak self] in
self?.presentingViewController?.dismiss(animated: false, completion: nil)
completion?()
})
}
- override func loadDisplayNode() {
+ override public func loadDisplayNode() {
let interaction = SecureIdAuthControllerInteraction(updateState: { [weak self] f in
self?.updateState(f)
}, present: { [weak self] c, a in
@@ -313,7 +314,7 @@ final class SecureIdAuthController: ViewController {
self?.grantAccess()
}, openUrl: { [weak self] url in
if let strongSelf = self {
- openExternalUrl(context: strongSelf.context, url: url, presentationData: strongSelf.presentationData, navigationController: strongSelf.navigationController as? NavigationController, dismissInput: {
+ strongSelf.context.sharedContext.openExternalUrl(context: strongSelf.context, urlContext: .generic, url: url, forceExternal: false, presentationData: strongSelf.presentationData, navigationController: strongSelf.navigationController as? NavigationController, dismissInput: {
self?.view.endEditing(true)
})
}
@@ -326,7 +327,7 @@ final class SecureIdAuthController: ViewController {
guard let strongSelf = self else {
return
}
- if let infoController = peerInfoController(context: strongSelf.context, peer: peer) {
+ if let infoController = strongSelf.context.sharedContext.makePeerInfoController(context: strongSelf.context, peer: peer) {
(strongSelf.navigationController as? NavigationController)?.pushViewController(infoController)
}
})
@@ -359,7 +360,7 @@ final class SecureIdAuthController: ViewController {
self.controllerNode.updateState(self.state, transition: .immediate)
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
+ override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, transition: transition)
self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition)
@@ -400,7 +401,7 @@ final class SecureIdAuthController: ViewController {
}
private func openUrl(_ url: String) {
- openExternalUrl(context: self.context, url: url, forceExternal: true, presentationData: self.presentationData, navigationController: nil, dismissInput: { [weak self] in
+ self.context.sharedContext.openExternalUrl(context: self.context, urlContext: .generic, url: url, forceExternal: true, presentationData: self.presentationData, navigationController: nil, dismissInput: { [weak self] in
self?.view.endEditing(true)
})
}
@@ -643,7 +644,7 @@ final class SecureIdAuthController: ViewController {
guard let strongSelf = self else {
return
}
- openExternalUrl(context: strongSelf.context, url: strongSelf.presentationData.strings.Passport_InfoFAQ_URL, presentationData: strongSelf.presentationData, navigationController: strongSelf.navigationController as? NavigationController, dismissInput: {
+ strongSelf.context.sharedContext.openExternalUrl(context: strongSelf.context, urlContext: .generic, url: strongSelf.presentationData.strings.Passport_InfoFAQ_URL, forceExternal: false, presentationData: strongSelf.presentationData, navigationController: strongSelf.navigationController as? NavigationController, dismissInput: {
self?.view.endEditing(true)
})
})]), in: .window(.root))
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthControllerNode.swift b/submodules/PassportUI/Sources/SecureIdAuthControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthControllerNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthControllerState.swift b/submodules/PassportUI/Sources/SecureIdAuthControllerState.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthControllerState.swift
rename to submodules/PassportUI/Sources/SecureIdAuthControllerState.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthFormContentNode.swift b/submodules/PassportUI/Sources/SecureIdAuthFormContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthFormContentNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthFormContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthFormFieldNode.swift b/submodules/PassportUI/Sources/SecureIdAuthFormFieldNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthFormFieldNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthFormFieldNode.swift
index 7168a48eb7..0290391218 100644
--- a/submodules/TelegramUI/TelegramUI/SecureIdAuthFormFieldNode.swift
+++ b/submodules/PassportUI/Sources/SecureIdAuthFormFieldNode.swift
@@ -6,6 +6,7 @@ import Display
import TelegramCore
import TelegramPresentationData
import TelegramStringFormatting
+import CountrySelectionUI
enum SecureIdRequestedIdentityDocument: Int32 {
case passport
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthHeaderNode.swift b/submodules/PassportUI/Sources/SecureIdAuthHeaderNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthHeaderNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthHeaderNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthListContentNode.swift b/submodules/PassportUI/Sources/SecureIdAuthListContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthListContentNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthListContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthListFieldNode.swift b/submodules/PassportUI/Sources/SecureIdAuthListFieldNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthListFieldNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthListFieldNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordOptionContentNode.swift b/submodules/PassportUI/Sources/SecureIdAuthPasswordOptionContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordOptionContentNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthPasswordOptionContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordSetupContentNode.swift b/submodules/PassportUI/Sources/SecureIdAuthPasswordSetupContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdAuthPasswordSetupContentNode.swift
rename to submodules/PassportUI/Sources/SecureIdAuthPasswordSetupContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormController.swift b/submodules/PassportUI/Sources/SecureIdDocumentFormController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdDocumentFormController.swift
rename to submodules/PassportUI/Sources/SecureIdDocumentFormController.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormControllerNode.swift b/submodules/PassportUI/Sources/SecureIdDocumentFormControllerNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SecureIdDocumentFormControllerNode.swift
rename to submodules/PassportUI/Sources/SecureIdDocumentFormControllerNode.swift
index 3fc26f4607..51b0071ed7 100644
--- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentFormControllerNode.swift
+++ b/submodules/PassportUI/Sources/SecureIdDocumentFormControllerNode.swift
@@ -8,6 +8,9 @@ import SwiftSignalKit
import TelegramPresentationData
import TelegramStringFormatting
import AccountContext
+import GalleryUI
+import CountrySelectionUI
+import DateSelectionUI
private enum SecureIdDocumentFormTextField {
case identifier
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryController.swift b/submodules/PassportUI/Sources/SecureIdDocumentGalleryController.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryController.swift
rename to submodules/PassportUI/Sources/SecureIdDocumentGalleryController.swift
index 5b925a0b9f..adc379563d 100644
--- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryController.swift
+++ b/submodules/PassportUI/Sources/SecureIdDocumentGalleryController.swift
@@ -8,6 +8,7 @@ import AsyncDisplayKit
import TelegramCore
import TelegramPresentationData
import AccountContext
+import GalleryUI
struct SecureIdDocumentGalleryEntryLocation: Equatable {
let position: Int32
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift b/submodules/PassportUI/Sources/SecureIdDocumentGalleryFooterContentNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift
rename to submodules/PassportUI/Sources/SecureIdDocumentGalleryFooterContentNode.swift
index d1344bf760..8c2f34bdc1 100644
--- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentGalleryFooterContentNode.swift
+++ b/submodules/PassportUI/Sources/SecureIdDocumentGalleryFooterContentNode.swift
@@ -8,6 +8,7 @@ import SwiftSignalKit
import Photos
import TelegramPresentationData
import AccountContext
+import GalleryUI
private let deleteImage = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionThrash"), color: .white)
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift b/submodules/PassportUI/Sources/SecureIdDocumentImageGalleryItem.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift
rename to submodules/PassportUI/Sources/SecureIdDocumentImageGalleryItem.swift
index 391ded2ce5..044ad3cfaa 100644
--- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift
+++ b/submodules/PassportUI/Sources/SecureIdDocumentImageGalleryItem.swift
@@ -8,6 +8,7 @@ import TelegramCore
import TelegramPresentationData
import AccountContext
import PhotoResources
+import GalleryUI
class SecureIdDocumentGalleryItem: GalleryItem {
let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentTypeSelectionController.swift b/submodules/PassportUI/Sources/SecureIdDocumentTypeSelectionController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SecureIdDocumentTypeSelectionController.swift
rename to submodules/PassportUI/Sources/SecureIdDocumentTypeSelectionController.swift
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdLocalResource.swift b/submodules/PassportUI/Sources/SecureIdLocalResource.swift
similarity index 97%
rename from submodules/TelegramUI/TelegramUI/SecureIdLocalResource.swift
rename to submodules/PassportUI/Sources/SecureIdLocalResource.swift
index 50ea04d9de..dfb8a8ffce 100644
--- a/submodules/TelegramUI/TelegramUI/SecureIdLocalResource.swift
+++ b/submodules/PassportUI/Sources/SecureIdLocalResource.swift
@@ -61,7 +61,7 @@ private final class Buffer {
var data = Data()
}
-func fetchSecureIdLocalImageResource(postbox: Postbox, resource: SecureIdLocalImageResource) -> Signal {
+public func fetchSecureIdLocalImageResource(postbox: Postbox, resource: SecureIdLocalImageResource) -> Signal {
return Signal { subscriber in
guard let fetchResource = postbox.mediaBox.fetchResource else {
return EmptyDisposable
diff --git a/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormController.swift b/submodules/PassportUI/Sources/SecureIdPlaintextFormController.swift
similarity index 88%
rename from submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormController.swift
rename to submodules/PassportUI/Sources/SecureIdPlaintextFormController.swift
index b86e7a5203..2b3c092cc8 100644
--- a/submodules/TelegramUI/TelegramUI/SecureIdPlaintextFormController.swift
+++ b/submodules/PassportUI/Sources/SecureIdPlaintextFormController.swift
@@ -9,12 +9,12 @@ import TelegramPresentationData
import ProgressNavigationButtonNode
import AccountContext
-enum SecureIdPlaintextFormType {
+public enum SecureIdPlaintextFormType {
case phone
case email
}
-final class SecureIdPlaintextFormController: FormController {
+public final class SecureIdPlaintextFormController: FormController {
private let context: AccountContext
private var presentationData: PresentationData
private let updatedValue: (SecureIdValueWithContext?) -> Void
@@ -26,7 +26,7 @@ final class SecureIdPlaintextFormController: FormController Void) {
+ public init(context: AccountContext, secureIdContext: SecureIdAccessContext, type: SecureIdPlaintextFormType, immediatelyAvailableValue: SecureIdValue?, updatedValue: @escaping (SecureIdValueWithContext?) -> Void) {
self.context = context
self.presentationData = context.sharedContext.currentPresentationData.with { $0 }
self.secureIdContext = secureIdContext
@@ -49,7 +49,7 @@ final class SecureIdPlaintextFormController: FormController String {
var cleanNumber = ""
@@ -22,7 +23,7 @@ private func cleanPhoneNumber(_ text: String?) -> String {
return cleanNumber
}
-final class SecureIdPlaintextFormParams {
+public final class SecureIdPlaintextFormParams {
fileprivate let openCountrySelection: () -> Void
fileprivate let updateTextField: (SecureIdPlaintextFormTextField, String) -> Void
fileprivate let usePhone: (String) -> Void
@@ -259,12 +260,12 @@ enum SecureIdPlaintextFormInputState {
case inProgress
}
-struct SecureIdPlaintextFormInnerState: FormControllerInnerState {
+public struct SecureIdPlaintextFormInnerState: FormControllerInnerState {
fileprivate let previousValue: SecureIdValue?
fileprivate var data: SecureIdPlaintextFormDataState
fileprivate var actionState: SecureIdPlaintextFormActionState
- func isEqual(to: SecureIdPlaintextFormInnerState) -> Bool {
+ public func isEqual(to: SecureIdPlaintextFormInnerState) -> Bool {
if !self.data.isEqual(to: to.data) {
return false
}
@@ -274,7 +275,7 @@ struct SecureIdPlaintextFormInnerState: FormControllerInnerState {
return true
}
- func entries() -> [FormControllerItemEntry] {
+ public func entries() -> [FormControllerItemEntry] {
switch self.data {
case let .phone(phone):
var result: [FormControllerItemEntry] = []
@@ -408,7 +409,7 @@ extension SecureIdPlaintextFormInnerState {
}
}
-enum SecureIdPlaintextFormEntryId: Hashable {
+public enum SecureIdPlaintextFormEntryId: Hashable {
case immediatelyAvailablePhone
case immediatelyAvailablePhoneInfo
case numberInputHeader
@@ -425,7 +426,7 @@ enum SecureIdPlaintextFormEntryId: Hashable {
case emailVerifyInfo
}
-enum SecureIdPlaintextFormEntry: FormControllerEntry {
+public enum SecureIdPlaintextFormEntry: FormControllerEntry {
case immediatelyAvailablePhone(String)
case immediatelyAvailablePhoneInfo
case numberInputHeader
@@ -441,7 +442,7 @@ enum SecureIdPlaintextFormEntry: FormControllerEntry {
case emailCode(String)
case emailVerifyInfo(String)
- var stableId: SecureIdPlaintextFormEntryId {
+ public var stableId: SecureIdPlaintextFormEntryId {
switch self {
case .immediatelyAvailablePhone:
return .immediatelyAvailablePhone
@@ -474,7 +475,7 @@ enum SecureIdPlaintextFormEntry: FormControllerEntry {
}
}
- func isEqual(to: SecureIdPlaintextFormEntry) -> Bool {
+ public func isEqual(to: SecureIdPlaintextFormEntry) -> Bool {
switch self {
case let .immediatelyAvailablePhone(value):
if case .immediatelyAvailablePhone(value) = to {
@@ -563,7 +564,7 @@ enum SecureIdPlaintextFormEntry: FormControllerEntry {
}
}
- func item(params: SecureIdPlaintextFormParams, strings: PresentationStrings) -> FormControllerItem {
+ public func item(params: SecureIdPlaintextFormParams, strings: PresentationStrings) -> FormControllerItem {
switch self {
case let .immediatelyAvailablePhone(value):
return FormControllerActionItem(type: .accent, title: strings.Passport_Phone_UseTelegramNumber(formatPhoneNumber(value)).0, activated: {
@@ -626,7 +627,7 @@ enum SecureIdPlaintextFormEntry: FormControllerEntry {
}
}
-struct SecureIdPlaintextFormControllerNodeInitParams {
+public struct SecureIdPlaintextFormControllerNodeInitParams {
let context: AccountContext
let secureIdContext: SecureIdAccessContext
}
@@ -636,9 +637,9 @@ private enum SecureIdPlaintextFormNavigatonTransition {
case push
}
-final class SecureIdPlaintextFormControllerNode: FormControllerNode {
+public final class SecureIdPlaintextFormControllerNode: FormControllerNode {
private var _itemParams: SecureIdPlaintextFormParams?
- override var itemParams: SecureIdPlaintextFormParams {
+ override public var itemParams: SecureIdPlaintextFormParams {
return self._itemParams!
}
@@ -654,7 +655,7 @@ final class SecureIdPlaintextFormControllerNode: FormControllerNode
+
+
+
+ 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/PasswordSetupUI/PasswordSetupUI_Xcode.xcodeproj/project.pbxproj b/submodules/PasswordSetupUI/PasswordSetupUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..5ac96b3d8c
--- /dev/null
+++ b/submodules/PasswordSetupUI/PasswordSetupUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,599 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C5012300EEC100FAB518 /* PasswordSetupUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C4FF2300EEC100FAB518 /* PasswordSetupUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C50E2300EF4300FAB518 /* SetupTwoStepVerificationContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C50B2300EF4300FAB518 /* SetupTwoStepVerificationContentNode.swift */; };
+ D0C9C50F2300EF4300FAB518 /* SetupTwoStepVerificationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C50C2300EF4300FAB518 /* SetupTwoStepVerificationController.swift */; };
+ D0C9C5102300EF4300FAB518 /* SetupTwoStepVerificationControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C50D2300EF4300FAB518 /* SetupTwoStepVerificationControllerNode.swift */; };
+ D0C9C5132300EF5400FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5122300EF5400FAB518 /* Foundation.framework */; };
+ D0C9C5152300EF5900FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5142300EF5900FAB518 /* UIKit.framework */; };
+ D0C9C5172300EF5D00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5162300EF5D00FAB518 /* Display.framework */; };
+ D0C9C5192300EF6100FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5182300EF6100FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9C51B2300EF6700FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C51A2300EF6700FAB518 /* TelegramPresentationData.framework */; };
+ D0C9C51D2300EF7400FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C51C2300EF7400FAB518 /* SwiftSignalKit.framework */; };
+ D0C9C51F2300EF7800FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C51E2300EF7800FAB518 /* Postbox.framework */; };
+ D0C9C5212300EF7D00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5202300EF7D00FAB518 /* TelegramCore.framework */; };
+ D0C9C5232300EF8800FAB518 /* ProgressNavigationButtonNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5222300EF8800FAB518 /* ProgressNavigationButtonNode.framework */; };
+ D0C9C5252300EF8E00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5242300EF8E00FAB518 /* AccountContext.framework */; };
+ D0C9C5272300EF9900FAB518 /* ActivityIndicator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5262300EF9900FAB518 /* ActivityIndicator.framework */; };
+ D0C9C5292300EF9E00FAB518 /* AlertUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5282300EF9E00FAB518 /* AlertUI.framework */; };
+ D0C9C52F2300F01C00FAB518 /* ResetPasswordController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C52E2300F01C00FAB518 /* ResetPasswordController.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C4FC2300EEC100FAB518 /* PasswordSetupUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PasswordSetupUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C4FF2300EEC100FAB518 /* PasswordSetupUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PasswordSetupUI.h; sourceTree = ""; };
+ D0C9C5002300EEC100FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C50B2300EF4300FAB518 /* SetupTwoStepVerificationContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupTwoStepVerificationContentNode.swift; sourceTree = ""; };
+ D0C9C50C2300EF4300FAB518 /* SetupTwoStepVerificationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupTwoStepVerificationController.swift; sourceTree = ""; };
+ D0C9C50D2300EF4300FAB518 /* SetupTwoStepVerificationControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupTwoStepVerificationControllerNode.swift; sourceTree = ""; };
+ D0C9C5122300EF5400FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C5142300EF5900FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C5162300EF5D00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C5182300EF6100FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C51A2300EF6700FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C51C2300EF7400FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C51E2300EF7800FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C5202300EF7D00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C5222300EF8800FAB518 /* ProgressNavigationButtonNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ProgressNavigationButtonNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C5242300EF8E00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C5262300EF9900FAB518 /* ActivityIndicator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ActivityIndicator.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C5282300EF9E00FAB518 /* AlertUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AlertUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C52E2300F01C00FAB518 /* ResetPasswordController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetPasswordController.swift; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C4F92300EEC100FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C5292300EF9E00FAB518 /* AlertUI.framework in Frameworks */,
+ D0C9C5272300EF9900FAB518 /* ActivityIndicator.framework in Frameworks */,
+ D0C9C5252300EF8E00FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9C5232300EF8800FAB518 /* ProgressNavigationButtonNode.framework in Frameworks */,
+ D0C9C5212300EF7D00FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9C51F2300EF7800FAB518 /* Postbox.framework in Frameworks */,
+ D0C9C51D2300EF7400FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9C51B2300EF6700FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C5192300EF6100FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9C5172300EF5D00FAB518 /* Display.framework in Frameworks */,
+ D0C9C5152300EF5900FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C5132300EF5400FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C4F22300EEC100FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C5002300EEC100FAB518 /* Info.plist */,
+ D0C9C4FE2300EEC100FAB518 /* Sources */,
+ D0C9C4FD2300EEC100FAB518 /* Products */,
+ D0C9C5112300EF5300FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C4FD2300EEC100FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C4FC2300EEC100FAB518 /* PasswordSetupUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C4FE2300EEC100FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C52E2300F01C00FAB518 /* ResetPasswordController.swift */,
+ D0C9C50B2300EF4300FAB518 /* SetupTwoStepVerificationContentNode.swift */,
+ D0C9C50C2300EF4300FAB518 /* SetupTwoStepVerificationController.swift */,
+ D0C9C50D2300EF4300FAB518 /* SetupTwoStepVerificationControllerNode.swift */,
+ D0C9C4FF2300EEC100FAB518 /* PasswordSetupUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C5112300EF5300FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C5282300EF9E00FAB518 /* AlertUI.framework */,
+ D0C9C5262300EF9900FAB518 /* ActivityIndicator.framework */,
+ D0C9C5242300EF8E00FAB518 /* AccountContext.framework */,
+ D0C9C5222300EF8800FAB518 /* ProgressNavigationButtonNode.framework */,
+ D0C9C5202300EF7D00FAB518 /* TelegramCore.framework */,
+ D0C9C51E2300EF7800FAB518 /* Postbox.framework */,
+ D0C9C51C2300EF7400FAB518 /* SwiftSignalKit.framework */,
+ D0C9C51A2300EF6700FAB518 /* TelegramPresentationData.framework */,
+ D0C9C5182300EF6100FAB518 /* AsyncDisplayKit.framework */,
+ D0C9C5162300EF5D00FAB518 /* Display.framework */,
+ D0C9C5142300EF5900FAB518 /* UIKit.framework */,
+ D0C9C5122300EF5400FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C4F72300EEC100FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C5012300EEC100FAB518 /* PasswordSetupUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C4FB2300EEC100FAB518 /* PasswordSetupUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C5042300EEC100FAB518 /* Build configuration list for PBXNativeTarget "PasswordSetupUI" */;
+ buildPhases = (
+ D0C9C4F72300EEC100FAB518 /* Headers */,
+ D0C9C4F82300EEC100FAB518 /* Sources */,
+ D0C9C4F92300EEC100FAB518 /* Frameworks */,
+ D0C9C4FA2300EEC100FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PasswordSetupUI;
+ productName = PasswordSetupUI;
+ productReference = D0C9C4FC2300EEC100FAB518 /* PasswordSetupUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C4F32300EEC100FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C4FB2300EEC100FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C4F62300EEC100FAB518 /* Build configuration list for PBXProject "PasswordSetupUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C4F22300EEC100FAB518;
+ productRefGroup = D0C9C4FD2300EEC100FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C4FB2300EEC100FAB518 /* PasswordSetupUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C4FA2300EEC100FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C4F82300EEC100FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C5102300EF4300FAB518 /* SetupTwoStepVerificationControllerNode.swift in Sources */,
+ D0C9C50E2300EF4300FAB518 /* SetupTwoStepVerificationContentNode.swift in Sources */,
+ D0C9C52F2300F01C00FAB518 /* ResetPasswordController.swift in Sources */,
+ D0C9C50F2300EF4300FAB518 /* SetupTwoStepVerificationController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C5022300EEC100FAB518 /* 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;
+ };
+ D0C9C5032300EEC100FAB518 /* 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;
+ };
+ D0C9C5052300EEC100FAB518 /* 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.PasswordSetupUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C5062300EEC100FAB518 /* 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.PasswordSetupUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C5072300EEF300FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C5082300EEF300FAB518 /* DebugHockeyapp */ = {
+ 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.PasswordSetupUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C5092300EF0100FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C50A2300EF0100FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.PasswordSetupUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C4F62300EEC100FAB518 /* Build configuration list for PBXProject "PasswordSetupUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C5022300EEC100FAB518 /* DebugAppStoreLLC */,
+ D0C9C5072300EEF300FAB518 /* DebugHockeyapp */,
+ D0C9C5032300EEC100FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C5092300EF0100FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C5042300EEC100FAB518 /* Build configuration list for PBXNativeTarget "PasswordSetupUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C5052300EEC100FAB518 /* DebugAppStoreLLC */,
+ D0C9C5082300EEF300FAB518 /* DebugHockeyapp */,
+ D0C9C5062300EEC100FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C50A2300EF0100FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C4F32300EEC100FAB518 /* Project object */;
+}
diff --git a/submodules/PasswordSetupUI/Sources/PasswordSetupUI.h b/submodules/PasswordSetupUI/Sources/PasswordSetupUI.h
new file mode 100644
index 0000000000..8d30612cf2
--- /dev/null
+++ b/submodules/PasswordSetupUI/Sources/PasswordSetupUI.h
@@ -0,0 +1,19 @@
+//
+// PasswordSetupUI.h
+// PasswordSetupUI
+//
+// Created by Peter on 8/12/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for PasswordSetupUI.
+FOUNDATION_EXPORT double PasswordSetupUIVersionNumber;
+
+//! Project version string for PasswordSetupUI.
+FOUNDATION_EXPORT const unsigned char PasswordSetupUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ResetPasswordController.swift b/submodules/PasswordSetupUI/Sources/ResetPasswordController.swift
similarity index 98%
rename from submodules/TelegramUI/TelegramUI/ResetPasswordController.swift
rename to submodules/PasswordSetupUI/Sources/ResetPasswordController.swift
index 54d89983aa..27180144c2 100644
--- a/submodules/TelegramUI/TelegramUI/ResetPasswordController.swift
+++ b/submodules/PasswordSetupUI/Sources/ResetPasswordController.swift
@@ -106,12 +106,12 @@ private func resetPasswordControllerEntries(presentationData: PresentationData,
return entries
}
-enum ResetPasswordState: Equatable {
+public enum ResetPasswordState: Equatable {
case setup(currentPassword: String?)
case pendingVerification(emailPattern: String)
}
-func resetPasswordController(context: AccountContext, emailPattern: String, completion: @escaping () -> Void) -> ViewController {
+public func resetPasswordController(context: AccountContext, emailPattern: String, completion: @escaping () -> Void) -> ViewController {
let statePromise = ValuePromise(ResetPasswordControllerState(), ignoreRepeated: true)
let stateValue = Atomic(value: ResetPasswordControllerState())
let updateState: ((ResetPasswordControllerState) -> ResetPasswordControllerState) -> Void = { f in
diff --git a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationContentNode.swift b/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationContentNode.swift
rename to submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationController.swift b/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationController.swift
similarity index 94%
rename from submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationController.swift
rename to submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationController.swift
index 12fbe931f9..47608aef42 100644
--- a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationController.swift
+++ b/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationController.swift
@@ -9,7 +9,7 @@ import TelegramPresentationData
import ProgressNavigationButtonNode
import AccountContext
-class SetupTwoStepVerificationController: ViewController {
+public class SetupTwoStepVerificationController: ViewController {
private let context: AccountContext
private let initialState: SetupTwoStepVerificationInitialState
private let stateUpdated: (SetupTwoStepVerificationStateUpdate, Bool, SetupTwoStepVerificationController) -> Void
@@ -31,7 +31,7 @@ class SetupTwoStepVerificationController: ViewController {
private var presentationData: PresentationData
private var presentationDataDisposable: Disposable?
- init(context: AccountContext, initialState: SetupTwoStepVerificationInitialState, stateUpdated: @escaping (SetupTwoStepVerificationStateUpdate, Bool, SetupTwoStepVerificationController) -> Void) {
+ public init(context: AccountContext, initialState: SetupTwoStepVerificationInitialState, stateUpdated: @escaping (SetupTwoStepVerificationStateUpdate, Bool, SetupTwoStepVerificationController) -> Void) {
self.context = context
self.initialState = initialState
self.stateUpdated = stateUpdated
@@ -75,7 +75,7 @@ class SetupTwoStepVerificationController: ViewController {
self.dismiss()
}
- override func viewDidAppear(_ animated: Bool) {
+ override public func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if let presentationArguments = self.presentationArguments as? ViewControllerPresentationArguments, !self.didPlayPresentationAnimation {
@@ -86,7 +86,7 @@ class SetupTwoStepVerificationController: ViewController {
}
}
- override func dismiss(completion: (() -> Void)? = nil) {
+ override public func dismiss(completion: (() -> Void)? = nil) {
self.controllerNode.animateOut(completion: { [weak self] in
self?.presentingViewController?.dismiss(animated: false, completion: nil)
completion?()
diff --git a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationControllerNode.swift b/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationControllerNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationControllerNode.swift
rename to submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationControllerNode.swift
index 5b05301cec..aef4edb0b5 100644
--- a/submodules/TelegramUI/TelegramUI/SetupTwoStepVerificationControllerNode.swift
+++ b/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationControllerNode.swift
@@ -10,7 +10,7 @@ import ActivityIndicator
import AccountContext
import AlertUI
-enum SetupTwoStepVerificationInitialState {
+public enum SetupTwoStepVerificationInitialState {
case automatic
case createPassword
case updatePassword(current: String, hasRecoveryEmail: Bool, hasSecureValues: Bool)
@@ -132,7 +132,7 @@ enum SetupTwoStepVerificationNextAction: Equatable {
case button(title: String, isEnabled: Bool)
}
-enum SetupTwoStepVerificationStateUpdate {
+public enum SetupTwoStepVerificationStateUpdate {
case noPassword
case awaitingEmailConfirmation(password: String, pattern: String, codeLength: Int32?)
case passwordSet(password: String?, hasRecoveryEmail: Bool, hasSecureValues: Bool)
diff --git a/submodules/PhoneInputNode/Info.plist b/submodules/PhoneInputNode/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/PhoneInputNode/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/PhoneInputNode/PhoneInputNode_Xcode.xcodeproj/project.pbxproj b/submodules/PhoneInputNode/PhoneInputNode_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..4329c2b8b5
--- /dev/null
+++ b/submodules/PhoneInputNode/PhoneInputNode_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,559 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C26923009F2300FAB518 /* PhoneInputNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C26723009F2300FAB518 /* PhoneInputNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C2742300A01A00FAB518 /* PhoneInputNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C2732300A01A00FAB518 /* PhoneInputNode.swift */; };
+ D0C9C2772300A02A00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2762300A02A00FAB518 /* Foundation.framework */; };
+ D0C9C2792300A02D00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C2782300A02D00FAB518 /* UIKit.framework */; };
+ D0C9C27B2300A03000FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C27A2300A03000FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9C27D2300A03500FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C27C2300A03500FAB518 /* Display.framework */; };
+ D0C9C27F2300A03A00FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C27E2300A03A00FAB518 /* TelegramPresentationData.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C26423009F2300FAB518 /* PhoneInputNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PhoneInputNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C26723009F2300FAB518 /* PhoneInputNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PhoneInputNode.h; sourceTree = ""; };
+ D0C9C26823009F2300FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C2732300A01A00FAB518 /* PhoneInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhoneInputNode.swift; sourceTree = ""; };
+ D0C9C2762300A02A00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C2782300A02D00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C27A2300A03000FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C27C2300A03500FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C27E2300A03A00FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C26123009F2300FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C27F2300A03A00FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9C27D2300A03500FAB518 /* Display.framework in Frameworks */,
+ D0C9C27B2300A03000FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9C2792300A02D00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C2772300A02A00FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C25A23009F2300FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C26823009F2300FAB518 /* Info.plist */,
+ D0C9C26623009F2300FAB518 /* Sources */,
+ D0C9C26523009F2300FAB518 /* Products */,
+ D0C9C2752300A02A00FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C26523009F2300FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C26423009F2300FAB518 /* PhoneInputNode.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C26623009F2300FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C2732300A01A00FAB518 /* PhoneInputNode.swift */,
+ D0C9C26723009F2300FAB518 /* PhoneInputNode.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C2752300A02A00FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C27E2300A03A00FAB518 /* TelegramPresentationData.framework */,
+ D0C9C27C2300A03500FAB518 /* Display.framework */,
+ D0C9C27A2300A03000FAB518 /* AsyncDisplayKit.framework */,
+ D0C9C2782300A02D00FAB518 /* UIKit.framework */,
+ D0C9C2762300A02A00FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C25F23009F2300FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C26923009F2300FAB518 /* PhoneInputNode.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C26323009F2300FAB518 /* PhoneInputNode */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C26C23009F2300FAB518 /* Build configuration list for PBXNativeTarget "PhoneInputNode" */;
+ buildPhases = (
+ D0C9C25F23009F2300FAB518 /* Headers */,
+ D0C9C26023009F2300FAB518 /* Sources */,
+ D0C9C26123009F2300FAB518 /* Frameworks */,
+ D0C9C26223009F2300FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PhoneInputNode;
+ productName = PhoneInputNode;
+ productReference = D0C9C26423009F2300FAB518 /* PhoneInputNode.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C25B23009F2300FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C26323009F2300FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C25E23009F2300FAB518 /* Build configuration list for PBXProject "PhoneInputNode_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C25A23009F2300FAB518;
+ productRefGroup = D0C9C26523009F2300FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C26323009F2300FAB518 /* PhoneInputNode */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C26223009F2300FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C26023009F2300FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C2742300A01A00FAB518 /* PhoneInputNode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C26A23009F2300FAB518 /* 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;
+ };
+ D0C9C26B23009F2300FAB518 /* 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;
+ };
+ D0C9C26D23009F2300FAB518 /* 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.PhoneInputNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C26E23009F2300FAB518 /* 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.PhoneInputNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C26F23009FA700FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C27023009FA700FAB518 /* DebugHockeyapp */ = {
+ 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.PhoneInputNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C27123009FB300FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C27223009FB300FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.PhoneInputNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C25E23009F2300FAB518 /* Build configuration list for PBXProject "PhoneInputNode_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C26A23009F2300FAB518 /* DebugAppStoreLLC */,
+ D0C9C26F23009FA700FAB518 /* DebugHockeyapp */,
+ D0C9C26B23009F2300FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C27123009FB300FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C26C23009F2300FAB518 /* Build configuration list for PBXNativeTarget "PhoneInputNode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C26D23009F2300FAB518 /* DebugAppStoreLLC */,
+ D0C9C27023009FA700FAB518 /* DebugHockeyapp */,
+ D0C9C26E23009F2300FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C27223009FB300FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C25B23009F2300FAB518 /* Project object */;
+}
diff --git a/submodules/PhoneInputNode/Sources/PhoneInputNode.h b/submodules/PhoneInputNode/Sources/PhoneInputNode.h
new file mode 100644
index 0000000000..827bb35196
--- /dev/null
+++ b/submodules/PhoneInputNode/Sources/PhoneInputNode.h
@@ -0,0 +1,19 @@
+//
+// PhoneInputNode.h
+// PhoneInputNode
+//
+// Created by Peter on 8/11/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for PhoneInputNode.
+FOUNDATION_EXPORT double PhoneInputNodeVersionNumber;
+
+//! Project version string for PhoneInputNode.
+FOUNDATION_EXPORT const unsigned char PhoneInputNodeVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/PhoneInputNode.swift b/submodules/PhoneInputNode/Sources/PhoneInputNode.swift
similarity index 90%
rename from submodules/TelegramUI/TelegramUI/PhoneInputNode.swift
rename to submodules/PhoneInputNode/Sources/PhoneInputNode.swift
index ee04b51f7b..81f2bf5195 100644
--- a/submodules/TelegramUI/TelegramUI/PhoneInputNode.swift
+++ b/submodules/PhoneInputNode/Sources/PhoneInputNode.swift
@@ -76,15 +76,15 @@ private func cleanSuffix(_ text: String) -> String {
return result
}
-final class PhoneInputNode: ASDisplayNode, UITextFieldDelegate {
- let countryCodeField: TextFieldNode
- let numberField: TextFieldNode
+public final class PhoneInputNode: ASDisplayNode, UITextFieldDelegate {
+ public let countryCodeField: TextFieldNode
+ public let numberField: TextFieldNode
- var previousCountryCodeText = "+"
- var previousNumberText = ""
- var enableEditing: Bool = true
+ public var previousCountryCodeText = "+"
+ public var previousNumberText = ""
+ public var enableEditing: Bool = true
- var number: String {
+ public var number: String {
get {
return cleanPhoneNumber((self.countryCodeField.textField.text ?? "") + (self.numberField.textField.text ?? ""))
} set(value) {
@@ -92,7 +92,7 @@ final class PhoneInputNode: ASDisplayNode, UITextFieldDelegate {
}
}
- var countryCodeText: String {
+ public var countryCodeText: String {
get {
return self.countryCodeField.textField.text ?? ""
} set(value) {
@@ -103,7 +103,7 @@ final class PhoneInputNode: ASDisplayNode, UITextFieldDelegate {
}
}
- var numberText: String {
+ public var numberText: String {
get {
return self.numberField.textField.text ?? ""
} set(value) {
@@ -116,7 +116,7 @@ final class PhoneInputNode: ASDisplayNode, UITextFieldDelegate {
private var countryNameForCode: (Int32, String)?
- var codeAndNumber: (Int32?, String?, String) {
+ public var codeAndNumber: (Int32?, String?, String) {
get {
var code: Int32?
if let text = self.countryCodeField.textField.text, text.count <= 4, let number = Int(removePlus(text)) {
@@ -142,18 +142,18 @@ final class PhoneInputNode: ASDisplayNode, UITextFieldDelegate {
}
}
- var countryCodeUpdated: ((String, String?) -> Void)?
+ public var countryCodeUpdated: ((String, String?) -> Void)?
- var countryCodeTextUpdated: ((String) -> Void)?
- var numberTextUpdated: ((String) -> Void)?
+ public var countryCodeTextUpdated: ((String) -> Void)?
+ public var numberTextUpdated: ((String) -> Void)?
- var returnAction: (() -> Void)?
+ public var returnAction: (() -> Void)?
private let phoneFormatter = InteractivePhoneFormatter()
private let fontSize: CGFloat
- init(fontSize: CGFloat = 20.0) {
+ public init(fontSize: CGFloat = 20.0) {
self.fontSize = fontSize
self.countryCodeField = TextFieldNode()
@@ -186,15 +186,15 @@ final class PhoneInputNode: ASDisplayNode, UITextFieldDelegate {
self.numberField.textField.delegate = self
}
- @objc func countryCodeTextChanged(_ textField: UITextField) {
+ @objc private func countryCodeTextChanged(_ textField: UITextField) {
self.updateNumberFromTextFields()
}
- @objc func numberTextChanged(_ textField: UITextField) {
+ @objc private func numberTextChanged(_ textField: UITextField) {
self.updateNumberFromTextFields()
}
- func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
+ public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if !self.enableEditing {
return false
}
@@ -205,7 +205,7 @@ final class PhoneInputNode: ASDisplayNode, UITextFieldDelegate {
return true
}
- func textFieldShouldReturn(_ textField: UITextField) -> Bool {
+ public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == self.numberField.textField {
self.returnAction?()
}
diff --git a/submodules/ScreenCaptureDetection/Info.plist b/submodules/ScreenCaptureDetection/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/ScreenCaptureDetection/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/ScreenCaptureDetection/ScreenCaptureDetection_Xcode.xcodeproj/project.pbxproj b/submodules/ScreenCaptureDetection/ScreenCaptureDetection_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..36eb05899b
--- /dev/null
+++ b/submodules/ScreenCaptureDetection/ScreenCaptureDetection_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,551 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C3E92300CCF700FAB518 /* ScreenCaptureDetection.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C3E72300CCF700FAB518 /* ScreenCaptureDetection.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9C3F42300CD5100FAB518 /* ScreenCaptureDetection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3F32300CD5100FAB518 /* ScreenCaptureDetection.swift */; };
+ D0C9C3F72300CD6700FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3F62300CD6700FAB518 /* Foundation.framework */; };
+ D0C9C3F92300CD6C00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3F82300CD6B00FAB518 /* UIKit.framework */; };
+ D0C9C3FB2300CD7000FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C3FA2300CD7000FAB518 /* SwiftSignalKit.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C3E42300CCF700FAB518 /* ScreenCaptureDetection.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ScreenCaptureDetection.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C3E72300CCF700FAB518 /* ScreenCaptureDetection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScreenCaptureDetection.h; sourceTree = ""; };
+ D0C9C3E82300CCF700FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9C3F32300CD5100FAB518 /* ScreenCaptureDetection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScreenCaptureDetection.swift; sourceTree = ""; };
+ D0C9C3F62300CD6700FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9C3F82300CD6B00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9C3FA2300CD7000FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C3E12300CCF700FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C3FB2300CD7000FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9C3F92300CD6C00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9C3F72300CD6700FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C3DA2300CCF600FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C3E82300CCF700FAB518 /* Info.plist */,
+ D0C9C3E62300CCF700FAB518 /* Sources */,
+ D0C9C3E52300CCF700FAB518 /* Products */,
+ D0C9C3F52300CD6700FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C3E52300CCF700FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C3E42300CCF700FAB518 /* ScreenCaptureDetection.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C3E62300CCF700FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C3F32300CD5100FAB518 /* ScreenCaptureDetection.swift */,
+ D0C9C3E72300CCF700FAB518 /* ScreenCaptureDetection.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9C3F52300CD6700FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C3FA2300CD7000FAB518 /* SwiftSignalKit.framework */,
+ D0C9C3F82300CD6B00FAB518 /* UIKit.framework */,
+ D0C9C3F62300CD6700FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C3DF2300CCF700FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C3E92300CCF700FAB518 /* ScreenCaptureDetection.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C3E32300CCF700FAB518 /* ScreenCaptureDetection */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C3EC2300CCF700FAB518 /* Build configuration list for PBXNativeTarget "ScreenCaptureDetection" */;
+ buildPhases = (
+ D0C9C3DF2300CCF700FAB518 /* Headers */,
+ D0C9C3E02300CCF700FAB518 /* Sources */,
+ D0C9C3E12300CCF700FAB518 /* Frameworks */,
+ D0C9C3E22300CCF700FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ScreenCaptureDetection;
+ productName = ScreenCaptureDetection;
+ productReference = D0C9C3E42300CCF700FAB518 /* ScreenCaptureDetection.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C3DB2300CCF600FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C3E32300CCF700FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C3DE2300CCF600FAB518 /* Build configuration list for PBXProject "ScreenCaptureDetection_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C3DA2300CCF600FAB518;
+ productRefGroup = D0C9C3E52300CCF700FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C3E32300CCF700FAB518 /* ScreenCaptureDetection */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C3E22300CCF700FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C3E02300CCF700FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C3F42300CD5100FAB518 /* ScreenCaptureDetection.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C3EA2300CCF700FAB518 /* 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;
+ };
+ D0C9C3EB2300CCF700FAB518 /* 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;
+ };
+ D0C9C3ED2300CCF700FAB518 /* 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.ScreenCaptureDetection;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C3EE2300CCF700FAB518 /* 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.ScreenCaptureDetection;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C3EF2300CD1E00FAB518 /* DebugHockeyapp */ = {
+ 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 = DebugHockeyapp;
+ };
+ D0C9C3F02300CD1E00FAB518 /* DebugHockeyapp */ = {
+ 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.ScreenCaptureDetection;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9C3F12300CD2A00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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 = ReleaseHockeyappInternal;
+ };
+ D0C9C3F22300CD2A00FAB518 /* ReleaseHockeyappInternal */ = {
+ 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.ScreenCaptureDetection;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C3DE2300CCF600FAB518 /* Build configuration list for PBXProject "ScreenCaptureDetection_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C3EA2300CCF700FAB518 /* DebugAppStoreLLC */,
+ D0C9C3EF2300CD1E00FAB518 /* DebugHockeyapp */,
+ D0C9C3EB2300CCF700FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C3F12300CD2A00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C3EC2300CCF700FAB518 /* Build configuration list for PBXNativeTarget "ScreenCaptureDetection" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C3ED2300CCF700FAB518 /* DebugAppStoreLLC */,
+ D0C9C3F02300CD1E00FAB518 /* DebugHockeyapp */,
+ D0C9C3EE2300CCF700FAB518 /* ReleaseAppStoreLLC */,
+ D0C9C3F22300CD2A00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C3DB2300CCF600FAB518 /* Project object */;
+}
diff --git a/submodules/ScreenCaptureDetection/Sources/ScreenCaptureDetection.h b/submodules/ScreenCaptureDetection/Sources/ScreenCaptureDetection.h
new file mode 100644
index 0000000000..fae383e599
--- /dev/null
+++ b/submodules/ScreenCaptureDetection/Sources/ScreenCaptureDetection.h
@@ -0,0 +1,19 @@
+//
+// ScreenCaptureDetection.h
+// ScreenCaptureDetection
+//
+// Created by Peter on 8/12/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for ScreenCaptureDetection.
+FOUNDATION_EXPORT double ScreenCaptureDetectionVersionNumber;
+
+//! Project version string for ScreenCaptureDetection.
+FOUNDATION_EXPORT const unsigned char ScreenCaptureDetectionVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ScreenCaptureDetection.swift b/submodules/ScreenCaptureDetection/Sources/ScreenCaptureDetection.swift
similarity index 93%
rename from submodules/TelegramUI/TelegramUI/ScreenCaptureDetection.swift
rename to submodules/ScreenCaptureDetection/Sources/ScreenCaptureDetection.swift
index 1ec8d833be..0c35661804 100644
--- a/submodules/TelegramUI/TelegramUI/ScreenCaptureDetection.swift
+++ b/submodules/ScreenCaptureDetection/Sources/ScreenCaptureDetection.swift
@@ -2,7 +2,7 @@ import Foundation
import SwiftSignalKit
import UIKit
-enum ScreenCaptureEvent {
+public enum ScreenCaptureEvent {
case still
case video
}
@@ -50,7 +50,7 @@ private func screenRecordingActive() -> Signal