diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
index 2b57cc1adf..b294c9cb24 100644
--- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata
+++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
@@ -53,10 +53,16 @@
+
+
+
+
@@ -72,9 +78,6 @@
-
-
@@ -120,6 +123,18 @@
+
+
+
+
+
+
+
+
@@ -209,6 +224,9 @@
+
+
@@ -233,6 +251,13 @@
+
+
+
+
@@ -288,6 +313,12 @@
+
+
+
+
+
+
ViewController
func makeChatListController(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, hideNetworkActivityStatus: Bool, enableDebugActions: Bool) -> ChatListController
func makeChatController(context: AccountContext, chatLocation: ChatLocation, subject: ChatControllerSubject?, botStart: ChatControllerInitialBotStart?, mode: ChatControllerPresentationMode) -> ChatController
+ func makeChatMessagePreviewItem(context: AccountContext, message: Message, theme: PresentationTheme, strings: PresentationStrings, wallpaper: TelegramWallpaper, fontSize: PresentationFontSize, dateTimeFormat: PresentationDateTimeFormat, nameOrder: PresentationPersonNameOrder, forcedResourceStatus: FileMediaResourceStatus?) -> ListViewItem
func makePeerSharedMediaController(context: AccountContext, peerId: PeerId) -> ViewController?
func makeContactSelectionController(_ params: ContactSelectionControllerParams) -> ContactSelectionController
func makeContactMultiselectionController(_ params: ContactMultiselectionControllerParams) -> ContactMultiselectionController
+ func makePeerSelectionController(_ params: PeerSelectionControllerParams) -> PeerSelectionController
func makeProxySettingsController(context: AccountContext) -> ViewController
func makeLocalizationListController(context: AccountContext) -> ViewController
func makeCreateGroupController(context: AccountContext, peerIds: [PeerId], initialTitle: String?, mode: CreateGroupMode, completion: ((PeerId, @escaping () -> Void) -> Void)?) -> ViewController
diff --git a/submodules/AccountContext/Sources/ChatController.swift b/submodules/AccountContext/Sources/ChatController.swift
index 52a97a46bd..b450f8a3bf 100644
--- a/submodules/AccountContext/Sources/ChatController.swift
+++ b/submodules/AccountContext/Sources/ChatController.swift
@@ -4,6 +4,8 @@ import TelegramCore
import TextFormat
import Display
import SwiftSignalKit
+import TelegramPresentationData
+import TelegramUIPreferences
public enum ChatControllerInitialBotStartBehavior {
case interactive
@@ -367,3 +369,27 @@ public protocol ChatController: ViewController {
func updatePresentationMode(_ mode: ChatControllerPresentationMode)
func beginMessageSearch(_ query: String)
}
+
+public protocol ChatMessagePrevewItemNode: class {
+ var forwardInfoReferenceNode: ASDisplayNode? { get }
+}
+
+public enum FileMediaResourcePlaybackStatus: Equatable {
+ case playing
+ case paused
+}
+
+public struct FileMediaResourceStatus: Equatable {
+ public var mediaStatus: FileMediaResourceMediaStatus
+ public var fetchStatus: MediaResourceStatus
+
+ public init(mediaStatus: FileMediaResourceMediaStatus, fetchStatus: MediaResourceStatus) {
+ self.mediaStatus = mediaStatus
+ self.fetchStatus = fetchStatus
+ }
+}
+
+public enum FileMediaResourceMediaStatus: Equatable {
+ case fetchStatus(MediaResourceStatus)
+ case playbackStatus(FileMediaResourcePlaybackStatus)
+}
diff --git a/submodules/AccountContext/Sources/PeerSelectionController.swift b/submodules/AccountContext/Sources/PeerSelectionController.swift
new file mode 100644
index 0000000000..fee175e265
--- /dev/null
+++ b/submodules/AccountContext/Sources/PeerSelectionController.swift
@@ -0,0 +1,47 @@
+import Foundation
+import Display
+import Postbox
+import SwiftSignalKit
+
+public struct ChatListNodePeersFilter: OptionSet {
+ public var rawValue: Int32
+
+ public init(rawValue: Int32) {
+ self.rawValue = rawValue
+ }
+
+ public static let onlyWriteable = ChatListNodePeersFilter(rawValue: 1 << 0)
+ public static let onlyPrivateChats = ChatListNodePeersFilter(rawValue: 1 << 1)
+ public static let onlyGroups = ChatListNodePeersFilter(rawValue: 1 << 2)
+ public static let onlyChannels = ChatListNodePeersFilter(rawValue: 1 << 3)
+ public static let onlyManageable = ChatListNodePeersFilter(rawValue: 1 << 4)
+
+ public static let excludeSecretChats = ChatListNodePeersFilter(rawValue: 1 << 5)
+ public static let excludeRecent = ChatListNodePeersFilter(rawValue: 1 << 6)
+ public static let excludeSavedMessages = ChatListNodePeersFilter(rawValue: 1 << 7)
+
+ public static let doNotSearchMessages = ChatListNodePeersFilter(rawValue: 1 << 8)
+ public static let removeSearchHeader = ChatListNodePeersFilter(rawValue: 1 << 9)
+
+ public static let excludeDisabled = ChatListNodePeersFilter(rawValue: 1 << 10)
+ public static let includeSavedMessages = ChatListNodePeersFilter(rawValue: 1 << 11)
+}
+
+public final class PeerSelectionControllerParams {
+ public let context: AccountContext
+ public let filter: ChatListNodePeersFilter
+ public let hasContactSelector: Bool
+ public let title: String?
+
+ public init(context: AccountContext, filter: ChatListNodePeersFilter = [.onlyWriteable], hasContactSelector: Bool = true, title: String? = nil) {
+ self.context = context
+ self.filter = filter
+ self.hasContactSelector = hasContactSelector
+ self.title = title
+ }
+}
+
+public protocol PeerSelectionController: ViewController {
+ var peerSelected: ((PeerId) -> Void)? { get set }
+ var inProgress: Bool { get set }
+}
diff --git a/submodules/AuthorizationUI/AuthorizationUI_Xcode.xcodeproj/project.pbxproj b/submodules/AuthorizationUI/AuthorizationUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..cd7f654fe4
--- /dev/null
+++ b/submodules/AuthorizationUI/AuthorizationUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,571 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D03E488C230773120049C28B /* AuthorizationUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E488A230773120049C28B /* AuthorizationUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D03E48972307739C0049C28B /* AuthorizationLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E48962307739B0049C28B /* AuthorizationLayout.swift */; };
+ D03E489A230774040049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4899230774040049C28B /* Foundation.framework */; };
+ D03E489C2307740C0049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E489B2307740C0049C28B /* UIKit.framework */; };
+ D03E489E2307740D0049C28B /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E489D2307740D0049C28B /* AsyncDisplayKit.framework */; };
+ D03E48A0230774130049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E489F230774130049C28B /* Display.framework */; };
+ D03E48A6230774780049C28B /* AuthorizationOptionText.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E48A5230774780049C28B /* AuthorizationOptionText.swift */; };
+ D03E48A8230774980049C28B /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48A7230774980049C28B /* TelegramCore.framework */; };
+ D03E48AA230775060049C28B /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48A9230775060049C28B /* TelegramPresentationData.framework */; };
+ D03E48AC2307750D0049C28B /* TextFormat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48AB2307750D0049C28B /* TextFormat.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D03E4887230773120049C28B /* AuthorizationUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AuthorizationUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E488A230773120049C28B /* AuthorizationUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AuthorizationUI.h; sourceTree = ""; };
+ D03E488B230773120049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D03E48962307739B0049C28B /* AuthorizationLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationLayout.swift; sourceTree = ""; };
+ D03E4899230774040049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D03E489B2307740C0049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D03E489D2307740D0049C28B /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E489F230774130049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48A5230774780049C28B /* AuthorizationOptionText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationOptionText.swift; sourceTree = ""; };
+ D03E48A7230774980049C28B /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48A9230775060049C28B /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48AB2307750D0049C28B /* TextFormat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TextFormat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D03E4884230773120049C28B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E48AC2307750D0049C28B /* TextFormat.framework in Frameworks */,
+ D03E48AA230775060049C28B /* TelegramPresentationData.framework in Frameworks */,
+ D03E48A8230774980049C28B /* TelegramCore.framework in Frameworks */,
+ D03E48A0230774130049C28B /* Display.framework in Frameworks */,
+ D03E489E2307740D0049C28B /* AsyncDisplayKit.framework in Frameworks */,
+ D03E489C2307740C0049C28B /* UIKit.framework in Frameworks */,
+ D03E489A230774040049C28B /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D03E487D230773120049C28B = {
+ isa = PBXGroup;
+ children = (
+ D03E488B230773120049C28B /* Info.plist */,
+ D03E4889230773120049C28B /* Sources */,
+ D03E4888230773120049C28B /* Products */,
+ D03E4898230774030049C28B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D03E4888230773120049C28B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4887230773120049C28B /* AuthorizationUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D03E4889230773120049C28B /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D03E48962307739B0049C28B /* AuthorizationLayout.swift */,
+ D03E488A230773120049C28B /* AuthorizationUI.h */,
+ D03E48A5230774780049C28B /* AuthorizationOptionText.swift */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D03E4898230774030049C28B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D03E48AB2307750D0049C28B /* TextFormat.framework */,
+ D03E48A9230775060049C28B /* TelegramPresentationData.framework */,
+ D03E48A7230774980049C28B /* TelegramCore.framework */,
+ D03E489F230774130049C28B /* Display.framework */,
+ D03E489D2307740D0049C28B /* AsyncDisplayKit.framework */,
+ D03E489B2307740C0049C28B /* UIKit.framework */,
+ D03E4899230774040049C28B /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D03E4882230773120049C28B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E488C230773120049C28B /* AuthorizationUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D03E4886230773120049C28B /* AuthorizationUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D03E488F230773120049C28B /* Build configuration list for PBXNativeTarget "AuthorizationUI" */;
+ buildPhases = (
+ D03E4882230773120049C28B /* Headers */,
+ D03E4883230773120049C28B /* Sources */,
+ D03E4884230773120049C28B /* Frameworks */,
+ D03E4885230773120049C28B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = AuthorizationUI;
+ productName = AuthorizationUI;
+ productReference = D03E4887230773120049C28B /* AuthorizationUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D03E487E230773120049C28B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D03E4886230773120049C28B = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D03E4881230773120049C28B /* Build configuration list for PBXProject "AuthorizationUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D03E487D230773120049C28B;
+ productRefGroup = D03E4888230773120049C28B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D03E4886230773120049C28B /* AuthorizationUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D03E4885230773120049C28B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D03E4883230773120049C28B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E48972307739C0049C28B /* AuthorizationLayout.swift in Sources */,
+ D03E48A6230774780049C28B /* AuthorizationOptionText.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D03E488D230773120049C28B /* 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;
+ };
+ D03E488E230773120049C28B /* 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;
+ };
+ D03E4890230773120049C28B /* 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.AuthorizationUI;
+ 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;
+ };
+ D03E4891230773120049C28B /* 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.AuthorizationUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D03E4892230773460049C28B /* 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;
+ };
+ D03E4893230773460049C28B /* 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.AuthorizationUI;
+ 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;
+ };
+ D03E4894230773610049C28B /* 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;
+ };
+ D03E4895230773610049C28B /* 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.AuthorizationUI;
+ 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 */
+ D03E4881230773120049C28B /* Build configuration list for PBXProject "AuthorizationUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E488D230773120049C28B /* DebugAppStoreLLC */,
+ D03E4892230773460049C28B /* DebugHockeyapp */,
+ D03E488E230773120049C28B /* ReleaseAppStoreLLC */,
+ D03E4894230773610049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D03E488F230773120049C28B /* Build configuration list for PBXNativeTarget "AuthorizationUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E4890230773120049C28B /* DebugAppStoreLLC */,
+ D03E4893230773460049C28B /* DebugHockeyapp */,
+ D03E4891230773120049C28B /* ReleaseAppStoreLLC */,
+ D03E4895230773610049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D03E487E230773120049C28B /* Project object */;
+}
diff --git a/submodules/AuthorizationUI/Info.plist b/submodules/AuthorizationUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/AuthorizationUI/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/AuthorizationLayout.swift b/submodules/AuthorizationUI/Sources/AuthorizationLayout.swift
similarity index 80%
rename from submodules/TelegramUI/TelegramUI/AuthorizationLayout.swift
rename to submodules/AuthorizationUI/Sources/AuthorizationLayout.swift
index e3166c4f42..29e62e2b1a 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationLayout.swift
+++ b/submodules/AuthorizationUI/Sources/AuthorizationLayout.swift
@@ -3,29 +3,41 @@ import UIKit
import AsyncDisplayKit
import Display
-struct AuthorizationLayoutItemSpacing {
- let weight: CGFloat
- let maxValue: CGFloat
-}
-
-struct AuthorizationLayoutItem {
- let node: ASDisplayNode
- let size: CGSize
- let spacingBefore: AuthorizationLayoutItemSpacing
- let spacingAfter: AuthorizationLayoutItemSpacing
-}
-
-final class SolvedAuthorizationLayoutItem {
- let item: AuthorizationLayoutItem
- var spacingBefore: CGFloat?
- var spacingAfter: CGFloat?
+public struct AuthorizationLayoutItemSpacing {
+ public var weight: CGFloat
+ public var maxValue: CGFloat
- init(item: AuthorizationLayoutItem) {
+ public init(weight: CGFloat, maxValue: CGFloat) {
+ self.weight = weight
+ self.maxValue = maxValue
+ }
+}
+
+public struct AuthorizationLayoutItem {
+ public var node: ASDisplayNode
+ public var size: CGSize
+ public var spacingBefore: AuthorizationLayoutItemSpacing
+ public var spacingAfter: AuthorizationLayoutItemSpacing
+
+ public init(node: ASDisplayNode, size: CGSize, spacingBefore: AuthorizationLayoutItemSpacing, spacingAfter: AuthorizationLayoutItemSpacing) {
+ self.node = node
+ self.size = size
+ self.spacingBefore = spacingBefore
+ self.spacingAfter = spacingAfter
+ }
+}
+
+public final class SolvedAuthorizationLayoutItem {
+ public let item: AuthorizationLayoutItem
+ public var spacingBefore: CGFloat?
+ public var spacingAfter: CGFloat?
+
+ public init(item: AuthorizationLayoutItem) {
self.item = item
}
}
-func layoutAuthorizationItems(bounds: CGRect, items: [AuthorizationLayoutItem], transition: ContainedViewLayoutTransition, failIfDoesNotFit: Bool) -> Bool {
+public func layoutAuthorizationItems(bounds: CGRect, items: [AuthorizationLayoutItem], transition: ContainedViewLayoutTransition, failIfDoesNotFit: Bool) -> Bool {
var fixedHeight: CGFloat = 0.0
var totalSpacerWeight: CGFloat = 0.0
for item in items {
diff --git a/submodules/AuthorizationUI/Sources/AuthorizationOptionText.swift b/submodules/AuthorizationUI/Sources/AuthorizationOptionText.swift
new file mode 100644
index 0000000000..aea3869ed0
--- /dev/null
+++ b/submodules/AuthorizationUI/Sources/AuthorizationOptionText.swift
@@ -0,0 +1,47 @@
+import Foundation
+import TelegramCore
+import Display
+import TelegramPresentationData
+import TextFormat
+
+public func authorizationCurrentOptionText(_ type: SentAuthorizationCodeType, strings: PresentationStrings, primaryColor: UIColor, accentColor: UIColor) -> NSAttributedString {
+ switch type {
+ case .sms:
+ return NSAttributedString(string: strings.Login_CodeSentSms, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center)
+ case .otherSession:
+ let body = MarkdownAttributeSet(font: Font.regular(16.0), textColor: primaryColor)
+ let bold = MarkdownAttributeSet(font: Font.semibold(16.0), textColor: primaryColor)
+ return parseMarkdownIntoAttributedString(strings.Login_CodeSentInternal, attributes: MarkdownAttributes(body: body, bold: bold, link: body, linkAttribute: { _ in nil }), textAlignment: .center)
+ case .call, .flashCall:
+ return NSAttributedString(string: strings.ChangePhoneNumberCode_Called, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center)
+ }
+}
+
+public func authorizationNextOptionText(currentType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?, strings: PresentationStrings, primaryColor: UIColor, accentColor: UIColor) -> (NSAttributedString, Bool) {
+ if let nextType = nextType, let timeout = timeout {
+ let minutes = timeout / 60
+ let seconds = timeout % 60
+ switch nextType {
+ case .sms:
+ if timeout <= 0 {
+ return (NSAttributedString(string: strings.Login_CodeSentSms, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center), false)
+ } else {
+ let timeString = NSString(format: "%d:%.02d", Int(minutes), Int(seconds))
+ return (NSAttributedString(string: strings.Login_WillSendSms(timeString as String).0, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center), false)
+ }
+ case .call, .flashCall:
+ if timeout <= 0 {
+ return (NSAttributedString(string: strings.ChangePhoneNumberCode_Called, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center), false)
+ } else {
+ return (NSAttributedString(string: String(format: strings.ChangePhoneNumberCode_CallTimer(String(format: "%d:%.2d", minutes, seconds)).0, minutes, seconds), font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center), false)
+ }
+ }
+ } else {
+ switch currentType {
+ case .otherSession:
+ return (NSAttributedString(string: strings.Login_SendCodeViaSms, font: Font.regular(16.0), textColor: accentColor, paragraphAlignment: .center), true)
+ default:
+ return (NSAttributedString(string: strings.Login_HaveNotReceivedCodeInternal, font: Font.regular(16.0), textColor: accentColor, paragraphAlignment: .center), true)
+ }
+ }
+}
diff --git a/submodules/AuthorizationUI/Sources/AuthorizationUI.h b/submodules/AuthorizationUI/Sources/AuthorizationUI.h
new file mode 100644
index 0000000000..ff41738826
--- /dev/null
+++ b/submodules/AuthorizationUI/Sources/AuthorizationUI.h
@@ -0,0 +1,19 @@
+//
+// AuthorizationUI.h
+// AuthorizationUI
+//
+// Created by Peter on 8/17/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for AuthorizationUI.
+FOUNDATION_EXPORT double AuthorizationUIVersionNumber;
+
+//! Project version string for AuthorizationUI.
+FOUNDATION_EXPORT const unsigned char AuthorizationUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/ChatListUI/Sources/Node/ChatListNode.swift b/submodules/ChatListUI/Sources/Node/ChatListNode.swift
index 99761c57a7..eb80cc1fb8 100644
--- a/submodules/ChatListUI/Sources/Node/ChatListNode.swift
+++ b/submodules/ChatListUI/Sources/Node/ChatListNode.swift
@@ -11,30 +11,6 @@ import AccountContext
import TelegramNotices
import ContactsPeerItem
-public struct ChatListNodePeersFilter: OptionSet {
- public var rawValue: Int32
-
- public init(rawValue: Int32) {
- self.rawValue = rawValue
- }
-
- public static let onlyWriteable = ChatListNodePeersFilter(rawValue: 1 << 0)
- public static let onlyPrivateChats = ChatListNodePeersFilter(rawValue: 1 << 1)
- public static let onlyGroups = ChatListNodePeersFilter(rawValue: 1 << 2)
- public static let onlyChannels = ChatListNodePeersFilter(rawValue: 1 << 3)
- public static let onlyManageable = ChatListNodePeersFilter(rawValue: 1 << 4)
-
- public static let excludeSecretChats = ChatListNodePeersFilter(rawValue: 1 << 5)
- public static let excludeRecent = ChatListNodePeersFilter(rawValue: 1 << 6)
- public static let excludeSavedMessages = ChatListNodePeersFilter(rawValue: 1 << 7)
-
- public static let doNotSearchMessages = ChatListNodePeersFilter(rawValue: 1 << 8)
- public static let removeSearchHeader = ChatListNodePeersFilter(rawValue: 1 << 9)
-
- public static let excludeDisabled = ChatListNodePeersFilter(rawValue: 1 << 10)
- public static let includeSavedMessages = ChatListNodePeersFilter(rawValue: 1 << 11)
-}
-
public enum ChatListNodeMode {
case chatList
case peers(filter: ChatListNodePeersFilter)
diff --git a/submodules/CheckNode/CheckNode_Xcode.xcodeproj/project.pbxproj b/submodules/CheckNode/CheckNode_Xcode.xcodeproj/project.pbxproj
index f33bc26029..6c1a7cb25a 100644
--- a/submodules/CheckNode/CheckNode_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/CheckNode/CheckNode_Xcode.xcodeproj/project.pbxproj
@@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
+ D03E48B8230777AA0049C28B /* ModernCheckNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E48B7230777A80049C28B /* ModernCheckNode.swift */; };
+ D03E48BA230777B70049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48B9230777B70049C28B /* Display.framework */; };
D06018CD22F3665900796784 /* CheckNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D06018CB22F3665900796784 /* CheckNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
D06018D822F366B000796784 /* CheckNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06018D722F366B000796784 /* CheckNode.swift */; };
D06018DB22F366BB00796784 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D06018DA22F366BB00796784 /* UIKit.framework */; };
@@ -16,6 +18,8 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
+ D03E48B7230777A80049C28B /* ModernCheckNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModernCheckNode.swift; sourceTree = ""; };
+ D03E48B9230777B70049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D06018C822F3665900796784 /* CheckNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CheckNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D06018CB22F3665900796784 /* CheckNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CheckNode.h; sourceTree = ""; };
D06018CC22F3665900796784 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
@@ -31,6 +35,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D03E48BA230777B70049C28B /* Display.framework in Frameworks */,
D06018E122F366C500796784 /* LegacyComponents.framework in Frameworks */,
D06018DF22F366C200796784 /* AsyncDisplayKit.framework in Frameworks */,
D06018DD22F366BE00796784 /* Foundation.framework in Frameworks */,
@@ -62,6 +67,7 @@
D06018CA22F3665900796784 /* Sources */ = {
isa = PBXGroup;
children = (
+ D03E48B7230777A80049C28B /* ModernCheckNode.swift */,
D06018D722F366B000796784 /* CheckNode.swift */,
D06018CB22F3665900796784 /* CheckNode.h */,
);
@@ -71,6 +77,7 @@
D06018D922F366BA00796784 /* Frameworks */ = {
isa = PBXGroup;
children = (
+ D03E48B9230777B70049C28B /* Display.framework */,
D06018E022F366C500796784 /* LegacyComponents.framework */,
D06018DE22F366C200796784 /* AsyncDisplayKit.framework */,
D06018DC22F366BE00796784 /* Foundation.framework */,
@@ -160,6 +167,7 @@
buildActionMask = 2147483647;
files = (
D06018D822F366B000796784 /* CheckNode.swift in Sources */,
+ D03E48B8230777AA0049C28B /* ModernCheckNode.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/submodules/TelegramUI/TelegramUI/ModernCheckNode.swift b/submodules/CheckNode/Sources/ModernCheckNode.swift
similarity index 78%
rename from submodules/TelegramUI/TelegramUI/ModernCheckNode.swift
rename to submodules/CheckNode/Sources/ModernCheckNode.swift
index b266ac7972..c851755875 100644
--- a/submodules/TelegramUI/TelegramUI/ModernCheckNode.swift
+++ b/submodules/CheckNode/Sources/ModernCheckNode.swift
@@ -4,14 +4,21 @@ import AsyncDisplayKit
import Display
import LegacyComponents
-struct CheckNodeTheme {
- let backgroundColor: UIColor
- let strokeColor: UIColor
- let borderColor: UIColor
- let hasShadow: Bool
+public struct CheckNodeTheme {
+ public let backgroundColor: UIColor
+ public let strokeColor: UIColor
+ public let borderColor: UIColor
+ public let hasShadow: Bool
+
+ public init(backgroundColor: UIColor, strokeColor: UIColor, borderColor: UIColor, hasShadow: Bool) {
+ self.backgroundColor = backgroundColor
+ self.strokeColor = strokeColor
+ self.borderColor = borderColor
+ self.hasShadow = hasShadow
+ }
}
-enum CheckNodeContent {
+public enum CheckNodeContent {
case check
case counter(Int)
}
@@ -30,15 +37,15 @@ private final class CheckNodeParameters: NSObject {
}
}
-class ModernCheckNode: ASDisplayNode {
+public class ModernCheckNode: ASDisplayNode {
private var animationProgress: CGFloat = 0.0
- var theme: CheckNodeTheme {
+ public var theme: CheckNodeTheme {
didSet {
self.setNeedsDisplay()
}
}
- init(theme: CheckNodeTheme, content: CheckNodeContent = .check) {
+ public init(theme: CheckNodeTheme, content: CheckNodeContent = .check) {
self.theme = theme
self.content = content
@@ -47,14 +54,14 @@ class ModernCheckNode: ASDisplayNode {
self.isOpaque = false
}
- var content: CheckNodeContent {
+ public var content: CheckNodeContent {
didSet {
self.setNeedsDisplay()
}
}
- var selected = false
- func setSelected(_ selected: Bool, animated: Bool = false) {
+ public var selected = false
+ public func setSelected(_ selected: Bool, animated: Bool = false) {
guard self.selected != selected else {
return
}
@@ -84,15 +91,14 @@ class ModernCheckNode: ASDisplayNode {
}
}
- func setHighlighted(_ highlighted: Bool, animated: Bool = false) {
-
+ public func setHighlighted(_ highlighted: Bool, animated: Bool = false) {
}
- override func drawParameters(forAsyncLayer layer: _ASDisplayLayer) -> NSObjectProtocol? {
+ override public func drawParameters(forAsyncLayer layer: _ASDisplayLayer) -> NSObjectProtocol? {
return CheckNodeParameters(theme: self.theme, content: self.content, animationProgress: self.animationProgress, selected: self.selected)
}
- @objc override class func draw(_ bounds: CGRect, withParameters parameters: Any?, isCancelled: () -> Bool, isRasterizing: Bool) {
+ @objc override public class func draw(_ bounds: CGRect, withParameters parameters: Any?, isCancelled: () -> Bool, isRasterizing: Bool) {
let context = UIGraphicsGetCurrentContext()!
if !isRasterizing {
@@ -144,26 +150,19 @@ class ModernCheckNode: ASDisplayNode {
context.setLineJoin(.round)
context.setMiterLimit(10.0)
- switch parameters.content {
- case .check:
- break
- case let .counter(number):
- break
- }
-
context.strokePath()
}
}
- override func touchesBegan(_ touches: Set, with event: UIEvent?) {
+ override public func touchesBegan(_ touches: Set, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
}
- override func touchesEnded(_ touches: Set, with event: UIEvent?) {
+ override public func touchesEnded(_ touches: Set, with event: UIEvent?) {
super.touchesEnded(touches, with: event)
}
- override func touchesCancelled(_ touches: Set?, with event: UIEvent?) {
+ override public func touchesCancelled(_ touches: Set?, with event: UIEvent?) {
super.touchesCancelled(touches, with: event)
}
}
diff --git a/submodules/CounterContollerTitleView/CounterContollerTitleView_Xcode.xcodeproj/project.pbxproj b/submodules/CounterContollerTitleView/CounterContollerTitleView_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..4efa9e443c
--- /dev/null
+++ b/submodules/CounterContollerTitleView/CounterContollerTitleView_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,559 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D03E48CA230863B50049C28B /* CounterContollerTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E48C8230863B50049C28B /* CounterContollerTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D03E48D52308642B0049C28B /* CounterContollerTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E48D42308642B0049C28B /* CounterContollerTitleView.swift */; };
+ D03E48D82308644C0049C28B /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48D72308644C0049C28B /* TelegramPresentationData.framework */; };
+ D03E48DA230864550049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48D9230864550049C28B /* Foundation.framework */; };
+ D03E48DC230864570049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48DB230864570049C28B /* Display.framework */; };
+ D03E48DE2308645E0049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48DD2308645E0049C28B /* UIKit.framework */; };
+ D03E48E0230864650049C28B /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48DF230864650049C28B /* AsyncDisplayKit.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D03E48C5230863B50049C28B /* CounterContollerTitleView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CounterContollerTitleView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48C8230863B50049C28B /* CounterContollerTitleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CounterContollerTitleView.h; sourceTree = ""; };
+ D03E48C9230863B50049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D03E48D42308642B0049C28B /* CounterContollerTitleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CounterContollerTitleView.swift; sourceTree = ""; };
+ D03E48D72308644C0049C28B /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48D9230864550049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D03E48DB230864570049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48DD2308645E0049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D03E48DF230864650049C28B /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D03E48C2230863B50049C28B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E48E0230864650049C28B /* AsyncDisplayKit.framework in Frameworks */,
+ D03E48DE2308645E0049C28B /* UIKit.framework in Frameworks */,
+ D03E48DC230864570049C28B /* Display.framework in Frameworks */,
+ D03E48DA230864550049C28B /* Foundation.framework in Frameworks */,
+ D03E48D82308644C0049C28B /* TelegramPresentationData.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D03E48BB230863B50049C28B = {
+ isa = PBXGroup;
+ children = (
+ D03E48C9230863B50049C28B /* Info.plist */,
+ D03E48C7230863B50049C28B /* Sources */,
+ D03E48C6230863B50049C28B /* Products */,
+ D03E48D62308644C0049C28B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D03E48C6230863B50049C28B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D03E48C5230863B50049C28B /* CounterContollerTitleView.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D03E48C7230863B50049C28B /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D03E48D42308642B0049C28B /* CounterContollerTitleView.swift */,
+ D03E48C8230863B50049C28B /* CounterContollerTitleView.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D03E48D62308644C0049C28B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D03E48DF230864650049C28B /* AsyncDisplayKit.framework */,
+ D03E48DD2308645E0049C28B /* UIKit.framework */,
+ D03E48DB230864570049C28B /* Display.framework */,
+ D03E48D9230864550049C28B /* Foundation.framework */,
+ D03E48D72308644C0049C28B /* TelegramPresentationData.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D03E48C0230863B50049C28B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E48CA230863B50049C28B /* CounterContollerTitleView.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D03E48C4230863B50049C28B /* CounterContollerTitleView */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D03E48CD230863B50049C28B /* Build configuration list for PBXNativeTarget "CounterContollerTitleView" */;
+ buildPhases = (
+ D03E48C0230863B50049C28B /* Headers */,
+ D03E48C1230863B50049C28B /* Sources */,
+ D03E48C2230863B50049C28B /* Frameworks */,
+ D03E48C3230863B50049C28B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = CounterContollerTitleView;
+ productName = CounterContollerTitleView;
+ productReference = D03E48C5230863B50049C28B /* CounterContollerTitleView.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D03E48BC230863B50049C28B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D03E48C4230863B50049C28B = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D03E48BF230863B50049C28B /* Build configuration list for PBXProject "CounterContollerTitleView_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D03E48BB230863B50049C28B;
+ productRefGroup = D03E48C6230863B50049C28B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D03E48C4230863B50049C28B /* CounterContollerTitleView */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D03E48C3230863B50049C28B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D03E48C1230863B50049C28B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E48D52308642B0049C28B /* CounterContollerTitleView.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D03E48CB230863B50049C28B /* 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;
+ };
+ D03E48CC230863B50049C28B /* 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;
+ };
+ D03E48CE230863B50049C28B /* 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.CounterContollerTitleView;
+ 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;
+ };
+ D03E48CF230863B50049C28B /* 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.CounterContollerTitleView;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D03E48D0230863E20049C28B /* 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;
+ };
+ D03E48D1230863E20049C28B /* 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.CounterContollerTitleView;
+ 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;
+ };
+ D03E48D2230863F10049C28B /* 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;
+ };
+ D03E48D3230863F10049C28B /* 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.CounterContollerTitleView;
+ 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 */
+ D03E48BF230863B50049C28B /* Build configuration list for PBXProject "CounterContollerTitleView_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E48CB230863B50049C28B /* DebugAppStoreLLC */,
+ D03E48D0230863E20049C28B /* DebugHockeyapp */,
+ D03E48CC230863B50049C28B /* ReleaseAppStoreLLC */,
+ D03E48D2230863F10049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D03E48CD230863B50049C28B /* Build configuration list for PBXNativeTarget "CounterContollerTitleView" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E48CE230863B50049C28B /* DebugAppStoreLLC */,
+ D03E48D1230863E20049C28B /* DebugHockeyapp */,
+ D03E48CF230863B50049C28B /* ReleaseAppStoreLLC */,
+ D03E48D3230863F10049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D03E48BC230863B50049C28B /* Project object */;
+}
diff --git a/submodules/CounterContollerTitleView/Info.plist b/submodules/CounterContollerTitleView/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/CounterContollerTitleView/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/CounterContollerTitleView/Sources/CounterContollerTitleView.h b/submodules/CounterContollerTitleView/Sources/CounterContollerTitleView.h
new file mode 100644
index 0000000000..c0ddce18a5
--- /dev/null
+++ b/submodules/CounterContollerTitleView/Sources/CounterContollerTitleView.h
@@ -0,0 +1,19 @@
+//
+// CounterContollerTitleView.h
+// CounterContollerTitleView
+//
+// Created by Peter on 8/17/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for CounterContollerTitleView.
+FOUNDATION_EXPORT double CounterContollerTitleViewVersionNumber;
+
+//! Project version string for CounterContollerTitleView.
+FOUNDATION_EXPORT const unsigned char CounterContollerTitleViewVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/CounterContollerTitleView.swift b/submodules/CounterContollerTitleView/Sources/CounterContollerTitleView.swift
similarity index 83%
rename from submodules/TelegramUI/TelegramUI/CounterContollerTitleView.swift
rename to submodules/CounterContollerTitleView/Sources/CounterContollerTitleView.swift
index 916d2066f6..2fd165435e 100644
--- a/submodules/TelegramUI/TelegramUI/CounterContollerTitleView.swift
+++ b/submodules/CounterContollerTitleView/Sources/CounterContollerTitleView.swift
@@ -4,17 +4,22 @@ import Display
import AsyncDisplayKit
import TelegramPresentationData
-struct CounterContollerTitle: Equatable {
- let title: String
- let counter: String
+public struct CounterContollerTitle: Equatable {
+ public var title: String
+ public var counter: String
+
+ public init(title: String, counter: String) {
+ self.title = title
+ self.counter = counter
+ }
}
-final class CounterContollerTitleView: UIView {
+public final class CounterContollerTitleView: UIView {
private var theme: PresentationTheme
private let titleNode: ImmediateTextNode
private let subtitleNode: ImmediateTextNode
- var title: CounterContollerTitle = CounterContollerTitle(title: "", counter: "") {
+ public var title: CounterContollerTitle = CounterContollerTitle(title: "", counter: "") {
didSet {
if self.title != oldValue {
self.titleNode.attributedText = NSAttributedString(string: self.title.title, font: Font.bold(17.0), textColor: self.theme.rootController.navigationBar.primaryTextColor)
@@ -28,7 +33,7 @@ final class CounterContollerTitleView: UIView {
}
}
- init(theme: PresentationTheme) {
+ public init(theme: PresentationTheme) {
self.theme = theme
self.titleNode = ImmediateTextNode()
@@ -52,11 +57,11 @@ final class CounterContollerTitleView: UIView {
self.addSubnode(self.subtitleNode)
}
- required init?(coder aDecoder: NSCoder) {
+ required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
- override func layoutSubviews() {
+ override public func layoutSubviews() {
super.layoutSubviews()
let size = self.bounds.size
diff --git a/submodules/GridMessageSelectionNode/GridMessageSelectionNode_Xcode.xcodeproj/project.pbxproj b/submodules/GridMessageSelectionNode/GridMessageSelectionNode_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..5157cd080c
--- /dev/null
+++ b/submodules/GridMessageSelectionNode/GridMessageSelectionNode_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,563 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D03E48F4230865190049C28B /* GridMessageSelectionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E48F2230865190049C28B /* GridMessageSelectionNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D03E48FF2308658E0049C28B /* GridMessageSelectionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E48FE2308658D0049C28B /* GridMessageSelectionNode.swift */; };
+ D03E4902230865AE0049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4901230865AD0049C28B /* Foundation.framework */; };
+ D03E4904230865B50049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4903230865B40049C28B /* UIKit.framework */; };
+ D03E4906230865B60049C28B /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4905230865B60049C28B /* AsyncDisplayKit.framework */; };
+ D03E4908230865BC0049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4907230865BC0049C28B /* Display.framework */; };
+ D03E490A230865C70049C28B /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4909230865C70049C28B /* TelegramPresentationData.framework */; };
+ D03E490C230865CD0049C28B /* CheckNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E490B230865CD0049C28B /* CheckNode.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D03E48EF230865190049C28B /* GridMessageSelectionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GridMessageSelectionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48F2230865190049C28B /* GridMessageSelectionNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GridMessageSelectionNode.h; sourceTree = ""; };
+ D03E48F3230865190049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D03E48FE2308658D0049C28B /* GridMessageSelectionNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GridMessageSelectionNode.swift; sourceTree = ""; };
+ D03E4901230865AD0049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D03E4903230865B40049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D03E4905230865B60049C28B /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4907230865BC0049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4909230865C70049C28B /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E490B230865CD0049C28B /* CheckNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CheckNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D03E48EC230865190049C28B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E490C230865CD0049C28B /* CheckNode.framework in Frameworks */,
+ D03E490A230865C70049C28B /* TelegramPresentationData.framework in Frameworks */,
+ D03E4908230865BC0049C28B /* Display.framework in Frameworks */,
+ D03E4906230865B60049C28B /* AsyncDisplayKit.framework in Frameworks */,
+ D03E4904230865B50049C28B /* UIKit.framework in Frameworks */,
+ D03E4902230865AE0049C28B /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D03E48E5230865190049C28B = {
+ isa = PBXGroup;
+ children = (
+ D03E48F3230865190049C28B /* Info.plist */,
+ D03E48F1230865190049C28B /* Sources */,
+ D03E48F0230865190049C28B /* Products */,
+ D03E4900230865A80049C28B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D03E48F0230865190049C28B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D03E48EF230865190049C28B /* GridMessageSelectionNode.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D03E48F1230865190049C28B /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D03E48FE2308658D0049C28B /* GridMessageSelectionNode.swift */,
+ D03E48F2230865190049C28B /* GridMessageSelectionNode.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D03E4900230865A80049C28B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D03E490B230865CD0049C28B /* CheckNode.framework */,
+ D03E4909230865C70049C28B /* TelegramPresentationData.framework */,
+ D03E4907230865BC0049C28B /* Display.framework */,
+ D03E4905230865B60049C28B /* AsyncDisplayKit.framework */,
+ D03E4903230865B40049C28B /* UIKit.framework */,
+ D03E4901230865AD0049C28B /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D03E48EA230865190049C28B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E48F4230865190049C28B /* GridMessageSelectionNode.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D03E48EE230865190049C28B /* GridMessageSelectionNode */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D03E48F7230865190049C28B /* Build configuration list for PBXNativeTarget "GridMessageSelectionNode" */;
+ buildPhases = (
+ D03E48EA230865190049C28B /* Headers */,
+ D03E48EB230865190049C28B /* Sources */,
+ D03E48EC230865190049C28B /* Frameworks */,
+ D03E48ED230865190049C28B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = GridMessageSelectionNode;
+ productName = GridMessageSelectionNode;
+ productReference = D03E48EF230865190049C28B /* GridMessageSelectionNode.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D03E48E6230865190049C28B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D03E48EE230865190049C28B = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D03E48E9230865190049C28B /* Build configuration list for PBXProject "GridMessageSelectionNode_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D03E48E5230865190049C28B;
+ productRefGroup = D03E48F0230865190049C28B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D03E48EE230865190049C28B /* GridMessageSelectionNode */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D03E48ED230865190049C28B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D03E48EB230865190049C28B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E48FF2308658E0049C28B /* GridMessageSelectionNode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D03E48F5230865190049C28B /* 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;
+ };
+ D03E48F6230865190049C28B /* 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;
+ };
+ D03E48F8230865190049C28B /* 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.GridMessageSelectionNode;
+ 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;
+ };
+ D03E48F9230865190049C28B /* 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.GridMessageSelectionNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D03E48FA230865550049C28B /* 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;
+ };
+ D03E48FB230865550049C28B /* 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.GridMessageSelectionNode;
+ 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;
+ };
+ D03E48FC230865640049C28B /* 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;
+ };
+ D03E48FD230865640049C28B /* 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.GridMessageSelectionNode;
+ 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 */
+ D03E48E9230865190049C28B /* Build configuration list for PBXProject "GridMessageSelectionNode_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E48F5230865190049C28B /* DebugAppStoreLLC */,
+ D03E48FA230865550049C28B /* DebugHockeyapp */,
+ D03E48F6230865190049C28B /* ReleaseAppStoreLLC */,
+ D03E48FC230865640049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D03E48F7230865190049C28B /* Build configuration list for PBXNativeTarget "GridMessageSelectionNode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E48F8230865190049C28B /* DebugAppStoreLLC */,
+ D03E48FB230865550049C28B /* DebugHockeyapp */,
+ D03E48F9230865190049C28B /* ReleaseAppStoreLLC */,
+ D03E48FD230865640049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D03E48E6230865190049C28B /* Project object */;
+}
diff --git a/submodules/GridMessageSelectionNode/Info.plist b/submodules/GridMessageSelectionNode/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/GridMessageSelectionNode/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/GridMessageSelectionNode/Sources/GridMessageSelectionNode.h b/submodules/GridMessageSelectionNode/Sources/GridMessageSelectionNode.h
new file mode 100644
index 0000000000..7bc2834b05
--- /dev/null
+++ b/submodules/GridMessageSelectionNode/Sources/GridMessageSelectionNode.h
@@ -0,0 +1,19 @@
+//
+// GridMessageSelectionNode.h
+// GridMessageSelectionNode
+//
+// Created by Peter on 8/17/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for GridMessageSelectionNode.
+FOUNDATION_EXPORT double GridMessageSelectionNodeVersionNumber;
+
+//! Project version string for GridMessageSelectionNode.
+FOUNDATION_EXPORT const unsigned char GridMessageSelectionNodeVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/GridMessageSelectionNode.swift b/submodules/GridMessageSelectionNode/Sources/GridMessageSelectionNode.swift
similarity index 81%
rename from submodules/TelegramUI/TelegramUI/GridMessageSelectionNode.swift
rename to submodules/GridMessageSelectionNode/Sources/GridMessageSelectionNode.swift
index 274b0d01fc..312d959c2f 100644
--- a/submodules/TelegramUI/TelegramUI/GridMessageSelectionNode.swift
+++ b/submodules/GridMessageSelectionNode/Sources/GridMessageSelectionNode.swift
@@ -5,13 +5,13 @@ import Display
import TelegramPresentationData
import CheckNode
-final class GridMessageSelectionNode: ASDisplayNode {
+public final class GridMessageSelectionNode: ASDisplayNode {
private let toggle: (Bool) -> Void
private var selected = false
private let checkNode: CheckNode
- init(theme: PresentationTheme, toggle: @escaping (Bool) -> Void) {
+ public init(theme: PresentationTheme, toggle: @escaping (Bool) -> Void) {
self.toggle = toggle
self.checkNode = CheckNode(strokeColor: theme.list.itemCheckColors.strokeColor, fillColor: theme.list.itemCheckColors.fillColor, foregroundColor: theme.list.itemCheckColors.foregroundColor, style: .overlay)
self.checkNode.isUserInteractionEnabled = false
@@ -21,38 +21,38 @@ final class GridMessageSelectionNode: ASDisplayNode {
self.addSubnode(self.checkNode)
}
- override func didLoad() {
+ override public func didLoad() {
super.didLoad()
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tapGesture(_:))))
}
- func animateIn() {
+ public func animateIn() {
self.checkNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.5, timingFunction: kCAMediaTimingFunctionSpring)
self.checkNode.layer.animateScale(from: 0.2, to: 1.0, duration: 0.5, timingFunction: kCAMediaTimingFunctionSpring)
}
- func animateOut(completion: @escaping () -> Void) {
+ public func animateOut(completion: @escaping () -> Void) {
self.checkNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false)
self.checkNode.layer.animateScale(from: 1.0, to: 0.2, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false, completion: { _ in
completion()
})
}
- func updateSelected(_ selected: Bool, animated: Bool) {
+ public func updateSelected(_ selected: Bool, animated: Bool) {
if self.selected != selected {
self.selected = selected
self.checkNode.setIsChecked(selected, animated: animated)
}
}
- @objc func tapGesture(_ recognizer: UITapGestureRecognizer) {
+ @objc private func tapGesture(_ recognizer: UITapGestureRecognizer) {
if case .ended = recognizer.state {
self.toggle(!self.selected)
}
}
- override func layout() {
+ override public func layout() {
super.layout()
let checkSize = CGSize(width: 32.0, height: 32.0)
diff --git a/submodules/HexColor/HexColor_Xcode.xcodeproj/project.pbxproj b/submodules/HexColor/HexColor_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..9358430255
--- /dev/null
+++ b/submodules/HexColor/HexColor_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,547 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D03E47FA2307690E0049C28B /* HexColor.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E47F82307690E0049C28B /* HexColor.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D03E4805230769790049C28B /* HexColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E4804230769780049C28B /* HexColor.swift */; };
+ D03E48082307698C0049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48072307698B0049C28B /* Foundation.framework */; };
+ D03E480A230769910049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4809230769910049C28B /* UIKit.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D03E47F52307690E0049C28B /* HexColor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HexColor.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47F82307690E0049C28B /* HexColor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HexColor.h; sourceTree = ""; };
+ D03E47F92307690E0049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D03E4804230769780049C28B /* HexColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HexColor.swift; sourceTree = ""; };
+ D03E48072307698B0049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D03E4809230769910049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D03E47F22307690E0049C28B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E480A230769910049C28B /* UIKit.framework in Frameworks */,
+ D03E48082307698C0049C28B /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D03E47EB2307690E0049C28B = {
+ isa = PBXGroup;
+ children = (
+ D03E47F92307690E0049C28B /* Info.plist */,
+ D03E47F72307690E0049C28B /* Sources */,
+ D03E47F62307690E0049C28B /* Products */,
+ D03E4806230769880049C28B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D03E47F62307690E0049C28B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D03E47F52307690E0049C28B /* HexColor.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D03E47F72307690E0049C28B /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4804230769780049C28B /* HexColor.swift */,
+ D03E47F82307690E0049C28B /* HexColor.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D03E4806230769880049C28B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4809230769910049C28B /* UIKit.framework */,
+ D03E48072307698B0049C28B /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D03E47F02307690E0049C28B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E47FA2307690E0049C28B /* HexColor.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D03E47F42307690E0049C28B /* HexColor */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D03E47FD2307690E0049C28B /* Build configuration list for PBXNativeTarget "HexColor" */;
+ buildPhases = (
+ D03E47F02307690E0049C28B /* Headers */,
+ D03E47F12307690E0049C28B /* Sources */,
+ D03E47F22307690E0049C28B /* Frameworks */,
+ D03E47F32307690E0049C28B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = HexColor;
+ productName = HexColor;
+ productReference = D03E47F52307690E0049C28B /* HexColor.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D03E47EC2307690E0049C28B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D03E47F42307690E0049C28B = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D03E47EF2307690E0049C28B /* Build configuration list for PBXProject "HexColor_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D03E47EB2307690E0049C28B;
+ productRefGroup = D03E47F62307690E0049C28B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D03E47F42307690E0049C28B /* HexColor */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D03E47F32307690E0049C28B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D03E47F12307690E0049C28B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E4805230769790049C28B /* HexColor.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D03E47FB2307690E0049C28B /* 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;
+ };
+ D03E47FC2307690E0049C28B /* 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;
+ };
+ D03E47FE2307690E0049C28B /* 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.HexColor;
+ 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;
+ };
+ D03E47FF2307690E0049C28B /* 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.HexColor;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D03E4800230769470049C28B /* 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;
+ };
+ D03E4801230769470049C28B /* 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.HexColor;
+ 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;
+ };
+ D03E4802230769510049C28B /* 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;
+ };
+ D03E4803230769510049C28B /* 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.HexColor;
+ 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 */
+ D03E47EF2307690E0049C28B /* Build configuration list for PBXProject "HexColor_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E47FB2307690E0049C28B /* DebugAppStoreLLC */,
+ D03E4800230769470049C28B /* DebugHockeyapp */,
+ D03E47FC2307690E0049C28B /* ReleaseAppStoreLLC */,
+ D03E4802230769510049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D03E47FD2307690E0049C28B /* Build configuration list for PBXNativeTarget "HexColor" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E47FE2307690E0049C28B /* DebugAppStoreLLC */,
+ D03E4801230769470049C28B /* DebugHockeyapp */,
+ D03E47FF2307690E0049C28B /* ReleaseAppStoreLLC */,
+ D03E4803230769510049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D03E47EC2307690E0049C28B /* Project object */;
+}
diff --git a/submodules/HexColor/Info.plist b/submodules/HexColor/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/HexColor/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/HexColor/Sources/HexColor.h b/submodules/HexColor/Sources/HexColor.h
new file mode 100644
index 0000000000..add4edae03
--- /dev/null
+++ b/submodules/HexColor/Sources/HexColor.h
@@ -0,0 +1,19 @@
+//
+// HexColor.h
+// HexColor
+//
+// Created by Peter on 8/17/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for HexColor.
+FOUNDATION_EXPORT double HexColorVersionNumber;
+
+//! Project version string for HexColor.
+FOUNDATION_EXPORT const unsigned char HexColorVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/HexColor.swift b/submodules/HexColor/Sources/HexColor.swift
similarity index 58%
rename from submodules/TelegramUI/TelegramUI/HexColor.swift
rename to submodules/HexColor/Sources/HexColor.swift
index 25daf3d89c..24fa5263c8 100644
--- a/submodules/TelegramUI/TelegramUI/HexColor.swift
+++ b/submodules/HexColor/Sources/HexColor.swift
@@ -1,7 +1,7 @@
import Foundation
import UIKit
-extension String {
+private extension String {
func rightJustified(width: Int, pad: String = " ", truncate: Bool = false) -> String {
guard width > count else {
return truncate ? String(suffix(width)) : self
@@ -17,8 +17,15 @@ extension String {
}
}
-extension UIColor {
+public extension UIColor {
var hexString: String {
- return String(self.rgb, radix: 16, uppercase: false).rightJustified(width: 6, pad: "0")
+ var red: CGFloat = 0.0
+ var green: CGFloat = 0.0
+ var blue: CGFloat = 0.0
+ self.getRed(&red, green: &green, blue: &blue, alpha: nil)
+
+ let rgb: UInt32 = (UInt32(red * 255.0) << 16) | (UInt32(green * 255.0) << 8) | (UInt32(blue * 255.0))
+
+ return String(rgb, radix: 16, uppercase: false).rightJustified(width: 6, pad: "0")
}
}
diff --git a/submodules/InstantPageCache/Info.plist b/submodules/InstantPageCache/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/InstantPageCache/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/InstantPageCache/InstantPageCache_Xcode.xcodeproj/project.pbxproj b/submodules/InstantPageCache/InstantPageCache_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..0ac44e60b5
--- /dev/null
+++ b/submodules/InstantPageCache/InstantPageCache_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,567 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D03E4920230866B60049C28B /* InstantPageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E491E230866B60049C28B /* InstantPageCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D03E492B230867260049C28B /* CachedInstantPages.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E492A230867260049C28B /* CachedInstantPages.swift */; };
+ D03E492E2308673A0049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E492D230867390049C28B /* Foundation.framework */; };
+ D03E4930230867410049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E492F230867400049C28B /* UIKit.framework */; };
+ D03E4932230867420049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4931230867420049C28B /* SwiftSignalKit.framework */; };
+ D03E4934230867490049C28B /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4933230867490049C28B /* Postbox.framework */; };
+ D03E4936230867520049C28B /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4935230867520049C28B /* TelegramCore.framework */; };
+ D03E49382308675E0049C28B /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E49372308675E0049C28B /* TelegramUIPreferences.framework */; };
+ D03E495B230868CF0049C28B /* PersistentStringHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E495A230868CF0049C28B /* PersistentStringHash.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D03E491B230866B60049C28B /* InstantPageCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = InstantPageCache.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E491E230866B60049C28B /* InstantPageCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstantPageCache.h; sourceTree = ""; };
+ D03E491F230866B60049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D03E492A230867260049C28B /* CachedInstantPages.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CachedInstantPages.swift; sourceTree = ""; };
+ D03E492D230867390049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D03E492F230867400049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D03E4931230867420049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4933230867490049C28B /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4935230867520049C28B /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E49372308675E0049C28B /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E495A230868CF0049C28B /* PersistentStringHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PersistentStringHash.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D03E4918230866B60049C28B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E495B230868CF0049C28B /* PersistentStringHash.framework in Frameworks */,
+ D03E49382308675E0049C28B /* TelegramUIPreferences.framework in Frameworks */,
+ D03E4936230867520049C28B /* TelegramCore.framework in Frameworks */,
+ D03E4934230867490049C28B /* Postbox.framework in Frameworks */,
+ D03E4932230867420049C28B /* SwiftSignalKit.framework in Frameworks */,
+ D03E4930230867410049C28B /* UIKit.framework in Frameworks */,
+ D03E492E2308673A0049C28B /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D03E4911230866B60049C28B = {
+ isa = PBXGroup;
+ children = (
+ D03E491F230866B60049C28B /* Info.plist */,
+ D03E491D230866B60049C28B /* Sources */,
+ D03E491C230866B60049C28B /* Products */,
+ D03E492C230867350049C28B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D03E491C230866B60049C28B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D03E491B230866B60049C28B /* InstantPageCache.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D03E491D230866B60049C28B /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D03E492A230867260049C28B /* CachedInstantPages.swift */,
+ D03E491E230866B60049C28B /* InstantPageCache.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D03E492C230867350049C28B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D03E495A230868CF0049C28B /* PersistentStringHash.framework */,
+ D03E49372308675E0049C28B /* TelegramUIPreferences.framework */,
+ D03E4935230867520049C28B /* TelegramCore.framework */,
+ D03E4933230867490049C28B /* Postbox.framework */,
+ D03E4931230867420049C28B /* SwiftSignalKit.framework */,
+ D03E492F230867400049C28B /* UIKit.framework */,
+ D03E492D230867390049C28B /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D03E4916230866B60049C28B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E4920230866B60049C28B /* InstantPageCache.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D03E491A230866B60049C28B /* InstantPageCache */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D03E4923230866B60049C28B /* Build configuration list for PBXNativeTarget "InstantPageCache" */;
+ buildPhases = (
+ D03E4916230866B60049C28B /* Headers */,
+ D03E4917230866B60049C28B /* Sources */,
+ D03E4918230866B60049C28B /* Frameworks */,
+ D03E4919230866B60049C28B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = InstantPageCache;
+ productName = InstantPageCache;
+ productReference = D03E491B230866B60049C28B /* InstantPageCache.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D03E4912230866B60049C28B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D03E491A230866B60049C28B = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D03E4915230866B60049C28B /* Build configuration list for PBXProject "InstantPageCache_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D03E4911230866B60049C28B;
+ productRefGroup = D03E491C230866B60049C28B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D03E491A230866B60049C28B /* InstantPageCache */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D03E4919230866B60049C28B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D03E4917230866B60049C28B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E492B230867260049C28B /* CachedInstantPages.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D03E4921230866B60049C28B /* 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;
+ };
+ D03E4922230866B60049C28B /* 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;
+ };
+ D03E4924230866B60049C28B /* 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.InstantPageCache;
+ 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;
+ };
+ D03E4925230866B60049C28B /* 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.InstantPageCache;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D03E4926230866E50049C28B /* 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;
+ };
+ D03E4927230866E50049C28B /* 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.InstantPageCache;
+ 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;
+ };
+ D03E4928230866F40049C28B /* 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;
+ };
+ D03E4929230866F40049C28B /* 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.InstantPageCache;
+ 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 */
+ D03E4915230866B60049C28B /* Build configuration list for PBXProject "InstantPageCache_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E4921230866B60049C28B /* DebugAppStoreLLC */,
+ D03E4926230866E50049C28B /* DebugHockeyapp */,
+ D03E4922230866B60049C28B /* ReleaseAppStoreLLC */,
+ D03E4928230866F40049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D03E4923230866B60049C28B /* Build configuration list for PBXNativeTarget "InstantPageCache" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E4924230866B60049C28B /* DebugAppStoreLLC */,
+ D03E4927230866E50049C28B /* DebugHockeyapp */,
+ D03E4925230866B60049C28B /* ReleaseAppStoreLLC */,
+ D03E4929230866F40049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D03E4912230866B60049C28B /* Project object */;
+}
diff --git a/submodules/TelegramUI/TelegramUI/CachedInstantPages.swift b/submodules/InstantPageCache/Sources/CachedInstantPages.swift
similarity index 75%
rename from submodules/TelegramUI/TelegramUI/CachedInstantPages.swift
rename to submodules/InstantPageCache/Sources/CachedInstantPages.swift
index a912c88f36..8b528633c6 100644
--- a/submodules/TelegramUI/TelegramUI/CachedInstantPages.swift
+++ b/submodules/InstantPageCache/Sources/CachedInstantPages.swift
@@ -4,28 +4,29 @@ import SwiftSignalKit
import Postbox
import TelegramCore
import TelegramUIPreferences
+import PersistentStringHash
-final class CachedInstantPage: PostboxCoding {
- let webPage: TelegramMediaWebpage
- let timestamp: Int32
+public final class CachedInstantPage: PostboxCoding {
+ public let webPage: TelegramMediaWebpage
+ public let timestamp: Int32
- init(webPage: TelegramMediaWebpage, timestamp: Int32) {
+ public init(webPage: TelegramMediaWebpage, timestamp: Int32) {
self.webPage = webPage
self.timestamp = timestamp
}
- init(decoder: PostboxDecoder) {
+ public init(decoder: PostboxDecoder) {
self.webPage = decoder.decodeObjectForKey("webpage", decoder: { TelegramMediaWebpage(decoder: $0) }) as! TelegramMediaWebpage
self.timestamp = decoder.decodeInt32ForKey("timestamp", orElse: 0)
}
- func encode(_ encoder: PostboxEncoder) {
+ public func encode(_ encoder: PostboxEncoder) {
encoder.encodeObject(self.webPage, forKey: "webpage")
encoder.encodeInt32(self.timestamp, forKey: "timestamp")
}
}
-func cachedInstantPage(postbox: Postbox, url: String) -> Signal {
+public func cachedInstantPage(postbox: Postbox, url: String) -> Signal {
return postbox.transaction { transaction -> CachedInstantPage? in
let key = ValueBoxKey(length: 8)
key.setInt64(0, value: Int64(bitPattern: url.persistentHashValue))
@@ -39,7 +40,7 @@ func cachedInstantPage(postbox: Postbox, url: String) -> Signal Signal {
+public func updateCachedInstantPage(postbox: Postbox, url: String, webPage: TelegramMediaWebpage?) -> Signal {
return postbox.transaction { transaction -> Void in
let key = ValueBoxKey(length: 8)
key.setInt64(0, value: Int64(bitPattern: url.persistentHashValue))
diff --git a/submodules/InstantPageCache/Sources/InstantPageCache.h b/submodules/InstantPageCache/Sources/InstantPageCache.h
new file mode 100644
index 0000000000..370730c351
--- /dev/null
+++ b/submodules/InstantPageCache/Sources/InstantPageCache.h
@@ -0,0 +1,19 @@
+//
+// InstantPageCache.h
+// InstantPageCache
+//
+// Created by Peter on 8/17/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for InstantPageCache.
+FOUNDATION_EXPORT double InstantPageCacheVersionNumber;
+
+//! Project version string for InstantPageCache.
+FOUNDATION_EXPORT const unsigned char InstantPageCacheVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/LocalMediaResources/LocalMediaResources_Xcode.xcodeproj/project.pbxproj b/submodules/LocalMediaResources/LocalMediaResources_Xcode.xcodeproj/project.pbxproj
index 2bc9e12c6e..e20d4c7ba8 100644
--- a/submodules/LocalMediaResources/LocalMediaResources_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/LocalMediaResources/LocalMediaResources_Xcode.xcodeproj/project.pbxproj
@@ -13,6 +13,10 @@
D03E3FE82304C7DD0049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3FE72304C7DD0049C28B /* UIKit.framework */; };
D03E3FEA2304C7DF0049C28B /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3FE92304C7DF0049C28B /* Postbox.framework */; };
D03E3FEC2304C7E50049C28B /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3FEB2304C7E50049C28B /* TelegramCore.framework */; };
+ D03E487423076D350049C28B /* FetchPhotoLibraryImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E487323076D350049C28B /* FetchPhotoLibraryImageResource.swift */; };
+ D03E487623076D430049C28B /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E487523076D420049C28B /* Photos.framework */; };
+ D03E487823076D470049C28B /* ImageCompression.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E487723076D470049C28B /* ImageCompression.framework */; };
+ D03E487A23076D550049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E487923076D550049C28B /* SwiftSignalKit.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -24,6 +28,10 @@
D03E3FE72304C7DD0049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
D03E3FE92304C7DF0049C28B /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D03E3FEB2304C7E50049C28B /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E487323076D350049C28B /* FetchPhotoLibraryImageResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchPhotoLibraryImageResource.swift; sourceTree = ""; };
+ D03E487523076D420049C28B /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = System/Library/Frameworks/Photos.framework; sourceTree = SDKROOT; };
+ D03E487723076D470049C28B /* ImageCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ImageCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E487923076D550049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -31,6 +39,9 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D03E487A23076D550049C28B /* SwiftSignalKit.framework in Frameworks */,
+ D03E487823076D470049C28B /* ImageCompression.framework in Frameworks */,
+ D03E487623076D430049C28B /* Photos.framework in Frameworks */,
D03E3FEC2304C7E50049C28B /* TelegramCore.framework in Frameworks */,
D03E3FEA2304C7DF0049C28B /* Postbox.framework in Frameworks */,
D03E3FE82304C7DD0049C28B /* UIKit.framework in Frameworks */,
@@ -62,6 +73,7 @@
D03E3FD52304C76E0049C28B /* Sources */ = {
isa = PBXGroup;
children = (
+ D03E487323076D350049C28B /* FetchPhotoLibraryImageResource.swift */,
D03E3FE22304C7CA0049C28B /* MediaResources.swift */,
D03E3FD62304C76E0049C28B /* LocalMediaResources.h */,
);
@@ -71,6 +83,9 @@
D03E3FE42304C7D90049C28B /* Frameworks */ = {
isa = PBXGroup;
children = (
+ D03E487923076D550049C28B /* SwiftSignalKit.framework */,
+ D03E487723076D470049C28B /* ImageCompression.framework */,
+ D03E487523076D420049C28B /* Photos.framework */,
D03E3FEB2304C7E50049C28B /* TelegramCore.framework */,
D03E3FE92304C7DF0049C28B /* Postbox.framework */,
D03E3FE72304C7DD0049C28B /* UIKit.framework */,
@@ -160,6 +175,7 @@
buildActionMask = 2147483647;
files = (
D03E3FE32304C7CA0049C28B /* MediaResources.swift in Sources */,
+ D03E487423076D350049C28B /* FetchPhotoLibraryImageResource.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/submodules/TelegramUI/TelegramUI/FetchPhotoLibraryImageResource.swift b/submodules/LocalMediaResources/Sources/FetchPhotoLibraryImageResource.swift
similarity index 96%
rename from submodules/TelegramUI/TelegramUI/FetchPhotoLibraryImageResource.swift
rename to submodules/LocalMediaResources/Sources/FetchPhotoLibraryImageResource.swift
index f8c647d057..90c0cbb583 100644
--- a/submodules/TelegramUI/TelegramUI/FetchPhotoLibraryImageResource.swift
+++ b/submodules/LocalMediaResources/Sources/FetchPhotoLibraryImageResource.swift
@@ -10,7 +10,7 @@ private final class RequestId {
var invalidated: Bool = false
}
-func fetchPhotoLibraryResource(localIdentifier: String) -> Signal {
+public func fetchPhotoLibraryResource(localIdentifier: String) -> Signal {
return Signal { subscriber in
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: [localIdentifier], options: nil)
let requestId = Atomic(value: RequestId())
@@ -105,7 +105,7 @@ func fetchPhotoLibraryResource(localIdentifier: String) -> Signal Signal<(UIImage, Bool)?, NoError> {
+public func fetchPhotoLibraryImage(localIdentifier: String, thumbnail: Bool) -> Signal<(UIImage, Bool)?, NoError> {
return Signal { subscriber in
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: [localIdentifier], options: nil)
let requestId = Atomic(value: RequestId())
diff --git a/submodules/PersistentStringHash/Info.plist b/submodules/PersistentStringHash/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/PersistentStringHash/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/PersistentStringHash/PersistentStringHash_Xcode.xcodeproj/project.pbxproj b/submodules/PersistentStringHash/PersistentStringHash_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..c21cac14d5
--- /dev/null
+++ b/submodules/PersistentStringHash/PersistentStringHash_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,541 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D03E494C230868170049C28B /* PersistentStringHash.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E494A230868170049C28B /* PersistentStringHash.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D03E4957230868A70049C28B /* StringHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E4956230868A60049C28B /* StringHash.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D03E4947230868170049C28B /* PersistentStringHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PersistentStringHash.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E494A230868170049C28B /* PersistentStringHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PersistentStringHash.h; sourceTree = ""; };
+ D03E494B230868170049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D03E4956230868A60049C28B /* StringHash.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringHash.swift; sourceTree = ""; };
+ D03E4959230868BB0049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D03E4944230868170049C28B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D03E493D230868170049C28B = {
+ isa = PBXGroup;
+ children = (
+ D03E494B230868170049C28B /* Info.plist */,
+ D03E4949230868170049C28B /* Sources */,
+ D03E4948230868170049C28B /* Products */,
+ D03E4958230868B20049C28B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D03E4948230868170049C28B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4947230868170049C28B /* PersistentStringHash.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D03E4949230868170049C28B /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4956230868A60049C28B /* StringHash.swift */,
+ D03E494A230868170049C28B /* PersistentStringHash.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D03E4958230868B20049C28B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4959230868BB0049C28B /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D03E4942230868170049C28B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E494C230868170049C28B /* PersistentStringHash.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D03E4946230868170049C28B /* PersistentStringHash */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D03E494F230868170049C28B /* Build configuration list for PBXNativeTarget "PersistentStringHash" */;
+ buildPhases = (
+ D03E4942230868170049C28B /* Headers */,
+ D03E4943230868170049C28B /* Sources */,
+ D03E4944230868170049C28B /* Frameworks */,
+ D03E4945230868170049C28B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PersistentStringHash;
+ productName = PersistentStringHash;
+ productReference = D03E4947230868170049C28B /* PersistentStringHash.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D03E493E230868170049C28B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D03E4946230868170049C28B = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D03E4941230868170049C28B /* Build configuration list for PBXProject "PersistentStringHash_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D03E493D230868170049C28B;
+ productRefGroup = D03E4948230868170049C28B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D03E4946230868170049C28B /* PersistentStringHash */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D03E4945230868170049C28B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D03E4943230868170049C28B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E4957230868A70049C28B /* StringHash.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D03E494D230868170049C28B /* 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;
+ };
+ D03E494E230868170049C28B /* 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;
+ };
+ D03E4950230868170049C28B /* 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.PersistentStringHash;
+ 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;
+ };
+ D03E4951230868170049C28B /* 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.PersistentStringHash;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D03E49522308684B0049C28B /* 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;
+ };
+ D03E49532308684B0049C28B /* 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.PersistentStringHash;
+ 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;
+ };
+ D03E49542308685A0049C28B /* 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;
+ };
+ D03E49552308685A0049C28B /* 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.PersistentStringHash;
+ 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 */
+ D03E4941230868170049C28B /* Build configuration list for PBXProject "PersistentStringHash_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E494D230868170049C28B /* DebugAppStoreLLC */,
+ D03E49522308684B0049C28B /* DebugHockeyapp */,
+ D03E494E230868170049C28B /* ReleaseAppStoreLLC */,
+ D03E49542308685A0049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D03E494F230868170049C28B /* Build configuration list for PBXNativeTarget "PersistentStringHash" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E4950230868170049C28B /* DebugAppStoreLLC */,
+ D03E49532308684B0049C28B /* DebugHockeyapp */,
+ D03E4951230868170049C28B /* ReleaseAppStoreLLC */,
+ D03E49552308685A0049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D03E493E230868170049C28B /* Project object */;
+}
diff --git a/submodules/PersistentStringHash/Sources/PersistentStringHash.h b/submodules/PersistentStringHash/Sources/PersistentStringHash.h
new file mode 100644
index 0000000000..5ddb521e30
--- /dev/null
+++ b/submodules/PersistentStringHash/Sources/PersistentStringHash.h
@@ -0,0 +1,19 @@
+//
+// PersistentStringHash.h
+// PersistentStringHash
+//
+// Created by Peter on 8/17/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for PersistentStringHash.
+FOUNDATION_EXPORT double PersistentStringHashVersionNumber;
+
+//! Project version string for PersistentStringHash.
+FOUNDATION_EXPORT const unsigned char PersistentStringHashVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/StringHash.swift b/submodules/PersistentStringHash/Sources/StringHash.swift
similarity index 90%
rename from submodules/TelegramUI/TelegramUI/StringHash.swift
rename to submodules/PersistentStringHash/Sources/StringHash.swift
index 86f168c8e1..7d66b9132f 100644
--- a/submodules/TelegramUI/TelegramUI/StringHash.swift
+++ b/submodules/PersistentStringHash/Sources/StringHash.swift
@@ -1,6 +1,6 @@
import Foundation
-extension String {
+public extension String {
var persistentHashValue: UInt64 {
var result = UInt64 (5381)
let buf = [UInt8](self.utf8)
diff --git a/submodules/QrCode/Info.plist b/submodules/QrCode/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/QrCode/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/QrCode/QrCode_Xcode.xcodeproj/project.pbxproj b/submodules/QrCode/QrCode_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..189eecc362
--- /dev/null
+++ b/submodules/QrCode/QrCode_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,559 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D03E481E230769ED0049C28B /* QrCode.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E481C230769ED0049C28B /* QrCode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D03E482923076A950049C28B /* QRCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E482823076A950049C28B /* QRCode.swift */; };
+ D03E482C23076AA80049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E482B23076AA80049C28B /* Foundation.framework */; };
+ D03E482E23076AAE0049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E482D23076AAE0049C28B /* UIKit.framework */; };
+ D03E483023076AB50049C28B /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E482F23076AB50049C28B /* CoreImage.framework */; };
+ D03E483223076AB60049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E483123076AB60049C28B /* SwiftSignalKit.framework */; };
+ D03E483423076ABE0049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E483323076ABE0049C28B /* Display.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D03E4819230769ED0049C28B /* QrCode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = QrCode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E481C230769ED0049C28B /* QrCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QrCode.h; sourceTree = ""; };
+ D03E481D230769ED0049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D03E482823076A950049C28B /* QRCode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRCode.swift; sourceTree = ""; };
+ D03E482B23076AA80049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D03E482D23076AAE0049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D03E482F23076AB50049C28B /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };
+ D03E483123076AB60049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E483323076ABE0049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D03E4816230769ED0049C28B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E483423076ABE0049C28B /* Display.framework in Frameworks */,
+ D03E483223076AB60049C28B /* SwiftSignalKit.framework in Frameworks */,
+ D03E483023076AB50049C28B /* CoreImage.framework in Frameworks */,
+ D03E482E23076AAE0049C28B /* UIKit.framework in Frameworks */,
+ D03E482C23076AA80049C28B /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D03E480F230769ED0049C28B = {
+ isa = PBXGroup;
+ children = (
+ D03E481D230769ED0049C28B /* Info.plist */,
+ D03E481B230769ED0049C28B /* Sources */,
+ D03E481A230769ED0049C28B /* Products */,
+ D03E482A23076AA60049C28B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D03E481A230769ED0049C28B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4819230769ED0049C28B /* QrCode.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D03E481B230769ED0049C28B /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D03E482823076A950049C28B /* QRCode.swift */,
+ D03E481C230769ED0049C28B /* QrCode.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D03E482A23076AA60049C28B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D03E483323076ABE0049C28B /* Display.framework */,
+ D03E483123076AB60049C28B /* SwiftSignalKit.framework */,
+ D03E482F23076AB50049C28B /* CoreImage.framework */,
+ D03E482D23076AAE0049C28B /* UIKit.framework */,
+ D03E482B23076AA80049C28B /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D03E4814230769ED0049C28B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E481E230769ED0049C28B /* QrCode.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D03E4818230769ED0049C28B /* QrCode */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D03E4821230769ED0049C28B /* Build configuration list for PBXNativeTarget "QrCode" */;
+ buildPhases = (
+ D03E4814230769ED0049C28B /* Headers */,
+ D03E4815230769ED0049C28B /* Sources */,
+ D03E4816230769ED0049C28B /* Frameworks */,
+ D03E4817230769ED0049C28B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = QrCode;
+ productName = QrCode;
+ productReference = D03E4819230769ED0049C28B /* QrCode.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D03E4810230769ED0049C28B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D03E4818230769ED0049C28B = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D03E4813230769ED0049C28B /* Build configuration list for PBXProject "QrCode_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D03E480F230769ED0049C28B;
+ productRefGroup = D03E481A230769ED0049C28B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D03E4818230769ED0049C28B /* QrCode */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D03E4817230769ED0049C28B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D03E4815230769ED0049C28B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E482923076A950049C28B /* QRCode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D03E481F230769ED0049C28B /* 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;
+ };
+ D03E4820230769ED0049C28B /* 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;
+ };
+ D03E4822230769ED0049C28B /* 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.QrCode;
+ 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;
+ };
+ D03E4823230769ED0049C28B /* 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.QrCode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D03E482423076A5D0049C28B /* 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;
+ };
+ D03E482523076A5D0049C28B /* 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.QrCode;
+ 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;
+ };
+ D03E482623076A670049C28B /* 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;
+ };
+ D03E482723076A670049C28B /* 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.QrCode;
+ 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 */
+ D03E4813230769ED0049C28B /* Build configuration list for PBXProject "QrCode_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E481F230769ED0049C28B /* DebugAppStoreLLC */,
+ D03E482423076A5D0049C28B /* DebugHockeyapp */,
+ D03E4820230769ED0049C28B /* ReleaseAppStoreLLC */,
+ D03E482623076A670049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D03E4821230769ED0049C28B /* Build configuration list for PBXNativeTarget "QrCode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E4822230769ED0049C28B /* DebugAppStoreLLC */,
+ D03E482523076A5D0049C28B /* DebugHockeyapp */,
+ D03E4823230769ED0049C28B /* ReleaseAppStoreLLC */,
+ D03E482723076A670049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D03E4810230769ED0049C28B /* Project object */;
+}
diff --git a/submodules/TelegramUI/TelegramUI/QRCode.swift b/submodules/QrCode/Sources/QRCode.swift
similarity index 96%
rename from submodules/TelegramUI/TelegramUI/QRCode.swift
rename to submodules/QrCode/Sources/QRCode.swift
index dc15fd7997..9475cd4e44 100644
--- a/submodules/TelegramUI/TelegramUI/QRCode.swift
+++ b/submodules/QrCode/Sources/QRCode.swift
@@ -4,7 +4,7 @@ import CoreImage
import SwiftSignalKit
import Display
-func qrCode(string: String, color: UIColor, backgroundColor: UIColor? = nil, scale: CGFloat = 0.0) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
+public func qrCode(string: String, color: UIColor, backgroundColor: UIColor? = nil, scale: CGFloat = 0.0) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
return Signal { subscriber in
if let data = string.data(using: .isoLatin1, allowLossyConversion: false), let filter = CIFilter(name: "CIQRCodeGenerator") {
filter.setValue(data, forKey: "inputMessage")
diff --git a/submodules/QrCode/Sources/QrCode.h b/submodules/QrCode/Sources/QrCode.h
new file mode 100644
index 0000000000..9544fd4cf1
--- /dev/null
+++ b/submodules/QrCode/Sources/QrCode.h
@@ -0,0 +1,19 @@
+//
+// QrCode.h
+// QrCode
+//
+// Created by Peter on 8/17/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for QrCode.
+FOUNDATION_EXPORT double QrCodeVersionNumber;
+
+//! Project version string for QrCode.
+FOUNDATION_EXPORT const unsigned char QrCodeVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/SettingsUI/Info.plist b/submodules/SettingsUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/SettingsUI/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/SettingsUI/SettingsUI_Xcode.xcodeproj/project.pbxproj b/submodules/SettingsUI/SettingsUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..add060d92c
--- /dev/null
+++ b/submodules/SettingsUI/SettingsUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,1355 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D03E465223075D930049C28B /* SettingsUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E465023075D930049C28B /* SettingsUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D03E466823075E660049C28B /* TabBarAccountSwitchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E465C23075E630049C28B /* TabBarAccountSwitchControllerNode.swift */; };
+ D03E466923075E660049C28B /* LogoutOptionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E465D23075E630049C28B /* LogoutOptionsController.swift */; };
+ D03E466A23075E660049C28B /* DebugController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E465E23075E640049C28B /* DebugController.swift */; };
+ D03E466B23075E660049C28B /* ChangePhoneNumberControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E465F23075E640049C28B /* ChangePhoneNumberControllerNode.swift */; };
+ D03E466C23075E660049C28B /* ChangePhoneNumberController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E466023075E640049C28B /* ChangePhoneNumberController.swift */; };
+ D03E466D23075E660049C28B /* EditSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E466123075E640049C28B /* EditSettingsController.swift */; };
+ D03E466E23075E660049C28B /* TabBarAccountSwitchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E466223075E640049C28B /* TabBarAccountSwitchController.swift */; };
+ D03E466F23075E660049C28B /* UsernameSetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E466323075E650049C28B /* UsernameSetupController.swift */; };
+ D03E467023075E660049C28B /* DebugAccountsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E466423075E650049C28B /* DebugAccountsController.swift */; };
+ D03E467123075E660049C28B /* SettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E466523075E650049C28B /* SettingsController.swift */; };
+ D03E467223075E660049C28B /* ChangePhoneNumberCodeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E466623075E660049C28B /* ChangePhoneNumberCodeController.swift */; };
+ D03E467323075E660049C28B /* ChangePhoneNumberIntroController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E466723075E660049C28B /* ChangePhoneNumberIntroController.swift */; };
+ D03E467923075EC70049C28B /* NotificationsAndSounds.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E467723075EC60049C28B /* NotificationsAndSounds.swift */; };
+ D03E467A23075EC70049C28B /* NotificationSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E467823075EC70049C28B /* NotificationSearchItem.swift */; };
+ D03E467F23075EE90049C28B /* NotificationExceptionSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E467C23075EE90049C28B /* NotificationExceptionSettingsController.swift */; };
+ D03E468023075EE90049C28B /* NotificationExceptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E467D23075EE90049C28B /* NotificationExceptions.swift */; };
+ D03E468123075EE90049C28B /* NotificationExceptionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E467E23075EE90049C28B /* NotificationExceptionControllerNode.swift */; };
+ D03E468423075EF60049C28B /* LanguageSuggestionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E468323075EF60049C28B /* LanguageSuggestionController.swift */; };
+ D03E468A23075F010049C28B /* SettingsSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E468523075EFF0049C28B /* SettingsSearchRecentQueries.swift */; };
+ D03E468B23075F010049C28B /* SettingsSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E468623075F000049C28B /* SettingsSearchItem.swift */; };
+ D03E468C23075F010049C28B /* SettingsSearchableItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E468723075F000049C28B /* SettingsSearchableItems.swift */; };
+ D03E468D23075F010049C28B /* SettingsSearchResultItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E468823075F000049C28B /* SettingsSearchResultItem.swift */; };
+ D03E468E23075F010049C28B /* SettingsSearchRecentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E468923075F000049C28B /* SettingsSearchRecentItem.swift */; };
+ D03E469D23075F2C0049C28B /* SelectivePrivacySettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E468F23075F290049C28B /* SelectivePrivacySettingsController.swift */; };
+ D03E469E23075F2C0049C28B /* ConfirmPhoneNumberController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469023075F2A0049C28B /* ConfirmPhoneNumberController.swift */; };
+ D03E469F23075F2C0049C28B /* TwoStepVerificationResetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469123075F2A0049C28B /* TwoStepVerificationResetController.swift */; };
+ D03E46A023075F2C0049C28B /* PrivacyIntroControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469223075F2A0049C28B /* PrivacyIntroControllerNode.swift */; };
+ D03E46A123075F2C0049C28B /* PasscodeOptionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469323075F2A0049C28B /* PasscodeOptionsController.swift */; };
+ D03E46A223075F2C0049C28B /* PrivacyAndSecurityController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469423075F2A0049C28B /* PrivacyAndSecurityController.swift */; };
+ D03E46A323075F2C0049C28B /* CreatePasswordController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469523075F2A0049C28B /* CreatePasswordController.swift */; };
+ D03E46A423075F2C0049C28B /* ForwardPrivacyChatPreviewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469623075F2A0049C28B /* ForwardPrivacyChatPreviewItem.swift */; };
+ D03E46A523075F2C0049C28B /* PrivacyIntroController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469723075F2B0049C28B /* PrivacyIntroController.swift */; };
+ D03E46A623075F2C0049C28B /* TwoStepVerificationPasswordEntryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469823075F2B0049C28B /* TwoStepVerificationPasswordEntryController.swift */; };
+ D03E46A723075F2C0049C28B /* SelectivePrivacySettingsPeersController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469923075F2B0049C28B /* SelectivePrivacySettingsPeersController.swift */; };
+ D03E46A823075F2C0049C28B /* TwoStepVerificationUnlockController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469A23075F2B0049C28B /* TwoStepVerificationUnlockController.swift */; };
+ D03E46A923075F2C0049C28B /* BlockedPeersController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469B23075F2B0049C28B /* BlockedPeersController.swift */; };
+ D03E46AA23075F2C0049C28B /* DataPrivacySettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E469C23075F2C0049C28B /* DataPrivacySettingsController.swift */; };
+ D03E46B023075F4E0049C28B /* ItemListRecentSessionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46AC23075F4E0049C28B /* ItemListRecentSessionItem.swift */; };
+ D03E46B123075F4E0049C28B /* ItemListWebsiteItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46AD23075F4E0049C28B /* ItemListWebsiteItem.swift */; };
+ D03E46B223075F4E0049C28B /* RecentSessionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46AE23075F4E0049C28B /* RecentSessionsController.swift */; };
+ D03E46B323075F4E0049C28B /* RecentSessionsEmptyStateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46AF23075F4E0049C28B /* RecentSessionsEmptyStateItem.swift */; };
+ D03E46C523075F810049C28B /* DataAndStorageSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46B523075F7F0049C28B /* DataAndStorageSettingsController.swift */; };
+ D03E46C623075F810049C28B /* SaveIncomingMediaController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46B623075F7F0049C28B /* SaveIncomingMediaController.swift */; };
+ D03E46C723075F810049C28B /* ProxyServerActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46B723075F7F0049C28B /* ProxyServerActionSheetController.swift */; };
+ D03E46C823075F810049C28B /* CalculatingCacheSizeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46B823075F7F0049C28B /* CalculatingCacheSizeItem.swift */; };
+ D03E46C923075F810049C28B /* StorageUsageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46B923075F7F0049C28B /* StorageUsageController.swift */; };
+ D03E46CA23075F810049C28B /* AutodownloadDataUsagePickerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46BA23075F7F0049C28B /* AutodownloadDataUsagePickerItem.swift */; };
+ D03E46CB23075F810049C28B /* ProxySettingsServerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46BB23075F800049C28B /* ProxySettingsServerItem.swift */; };
+ D03E46CC23075F810049C28B /* NetworkUsageStatsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46BC23075F800049C28B /* NetworkUsageStatsController.swift */; };
+ D03E46CD23075F810049C28B /* AutodownloadConnectionTypeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46BD23075F800049C28B /* AutodownloadConnectionTypeController.swift */; };
+ D03E46CE23075F810049C28B /* VoiceCallDataSavingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46BE23075F800049C28B /* VoiceCallDataSavingController.swift */; };
+ D03E46CF23075F810049C28B /* ProxyServerSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46BF23075F800049C28B /* ProxyServerSettingsController.swift */; };
+ D03E46D023075F810049C28B /* AutodownloadSizeLimitItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46C023075F800049C28B /* AutodownloadSizeLimitItem.swift */; };
+ D03E46D123075F810049C28B /* ProxyListSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46C123075F810049C28B /* ProxyListSettingsController.swift */; };
+ D03E46D223075F810049C28B /* ShareProxyServerActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46C223075F810049C28B /* ShareProxyServerActionSheetController.swift */; };
+ D03E46D323075F810049C28B /* AutodownloadMediaCategoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46C323075F810049C28B /* AutodownloadMediaCategoryController.swift */; };
+ D03E46D423075F810049C28B /* ProxySettingsActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46C423075F810049C28B /* ProxySettingsActionItem.swift */; };
+ D03E46D923075FA40049C28B /* InstalledStickerPacksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46D623075FA40049C28B /* InstalledStickerPacksController.swift */; };
+ D03E46DA23075FA40049C28B /* ArchivedStickerPacksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46D723075FA40049C28B /* ArchivedStickerPacksController.swift */; };
+ D03E46DB23075FA40049C28B /* FeaturedStickerPacksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46D823075FA40049C28B /* FeaturedStickerPacksController.swift */; };
+ D03E470023075FE40049C28B /* ThemeColorsGridControllerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46DD23075FC90049C28B /* ThemeColorsGridControllerItem.swift */; };
+ D03E470123075FE40049C28B /* ThemeSettingsChatPreviewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46DE23075FC90049C28B /* ThemeSettingsChatPreviewItem.swift */; };
+ D03E470223075FE40049C28B /* WallpaperColorPickerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46DF23075FC90049C28B /* WallpaperColorPickerNode.swift */; };
+ D03E470323075FE40049C28B /* ThemeGridControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E023075FD10049C28B /* ThemeGridControllerNode.swift */; };
+ D03E470423075FE40049C28B /* ThemeGridSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E123075FD30049C28B /* ThemeGridSearchItem.swift */; };
+ D03E470523075FE40049C28B /* ThemeSettingsAppIconItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E223075FD30049C28B /* ThemeSettingsAppIconItem.swift */; };
+ D03E470623075FE40049C28B /* ThemeGridSearchColorsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E323075FD30049C28B /* ThemeGridSearchColorsItem.swift */; };
+ D03E470723075FE40049C28B /* ThemeSettingsThemeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E423075FD40049C28B /* ThemeSettingsThemeItem.swift */; };
+ D03E470823075FE40049C28B /* WallpaperGalleryToolbarNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E523075FD40049C28B /* WallpaperGalleryToolbarNode.swift */; };
+ D03E470923075FE40049C28B /* CustomWallpaperPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E623075FD50049C28B /* CustomWallpaperPicker.swift */; };
+ D03E470A23075FE40049C28B /* ThemeAccentColorActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E723075FD50049C28B /* ThemeAccentColorActionSheet.swift */; };
+ D03E470B23075FE40049C28B /* ThemePreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E823075FD50049C28B /* ThemePreviewControllerNode.swift */; };
+ D03E470C23075FE40049C28B /* WallpaperGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46E923075FD50049C28B /* WallpaperGalleryController.swift */; };
+ D03E470D23075FE40049C28B /* ThemeSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46EA23075FD50049C28B /* ThemeSettingsController.swift */; };
+ D03E470E23075FE40049C28B /* WallpaperPatternPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46EB23075FD60049C28B /* WallpaperPatternPanelNode.swift */; };
+ D03E470F23075FE40049C28B /* ThemeAccentColorController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46EC23075FD60049C28B /* ThemeAccentColorController.swift */; };
+ D03E471023075FE40049C28B /* SettingsThemeWallpaperNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46ED23075FD60049C28B /* SettingsThemeWallpaperNode.swift */; };
+ D03E471123075FE40049C28B /* WallpaperSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46EE23075FD60049C28B /* WallpaperSearchRecentQueries.swift */; };
+ D03E471223075FE40049C28B /* ThemeGridSearchContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46EF23075FD70049C28B /* ThemeGridSearchContentNode.swift */; };
+ D03E471323075FE40049C28B /* ThemePreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F023075FD70049C28B /* ThemePreviewController.swift */; };
+ D03E471423075FE40049C28B /* ThemeColorsGridController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F123075FD70049C28B /* ThemeColorsGridController.swift */; };
+ D03E471523075FE40049C28B /* ThemeSettingsFontSizeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F223075FD70049C28B /* ThemeSettingsFontSizeItem.swift */; };
+ D03E471623075FE40049C28B /* WallpaperColorPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F323075FD80049C28B /* WallpaperColorPanelNode.swift */; };
+ D03E471723075FE40049C28B /* WallpaperGalleryDecorationNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F423075FD80049C28B /* WallpaperGalleryDecorationNode.swift */; };
+ D03E471823075FE40049C28B /* ThemeGridSelectionPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F523075FD90049C28B /* ThemeGridSelectionPanelNode.swift */; };
+ D03E471923075FE40049C28B /* ThemeAccentColorControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F623075FD90049C28B /* ThemeAccentColorControllerNode.swift */; };
+ D03E471A23075FE40049C28B /* WallpaperCropNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F723075FD90049C28B /* WallpaperCropNode.swift */; };
+ D03E471B23075FE40049C28B /* ThemeGridControllerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F823075FD90049C28B /* ThemeGridControllerItem.swift */; };
+ D03E471C23075FE40049C28B /* ThemeSettingsBrightnessItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46F923075FD90049C28B /* ThemeSettingsBrightnessItem.swift */; };
+ D03E471D23075FE40049C28B /* ThemeAutoNightTimeSelectionActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46FA23075FD90049C28B /* ThemeAutoNightTimeSelectionActionSheet.swift */; };
+ D03E471E23075FE40049C28B /* ThemeColorsGridControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46FB23075FDA0049C28B /* ThemeColorsGridControllerNode.swift */; };
+ D03E471F23075FE40049C28B /* ThemeGridController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46FC23075FDA0049C28B /* ThemeGridController.swift */; };
+ D03E472023075FE40049C28B /* WallpaperGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46FD23075FDA0049C28B /* WallpaperGalleryItem.swift */; };
+ D03E472123075FE40049C28B /* ThemeSettingsAccentColorItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46FE23075FDA0049C28B /* ThemeSettingsAccentColorItem.swift */; };
+ D03E472223075FE40049C28B /* ThemeAutoNightSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E46FF23075FE20049C28B /* ThemeAutoNightSettingsController.swift */; };
+ D03E4725230760040049C28B /* WatchSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E4724230760040049C28B /* WatchSettingsController.swift */; };
+ D03E472A230760330049C28B /* LocalizationListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E4727230760320049C28B /* LocalizationListItem.swift */; };
+ D03E472B230760330049C28B /* LocalizationListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E4728230760320049C28B /* LocalizationListController.swift */; };
+ D03E472C230760330049C28B /* LocalizationListControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E4729230760330049C28B /* LocalizationListControllerNode.swift */; };
+ D03E4730230760570049C28B /* TermsOfServiceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E472E230760560049C28B /* TermsOfServiceControllerNode.swift */; };
+ D03E4731230760570049C28B /* TermsOfServiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E472F230760570049C28B /* TermsOfServiceController.swift */; };
+ D03E4734230761E10049C28B /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4733230761E10049C28B /* AccountContext.framework */; };
+ D03E4736230761E50049C28B /* ActivityIndicator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4735230761E50049C28B /* ActivityIndicator.framework */; };
+ D03E4738230761EA0049C28B /* AlertUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4737230761EA0049C28B /* AlertUI.framework */; };
+ D03E473A230761ED0049C28B /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4739230761ED0049C28B /* AsyncDisplayKit.framework */; };
+ D03E473C230761F30049C28B /* AvatarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E473B230761F30049C28B /* AvatarNode.framework */; };
+ D03E473E230761FA0049C28B /* CallListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E473D230761FA0049C28B /* CallListUI.framework */; };
+ D03E4740230762020049C28B /* ChatListSearchItemHeader.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E473F230762020049C28B /* ChatListSearchItemHeader.framework */; };
+ D03E4742230762020049C28B /* ChatListSearchItemNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4741230762020049C28B /* ChatListSearchItemNode.framework */; };
+ D03E4744230762070049C28B /* ChatListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4743230762070049C28B /* ChatListUI.framework */; };
+ D03E47462307620C0049C28B /* ContactsPeerItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47452307620C0049C28B /* ContactsPeerItem.framework */; };
+ D03E4748230762130049C28B /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4747230762130049C28B /* CoreTelephony.framework */; };
+ D03E474A2307621A0049C28B /* CountrySelectionUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47492307621A0049C28B /* CountrySelectionUI.framework */; };
+ D03E474C230762200049C28B /* DeviceAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E474B230762200049C28B /* DeviceAccess.framework */; };
+ D03E474E230762270049C28B /* DeviceLocationManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E474D230762270049C28B /* DeviceLocationManager.framework */; };
+ D03E4750230762310049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E474F230762310049C28B /* Display.framework */; };
+ D03E47522307623A0049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47512307623A0049C28B /* Foundation.framework */; };
+ D03E47542307623E0049C28B /* GalleryUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47532307623E0049C28B /* GalleryUI.framework */; };
+ D03E4756230762460049C28B /* Geocoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4755230762460049C28B /* Geocoding.framework */; };
+ D03E4758230762560049C28B /* ItemListAvatarAndNameInfoItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4757230762560049C28B /* ItemListAvatarAndNameInfoItem.framework */; };
+ D03E475A230762560049C28B /* ItemListPeerActionItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4759230762560049C28B /* ItemListPeerActionItem.framework */; };
+ D03E475C230762560049C28B /* ItemListPeerItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E475B230762560049C28B /* ItemListPeerItem.framework */; };
+ D03E475E230762560049C28B /* ItemListStickerPackItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E475D230762560049C28B /* ItemListStickerPackItem.framework */; };
+ D03E4760230762560049C28B /* ItemListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E475F230762560049C28B /* ItemListUI.framework */; };
+ D03E47622307625F0049C28B /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47612307625F0049C28B /* LegacyComponents.framework */; };
+ D03E4764230762670049C28B /* LegacyMediaPickerUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4763230762670049C28B /* LegacyMediaPickerUI.framework */; };
+ D03E4766230762670049C28B /* LegacyUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4765230762670049C28B /* LegacyUI.framework */; };
+ D03E4768230762710049C28B /* ListSectionHeaderNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4767230762710049C28B /* ListSectionHeaderNode.framework */; };
+ D03E476A2307628A0049C28B /* LocalAuth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47692307628A0049C28B /* LocalAuth.framework */; };
+ D03E476C2307628A0049C28B /* LocalizedPeerData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E476B2307628A0049C28B /* LocalizedPeerData.framework */; };
+ D03E476E2307628A0049C28B /* LocalMediaResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E476D2307628A0049C28B /* LocalMediaResources.framework */; };
+ D03E47702307628B0049C28B /* LocalAuthentication.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E476F2307628B0049C28B /* LocalAuthentication.framework */; };
+ D03E4772230762910049C28B /* MapResourceToAvatarSizes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4771230762910049C28B /* MapResourceToAvatarSizes.framework */; };
+ D03E4774230762970049C28B /* MediaResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4773230762970049C28B /* MediaResources.framework */; };
+ D03E47762307629D0049C28B /* MergeLists.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47752307629D0049C28B /* MergeLists.framework */; };
+ D03E4778230762A60049C28B /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4777230762A50049C28B /* MessageUI.framework */; };
+ D03E477A230762B30049C28B /* MtProtoKitDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4779230762B30049C28B /* MtProtoKitDynamic.framework */; };
+ D03E477C230762C30049C28B /* NotificationSoundSelectionUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E477B230762C30049C28B /* NotificationSoundSelectionUI.framework */; };
+ D03E477E230762C90049C28B /* OverlayStatusController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E477D230762C90049C28B /* OverlayStatusController.framework */; };
+ D03E4780230762D40049C28B /* PasscodeUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E477F230762D40049C28B /* PasscodeUI.framework */; };
+ D03E4782230762D40049C28B /* PassportUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4781230762D40049C28B /* PassportUI.framework */; };
+ D03E4784230762D40049C28B /* PasswordSetupUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4783230762D40049C28B /* PasswordSetupUI.framework */; };
+ D03E4786230762D90049C28B /* PeerAvatarGalleryUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4785230762D90049C28B /* PeerAvatarGalleryUI.framework */; };
+ D03E4788230762E20049C28B /* PhoneInputNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4787230762E20049C28B /* PhoneInputNode.framework */; };
+ D03E478A230762E70049C28B /* PhotoResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4789230762E70049C28B /* PhotoResources.framework */; };
+ D03E478C230762EE0049C28B /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E478B230762EE0049C28B /* Photos.framework */; };
+ D03E478E230762F20049C28B /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E478D230762F20049C28B /* Postbox.framework */; };
+ D03E4790230762F80049C28B /* ProgressNavigationButtonNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E478F230762F80049C28B /* ProgressNavigationButtonNode.framework */; };
+ D03E4792230763040049C28B /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4791230763020049C28B /* QuickLook.framework */; };
+ D03E4794230763060049C28B /* RadialStatusNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4793230763060049C28B /* RadialStatusNode.framework */; };
+ D03E4796230763100049C28B /* SearchBarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4795230763100049C28B /* SearchBarNode.framework */; };
+ D03E4798230763160049C28B /* SearchUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E4797230763160049C28B /* SearchUI.framework */; };
+ D03E479A2307631C0049C28B /* ShareController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47992307631C0049C28B /* ShareController.framework */; };
+ D03E479C230763230049C28B /* StickerPackPreviewUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E479B230763230049C28B /* StickerPackPreviewUI.framework */; };
+ D03E479E2307632C0049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E479D2307632C0049C28B /* SwiftSignalKit.framework */; };
+ D03E47A0230763400049C28B /* TelegramCallsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E479F230763400049C28B /* TelegramCallsUI.framework */; };
+ D03E47A2230763400049C28B /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47A1230763400049C28B /* TelegramCore.framework */; };
+ D03E47A4230763400049C28B /* TelegramNotices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47A3230763400049C28B /* TelegramNotices.framework */; };
+ D03E47A6230763400049C28B /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47A5230763400049C28B /* TelegramPresentationData.framework */; };
+ D03E47A8230763400049C28B /* TelegramStringFormatting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47A7230763400049C28B /* TelegramStringFormatting.framework */; };
+ D03E47AA230763400049C28B /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47A9230763400049C28B /* TelegramUIPreferences.framework */; };
+ D03E47AC230763460049C28B /* TextFormat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47AB230763460049C28B /* TextFormat.framework */; };
+ D03E47AE2307634C0049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47AD2307634C0049C28B /* UIKit.framework */; };
+ D03E47B0230763510049C28B /* UniversalMediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47AF230763510049C28B /* UniversalMediaPlayer.framework */; };
+ D03E47B2230763570049C28B /* UrlEscaping.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47B1230763570049C28B /* UrlEscaping.framework */; };
+ D03E47B42307635C0049C28B /* WebSearchUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47B32307635C0049C28B /* WebSearchUI.framework */; };
+ D03E47B8230766870049C28B /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E47B7230766870049C28B /* FrameworkBundle.swift */; };
+ D03E47D5230767F40049C28B /* UrlHandling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47D4230767F40049C28B /* UrlHandling.framework */; };
+ D03E480C230769A30049C28B /* HexColor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E480B230769A30049C28B /* HexColor.framework */; };
+ D03E483623076AE90049C28B /* QrCode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E483523076AE90049C28B /* QrCode.framework */; };
+ D03E483A23076B220049C28B /* BlurredImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E483923076B210049C28B /* BlurredImageNode.swift */; };
+ D03E486E23076C440049C28B /* WallpaperResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E486D23076C440049C28B /* WallpaperResources.framework */; };
+ D03E48A22307742D0049C28B /* AuthorizationUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48A12307742D0049C28B /* AuthorizationUI.framework */; };
+ D03E48AE230775800049C28B /* OpenSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E48AD230775800049C28B /* OpenSettings.swift */; };
+ D03E48B0230775F00049C28B /* AccountUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E48AF230775EF0049C28B /* AccountUtils.swift */; };
+ D03E48B22307767B0049C28B /* CachedFaqInstantPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E48B12307767A0049C28B /* CachedFaqInstantPage.swift */; };
+ D03E48B4230776870049C28B /* InstantPageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48B3230776870049C28B /* InstantPageUI.framework */; };
+ D03E48B6230777870049C28B /* CheckNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48B5230777870049C28B /* CheckNode.framework */; };
+ D03E48E22308649C0049C28B /* CounterContollerTitleView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48E12308649C0049C28B /* CounterContollerTitleView.framework */; };
+ D03E490E2308661A0049C28B /* GridMessageSelectionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E490D2308661A0049C28B /* GridMessageSelectionNode.framework */; };
+ D03E493A2308678D0049C28B /* InstantPageCache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E49392308678D0049C28B /* InstantPageCache.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D03E464D23075D930049C28B /* SettingsUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SettingsUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E465023075D930049C28B /* SettingsUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SettingsUI.h; sourceTree = ""; };
+ D03E465123075D930049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D03E465C23075E630049C28B /* TabBarAccountSwitchControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabBarAccountSwitchControllerNode.swift; sourceTree = ""; };
+ D03E465D23075E630049C28B /* LogoutOptionsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogoutOptionsController.swift; sourceTree = ""; };
+ D03E465E23075E640049C28B /* DebugController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DebugController.swift; sourceTree = ""; };
+ D03E465F23075E640049C28B /* ChangePhoneNumberControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberControllerNode.swift; sourceTree = ""; };
+ D03E466023075E640049C28B /* ChangePhoneNumberController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberController.swift; sourceTree = ""; };
+ D03E466123075E640049C28B /* EditSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditSettingsController.swift; sourceTree = ""; };
+ D03E466223075E640049C28B /* TabBarAccountSwitchController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabBarAccountSwitchController.swift; sourceTree = ""; };
+ D03E466323075E650049C28B /* UsernameSetupController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UsernameSetupController.swift; sourceTree = ""; };
+ D03E466423075E650049C28B /* DebugAccountsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DebugAccountsController.swift; sourceTree = ""; };
+ D03E466523075E650049C28B /* SettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsController.swift; sourceTree = ""; };
+ D03E466623075E660049C28B /* ChangePhoneNumberCodeController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberCodeController.swift; sourceTree = ""; };
+ D03E466723075E660049C28B /* ChangePhoneNumberIntroController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberIntroController.swift; sourceTree = ""; };
+ D03E467723075EC60049C28B /* NotificationsAndSounds.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationsAndSounds.swift; sourceTree = ""; };
+ D03E467823075EC70049C28B /* NotificationSearchItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationSearchItem.swift; sourceTree = ""; };
+ D03E467C23075EE90049C28B /* NotificationExceptionSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationExceptionSettingsController.swift; sourceTree = ""; };
+ D03E467D23075EE90049C28B /* NotificationExceptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationExceptions.swift; sourceTree = ""; };
+ D03E467E23075EE90049C28B /* NotificationExceptionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationExceptionControllerNode.swift; sourceTree = ""; };
+ D03E468323075EF60049C28B /* LanguageSuggestionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LanguageSuggestionController.swift; sourceTree = ""; };
+ D03E468523075EFF0049C28B /* SettingsSearchRecentQueries.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSearchRecentQueries.swift; sourceTree = ""; };
+ D03E468623075F000049C28B /* SettingsSearchItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSearchItem.swift; sourceTree = ""; };
+ D03E468723075F000049C28B /* SettingsSearchableItems.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSearchableItems.swift; sourceTree = ""; };
+ D03E468823075F000049C28B /* SettingsSearchResultItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSearchResultItem.swift; sourceTree = ""; };
+ D03E468923075F000049C28B /* SettingsSearchRecentItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSearchRecentItem.swift; sourceTree = ""; };
+ D03E468F23075F290049C28B /* SelectivePrivacySettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectivePrivacySettingsController.swift; sourceTree = ""; };
+ D03E469023075F2A0049C28B /* ConfirmPhoneNumberController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfirmPhoneNumberController.swift; sourceTree = ""; };
+ D03E469123075F2A0049C28B /* TwoStepVerificationResetController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoStepVerificationResetController.swift; sourceTree = ""; };
+ D03E469223075F2A0049C28B /* PrivacyIntroControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivacyIntroControllerNode.swift; sourceTree = ""; };
+ D03E469323075F2A0049C28B /* PasscodeOptionsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeOptionsController.swift; sourceTree = ""; };
+ D03E469423075F2A0049C28B /* PrivacyAndSecurityController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivacyAndSecurityController.swift; sourceTree = ""; };
+ D03E469523075F2A0049C28B /* CreatePasswordController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreatePasswordController.swift; sourceTree = ""; };
+ D03E469623075F2A0049C28B /* ForwardPrivacyChatPreviewItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForwardPrivacyChatPreviewItem.swift; sourceTree = ""; };
+ D03E469723075F2B0049C28B /* PrivacyIntroController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivacyIntroController.swift; sourceTree = ""; };
+ D03E469823075F2B0049C28B /* TwoStepVerificationPasswordEntryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoStepVerificationPasswordEntryController.swift; sourceTree = ""; };
+ D03E469923075F2B0049C28B /* SelectivePrivacySettingsPeersController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectivePrivacySettingsPeersController.swift; sourceTree = ""; };
+ D03E469A23075F2B0049C28B /* TwoStepVerificationUnlockController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoStepVerificationUnlockController.swift; sourceTree = ""; };
+ D03E469B23075F2B0049C28B /* BlockedPeersController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlockedPeersController.swift; sourceTree = ""; };
+ D03E469C23075F2C0049C28B /* DataPrivacySettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataPrivacySettingsController.swift; sourceTree = ""; };
+ D03E46AC23075F4E0049C28B /* ItemListRecentSessionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListRecentSessionItem.swift; sourceTree = ""; };
+ D03E46AD23075F4E0049C28B /* ItemListWebsiteItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListWebsiteItem.swift; sourceTree = ""; };
+ D03E46AE23075F4E0049C28B /* RecentSessionsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentSessionsController.swift; sourceTree = ""; };
+ D03E46AF23075F4E0049C28B /* RecentSessionsEmptyStateItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentSessionsEmptyStateItem.swift; sourceTree = ""; };
+ D03E46B523075F7F0049C28B /* DataAndStorageSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataAndStorageSettingsController.swift; sourceTree = ""; };
+ D03E46B623075F7F0049C28B /* SaveIncomingMediaController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SaveIncomingMediaController.swift; sourceTree = ""; };
+ D03E46B723075F7F0049C28B /* ProxyServerActionSheetController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProxyServerActionSheetController.swift; sourceTree = ""; };
+ D03E46B823075F7F0049C28B /* CalculatingCacheSizeItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CalculatingCacheSizeItem.swift; sourceTree = ""; };
+ D03E46B923075F7F0049C28B /* StorageUsageController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageUsageController.swift; sourceTree = ""; };
+ D03E46BA23075F7F0049C28B /* AutodownloadDataUsagePickerItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutodownloadDataUsagePickerItem.swift; sourceTree = ""; };
+ D03E46BB23075F800049C28B /* ProxySettingsServerItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProxySettingsServerItem.swift; sourceTree = ""; };
+ D03E46BC23075F800049C28B /* NetworkUsageStatsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkUsageStatsController.swift; sourceTree = ""; };
+ D03E46BD23075F800049C28B /* AutodownloadConnectionTypeController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutodownloadConnectionTypeController.swift; sourceTree = ""; };
+ D03E46BE23075F800049C28B /* VoiceCallDataSavingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VoiceCallDataSavingController.swift; sourceTree = ""; };
+ D03E46BF23075F800049C28B /* ProxyServerSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProxyServerSettingsController.swift; sourceTree = ""; };
+ D03E46C023075F800049C28B /* AutodownloadSizeLimitItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutodownloadSizeLimitItem.swift; sourceTree = ""; };
+ D03E46C123075F810049C28B /* ProxyListSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProxyListSettingsController.swift; sourceTree = ""; };
+ D03E46C223075F810049C28B /* ShareProxyServerActionSheetController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShareProxyServerActionSheetController.swift; sourceTree = ""; };
+ D03E46C323075F810049C28B /* AutodownloadMediaCategoryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutodownloadMediaCategoryController.swift; sourceTree = ""; };
+ D03E46C423075F810049C28B /* ProxySettingsActionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProxySettingsActionItem.swift; sourceTree = ""; };
+ D03E46D623075FA40049C28B /* InstalledStickerPacksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstalledStickerPacksController.swift; sourceTree = ""; };
+ D03E46D723075FA40049C28B /* ArchivedStickerPacksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArchivedStickerPacksController.swift; sourceTree = ""; };
+ D03E46D823075FA40049C28B /* FeaturedStickerPacksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeaturedStickerPacksController.swift; sourceTree = ""; };
+ D03E46DD23075FC90049C28B /* ThemeColorsGridControllerItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridControllerItem.swift; sourceTree = ""; };
+ D03E46DE23075FC90049C28B /* ThemeSettingsChatPreviewItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeSettingsChatPreviewItem.swift; sourceTree = ""; };
+ D03E46DF23075FC90049C28B /* WallpaperColorPickerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperColorPickerNode.swift; sourceTree = ""; };
+ D03E46E023075FD10049C28B /* ThemeGridControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridControllerNode.swift; sourceTree = ""; };
+ D03E46E123075FD30049C28B /* ThemeGridSearchItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridSearchItem.swift; sourceTree = ""; };
+ D03E46E223075FD30049C28B /* ThemeSettingsAppIconItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeSettingsAppIconItem.swift; sourceTree = ""; };
+ D03E46E323075FD30049C28B /* ThemeGridSearchColorsItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridSearchColorsItem.swift; sourceTree = ""; };
+ D03E46E423075FD40049C28B /* ThemeSettingsThemeItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeSettingsThemeItem.swift; sourceTree = ""; };
+ D03E46E523075FD40049C28B /* WallpaperGalleryToolbarNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryToolbarNode.swift; sourceTree = ""; };
+ D03E46E623075FD50049C28B /* CustomWallpaperPicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomWallpaperPicker.swift; sourceTree = ""; };
+ D03E46E723075FD50049C28B /* ThemeAccentColorActionSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeAccentColorActionSheet.swift; sourceTree = ""; };
+ D03E46E823075FD50049C28B /* ThemePreviewControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemePreviewControllerNode.swift; sourceTree = ""; };
+ D03E46E923075FD50049C28B /* WallpaperGalleryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryController.swift; sourceTree = ""; };
+ D03E46EA23075FD50049C28B /* ThemeSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeSettingsController.swift; sourceTree = ""; };
+ D03E46EB23075FD60049C28B /* WallpaperPatternPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperPatternPanelNode.swift; sourceTree = ""; };
+ D03E46EC23075FD60049C28B /* ThemeAccentColorController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeAccentColorController.swift; sourceTree = ""; };
+ D03E46ED23075FD60049C28B /* SettingsThemeWallpaperNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsThemeWallpaperNode.swift; sourceTree = ""; };
+ D03E46EE23075FD60049C28B /* WallpaperSearchRecentQueries.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperSearchRecentQueries.swift; sourceTree = ""; };
+ D03E46EF23075FD70049C28B /* ThemeGridSearchContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridSearchContentNode.swift; sourceTree = ""; };
+ D03E46F023075FD70049C28B /* ThemePreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemePreviewController.swift; sourceTree = ""; };
+ D03E46F123075FD70049C28B /* ThemeColorsGridController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridController.swift; sourceTree = ""; };
+ D03E46F223075FD70049C28B /* ThemeSettingsFontSizeItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeSettingsFontSizeItem.swift; sourceTree = ""; };
+ D03E46F323075FD80049C28B /* WallpaperColorPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperColorPanelNode.swift; sourceTree = ""; };
+ D03E46F423075FD80049C28B /* WallpaperGalleryDecorationNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryDecorationNode.swift; sourceTree = ""; };
+ D03E46F523075FD90049C28B /* ThemeGridSelectionPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridSelectionPanelNode.swift; sourceTree = ""; };
+ D03E46F623075FD90049C28B /* ThemeAccentColorControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeAccentColorControllerNode.swift; sourceTree = ""; };
+ D03E46F723075FD90049C28B /* WallpaperCropNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperCropNode.swift; sourceTree = ""; };
+ D03E46F823075FD90049C28B /* ThemeGridControllerItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridControllerItem.swift; sourceTree = ""; };
+ D03E46F923075FD90049C28B /* ThemeSettingsBrightnessItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeSettingsBrightnessItem.swift; sourceTree = ""; };
+ D03E46FA23075FD90049C28B /* ThemeAutoNightTimeSelectionActionSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeAutoNightTimeSelectionActionSheet.swift; sourceTree = ""; };
+ D03E46FB23075FDA0049C28B /* ThemeColorsGridControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridControllerNode.swift; sourceTree = ""; };
+ D03E46FC23075FDA0049C28B /* ThemeGridController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridController.swift; sourceTree = ""; };
+ D03E46FD23075FDA0049C28B /* WallpaperGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryItem.swift; sourceTree = ""; };
+ D03E46FE23075FDA0049C28B /* ThemeSettingsAccentColorItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeSettingsAccentColorItem.swift; sourceTree = ""; };
+ D03E46FF23075FE20049C28B /* ThemeAutoNightSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeAutoNightSettingsController.swift; sourceTree = ""; };
+ D03E4724230760040049C28B /* WatchSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchSettingsController.swift; sourceTree = ""; };
+ D03E4727230760320049C28B /* LocalizationListItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizationListItem.swift; sourceTree = ""; };
+ D03E4728230760320049C28B /* LocalizationListController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizationListController.swift; sourceTree = ""; };
+ D03E4729230760330049C28B /* LocalizationListControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizationListControllerNode.swift; sourceTree = ""; };
+ D03E472E230760560049C28B /* TermsOfServiceControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TermsOfServiceControllerNode.swift; sourceTree = ""; };
+ D03E472F230760570049C28B /* TermsOfServiceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TermsOfServiceController.swift; sourceTree = ""; };
+ D03E4733230761E10049C28B /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4735230761E50049C28B /* ActivityIndicator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ActivityIndicator.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4737230761EA0049C28B /* AlertUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AlertUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4739230761ED0049C28B /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E473B230761F30049C28B /* AvatarNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AvatarNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E473D230761FA0049C28B /* CallListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CallListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E473F230762020049C28B /* ChatListSearchItemHeader.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ChatListSearchItemHeader.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4741230762020049C28B /* ChatListSearchItemNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ChatListSearchItemNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4743230762070049C28B /* ChatListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ChatListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47452307620C0049C28B /* ContactsPeerItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ContactsPeerItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4747230762130049C28B /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
+ D03E47492307621A0049C28B /* CountrySelectionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CountrySelectionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E474B230762200049C28B /* DeviceAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeviceAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E474D230762270049C28B /* DeviceLocationManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeviceLocationManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E474F230762310049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47512307623A0049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D03E47532307623E0049C28B /* GalleryUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GalleryUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4755230762460049C28B /* Geocoding.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Geocoding.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4757230762560049C28B /* ItemListAvatarAndNameInfoItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListAvatarAndNameInfoItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4759230762560049C28B /* ItemListPeerActionItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListPeerActionItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E475B230762560049C28B /* ItemListPeerItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListPeerItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E475D230762560049C28B /* ItemListStickerPackItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListStickerPackItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E475F230762560049C28B /* ItemListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47612307625F0049C28B /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4763230762670049C28B /* LegacyMediaPickerUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyMediaPickerUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4765230762670049C28B /* LegacyUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4767230762710049C28B /* ListSectionHeaderNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ListSectionHeaderNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47692307628A0049C28B /* LocalAuth.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LocalAuth.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E476B2307628A0049C28B /* LocalizedPeerData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LocalizedPeerData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E476D2307628A0049C28B /* LocalMediaResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LocalMediaResources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E476F2307628B0049C28B /* LocalAuthentication.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LocalAuthentication.framework; path = System/Library/Frameworks/LocalAuthentication.framework; sourceTree = SDKROOT; };
+ D03E4771230762910049C28B /* MapResourceToAvatarSizes.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MapResourceToAvatarSizes.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4773230762970049C28B /* MediaResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MediaResources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47752307629D0049C28B /* MergeLists.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MergeLists.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4777230762A50049C28B /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
+ D03E4779230762B30049C28B /* MtProtoKitDynamic.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MtProtoKitDynamic.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E477B230762C30049C28B /* NotificationSoundSelectionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = NotificationSoundSelectionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E477D230762C90049C28B /* OverlayStatusController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = OverlayStatusController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E477F230762D40049C28B /* PasscodeUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PasscodeUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4781230762D40049C28B /* PassportUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PassportUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4783230762D40049C28B /* PasswordSetupUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PasswordSetupUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4785230762D90049C28B /* PeerAvatarGalleryUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PeerAvatarGalleryUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4787230762E20049C28B /* PhoneInputNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PhoneInputNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4789230762E70049C28B /* PhotoResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PhotoResources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E478B230762EE0049C28B /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = System/Library/Frameworks/Photos.framework; sourceTree = SDKROOT; };
+ D03E478D230762F20049C28B /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E478F230762F80049C28B /* ProgressNavigationButtonNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ProgressNavigationButtonNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4791230763020049C28B /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; };
+ D03E4793230763060049C28B /* RadialStatusNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = RadialStatusNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4795230763100049C28B /* SearchBarNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SearchBarNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E4797230763160049C28B /* SearchUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SearchUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47992307631C0049C28B /* ShareController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ShareController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E479B230763230049C28B /* StickerPackPreviewUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = StickerPackPreviewUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E479D2307632C0049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E479F230763400049C28B /* TelegramCallsUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCallsUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47A1230763400049C28B /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47A3230763400049C28B /* TelegramNotices.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramNotices.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47A5230763400049C28B /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47A7230763400049C28B /* TelegramStringFormatting.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramStringFormatting.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47A9230763400049C28B /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47AB230763460049C28B /* TextFormat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TextFormat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47AD2307634C0049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D03E47AF230763510049C28B /* UniversalMediaPlayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UniversalMediaPlayer.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47B1230763570049C28B /* UrlEscaping.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UrlEscaping.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47B32307635C0049C28B /* WebSearchUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WebSearchUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E47B7230766870049C28B /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; };
+ D03E47D4230767F40049C28B /* UrlHandling.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UrlHandling.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E480B230769A30049C28B /* HexColor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = HexColor.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E483523076AE90049C28B /* QrCode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = QrCode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E483923076B210049C28B /* BlurredImageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlurredImageNode.swift; sourceTree = ""; };
+ D03E486D23076C440049C28B /* WallpaperResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WallpaperResources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48A12307742D0049C28B /* AuthorizationUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AuthorizationUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48AD230775800049C28B /* OpenSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSettings.swift; sourceTree = ""; };
+ D03E48AF230775EF0049C28B /* AccountUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountUtils.swift; sourceTree = ""; };
+ D03E48B12307767A0049C28B /* CachedFaqInstantPage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CachedFaqInstantPage.swift; sourceTree = ""; };
+ D03E48B3230776870049C28B /* InstantPageUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = InstantPageUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48B5230777870049C28B /* CheckNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CheckNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E48E12308649C0049C28B /* CounterContollerTitleView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CounterContollerTitleView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E490D2308661A0049C28B /* GridMessageSelectionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GridMessageSelectionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D03E49392308678D0049C28B /* InstantPageCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = InstantPageCache.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D03E464A23075D930049C28B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E493A2308678D0049C28B /* InstantPageCache.framework in Frameworks */,
+ D03E490E2308661A0049C28B /* GridMessageSelectionNode.framework in Frameworks */,
+ D03E48E22308649C0049C28B /* CounterContollerTitleView.framework in Frameworks */,
+ D03E48B6230777870049C28B /* CheckNode.framework in Frameworks */,
+ D03E48B4230776870049C28B /* InstantPageUI.framework in Frameworks */,
+ D03E48A22307742D0049C28B /* AuthorizationUI.framework in Frameworks */,
+ D03E486E23076C440049C28B /* WallpaperResources.framework in Frameworks */,
+ D03E483623076AE90049C28B /* QrCode.framework in Frameworks */,
+ D03E480C230769A30049C28B /* HexColor.framework in Frameworks */,
+ D03E47D5230767F40049C28B /* UrlHandling.framework in Frameworks */,
+ D03E47B42307635C0049C28B /* WebSearchUI.framework in Frameworks */,
+ D03E47B2230763570049C28B /* UrlEscaping.framework in Frameworks */,
+ D03E47B0230763510049C28B /* UniversalMediaPlayer.framework in Frameworks */,
+ D03E47AE2307634C0049C28B /* UIKit.framework in Frameworks */,
+ D03E47AC230763460049C28B /* TextFormat.framework in Frameworks */,
+ D03E47A0230763400049C28B /* TelegramCallsUI.framework in Frameworks */,
+ D03E47A2230763400049C28B /* TelegramCore.framework in Frameworks */,
+ D03E47A4230763400049C28B /* TelegramNotices.framework in Frameworks */,
+ D03E47A6230763400049C28B /* TelegramPresentationData.framework in Frameworks */,
+ D03E47A8230763400049C28B /* TelegramStringFormatting.framework in Frameworks */,
+ D03E47AA230763400049C28B /* TelegramUIPreferences.framework in Frameworks */,
+ D03E479E2307632C0049C28B /* SwiftSignalKit.framework in Frameworks */,
+ D03E479C230763230049C28B /* StickerPackPreviewUI.framework in Frameworks */,
+ D03E479A2307631C0049C28B /* ShareController.framework in Frameworks */,
+ D03E4798230763160049C28B /* SearchUI.framework in Frameworks */,
+ D03E4796230763100049C28B /* SearchBarNode.framework in Frameworks */,
+ D03E4794230763060049C28B /* RadialStatusNode.framework in Frameworks */,
+ D03E4792230763040049C28B /* QuickLook.framework in Frameworks */,
+ D03E4790230762F80049C28B /* ProgressNavigationButtonNode.framework in Frameworks */,
+ D03E478E230762F20049C28B /* Postbox.framework in Frameworks */,
+ D03E478C230762EE0049C28B /* Photos.framework in Frameworks */,
+ D03E478A230762E70049C28B /* PhotoResources.framework in Frameworks */,
+ D03E4788230762E20049C28B /* PhoneInputNode.framework in Frameworks */,
+ D03E4786230762D90049C28B /* PeerAvatarGalleryUI.framework in Frameworks */,
+ D03E4780230762D40049C28B /* PasscodeUI.framework in Frameworks */,
+ D03E4782230762D40049C28B /* PassportUI.framework in Frameworks */,
+ D03E4784230762D40049C28B /* PasswordSetupUI.framework in Frameworks */,
+ D03E477E230762C90049C28B /* OverlayStatusController.framework in Frameworks */,
+ D03E477C230762C30049C28B /* NotificationSoundSelectionUI.framework in Frameworks */,
+ D03E477A230762B30049C28B /* MtProtoKitDynamic.framework in Frameworks */,
+ D03E4778230762A60049C28B /* MessageUI.framework in Frameworks */,
+ D03E47762307629D0049C28B /* MergeLists.framework in Frameworks */,
+ D03E4774230762970049C28B /* MediaResources.framework in Frameworks */,
+ D03E4772230762910049C28B /* MapResourceToAvatarSizes.framework in Frameworks */,
+ D03E47702307628B0049C28B /* LocalAuthentication.framework in Frameworks */,
+ D03E476A2307628A0049C28B /* LocalAuth.framework in Frameworks */,
+ D03E476C2307628A0049C28B /* LocalizedPeerData.framework in Frameworks */,
+ D03E476E2307628A0049C28B /* LocalMediaResources.framework in Frameworks */,
+ D03E4768230762710049C28B /* ListSectionHeaderNode.framework in Frameworks */,
+ D03E4764230762670049C28B /* LegacyMediaPickerUI.framework in Frameworks */,
+ D03E4766230762670049C28B /* LegacyUI.framework in Frameworks */,
+ D03E47622307625F0049C28B /* LegacyComponents.framework in Frameworks */,
+ D03E4758230762560049C28B /* ItemListAvatarAndNameInfoItem.framework in Frameworks */,
+ D03E475A230762560049C28B /* ItemListPeerActionItem.framework in Frameworks */,
+ D03E475C230762560049C28B /* ItemListPeerItem.framework in Frameworks */,
+ D03E475E230762560049C28B /* ItemListStickerPackItem.framework in Frameworks */,
+ D03E4760230762560049C28B /* ItemListUI.framework in Frameworks */,
+ D03E4756230762460049C28B /* Geocoding.framework in Frameworks */,
+ D03E47542307623E0049C28B /* GalleryUI.framework in Frameworks */,
+ D03E47522307623A0049C28B /* Foundation.framework in Frameworks */,
+ D03E4750230762310049C28B /* Display.framework in Frameworks */,
+ D03E474E230762270049C28B /* DeviceLocationManager.framework in Frameworks */,
+ D03E474C230762200049C28B /* DeviceAccess.framework in Frameworks */,
+ D03E474A2307621A0049C28B /* CountrySelectionUI.framework in Frameworks */,
+ D03E4748230762130049C28B /* CoreTelephony.framework in Frameworks */,
+ D03E47462307620C0049C28B /* ContactsPeerItem.framework in Frameworks */,
+ D03E4744230762070049C28B /* ChatListUI.framework in Frameworks */,
+ D03E4740230762020049C28B /* ChatListSearchItemHeader.framework in Frameworks */,
+ D03E4742230762020049C28B /* ChatListSearchItemNode.framework in Frameworks */,
+ D03E473E230761FA0049C28B /* CallListUI.framework in Frameworks */,
+ D03E473C230761F30049C28B /* AvatarNode.framework in Frameworks */,
+ D03E473A230761ED0049C28B /* AsyncDisplayKit.framework in Frameworks */,
+ D03E4738230761EA0049C28B /* AlertUI.framework in Frameworks */,
+ D03E4736230761E50049C28B /* ActivityIndicator.framework in Frameworks */,
+ D03E4734230761E10049C28B /* AccountContext.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D03E464323075D930049C28B = {
+ isa = PBXGroup;
+ children = (
+ D03E465123075D930049C28B /* Info.plist */,
+ D03E464F23075D930049C28B /* Sources */,
+ D03E464E23075D930049C28B /* Products */,
+ D03E4732230761E10049C28B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D03E464E23075D930049C28B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D03E464D23075D930049C28B /* SettingsUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D03E464F23075D930049C28B /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D03E467423075E6C0049C28B /* Search */,
+ D03E467523075E920049C28B /* Language Suggestion */,
+ D03E467623075EA90049C28B /* Notifications */,
+ D03E468223075EEB0049C28B /* Privacy and Security */,
+ D03E46B423075F610049C28B /* Data and Storage */,
+ D03E46D523075F8A0049C28B /* Stickers */,
+ D03E46DC23075FAD0049C28B /* Themes */,
+ D03E472323075FEC0049C28B /* Watch */,
+ D03E47262307600F0049C28B /* Language Selection */,
+ D03E472D2307603D0049C28B /* Terms of Service */,
+ D03E466623075E660049C28B /* ChangePhoneNumberCodeController.swift */,
+ D03E466023075E640049C28B /* ChangePhoneNumberController.swift */,
+ D03E465F23075E640049C28B /* ChangePhoneNumberControllerNode.swift */,
+ D03E466723075E660049C28B /* ChangePhoneNumberIntroController.swift */,
+ D03E466423075E650049C28B /* DebugAccountsController.swift */,
+ D03E465E23075E640049C28B /* DebugController.swift */,
+ D03E466123075E640049C28B /* EditSettingsController.swift */,
+ D03E465D23075E630049C28B /* LogoutOptionsController.swift */,
+ D03E466523075E650049C28B /* SettingsController.swift */,
+ D03E466223075E640049C28B /* TabBarAccountSwitchController.swift */,
+ D03E465C23075E630049C28B /* TabBarAccountSwitchControllerNode.swift */,
+ D03E466323075E650049C28B /* UsernameSetupController.swift */,
+ D03E483923076B210049C28B /* BlurredImageNode.swift */,
+ D03E48AD230775800049C28B /* OpenSettings.swift */,
+ D03E48AF230775EF0049C28B /* AccountUtils.swift */,
+ D03E48B12307767A0049C28B /* CachedFaqInstantPage.swift */,
+ D03E47B7230766870049C28B /* FrameworkBundle.swift */,
+ D03E465023075D930049C28B /* SettingsUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D03E467423075E6C0049C28B /* Search */ = {
+ isa = PBXGroup;
+ children = (
+ D03E468723075F000049C28B /* SettingsSearchableItems.swift */,
+ D03E468623075F000049C28B /* SettingsSearchItem.swift */,
+ D03E468923075F000049C28B /* SettingsSearchRecentItem.swift */,
+ D03E468523075EFF0049C28B /* SettingsSearchRecentQueries.swift */,
+ D03E468823075F000049C28B /* SettingsSearchResultItem.swift */,
+ );
+ path = Search;
+ sourceTree = "";
+ };
+ D03E467523075E920049C28B /* Language Suggestion */ = {
+ isa = PBXGroup;
+ children = (
+ D03E468323075EF60049C28B /* LanguageSuggestionController.swift */,
+ );
+ path = "Language Suggestion";
+ sourceTree = "";
+ };
+ D03E467623075EA90049C28B /* Notifications */ = {
+ isa = PBXGroup;
+ children = (
+ D03E467B23075EC90049C28B /* Exceptions */,
+ D03E467723075EC60049C28B /* NotificationsAndSounds.swift */,
+ D03E467823075EC70049C28B /* NotificationSearchItem.swift */,
+ );
+ path = Notifications;
+ sourceTree = "";
+ };
+ D03E467B23075EC90049C28B /* Exceptions */ = {
+ isa = PBXGroup;
+ children = (
+ D03E467E23075EE90049C28B /* NotificationExceptionControllerNode.swift */,
+ D03E467D23075EE90049C28B /* NotificationExceptions.swift */,
+ D03E467C23075EE90049C28B /* NotificationExceptionSettingsController.swift */,
+ );
+ path = Exceptions;
+ sourceTree = "";
+ };
+ D03E468223075EEB0049C28B /* Privacy and Security */ = {
+ isa = PBXGroup;
+ children = (
+ D03E46AB23075F350049C28B /* Recent Sessions */,
+ D03E469B23075F2B0049C28B /* BlockedPeersController.swift */,
+ D03E469023075F2A0049C28B /* ConfirmPhoneNumberController.swift */,
+ D03E469523075F2A0049C28B /* CreatePasswordController.swift */,
+ D03E469C23075F2C0049C28B /* DataPrivacySettingsController.swift */,
+ D03E469623075F2A0049C28B /* ForwardPrivacyChatPreviewItem.swift */,
+ D03E469323075F2A0049C28B /* PasscodeOptionsController.swift */,
+ D03E469423075F2A0049C28B /* PrivacyAndSecurityController.swift */,
+ D03E469723075F2B0049C28B /* PrivacyIntroController.swift */,
+ D03E469223075F2A0049C28B /* PrivacyIntroControllerNode.swift */,
+ D03E468F23075F290049C28B /* SelectivePrivacySettingsController.swift */,
+ D03E469923075F2B0049C28B /* SelectivePrivacySettingsPeersController.swift */,
+ D03E469823075F2B0049C28B /* TwoStepVerificationPasswordEntryController.swift */,
+ D03E469123075F2A0049C28B /* TwoStepVerificationResetController.swift */,
+ D03E469A23075F2B0049C28B /* TwoStepVerificationUnlockController.swift */,
+ );
+ path = "Privacy and Security";
+ sourceTree = "";
+ };
+ D03E46AB23075F350049C28B /* Recent Sessions */ = {
+ isa = PBXGroup;
+ children = (
+ D03E46AC23075F4E0049C28B /* ItemListRecentSessionItem.swift */,
+ D03E46AD23075F4E0049C28B /* ItemListWebsiteItem.swift */,
+ D03E46AE23075F4E0049C28B /* RecentSessionsController.swift */,
+ D03E46AF23075F4E0049C28B /* RecentSessionsEmptyStateItem.swift */,
+ );
+ path = "Recent Sessions";
+ sourceTree = "";
+ };
+ D03E46B423075F610049C28B /* Data and Storage */ = {
+ isa = PBXGroup;
+ children = (
+ D03E46BD23075F800049C28B /* AutodownloadConnectionTypeController.swift */,
+ D03E46BA23075F7F0049C28B /* AutodownloadDataUsagePickerItem.swift */,
+ D03E46C323075F810049C28B /* AutodownloadMediaCategoryController.swift */,
+ D03E46C023075F800049C28B /* AutodownloadSizeLimitItem.swift */,
+ D03E46B823075F7F0049C28B /* CalculatingCacheSizeItem.swift */,
+ D03E46B523075F7F0049C28B /* DataAndStorageSettingsController.swift */,
+ D03E46BC23075F800049C28B /* NetworkUsageStatsController.swift */,
+ D03E46C123075F810049C28B /* ProxyListSettingsController.swift */,
+ D03E46B723075F7F0049C28B /* ProxyServerActionSheetController.swift */,
+ D03E46BF23075F800049C28B /* ProxyServerSettingsController.swift */,
+ D03E46C423075F810049C28B /* ProxySettingsActionItem.swift */,
+ D03E46BB23075F800049C28B /* ProxySettingsServerItem.swift */,
+ D03E46B623075F7F0049C28B /* SaveIncomingMediaController.swift */,
+ D03E46C223075F810049C28B /* ShareProxyServerActionSheetController.swift */,
+ D03E46B923075F7F0049C28B /* StorageUsageController.swift */,
+ D03E46BE23075F800049C28B /* VoiceCallDataSavingController.swift */,
+ );
+ path = "Data and Storage";
+ sourceTree = "";
+ };
+ D03E46D523075F8A0049C28B /* Stickers */ = {
+ isa = PBXGroup;
+ children = (
+ D03E46D723075FA40049C28B /* ArchivedStickerPacksController.swift */,
+ D03E46D823075FA40049C28B /* FeaturedStickerPacksController.swift */,
+ D03E46D623075FA40049C28B /* InstalledStickerPacksController.swift */,
+ );
+ path = Stickers;
+ sourceTree = "";
+ };
+ D03E46DC23075FAD0049C28B /* Themes */ = {
+ isa = PBXGroup;
+ children = (
+ D03E46E623075FD50049C28B /* CustomWallpaperPicker.swift */,
+ D03E46ED23075FD60049C28B /* SettingsThemeWallpaperNode.swift */,
+ D03E46E723075FD50049C28B /* ThemeAccentColorActionSheet.swift */,
+ D03E46EC23075FD60049C28B /* ThemeAccentColorController.swift */,
+ D03E46F623075FD90049C28B /* ThemeAccentColorControllerNode.swift */,
+ D03E46FF23075FE20049C28B /* ThemeAutoNightSettingsController.swift */,
+ D03E46FA23075FD90049C28B /* ThemeAutoNightTimeSelectionActionSheet.swift */,
+ D03E46F123075FD70049C28B /* ThemeColorsGridController.swift */,
+ D03E46DD23075FC90049C28B /* ThemeColorsGridControllerItem.swift */,
+ D03E46FB23075FDA0049C28B /* ThemeColorsGridControllerNode.swift */,
+ D03E46FC23075FDA0049C28B /* ThemeGridController.swift */,
+ D03E46F823075FD90049C28B /* ThemeGridControllerItem.swift */,
+ D03E46E023075FD10049C28B /* ThemeGridControllerNode.swift */,
+ D03E46E323075FD30049C28B /* ThemeGridSearchColorsItem.swift */,
+ D03E46EF23075FD70049C28B /* ThemeGridSearchContentNode.swift */,
+ D03E46E123075FD30049C28B /* ThemeGridSearchItem.swift */,
+ D03E46F523075FD90049C28B /* ThemeGridSelectionPanelNode.swift */,
+ D03E46F023075FD70049C28B /* ThemePreviewController.swift */,
+ D03E46E823075FD50049C28B /* ThemePreviewControllerNode.swift */,
+ D03E46FE23075FDA0049C28B /* ThemeSettingsAccentColorItem.swift */,
+ D03E46E223075FD30049C28B /* ThemeSettingsAppIconItem.swift */,
+ D03E46F923075FD90049C28B /* ThemeSettingsBrightnessItem.swift */,
+ D03E46DE23075FC90049C28B /* ThemeSettingsChatPreviewItem.swift */,
+ D03E46EA23075FD50049C28B /* ThemeSettingsController.swift */,
+ D03E46F223075FD70049C28B /* ThemeSettingsFontSizeItem.swift */,
+ D03E46E423075FD40049C28B /* ThemeSettingsThemeItem.swift */,
+ D03E46F323075FD80049C28B /* WallpaperColorPanelNode.swift */,
+ D03E46DF23075FC90049C28B /* WallpaperColorPickerNode.swift */,
+ D03E46F723075FD90049C28B /* WallpaperCropNode.swift */,
+ D03E46E923075FD50049C28B /* WallpaperGalleryController.swift */,
+ D03E46F423075FD80049C28B /* WallpaperGalleryDecorationNode.swift */,
+ D03E46FD23075FDA0049C28B /* WallpaperGalleryItem.swift */,
+ D03E46E523075FD40049C28B /* WallpaperGalleryToolbarNode.swift */,
+ D03E46EB23075FD60049C28B /* WallpaperPatternPanelNode.swift */,
+ D03E46EE23075FD60049C28B /* WallpaperSearchRecentQueries.swift */,
+ );
+ path = Themes;
+ sourceTree = "";
+ };
+ D03E472323075FEC0049C28B /* Watch */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4724230760040049C28B /* WatchSettingsController.swift */,
+ );
+ path = Watch;
+ sourceTree = "";
+ };
+ D03E47262307600F0049C28B /* Language Selection */ = {
+ isa = PBXGroup;
+ children = (
+ D03E4728230760320049C28B /* LocalizationListController.swift */,
+ D03E4729230760330049C28B /* LocalizationListControllerNode.swift */,
+ D03E4727230760320049C28B /* LocalizationListItem.swift */,
+ );
+ path = "Language Selection";
+ sourceTree = "";
+ };
+ D03E472D2307603D0049C28B /* Terms of Service */ = {
+ isa = PBXGroup;
+ children = (
+ D03E472F230760570049C28B /* TermsOfServiceController.swift */,
+ D03E472E230760560049C28B /* TermsOfServiceControllerNode.swift */,
+ );
+ path = "Terms of Service";
+ sourceTree = "";
+ };
+ D03E4732230761E10049C28B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D03E49392308678D0049C28B /* InstantPageCache.framework */,
+ D03E490D2308661A0049C28B /* GridMessageSelectionNode.framework */,
+ D03E48E12308649C0049C28B /* CounterContollerTitleView.framework */,
+ D03E48B5230777870049C28B /* CheckNode.framework */,
+ D03E48B3230776870049C28B /* InstantPageUI.framework */,
+ D03E48A12307742D0049C28B /* AuthorizationUI.framework */,
+ D03E486D23076C440049C28B /* WallpaperResources.framework */,
+ D03E483523076AE90049C28B /* QrCode.framework */,
+ D03E480B230769A30049C28B /* HexColor.framework */,
+ D03E47D4230767F40049C28B /* UrlHandling.framework */,
+ D03E47B32307635C0049C28B /* WebSearchUI.framework */,
+ D03E47B1230763570049C28B /* UrlEscaping.framework */,
+ D03E47AF230763510049C28B /* UniversalMediaPlayer.framework */,
+ D03E47AD2307634C0049C28B /* UIKit.framework */,
+ D03E47AB230763460049C28B /* TextFormat.framework */,
+ D03E479F230763400049C28B /* TelegramCallsUI.framework */,
+ D03E47A1230763400049C28B /* TelegramCore.framework */,
+ D03E47A3230763400049C28B /* TelegramNotices.framework */,
+ D03E47A5230763400049C28B /* TelegramPresentationData.framework */,
+ D03E47A7230763400049C28B /* TelegramStringFormatting.framework */,
+ D03E47A9230763400049C28B /* TelegramUIPreferences.framework */,
+ D03E479D2307632C0049C28B /* SwiftSignalKit.framework */,
+ D03E479B230763230049C28B /* StickerPackPreviewUI.framework */,
+ D03E47992307631C0049C28B /* ShareController.framework */,
+ D03E4797230763160049C28B /* SearchUI.framework */,
+ D03E4795230763100049C28B /* SearchBarNode.framework */,
+ D03E4793230763060049C28B /* RadialStatusNode.framework */,
+ D03E4791230763020049C28B /* QuickLook.framework */,
+ D03E478F230762F80049C28B /* ProgressNavigationButtonNode.framework */,
+ D03E478D230762F20049C28B /* Postbox.framework */,
+ D03E478B230762EE0049C28B /* Photos.framework */,
+ D03E4789230762E70049C28B /* PhotoResources.framework */,
+ D03E4787230762E20049C28B /* PhoneInputNode.framework */,
+ D03E4785230762D90049C28B /* PeerAvatarGalleryUI.framework */,
+ D03E477F230762D40049C28B /* PasscodeUI.framework */,
+ D03E4781230762D40049C28B /* PassportUI.framework */,
+ D03E4783230762D40049C28B /* PasswordSetupUI.framework */,
+ D03E477D230762C90049C28B /* OverlayStatusController.framework */,
+ D03E477B230762C30049C28B /* NotificationSoundSelectionUI.framework */,
+ D03E4779230762B30049C28B /* MtProtoKitDynamic.framework */,
+ D03E4777230762A50049C28B /* MessageUI.framework */,
+ D03E47752307629D0049C28B /* MergeLists.framework */,
+ D03E4773230762970049C28B /* MediaResources.framework */,
+ D03E4771230762910049C28B /* MapResourceToAvatarSizes.framework */,
+ D03E476F2307628B0049C28B /* LocalAuthentication.framework */,
+ D03E47692307628A0049C28B /* LocalAuth.framework */,
+ D03E476B2307628A0049C28B /* LocalizedPeerData.framework */,
+ D03E476D2307628A0049C28B /* LocalMediaResources.framework */,
+ D03E4767230762710049C28B /* ListSectionHeaderNode.framework */,
+ D03E4763230762670049C28B /* LegacyMediaPickerUI.framework */,
+ D03E4765230762670049C28B /* LegacyUI.framework */,
+ D03E47612307625F0049C28B /* LegacyComponents.framework */,
+ D03E4757230762560049C28B /* ItemListAvatarAndNameInfoItem.framework */,
+ D03E4759230762560049C28B /* ItemListPeerActionItem.framework */,
+ D03E475B230762560049C28B /* ItemListPeerItem.framework */,
+ D03E475D230762560049C28B /* ItemListStickerPackItem.framework */,
+ D03E475F230762560049C28B /* ItemListUI.framework */,
+ D03E4755230762460049C28B /* Geocoding.framework */,
+ D03E47532307623E0049C28B /* GalleryUI.framework */,
+ D03E47512307623A0049C28B /* Foundation.framework */,
+ D03E474F230762310049C28B /* Display.framework */,
+ D03E474D230762270049C28B /* DeviceLocationManager.framework */,
+ D03E474B230762200049C28B /* DeviceAccess.framework */,
+ D03E47492307621A0049C28B /* CountrySelectionUI.framework */,
+ D03E4747230762130049C28B /* CoreTelephony.framework */,
+ D03E47452307620C0049C28B /* ContactsPeerItem.framework */,
+ D03E4743230762070049C28B /* ChatListUI.framework */,
+ D03E473F230762020049C28B /* ChatListSearchItemHeader.framework */,
+ D03E4741230762020049C28B /* ChatListSearchItemNode.framework */,
+ D03E473D230761FA0049C28B /* CallListUI.framework */,
+ D03E473B230761F30049C28B /* AvatarNode.framework */,
+ D03E4739230761ED0049C28B /* AsyncDisplayKit.framework */,
+ D03E4737230761EA0049C28B /* AlertUI.framework */,
+ D03E4735230761E50049C28B /* ActivityIndicator.framework */,
+ D03E4733230761E10049C28B /* AccountContext.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D03E464823075D930049C28B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E465223075D930049C28B /* SettingsUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D03E464C23075D930049C28B /* SettingsUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D03E465523075D930049C28B /* Build configuration list for PBXNativeTarget "SettingsUI" */;
+ buildPhases = (
+ D03E464823075D930049C28B /* Headers */,
+ D03E464923075D930049C28B /* Sources */,
+ D03E464A23075D930049C28B /* Frameworks */,
+ D03E464B23075D930049C28B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SettingsUI;
+ productName = SettingsUI;
+ productReference = D03E464D23075D930049C28B /* SettingsUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D03E464423075D930049C28B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D03E464C23075D930049C28B = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D03E464723075D930049C28B /* Build configuration list for PBXProject "SettingsUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D03E464323075D930049C28B;
+ productRefGroup = D03E464E23075D930049C28B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D03E464C23075D930049C28B /* SettingsUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D03E464B23075D930049C28B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D03E464923075D930049C28B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D03E468023075EE90049C28B /* NotificationExceptions.swift in Sources */,
+ D03E46D423075F810049C28B /* ProxySettingsActionItem.swift in Sources */,
+ D03E466923075E660049C28B /* LogoutOptionsController.swift in Sources */,
+ D03E469D23075F2C0049C28B /* SelectivePrivacySettingsController.swift in Sources */,
+ D03E4725230760040049C28B /* WatchSettingsController.swift in Sources */,
+ D03E468D23075F010049C28B /* SettingsSearchResultItem.swift in Sources */,
+ D03E470923075FE40049C28B /* CustomWallpaperPicker.swift in Sources */,
+ D03E46A123075F2C0049C28B /* PasscodeOptionsController.swift in Sources */,
+ D03E470623075FE40049C28B /* ThemeGridSearchColorsItem.swift in Sources */,
+ D03E46B223075F4E0049C28B /* RecentSessionsController.swift in Sources */,
+ D03E471F23075FE40049C28B /* ThemeGridController.swift in Sources */,
+ D03E48B22307767B0049C28B /* CachedFaqInstantPage.swift in Sources */,
+ D03E471A23075FE40049C28B /* WallpaperCropNode.swift in Sources */,
+ D03E46A523075F2C0049C28B /* PrivacyIntroController.swift in Sources */,
+ D03E46A023075F2C0049C28B /* PrivacyIntroControllerNode.swift in Sources */,
+ D03E46C523075F810049C28B /* DataAndStorageSettingsController.swift in Sources */,
+ D03E467923075EC70049C28B /* NotificationsAndSounds.swift in Sources */,
+ D03E470423075FE40049C28B /* ThemeGridSearchItem.swift in Sources */,
+ D03E466E23075E660049C28B /* TabBarAccountSwitchController.swift in Sources */,
+ D03E46D223075F810049C28B /* ShareProxyServerActionSheetController.swift in Sources */,
+ D03E468A23075F010049C28B /* SettingsSearchRecentQueries.swift in Sources */,
+ D03E47B8230766870049C28B /* FrameworkBundle.swift in Sources */,
+ D03E472023075FE40049C28B /* WallpaperGalleryItem.swift in Sources */,
+ D03E471723075FE40049C28B /* WallpaperGalleryDecorationNode.swift in Sources */,
+ D03E46B123075F4E0049C28B /* ItemListWebsiteItem.swift in Sources */,
+ D03E470723075FE40049C28B /* ThemeSettingsThemeItem.swift in Sources */,
+ D03E46D123075F810049C28B /* ProxyListSettingsController.swift in Sources */,
+ D03E472223075FE40049C28B /* ThemeAutoNightSettingsController.swift in Sources */,
+ D03E470D23075FE40049C28B /* ThemeSettingsController.swift in Sources */,
+ D03E46D023075F810049C28B /* AutodownloadSizeLimitItem.swift in Sources */,
+ D03E46DA23075FA40049C28B /* ArchivedStickerPacksController.swift in Sources */,
+ D03E467323075E660049C28B /* ChangePhoneNumberIntroController.swift in Sources */,
+ D03E466C23075E660049C28B /* ChangePhoneNumberController.swift in Sources */,
+ D03E470123075FE40049C28B /* ThemeSettingsChatPreviewItem.swift in Sources */,
+ D03E471123075FE40049C28B /* WallpaperSearchRecentQueries.swift in Sources */,
+ D03E467023075E660049C28B /* DebugAccountsController.swift in Sources */,
+ D03E46CC23075F810049C28B /* NetworkUsageStatsController.swift in Sources */,
+ D03E466D23075E660049C28B /* EditSettingsController.swift in Sources */,
+ D03E46CD23075F810049C28B /* AutodownloadConnectionTypeController.swift in Sources */,
+ D03E46CB23075F810049C28B /* ProxySettingsServerItem.swift in Sources */,
+ D03E471323075FE40049C28B /* ThemePreviewController.swift in Sources */,
+ D03E48AE230775800049C28B /* OpenSettings.swift in Sources */,
+ D03E46A423075F2C0049C28B /* ForwardPrivacyChatPreviewItem.swift in Sources */,
+ D03E470323075FE40049C28B /* ThemeGridControllerNode.swift in Sources */,
+ D03E468C23075F010049C28B /* SettingsSearchableItems.swift in Sources */,
+ D03E48B0230775F00049C28B /* AccountUtils.swift in Sources */,
+ D03E472B230760330049C28B /* LocalizationListController.swift in Sources */,
+ D03E470F23075FE40049C28B /* ThemeAccentColorController.swift in Sources */,
+ D03E471C23075FE40049C28B /* ThemeSettingsBrightnessItem.swift in Sources */,
+ D03E46B323075F4E0049C28B /* RecentSessionsEmptyStateItem.swift in Sources */,
+ D03E472123075FE40049C28B /* ThemeSettingsAccentColorItem.swift in Sources */,
+ D03E469E23075F2C0049C28B /* ConfirmPhoneNumberController.swift in Sources */,
+ D03E46C723075F810049C28B /* ProxyServerActionSheetController.swift in Sources */,
+ D03E470A23075FE40049C28B /* ThemeAccentColorActionSheet.swift in Sources */,
+ D03E468123075EE90049C28B /* NotificationExceptionControllerNode.swift in Sources */,
+ D03E46C623075F810049C28B /* SaveIncomingMediaController.swift in Sources */,
+ D03E471223075FE40049C28B /* ThemeGridSearchContentNode.swift in Sources */,
+ D03E470223075FE40049C28B /* WallpaperColorPickerNode.swift in Sources */,
+ D03E471023075FE40049C28B /* SettingsThemeWallpaperNode.swift in Sources */,
+ D03E471E23075FE40049C28B /* ThemeColorsGridControllerNode.swift in Sources */,
+ D03E471823075FE40049C28B /* ThemeGridSelectionPanelNode.swift in Sources */,
+ D03E46A223075F2C0049C28B /* PrivacyAndSecurityController.swift in Sources */,
+ D03E46D323075F810049C28B /* AutodownloadMediaCategoryController.swift in Sources */,
+ D03E46DB23075FA40049C28B /* FeaturedStickerPacksController.swift in Sources */,
+ D03E483A23076B220049C28B /* BlurredImageNode.swift in Sources */,
+ D03E471923075FE40049C28B /* ThemeAccentColorControllerNode.swift in Sources */,
+ D03E467F23075EE90049C28B /* NotificationExceptionSettingsController.swift in Sources */,
+ D03E466A23075E660049C28B /* DebugController.swift in Sources */,
+ D03E46C923075F810049C28B /* StorageUsageController.swift in Sources */,
+ D03E470523075FE40049C28B /* ThemeSettingsAppIconItem.swift in Sources */,
+ D03E471523075FE40049C28B /* ThemeSettingsFontSizeItem.swift in Sources */,
+ D03E46AA23075F2C0049C28B /* DataPrivacySettingsController.swift in Sources */,
+ D03E467123075E660049C28B /* SettingsController.swift in Sources */,
+ D03E46A923075F2C0049C28B /* BlockedPeersController.swift in Sources */,
+ D03E469F23075F2C0049C28B /* TwoStepVerificationResetController.swift in Sources */,
+ D03E472A230760330049C28B /* LocalizationListItem.swift in Sources */,
+ D03E46A823075F2C0049C28B /* TwoStepVerificationUnlockController.swift in Sources */,
+ D03E470B23075FE40049C28B /* ThemePreviewControllerNode.swift in Sources */,
+ D03E470823075FE40049C28B /* WallpaperGalleryToolbarNode.swift in Sources */,
+ D03E466F23075E660049C28B /* UsernameSetupController.swift in Sources */,
+ D03E46C823075F810049C28B /* CalculatingCacheSizeItem.swift in Sources */,
+ D03E471423075FE40049C28B /* ThemeColorsGridController.swift in Sources */,
+ D03E46A723075F2C0049C28B /* SelectivePrivacySettingsPeersController.swift in Sources */,
+ D03E46A323075F2C0049C28B /* CreatePasswordController.swift in Sources */,
+ D03E4731230760570049C28B /* TermsOfServiceController.swift in Sources */,
+ D03E46CF23075F810049C28B /* ProxyServerSettingsController.swift in Sources */,
+ D03E468E23075F010049C28B /* SettingsSearchRecentItem.swift in Sources */,
+ D03E467223075E660049C28B /* ChangePhoneNumberCodeController.swift in Sources */,
+ D03E466823075E660049C28B /* TabBarAccountSwitchControllerNode.swift in Sources */,
+ D03E468423075EF60049C28B /* LanguageSuggestionController.swift in Sources */,
+ D03E471623075FE40049C28B /* WallpaperColorPanelNode.swift in Sources */,
+ D03E470023075FE40049C28B /* ThemeColorsGridControllerItem.swift in Sources */,
+ D03E468B23075F010049C28B /* SettingsSearchItem.swift in Sources */,
+ D03E470E23075FE40049C28B /* WallpaperPatternPanelNode.swift in Sources */,
+ D03E466B23075E660049C28B /* ChangePhoneNumberControllerNode.swift in Sources */,
+ D03E46CA23075F810049C28B /* AutodownloadDataUsagePickerItem.swift in Sources */,
+ D03E470C23075FE40049C28B /* WallpaperGalleryController.swift in Sources */,
+ D03E471D23075FE40049C28B /* ThemeAutoNightTimeSelectionActionSheet.swift in Sources */,
+ D03E46CE23075F810049C28B /* VoiceCallDataSavingController.swift in Sources */,
+ D03E46B023075F4E0049C28B /* ItemListRecentSessionItem.swift in Sources */,
+ D03E471B23075FE40049C28B /* ThemeGridControllerItem.swift in Sources */,
+ D03E467A23075EC70049C28B /* NotificationSearchItem.swift in Sources */,
+ D03E4730230760570049C28B /* TermsOfServiceControllerNode.swift in Sources */,
+ D03E46A623075F2C0049C28B /* TwoStepVerificationPasswordEntryController.swift in Sources */,
+ D03E472C230760330049C28B /* LocalizationListControllerNode.swift in Sources */,
+ D03E46D923075FA40049C28B /* InstalledStickerPacksController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D03E465323075D930049C28B /* 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;
+ };
+ D03E465423075D930049C28B /* 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;
+ };
+ D03E465623075D930049C28B /* 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.SettingsUI;
+ 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;
+ };
+ D03E465723075D930049C28B /* 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.SettingsUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D03E465823075DEB0049C28B /* 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;
+ };
+ D03E465923075DEB0049C28B /* 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.SettingsUI;
+ 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;
+ };
+ D03E465A23075DF90049C28B /* 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;
+ };
+ D03E465B23075DF90049C28B /* 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.SettingsUI;
+ 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 */
+ D03E464723075D930049C28B /* Build configuration list for PBXProject "SettingsUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E465323075D930049C28B /* DebugAppStoreLLC */,
+ D03E465823075DEB0049C28B /* DebugHockeyapp */,
+ D03E465423075D930049C28B /* ReleaseAppStoreLLC */,
+ D03E465A23075DF90049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D03E465523075D930049C28B /* Build configuration list for PBXNativeTarget "SettingsUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D03E465623075D930049C28B /* DebugAppStoreLLC */,
+ D03E465923075DEB0049C28B /* DebugHockeyapp */,
+ D03E465723075D930049C28B /* ReleaseAppStoreLLC */,
+ D03E465B23075DF90049C28B /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D03E464423075D930049C28B /* Project object */;
+}
diff --git a/submodules/TelegramUI/TelegramUI/AccountUtils.swift b/submodules/SettingsUI/Sources/AccountUtils.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/AccountUtils.swift
rename to submodules/SettingsUI/Sources/AccountUtils.swift
diff --git a/submodules/TelegramUI/TelegramUI/BlurredImageNode.swift b/submodules/SettingsUI/Sources/BlurredImageNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/BlurredImageNode.swift
rename to submodules/SettingsUI/Sources/BlurredImageNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/CachedFaqInstantPage.swift b/submodules/SettingsUI/Sources/CachedFaqInstantPage.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/CachedFaqInstantPage.swift
rename to submodules/SettingsUI/Sources/CachedFaqInstantPage.swift
index ba5dfdec83..5392fced23 100644
--- a/submodules/TelegramUI/TelegramUI/CachedFaqInstantPage.swift
+++ b/submodules/SettingsUI/Sources/CachedFaqInstantPage.swift
@@ -4,6 +4,8 @@ import Postbox
import TelegramCore
import AccountContext
import InstantPageUI
+import InstantPageCache
+import UrlHandling
private func extractAnchor(string: String) -> (String, String?) {
var anchorValue: String?
diff --git a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberCodeController.swift b/submodules/SettingsUI/Sources/ChangePhoneNumberCodeController.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/ChangePhoneNumberCodeController.swift
rename to submodules/SettingsUI/Sources/ChangePhoneNumberCodeController.swift
index 1ed1569514..6eff637800 100644
--- a/submodules/TelegramUI/TelegramUI/ChangePhoneNumberCodeController.swift
+++ b/submodules/SettingsUI/Sources/ChangePhoneNumberCodeController.swift
@@ -9,6 +9,7 @@ import ItemListUI
import OverlayStatusController
import AccountContext
import AlertUI
+import AuthorizationUI
private final class ChangePhoneNumberCodeControllerArguments {
let updateEntryText: (String) -> Void
@@ -167,7 +168,7 @@ private func timeoutSignal(codeData: ChangeAccountPhoneNumberData) -> Signal String {
var link: String
diff --git a/submodules/TelegramUI/TelegramUI/ProxySettingsActionItem.swift b/submodules/SettingsUI/Sources/Data and Storage/ProxySettingsActionItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ProxySettingsActionItem.swift
rename to submodules/SettingsUI/Sources/Data and Storage/ProxySettingsActionItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ProxySettingsServerItem.swift b/submodules/SettingsUI/Sources/Data and Storage/ProxySettingsServerItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ProxySettingsServerItem.swift
rename to submodules/SettingsUI/Sources/Data and Storage/ProxySettingsServerItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/SaveIncomingMediaController.swift b/submodules/SettingsUI/Sources/Data and Storage/SaveIncomingMediaController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SaveIncomingMediaController.swift
rename to submodules/SettingsUI/Sources/Data and Storage/SaveIncomingMediaController.swift
diff --git a/submodules/TelegramUI/TelegramUI/ShareProxyServerActionSheetController.swift b/submodules/SettingsUI/Sources/Data and Storage/ShareProxyServerActionSheetController.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/ShareProxyServerActionSheetController.swift
rename to submodules/SettingsUI/Sources/Data and Storage/ShareProxyServerActionSheetController.swift
index 4e535d3771..29c12410f7 100644
--- a/submodules/TelegramUI/TelegramUI/ShareProxyServerActionSheetController.swift
+++ b/submodules/SettingsUI/Sources/Data and Storage/ShareProxyServerActionSheetController.swift
@@ -7,6 +7,7 @@ import AsyncDisplayKit
import UIKit
import SwiftSignalKit
import TelegramPresentationData
+import QrCode
public final class ShareProxyServerActionSheetController: ActionSheetController {
private var presentationDisposable: Disposable?
diff --git a/submodules/TelegramUI/TelegramUI/StorageUsageController.swift b/submodules/SettingsUI/Sources/Data and Storage/StorageUsageController.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/StorageUsageController.swift
rename to submodules/SettingsUI/Sources/Data and Storage/StorageUsageController.swift
index ce0f7758fb..4587623003 100644
--- a/submodules/TelegramUI/TelegramUI/StorageUsageController.swift
+++ b/submodules/SettingsUI/Sources/Data and Storage/StorageUsageController.swift
@@ -268,7 +268,7 @@ private func stringForCategory(strings: PresentationStrings, category: PeerCache
}
}
-func storageUsageController(context: AccountContext, isModal: Bool = false) -> ViewController {
+public func storageUsageController(context: AccountContext, isModal: Bool = false) -> ViewController {
let cacheSettingsPromise = Promise()
cacheSettingsPromise.set(context.sharedContext.accountManager.sharedData(keys: [SharedDataKeys.cacheStorageSettings])
|> map { sharedData -> CacheStorageSettings in
diff --git a/submodules/TelegramUI/TelegramUI/VoiceCallDataSavingController.swift b/submodules/SettingsUI/Sources/Data and Storage/VoiceCallDataSavingController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/VoiceCallDataSavingController.swift
rename to submodules/SettingsUI/Sources/Data and Storage/VoiceCallDataSavingController.swift
diff --git a/submodules/TelegramUI/TelegramUI/DebugAccountsController.swift b/submodules/SettingsUI/Sources/DebugAccountsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/DebugAccountsController.swift
rename to submodules/SettingsUI/Sources/DebugAccountsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/DebugController.swift b/submodules/SettingsUI/Sources/DebugController.swift
similarity index 97%
rename from submodules/TelegramUI/TelegramUI/DebugController.swift
rename to submodules/SettingsUI/Sources/DebugController.swift
index 125465f295..0a9c1e81c0 100644
--- a/submodules/TelegramUI/TelegramUI/DebugController.swift
+++ b/submodules/SettingsUI/Sources/DebugController.swift
@@ -152,7 +152,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
ActionSheetButtonItem(title: "Via Telegram", color: .accent, action: { [weak actionSheet] in
actionSheet?.dismissAnimated()
- let controller = PeerSelectionController(context: context, filter: [.onlyWriteable, .excludeDisabled])
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyWriteable, .excludeDisabled]))
controller.peerSelected = { [weak controller] peerId in
if let strongController = controller {
strongController.dismiss()
@@ -201,7 +201,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
ActionSheetButtonItem(title: "Via Telegram", color: .accent, action: { [weak actionSheet] in
actionSheet?.dismissAnimated()
- let controller = PeerSelectionController(context: context, filter: [.onlyWriteable, .excludeDisabled])
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyWriteable, .excludeDisabled]))
controller.peerSelected = { [weak controller] peerId in
if let strongController = controller {
strongController.dismiss()
@@ -246,7 +246,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
guard let context = arguments.context else {
return
}
- let controller = PeerSelectionController(context: context, filter: [.onlyWriteable, .excludeDisabled])
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyWriteable, .excludeDisabled]))
controller.peerSelected = { [weak controller] peerId in
if let strongController = controller {
strongController.dismiss()
@@ -276,7 +276,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
ActionSheetButtonItem(title: "Via Telegram", color: .accent, action: { [weak actionSheet] in
actionSheet?.dismissAnimated()
- let controller = PeerSelectionController(context: context, filter: [.onlyWriteable, .excludeDisabled])
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyWriteable, .excludeDisabled]))
controller.peerSelected = { [weak controller] peerId in
if let strongController = controller {
strongController.dismiss()
@@ -500,7 +500,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
return
}
- let controller = PeerSelectionController(context: context, filter: [.onlyWriteable, .excludeDisabled])
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyWriteable, .excludeDisabled]))
controller.peerSelected = { [weak controller] peerId in
if let strongController = controller {
strongController.dismiss()
diff --git a/submodules/TelegramUI/TelegramUI/EditSettingsController.swift b/submodules/SettingsUI/Sources/EditSettingsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/EditSettingsController.swift
rename to submodules/SettingsUI/Sources/EditSettingsController.swift
diff --git a/submodules/SettingsUI/Sources/FrameworkBundle.swift b/submodules/SettingsUI/Sources/FrameworkBundle.swift
new file mode 100644
index 0000000000..8ca13d7d92
--- /dev/null
+++ b/submodules/SettingsUI/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/LocalizationListController.swift b/submodules/SettingsUI/Sources/Language Selection/LocalizationListController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LocalizationListController.swift
rename to submodules/SettingsUI/Sources/Language Selection/LocalizationListController.swift
diff --git a/submodules/TelegramUI/TelegramUI/LocalizationListControllerNode.swift b/submodules/SettingsUI/Sources/Language Selection/LocalizationListControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LocalizationListControllerNode.swift
rename to submodules/SettingsUI/Sources/Language Selection/LocalizationListControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/LocalizationListItem.swift b/submodules/SettingsUI/Sources/Language Selection/LocalizationListItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LocalizationListItem.swift
rename to submodules/SettingsUI/Sources/Language Selection/LocalizationListItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/LanguageSuggestionController.swift b/submodules/SettingsUI/Sources/Language Suggestion/LanguageSuggestionController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/LanguageSuggestionController.swift
rename to submodules/SettingsUI/Sources/Language Suggestion/LanguageSuggestionController.swift
diff --git a/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift b/submodules/SettingsUI/Sources/LogoutOptionsController.swift
similarity index 97%
rename from submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift
rename to submodules/SettingsUI/Sources/LogoutOptionsController.swift
index 652dd361f7..c68485e932 100644
--- a/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift
+++ b/submodules/SettingsUI/Sources/LogoutOptionsController.swift
@@ -10,6 +10,7 @@ import ItemListUI
import OverlayStatusController
import AccountContext
import AlertUI
+import UrlHandling
private struct LogoutOptionsItemArguments {
let addAccount: () -> Void
@@ -190,9 +191,9 @@ func logoutOptionsController(context: AccountContext, navigationController: Navi
supportPeerDisposable.set((supportPeer.get()
|> take(1)
|> deliverOnMainQueue).start(next: { peerId in
- if let peerId = peerId {
+ if let peerId = peerId, let navigationController = navigationController {
dismissImpl?()
- pushControllerImpl?(ChatControllerImpl(context: context, chatLocation: .peer(peerId)))
+ context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId)))
}
}))
})
diff --git a/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift b/submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptionControllerNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift
rename to submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptionControllerNode.swift
index 0026cd939f..a9f4d0df0f 100644
--- a/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift
+++ b/submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptionControllerNode.swift
@@ -859,7 +859,7 @@ final class NotificationExceptionsControllerNode: ViewControllerTracingNode {
case .channels:
filter.insert(.onlyChannels)
}
- let controller = PeerSelectionController(context: context, filter: filter, hasContactSelector: false, title: presentationData.strings.Notifications_AddExceptionTitle)
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: filter, hasContactSelector: false, title: presentationData.strings.Notifications_AddExceptionTitle))
controller.peerSelected = { [weak controller] peerId in
presentPeerSettings(peerId, {
controller?.dismiss()
diff --git a/submodules/TelegramUI/TelegramUI/NotificationExceptionSettingsController.swift b/submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptionSettingsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/NotificationExceptionSettingsController.swift
rename to submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptionSettingsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/NotificationExceptions.swift b/submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptions.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/NotificationExceptions.swift
rename to submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptions.swift
diff --git a/submodules/TelegramUI/TelegramUI/NotificationSearchItem.swift b/submodules/SettingsUI/Sources/Notifications/NotificationSearchItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/NotificationSearchItem.swift
rename to submodules/SettingsUI/Sources/Notifications/NotificationSearchItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift b/submodules/SettingsUI/Sources/Notifications/NotificationsAndSounds.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift
rename to submodules/SettingsUI/Sources/Notifications/NotificationsAndSounds.swift
diff --git a/submodules/TelegramUI/TelegramUI/OpenSettings.swift b/submodules/SettingsUI/Sources/OpenSettings.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/OpenSettings.swift
rename to submodules/SettingsUI/Sources/OpenSettings.swift
diff --git a/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift b/submodules/SettingsUI/Sources/Privacy and Security/BlockedPeersController.swift
similarity index 98%
rename from submodules/TelegramUI/TelegramUI/BlockedPeersController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/BlockedPeersController.swift
index 87cf3fe738..d47d531956 100644
--- a/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift
+++ b/submodules/SettingsUI/Sources/Privacy and Security/BlockedPeersController.swift
@@ -224,7 +224,7 @@ public func blockedPeersController(context: AccountContext, blockedPeersContext:
}
}, addPeer: {
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
- let controller = PeerSelectionController(context: context, filter: [.onlyPrivateChats, .excludeSavedMessages, .removeSearchHeader, .excludeRecent], title: presentationData.strings.BlockedUsers_SelectUserTitle)
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyPrivateChats, .excludeSavedMessages, .removeSearchHeader, .excludeRecent], title: presentationData.strings.BlockedUsers_SelectUserTitle))
controller.peerSelected = { [weak controller] peerId in
guard let strongController = controller else {
return
diff --git a/submodules/TelegramUI/TelegramUI/ConfirmPhoneNumberController.swift b/submodules/SettingsUI/Sources/Privacy and Security/ConfirmPhoneNumberController.swift
similarity index 98%
rename from submodules/TelegramUI/TelegramUI/ConfirmPhoneNumberController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/ConfirmPhoneNumberController.swift
index 67aac7f6fb..aba918c2e4 100644
--- a/submodules/TelegramUI/TelegramUI/ConfirmPhoneNumberController.swift
+++ b/submodules/SettingsUI/Sources/Privacy and Security/ConfirmPhoneNumberController.swift
@@ -8,6 +8,7 @@ import TelegramPresentationData
import ItemListUI
import AccountContext
import AlertUI
+import AuthorizationUI
private final class ConfirmPhoneNumberCodeControllerArguments {
let updateEntryText: (String) -> Void
@@ -175,7 +176,7 @@ private final class ConfirmPhoneNumberCodeControllerImpl: ItemListController ViewController {
+public func confirmPhoneNumberCodeController(context: AccountContext, phoneNumber: String, codeData: CancelAccountResetData) -> ViewController {
let initialState = ConfirmPhoneNumberCodeControllerState(codeText: "", checking: false)
let statePromise = ValuePromise(initialState, ignoreRepeated: true)
diff --git a/submodules/TelegramUI/TelegramUI/CreatePasswordController.swift b/submodules/SettingsUI/Sources/Privacy and Security/CreatePasswordController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/CreatePasswordController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/CreatePasswordController.swift
diff --git a/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift b/submodules/SettingsUI/Sources/Privacy and Security/DataPrivacySettingsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/DataPrivacySettingsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/ForwardPrivacyChatPreviewItem.swift b/submodules/SettingsUI/Sources/Privacy and Security/ForwardPrivacyChatPreviewItem.swift
similarity index 91%
rename from submodules/TelegramUI/TelegramUI/ForwardPrivacyChatPreviewItem.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/ForwardPrivacyChatPreviewItem.swift
index 1923fc8fbd..090195a21d 100644
--- a/submodules/TelegramUI/TelegramUI/ForwardPrivacyChatPreviewItem.swift
+++ b/submodules/SettingsUI/Sources/Privacy and Security/ForwardPrivacyChatPreviewItem.swift
@@ -86,8 +86,6 @@ class ForwardPrivacyChatPreviewItemNode: ListViewItemNode {
private var item: ForwardPrivacyChatPreviewItem?
- private let controllerInteraction: ChatControllerInteraction
-
init() {
self.backgroundNode = ASImageNode()
self.backgroundNode.isLayerBacked = true
@@ -104,8 +102,6 @@ class ForwardPrivacyChatPreviewItemNode: ListViewItemNode {
self.containerNode = ASDisplayNode()
self.containerNode.subnodeTransform = CATransform3DMakeRotation(CGFloat.pi, 0.0, 0.0, 1.0)
- self.controllerInteraction = ChatControllerInteraction.default
-
self.tooltipContainerNode = ContextMenuContainerNode()
self.tooltipContainerNode.backgroundColor = UIColor(white: 0.0, alpha: 0.8)
@@ -128,7 +124,6 @@ class ForwardPrivacyChatPreviewItemNode: ListViewItemNode {
func asyncLayout() -> (_ item: ForwardPrivacyChatPreviewItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) {
let currentItem = self.item
- let controllerInteraction = self.controllerInteraction
let currentNode = self.messageNode
let makeTextLayout = TextNode.asyncLayout(self.measureTextNode)
@@ -150,9 +145,7 @@ class ForwardPrivacyChatPreviewItemNode: ListViewItemNode {
let forwardInfo = MessageForwardInfo(author: item.linkEnabled ? peers[peerId] : nil, source: nil, sourceMessageId: nil, date: 0, authorSignature: item.linkEnabled ? nil : item.peerName)
- let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: item.theme, wallpaper: item.wallpaper), fontSize: item.fontSize, strings: item.strings, dateTimeFormat: item.dateTimeFormat, nameDisplayOrder: item.nameDisplayOrder, disableAnimations: false, largeEmoji: false)
-
- let messageItem = ChatMessageItem(presentationData: chatPresentationData, context: item.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: forwardInfo, author: nil, text: item.strings.Privacy_Forwards_PreviewMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: true)
+ let messageItem = item.context.sharedContext.makeChatMessagePreviewItem(context: item.context, message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: forwardInfo, author: nil, text: item.strings.Privacy_Forwards_PreviewMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), theme: item.theme, strings: item.strings, wallpaper: item.wallpaper, fontSize: item.fontSize, dateTimeFormat: item.dateTimeFormat, nameOrder: item.nameDisplayOrder, forcedResourceStatus: nil)
var node: ListViewItemNode?
if let current = currentNode {
@@ -266,7 +259,7 @@ class ForwardPrivacyChatPreviewItemNode: ListViewItemNode {
let contentSize = CGSize(width: textSize.width + 12.0, height: textSize.height + 34.0)
var sourceRect: CGRect
- if let messageNode = strongSelf.messageNode as? ChatMessageBubbleItemNode, let forwardInfoNode = messageNode.forwardInfoNode {
+ if let messageNode = strongSelf.messageNode as? ChatMessagePrevewItemNode, let forwardInfoNode = messageNode.forwardInfoReferenceNode {
sourceRect = forwardInfoNode.convert(forwardInfoNode.bounds, to: strongSelf)
if let authorNameCenter = authorNameCenter {
sourceRect.origin = CGPoint(x: sourceRect.minX + authorNameCenter, y: sourceRect.minY)
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift b/submodules/SettingsUI/Sources/Privacy and Security/PasscodeOptionsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/PasscodeOptionsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift b/submodules/SettingsUI/Sources/Privacy and Security/PrivacyAndSecurityController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/PrivacyAndSecurityController.swift
diff --git a/submodules/TelegramUI/TelegramUI/PrivacyIntroController.swift b/submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PrivacyIntroController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroController.swift
diff --git a/submodules/TelegramUI/TelegramUI/PrivacyIntroControllerNode.swift b/submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroControllerNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/PrivacyIntroControllerNode.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroControllerNode.swift
index d2380e956c..c6ad09bdfd 100644
--- a/submodules/TelegramUI/TelegramUI/PrivacyIntroControllerNode.swift
+++ b/submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroControllerNode.swift
@@ -7,6 +7,7 @@ import TelegramCore
import SwiftSignalKit
import TelegramPresentationData
import AccountContext
+import AuthorizationUI
private func generateButtonImage(backgroundColor: UIColor, borderColor: UIColor, highlightColor: UIColor?) -> UIImage? {
return generateImage(CGSize(width: 1.0, height: 44.0), contextGenerator: { size, context in
diff --git a/submodules/TelegramUI/TelegramUI/ItemListRecentSessionItem.swift b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/ItemListRecentSessionItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ItemListRecentSessionItem.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/ItemListRecentSessionItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ItemListWebsiteItem.swift b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/ItemListWebsiteItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ItemListWebsiteItem.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/ItemListWebsiteItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/RecentSessionsController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/RecentSessionsEmptyStateItem.swift b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsEmptyStateItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/RecentSessionsEmptyStateItem.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsEmptyStateItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsController.swift b/submodules/SettingsUI/Sources/Privacy and Security/SelectivePrivacySettingsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/SelectivePrivacySettingsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsPeersController.swift b/submodules/SettingsUI/Sources/Privacy and Security/SelectivePrivacySettingsPeersController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SelectivePrivacySettingsPeersController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/SelectivePrivacySettingsPeersController.swift
diff --git a/submodules/TelegramUI/TelegramUI/TwoStepVerificationPasswordEntryController.swift b/submodules/SettingsUI/Sources/Privacy and Security/TwoStepVerificationPasswordEntryController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/TwoStepVerificationPasswordEntryController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/TwoStepVerificationPasswordEntryController.swift
diff --git a/submodules/TelegramUI/TelegramUI/TwoStepVerificationResetController.swift b/submodules/SettingsUI/Sources/Privacy and Security/TwoStepVerificationResetController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/TwoStepVerificationResetController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/TwoStepVerificationResetController.swift
diff --git a/submodules/TelegramUI/TelegramUI/TwoStepVerificationUnlockController.swift b/submodules/SettingsUI/Sources/Privacy and Security/TwoStepVerificationUnlockController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/TwoStepVerificationUnlockController.swift
rename to submodules/SettingsUI/Sources/Privacy and Security/TwoStepVerificationUnlockController.swift
diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchItem.swift b/submodules/SettingsUI/Sources/Search/SettingsSearchItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SettingsSearchItem.swift
rename to submodules/SettingsUI/Sources/Search/SettingsSearchItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchRecentItem.swift b/submodules/SettingsUI/Sources/Search/SettingsSearchRecentItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SettingsSearchRecentItem.swift
rename to submodules/SettingsUI/Sources/Search/SettingsSearchRecentItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchRecentQueries.swift b/submodules/SettingsUI/Sources/Search/SettingsSearchRecentQueries.swift
similarity index 96%
rename from submodules/TelegramUI/TelegramUI/SettingsSearchRecentQueries.swift
rename to submodules/SettingsUI/Sources/Search/SettingsSearchRecentQueries.swift
index 38679d8a0b..a13843c491 100644
--- a/submodules/TelegramUI/TelegramUI/SettingsSearchRecentQueries.swift
+++ b/submodules/SettingsUI/Sources/Search/SettingsSearchRecentQueries.swift
@@ -21,8 +21,8 @@ private struct SettingsSearchRecentQueryItemId {
}
}
-final class RecentSettingsSearchQueryItem: OrderedItemListEntryContents {
- init() {
+public final class RecentSettingsSearchQueryItem: OrderedItemListEntryContents {
+ public init() {
}
public init(decoder: PostboxDecoder) {
diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchResultItem.swift b/submodules/SettingsUI/Sources/Search/SettingsSearchResultItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/SettingsSearchResultItem.swift
rename to submodules/SettingsUI/Sources/Search/SettingsSearchResultItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift b/submodules/SettingsUI/Sources/Search/SettingsSearchableItems.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift
rename to submodules/SettingsUI/Sources/Search/SettingsSearchableItems.swift
index 3045df777a..7e3eeb0e65 100644
--- a/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift
+++ b/submodules/SettingsUI/Sources/Search/SettingsSearchableItems.swift
@@ -812,7 +812,7 @@ func settingsSearchableItems(context: AccountContext, notificationExceptionsList
allItems.append(contentsOf: profileItems)
let savedMessages = SettingsSearchableItem(id: .savedMessages(0), title: strings.Settings_SavedMessages, alternate: synonyms(strings.SettingsSearch_Synonyms_SavedMessages), icon: .savedMessages, breadcrumbs: [], present: { context, _, present in
- present(.push, ChatControllerImpl(context: context, chatLocation: .peer(context.account.peerId)))
+ present(.push, context.sharedContext.makeChatController(context: context, chatLocation: .peer(context.account.peerId), subject: nil, botStart: nil, mode: .standard(previewing: false)))
})
allItems.append(savedMessages)
@@ -856,7 +856,7 @@ func settingsSearchableItems(context: AccountContext, notificationExceptionsList
let _ = (supportPeerId(account: context.account)
|> deliverOnMainQueue).start(next: { peerId in
if let peerId = peerId {
- present(.push, ChatControllerImpl(context: context, chatLocation: .peer(peerId)))
+ present(.push, context.sharedContext.makeChatController(context: context, chatLocation: .peer(peerId), subject: nil, botStart: nil, mode: .standard(previewing: false)))
}
})
})
diff --git a/submodules/TelegramUI/TelegramUI/SettingsController.swift b/submodules/SettingsUI/Sources/SettingsController.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SettingsController.swift
rename to submodules/SettingsUI/Sources/SettingsController.swift
index 617811e201..d7f09ae637 100644
--- a/submodules/TelegramUI/TelegramUI/SettingsController.swift
+++ b/submodules/SettingsUI/Sources/SettingsController.swift
@@ -616,7 +616,7 @@ private final class SettingsControllerImpl: ItemListController, S
}
}
-public func settingsController(context: AccountContext, accountManager: AccountManager) -> SettingsController & ViewController {
+public func settingsController(context: AccountContext, accountManager: AccountManager, enableDebugActions: Bool) -> SettingsController & ViewController {
let initialState = SettingsState(updatingAvatar: nil, accountIdWithRevealedOptions: nil, isSearching: false)
let statePromise = ValuePromise(initialState, ignoreRepeated: true)
let stateValue = Atomic(value: initialState)
@@ -824,7 +824,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM
}), TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {
supportPeerDisposable.set((supportPeer.get() |> take(1) |> deliverOnMainQueue).start(next: { peerId in
if let peerId = peerId {
- pushControllerImpl?(ChatControllerImpl(context: context, chatLocation: .peer(peerId)))
+ pushControllerImpl?(context.sharedContext.makeChatController(context: context, chatLocation: .peer(peerId), subject: nil, botStart: nil, mode: .standard(previewing: false)))
}
}))
})]), nil)
@@ -1389,7 +1389,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM
})
if let selectedAccount = selectedAccount, let sharedContext = sharedContext {
let accountContext = sharedContext.makeTempAccountContext(account: selectedAccount)
- let chatListController = accountContext.sharedContext.makeChatListController(context: accountContext, groupId: .root, controlsHistoryPreload: false, hideNetworkActivityStatus: true, enableDebugActions: !GlobalExperimentalSettings.isAppStoreBuild)
+ let chatListController = accountContext.sharedContext.makeChatListController(context: accountContext, groupId: .root, controlsHistoryPreload: false, hideNetworkActivityStatus: true, enableDebugActions: enableDebugActions)
return chatListController
}
}
diff --git a/submodules/SettingsUI/Sources/SettingsUI.h b/submodules/SettingsUI/Sources/SettingsUI.h
new file mode 100644
index 0000000000..899048f6a5
--- /dev/null
+++ b/submodules/SettingsUI/Sources/SettingsUI.h
@@ -0,0 +1,19 @@
+//
+// SettingsUI.h
+// SettingsUI
+//
+// Created by Peter on 8/17/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for SettingsUI.
+FOUNDATION_EXPORT double SettingsUIVersionNumber;
+
+//! Project version string for SettingsUI.
+FOUNDATION_EXPORT const unsigned char SettingsUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift b/submodules/SettingsUI/Sources/Stickers/ArchivedStickerPacksController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift
rename to submodules/SettingsUI/Sources/Stickers/ArchivedStickerPacksController.swift
diff --git a/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift b/submodules/SettingsUI/Sources/Stickers/FeaturedStickerPacksController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift
rename to submodules/SettingsUI/Sources/Stickers/FeaturedStickerPacksController.swift
diff --git a/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift b/submodules/SettingsUI/Sources/Stickers/InstalledStickerPacksController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift
rename to submodules/SettingsUI/Sources/Stickers/InstalledStickerPacksController.swift
diff --git a/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchController.swift b/submodules/SettingsUI/Sources/TabBarAccountSwitchController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/TabBarAccountSwitchController.swift
rename to submodules/SettingsUI/Sources/TabBarAccountSwitchController.swift
diff --git a/submodules/TelegramUI/TelegramUI/TabBarAccountSwitchControllerNode.swift b/submodules/SettingsUI/Sources/TabBarAccountSwitchControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/TabBarAccountSwitchControllerNode.swift
rename to submodules/SettingsUI/Sources/TabBarAccountSwitchControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/TermsOfServiceController.swift b/submodules/SettingsUI/Sources/Terms of Service/TermsOfServiceController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/TermsOfServiceController.swift
rename to submodules/SettingsUI/Sources/Terms of Service/TermsOfServiceController.swift
diff --git a/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift b/submodules/SettingsUI/Sources/Terms of Service/TermsOfServiceControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift
rename to submodules/SettingsUI/Sources/Terms of Service/TermsOfServiceControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift b/submodules/SettingsUI/Sources/Themes/CustomWallpaperPicker.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift
rename to submodules/SettingsUI/Sources/Themes/CustomWallpaperPicker.swift
index c350a554b8..e12af5fe34 100644
--- a/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift
+++ b/submodules/SettingsUI/Sources/Themes/CustomWallpaperPicker.swift
@@ -10,6 +10,7 @@ import MediaResources
import AccountContext
import LegacyUI
import LegacyMediaPickerUI
+import LocalMediaResources
func presentCustomWallpaperPicker(context: AccountContext, present: @escaping (ViewController) -> Void) {
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
diff --git a/submodules/TelegramUI/TelegramUI/SettingsThemeWallpaperNode.swift b/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/SettingsThemeWallpaperNode.swift
rename to submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift
index ad27e97209..26b84afe35 100644
--- a/submodules/TelegramUI/TelegramUI/SettingsThemeWallpaperNode.swift
+++ b/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift
@@ -8,6 +8,7 @@ import SwiftSignalKit
import TelegramPresentationData
import AccountContext
import RadialStatusNode
+import WallpaperResources
private func whiteColorImage(theme: PresentationTheme) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
return .single({ arguments in
diff --git a/submodules/TelegramUI/TelegramUI/ThemeAccentColorActionSheet.swift b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorActionSheet.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeAccentColorActionSheet.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeAccentColorActionSheet.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeAccentColorController.swift b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeAccentColorController.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeAccentColorController.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeAccentColorControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift
similarity index 81%
rename from submodules/TelegramUI/TelegramUI/ThemeAccentColorControllerNode.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift
index 192cce6b3b..6a9bd7fb5d 100644
--- a/submodules/TelegramUI/TelegramUI/ThemeAccentColorControllerNode.swift
+++ b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift
@@ -233,7 +233,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate
}
private func updateMessagesLayout(layout: ContainerViewLayout, bottomInset: CGFloat, transition: ContainedViewLayoutTransition) {
- var items: [ChatMessageItem] = []
+ var items: [ListViewItem] = []
let peerId = PeerId(namespace: Namespaces.Peer.CloudUser, id: 1)
let otherPeerId = self.context.account.peerId
var peers = SimpleDictionary()
@@ -244,21 +244,28 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate
let replyMessageId = MessageId(peerId: peerId, namespace: 0, id: 3)
messages[replyMessageId] = Message(stableId: 3, stableVersion: 0, id: replyMessageId, globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_1_ReplyText, attributes: [], media: [], peers: peers, associatedMessages: SimpleDictionary(), associatedMessageIds: [])
- let controllerInteraction = ChatControllerInteraction.default
- let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: self.theme, wallpaper: self.theme.chat.defaultWallpaper), fontSize: self.presentationData.fontSize, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, disableAnimations: false, largeEmoji: false)
+ let message1 = Message(stableId: 4, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 4), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66003, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_1_Text, attributes: [ReplyMessageAttribute(messageId: replyMessageId)], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: [])
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: message1, theme: self.theme, strings: self.presentationData.strings, wallpaper: self.theme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 4, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 4), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66003, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_1_Text, attributes: [ReplyMessageAttribute(messageId: replyMessageId)], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ let message2 = Message(stableId: 3, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 3), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66002, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_2_Text, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: [])
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 3, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 3), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66002, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_2_Text, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: message2, theme: self.theme, strings: self.presentationData.strings, wallpaper: self.theme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_3_Text, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ let message3 = Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_3_Text, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: [])
+
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: message3, theme: self.theme, strings: self.presentationData.strings, wallpaper: self.theme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
let voiceAttributes: [TelegramMediaFileAttribute] = [.Audio(isVoice: true, duration: 14, title: nil, performer: nil, waveform: MemoryBuffer())]
let voiceMedia = TelegramMediaFile(fileId: MediaId(namespace: 0, id: 0), partialReference: nil, resource: LocalFileMediaResource(fileId: 0), previewRepresentations: [], immediateThumbnailData: nil, mimeType: "audio/ogg", size: nil, attributes: voiceAttributes)
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false, forcedResourceStatus: FileMediaResourceStatus(mediaStatus: .playbackStatus(.playing), fetchStatus: .Local)), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [voiceMedia], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ let message4 = Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [voiceMedia], peers: peers, associatedMessages: messages, associatedMessageIds: [])
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 0, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 0), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_4_Text, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: message4, theme: self.theme, strings: self.presentationData.strings, wallpaper: self.theme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: FileMediaResourceStatus(mediaStatus: .playbackStatus(.playing), fetchStatus: .Local)))
+
+ //items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false, forcedResourceStatus: FileMediaResourceStatus(mediaStatus: .playbackStatus(.playing), fetchStatus: .Local)), controllerInteraction: controllerInteraction, content: .message(message: , read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+
+ let message5 = Message(stableId: 0, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 0), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: self.presentationData.strings.Appearance_ThemePreview_Chat_4_Text, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: [])
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: message5, theme: self.theme, strings: self.presentationData.strings, wallpaper: self.theme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
let params = ListViewItemLayoutParams(width: layout.size.width, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right)
if let messageNodes = self.messageNodes {
diff --git a/submodules/TelegramUI/TelegramUI/ThemeAutoNightSettingsController.swift b/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeAutoNightSettingsController.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeAutoNightTimeSelectionActionSheet.swift b/submodules/SettingsUI/Sources/Themes/ThemeAutoNightTimeSelectionActionSheet.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeAutoNightTimeSelectionActionSheet.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeAutoNightTimeSelectionActionSheet.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeColorsGridController.swift b/submodules/SettingsUI/Sources/Themes/ThemeColorsGridController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeColorsGridController.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeColorsGridController.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerItem.swift
similarity index 98%
rename from submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerItem.swift
index 55ea164977..357f37a975 100644
--- a/submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerItem.swift
+++ b/submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerItem.swift
@@ -6,6 +6,7 @@ import SwiftSignalKit
import AsyncDisplayKit
import Postbox
import AccountContext
+import GridMessageSelectionNode
final class ThemeColorsGridControllerItem: GridItem {
let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeColorsGridControllerNode.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridController.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridController.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/ThemeGridController.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeGridController.swift
index 22577ed6be..e8a2c66b8a 100644
--- a/submodules/TelegramUI/TelegramUI/ThemeGridController.swift
+++ b/submodules/SettingsUI/Sources/Themes/ThemeGridController.swift
@@ -12,6 +12,7 @@ import OverlayStatusController
import AccountContext
import ShareController
import SearchUI
+import HexColor
final class ThemeGridController: ViewController {
private var controllerNode: ThemeGridControllerNode {
diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridControllerItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerItem.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/ThemeGridControllerItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeGridControllerItem.swift
index 6e588ee22f..2c16bb784f 100644
--- a/submodules/TelegramUI/TelegramUI/ThemeGridControllerItem.swift
+++ b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerItem.swift
@@ -6,6 +6,7 @@ import SwiftSignalKit
import AsyncDisplayKit
import Postbox
import AccountContext
+import GridMessageSelectionNode
final class ThemeGridControllerItem: GridItem {
let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeGridControllerNode.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSearchColorsItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchColorsItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeGridSearchColorsItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeGridSearchColorsItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSearchContentNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeGridSearchContentNode.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeGridSearchItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSelectionPanelNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridSelectionPanelNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeGridSelectionPanelNode.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeGridSelectionPanelNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemePreviewController.swift b/submodules/SettingsUI/Sources/Themes/ThemePreviewController.swift
similarity index 91%
rename from submodules/TelegramUI/TelegramUI/ThemePreviewController.swift
rename to submodules/SettingsUI/Sources/Themes/ThemePreviewController.swift
index 05d3bc15ca..41199e1961 100644
--- a/submodules/TelegramUI/TelegramUI/ThemePreviewController.swift
+++ b/submodules/SettingsUI/Sources/Themes/ThemePreviewController.swift
@@ -9,8 +9,9 @@ import TelegramPresentationData
import TelegramUIPreferences
import AccountContext
import ShareController
+import CounterContollerTitleView
-final class ThemePreviewController: ViewController {
+public final class ThemePreviewController: ViewController {
private let context: AccountContext
private let previewTheme: PresentationTheme
private let media: AnyMediaReference
@@ -24,7 +25,7 @@ final class ThemePreviewController: ViewController {
private var presentationData: PresentationData
private var presentationDataDisposable: Disposable?
- init(context: AccountContext, previewTheme: PresentationTheme, media: AnyMediaReference) {
+ public init(context: AccountContext, previewTheme: PresentationTheme, media: AnyMediaReference) {
self.context = context
self.previewTheme = previewTheme
self.media = media
@@ -54,7 +55,7 @@ final class ThemePreviewController: ViewController {
})
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@@ -62,7 +63,7 @@ final class ThemePreviewController: ViewController {
self.presentationDataDisposable?.dispose()
}
- public override func viewDidAppear(_ animated: Bool) {
+ override public func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if let presentationArguments = self.presentationArguments as? ViewControllerPresentationArguments, !self.didPlayPresentationAnimation {
@@ -73,7 +74,7 @@ final class ThemePreviewController: ViewController {
}
}
- override func loadDisplayNode() {
+ override public func loadDisplayNode() {
super.loadDisplayNode()
self.displayNode = ThemePreviewControllerNode(context: self.context, previewTheme: self.previewTheme, dismiss: { [weak self] in
@@ -114,7 +115,7 @@ final class ThemePreviewController: ViewController {
})
}
- 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)
diff --git a/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemePreviewControllerNode.swift
similarity index 79%
rename from submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift
rename to submodules/SettingsUI/Sources/Themes/ThemePreviewControllerNode.swift
index 80a6dd75bc..1911169468 100644
--- a/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift
+++ b/submodules/SettingsUI/Sources/Themes/ThemePreviewControllerNode.swift
@@ -186,7 +186,7 @@ final class ThemePreviewControllerNode: ASDisplayNode, UIScrollViewDelegate {
}
private func updateMessagesLayout(layout: ContainerViewLayout, bottomInset: CGFloat, transition: ContainedViewLayoutTransition) {
- var items: [ChatMessageItem] = []
+ var items: [ListViewItem] = []
let peerId = PeerId(namespace: Namespaces.Peer.CloudUser, id: 1)
let otherPeerId = self.context.account.peerId
var peers = SimpleDictionary()
@@ -197,21 +197,20 @@ final class ThemePreviewControllerNode: ASDisplayNode, UIScrollViewDelegate {
let replyMessageId = MessageId(peerId: peerId, namespace: 0, id: 3)
messages[replyMessageId] = Message(stableId: 3, stableVersion: 0, id: replyMessageId, globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [], peers: peers, associatedMessages: SimpleDictionary(), associatedMessageIds: [])
- let controllerInteraction = ChatControllerInteraction.default
- let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: self.previewTheme, wallpaper: self.previewTheme.chat.defaultWallpaper), fontSize: self.presentationData.fontSize, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, disableAnimations: false, largeEmoji: false)
+ //let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: self.previewTheme, wallpaper: self.previewTheme.chat.defaultWallpaper), fontSize: self.presentationData.fontSize, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, disableAnimations: false, largeEmoji: false)
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 4, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 4), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66003, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: "", attributes: [ReplyMessageAttribute(messageId: replyMessageId)], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: Message(stableId: 4, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 4), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66003, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: "", attributes: [ReplyMessageAttribute(messageId: replyMessageId)], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), theme: self.previewTheme, strings: self.presentationData.strings, wallpaper: self.previewTheme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 3, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 3), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66002, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: Message(stableId: 3, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 3), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66002, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), theme: self.previewTheme, strings: self.presentationData.strings, wallpaper: self.previewTheme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), theme: self.previewTheme, strings: self.presentationData.strings, wallpaper: self.previewTheme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
let voiceAttributes: [TelegramMediaFileAttribute] = [.Audio(isVoice: true, duration: 14, title: nil, performer: nil, waveform: MemoryBuffer())]
let voiceMedia = TelegramMediaFile(fileId: MediaId(namespace: 0, id: 0), partialReference: nil, resource: LocalFileMediaResource(fileId: 0), previewRepresentations: [], immediateThumbnailData: nil, mimeType: "audio/ogg", size: nil, attributes: voiceAttributes)
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false, forcedResourceStatus: FileMediaResourceStatus(mediaStatus: .playbackStatus(.playing), fetchStatus: .Local)), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [voiceMedia], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: "", attributes: [], media: [voiceMedia], peers: peers, associatedMessages: messages, associatedMessageIds: []), theme: self.previewTheme, strings: self.presentationData.strings, wallpaper: self.previewTheme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: FileMediaResourceStatus(mediaStatus: .playbackStatus(.playing), fetchStatus: .Local)))
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 0, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 0), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: "", attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: Message(stableId: 0, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 0), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: "", attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), theme: self.previewTheme, strings: self.presentationData.strings, wallpaper: self.previewTheme.chat.defaultWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
let params = ListViewItemLayoutParams(width: layout.size.width, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right)
if let messageNodes = self.messageNodes {
diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsAccentColorItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsAccentColorItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeSettingsAccentColorItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeSettingsAccentColorItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsAppIconItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsAppIconItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeSettingsAppIconItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeSettingsAppIconItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsBrightnessItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsBrightnessItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeSettingsBrightnessItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeSettingsBrightnessItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsChatPreviewItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsChatPreviewItem.swift
similarity index 81%
rename from submodules/TelegramUI/TelegramUI/ThemeSettingsChatPreviewItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeSettingsChatPreviewItem.swift
index 5258348745..3cf4de2a2d 100644
--- a/submodules/TelegramUI/TelegramUI/ThemeSettingsChatPreviewItem.swift
+++ b/submodules/SettingsUI/Sources/Themes/ThemeSettingsChatPreviewItem.swift
@@ -79,8 +79,6 @@ class ThemeSettingsChatPreviewItemNode: ListViewItemNode {
private var item: ThemeSettingsChatPreviewItem?
- private let controllerInteraction: ChatControllerInteraction
-
init() {
self.backgroundNode = ASImageNode()
self.backgroundNode.isLayerBacked = true
@@ -97,8 +95,6 @@ class ThemeSettingsChatPreviewItemNode: ListViewItemNode {
self.containerNode = ASDisplayNode()
self.containerNode.subnodeTransform = CATransform3DMakeRotation(CGFloat.pi, 0.0, 0.0, 1.0)
- self.controllerInteraction = ChatControllerInteraction.default
-
super.init(layerBacked: false, dynamicBounce: false)
self.addSubnode(self.containerNode)
@@ -107,7 +103,6 @@ class ThemeSettingsChatPreviewItemNode: ListViewItemNode {
func asyncLayout() -> (_ item: ThemeSettingsChatPreviewItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) {
let currentItem = self.item
- let controllerInteraction = self.controllerInteraction
let currentNode1 = self.messageNode1
let currentNode2 = self.messageNode2
@@ -129,10 +124,15 @@ class ThemeSettingsChatPreviewItemNode: ListViewItemNode {
let replyMessageId = MessageId(peerId: peerId, namespace: 0, id: 3)
messages[replyMessageId] = Message(stableId: 3, stableVersion: 0, id: replyMessageId, globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: item.strings.Appearance_PreviewReplyText, attributes: [], media: [], peers: peers, associatedMessages: SimpleDictionary(), associatedMessageIds: [])
- let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: item.componentTheme, wallpaper: item.wallpaper), fontSize: item.fontSize, strings: item.strings, dateTimeFormat: item.dateTimeFormat, nameDisplayOrder: item.nameDisplayOrder, disableAnimations: false, largeEmoji: false)
+ //let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: item.componentTheme, wallpaper: item.wallpaper), fontSize: item.fontSize, strings: item.strings, dateTimeFormat: item.dateTimeFormat, nameDisplayOrder: item.nameDisplayOrder, disableAnimations: false, largeEmoji: false)
- let item2: ChatMessageItem = ChatMessageItem(presentationData: chatPresentationData, context: item.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: nil, text: item.strings.Appearance_PreviewIncomingText, attributes: [ReplyMessageAttribute(messageId: replyMessageId)], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: true)
- let item1: ChatMessageItem = ChatMessageItem(presentationData: chatPresentationData, context: item.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: TelegramUser(id: item.context.account.peerId, accessHash: nil, firstName: "", lastName: "", username: nil, phone: nil, photo: [], botInfo: nil, restrictionInfo: nil, flags: []), text: item.strings.Appearance_PreviewOutgoingText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: true)
+ //let item2: ChatMessageItem = ChatMessageItem(presentationData: chatPresentationData, context: item.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: nil, text: item.strings.Appearance_PreviewIncomingText, attributes: [ReplyMessageAttribute(messageId: replyMessageId)], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: true)
+ let message2 = Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: nil, text: item.strings.Appearance_PreviewIncomingText, attributes: [ReplyMessageAttribute(messageId: replyMessageId)], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: [])
+ let message1 = Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: TelegramUser(id: item.context.account.peerId, accessHash: nil, firstName: "", lastName: "", username: nil, phone: nil, photo: [], botInfo: nil, restrictionInfo: nil, flags: []), text: item.strings.Appearance_PreviewOutgoingText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: [])
+
+ let item2 = item.context.sharedContext.makeChatMessagePreviewItem(context: item.context, message: message2, theme: item.componentTheme, strings: item.strings, wallpaper: item.wallpaper, fontSize: item.fontSize, dateTimeFormat: item.dateTimeFormat, nameOrder: item.nameDisplayOrder, forcedResourceStatus: nil)
+
+ let item1 = item.context.sharedContext.makeChatMessagePreviewItem(context: item.context, message: message1, theme: item.componentTheme, strings: item.strings, wallpaper: item.wallpaper, fontSize: item.fontSize, dateTimeFormat: item.dateTimeFormat, nameOrder: item.nameDisplayOrder, forcedResourceStatus: nil)
var node1: ListViewItemNode?
if let current = currentNode1 {
diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsFontSizeItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsFontSizeItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeSettingsFontSizeItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeSettingsFontSizeItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsThemeItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift
rename to submodules/SettingsUI/Sources/Themes/ThemeSettingsThemeItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperColorPanelNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperColorPanelNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/WallpaperColorPanelNode.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperColorPanelNode.swift
index 68e8369cfd..23e6b75303 100644
--- a/submodules/TelegramUI/TelegramUI/WallpaperColorPanelNode.swift
+++ b/submodules/SettingsUI/Sources/Themes/WallpaperColorPanelNode.swift
@@ -4,6 +4,7 @@ import AsyncDisplayKit
import SwiftSignalKit
import Display
import TelegramPresentationData
+import HexColor
private var currentTextInputBackgroundImage: (UIColor, UIColor, UIColor, CGFloat, UIImage)?
private func textInputBackgroundImage(backgroundColor: UIColor, fieldColor: UIColor, strokeColor: UIColor, diameter: CGFloat) -> UIImage? {
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperColorPickerNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperColorPickerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/WallpaperColorPickerNode.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperColorPickerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperCropNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperCropNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/WallpaperCropNode.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperCropNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryController.swift
similarity index 93%
rename from submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperGalleryController.swift
index 7611d47d9d..0e37ac7eda 100644
--- a/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift
+++ b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryController.swift
@@ -13,13 +13,15 @@ import MediaResources
import AccountContext
import ShareController
import GalleryUI
+import HexColor
+import CounterContollerTitleView
-enum WallpaperListType {
+public enum WallpaperListType {
case wallpapers(WallpaperPresentationOptions?)
case colors
}
-enum WallpaperListSource {
+public enum WallpaperListSource {
case list(wallpapers: [TelegramWallpaper], central: TelegramWallpaper, type: WallpaperListType)
case wallpaper(TelegramWallpaper, WallpaperPresentationOptions?, UIColor?, Int32?, Message?)
case slug(String, TelegramMediaFile?, WallpaperPresentationOptions?, UIColor?, Int32?, Message?)
@@ -44,7 +46,7 @@ private func areMessagesEqual(_ lhsMessage: Message?, _ rhsMessage: Message?) ->
return true
}
-enum WallpaperGalleryEntry: Equatable {
+public enum WallpaperGalleryEntry: Equatable {
case wallpaper(TelegramWallpaper, Message?)
case asset(PHAsset)
case contextResult(ChatContextResult)
@@ -117,17 +119,17 @@ private func updatedFileWallpaper(id: Int64? = nil, accessHash: Int64? = nil, sl
return .file(id: id ?? 0, accessHash: accessHash ?? 0, isCreator: false, isDefault: false, isPattern: isPattern, isDark: false, slug: slug, file: file, settings: WallpaperSettings(blur: false, motion: false, color: colorValue, intensity: intensityValue))
}
-class WallpaperGalleryController: ViewController {
+public class WallpaperGalleryController: ViewController {
private var galleryNode: GalleryControllerNode {
return self.displayNode as! GalleryControllerNode
}
private let context: AccountContext
private let source: WallpaperListSource
- var apply: ((WallpaperGalleryEntry, WallpaperPresentationOptions, CGRect?) -> Void)?
+ public var apply: ((WallpaperGalleryEntry, WallpaperPresentationOptions, CGRect?) -> Void)?
private let _ready = Promise()
- override var ready: Promise {
+ override public var ready: Promise {
return self._ready
}
private var didSetReady = false
@@ -160,7 +162,7 @@ class WallpaperGalleryController: ViewController {
private var colorPanelEnabled = false
private var patternPanelEnabled = false
- init(context: AccountContext, source: WallpaperListSource) {
+ public init(context: AccountContext, source: WallpaperListSource) {
self.context = context
self.source = source
self.presentationData = context.sharedContext.currentPresentationData.with { $0 }
@@ -258,7 +260,7 @@ class WallpaperGalleryController: ViewController {
}))
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@@ -296,7 +298,7 @@ class WallpaperGalleryController: ViewController {
return GalleryPagerTransaction(deleteItems: [], insertItems: [], updateItems: updateItems, focusOnItem: self.galleryNode.pager.centralItemNode()?.index)
}
- 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)
@@ -482,7 +484,7 @@ class WallpaperGalleryController: ViewController {
}
}
- override func viewDidAppear(_ animated: Bool) {
+ override public func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.galleryNode.modalAnimateIn()
@@ -569,7 +571,7 @@ class WallpaperGalleryController: ViewController {
}
private func updateMessagesLayout(layout: ContainerViewLayout, bottomInset: CGFloat, transition: ContainedViewLayoutTransition) {
- var items: [ChatMessageItem] = []
+ var items: [ListViewItem] = []
let peerId = PeerId(namespace: Namespaces.Peer.CloudUser, id: 1)
let otherPeerId = self.context.account.peerId
var peers = SimpleDictionary()
@@ -582,8 +584,7 @@ class WallpaperGalleryController: ViewController {
currentWallpaper = wallpaper
}
- let controllerInteraction = ChatControllerInteraction.default
- let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: self.presentationData.theme, wallpaper: currentWallpaper), fontSize: self.presentationData.fontSize, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, disableAnimations: false, largeEmoji: false)
+ //let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: self.presentationData.theme, wallpaper: currentWallpaper), fontSize: self.presentationData.fontSize, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, disableAnimations: false, largeEmoji: false)
var topMessageText: String
var bottomMessageText: String
@@ -613,9 +614,12 @@ class WallpaperGalleryController: ViewController {
bottomMessageText = presentationData.strings.WallpaperPreview_CustomColorBottomText
}
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: bottomMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ let message1 = Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: bottomMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: [])
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: message1, theme: self.presentationData.theme, strings: self.presentationData.strings, wallpaper: currentWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
- items.append(ChatMessageItem(presentationData: chatPresentationData, context: self.context, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: topMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: false))
+ let message2 = Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: topMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: [])
+
+ items.append(self.context.sharedContext.makeChatMessagePreviewItem(context: self.context, message: message2, theme: self.presentationData.theme, strings: self.presentationData.strings, wallpaper: currentWallpaper, fontSize: self.presentationData.fontSize, dateTimeFormat: self.presentationData.dateTimeFormat, nameOrder: self.presentationData.nameDisplayOrder, forcedResourceStatus: nil))
let params = ListViewItemLayoutParams(width: layout.size.width, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right)
if let messageNodes = self.messageNodes {
@@ -664,7 +668,7 @@ class WallpaperGalleryController: ViewController {
}
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
+ override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
let hadLayout = self.validLayout != nil
super.containerLayoutUpdated(layout, transition: transition)
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryDecorationNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryDecorationNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/WallpaperGalleryDecorationNode.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperGalleryDecorationNode.swift
index 3155579a95..ec1a347b00 100644
--- a/submodules/TelegramUI/TelegramUI/WallpaperGalleryDecorationNode.swift
+++ b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryDecorationNode.swift
@@ -4,6 +4,7 @@ import Display
import AsyncDisplayKit
import SwiftSignalKit
import Postbox
+import CheckNode
enum WallpaperOptionButtonValue {
case check(Bool)
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift
index a250b52045..4ee75d07a7 100644
--- a/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift
+++ b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift
@@ -15,6 +15,7 @@ import RadialStatusNode
import PhotoResources
import GalleryUI
import LocalMediaResources
+import WallpaperResources
struct WallpaperGalleryItemArguments {
let colorPreview: Bool
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryToolbarNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryToolbarNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/WallpaperGalleryToolbarNode.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperGalleryToolbarNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperPatternPanelNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/WallpaperPatternPanelNode.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/WallpaperSearchRecentQueries.swift b/submodules/SettingsUI/Sources/Themes/WallpaperSearchRecentQueries.swift
similarity index 96%
rename from submodules/TelegramUI/TelegramUI/WallpaperSearchRecentQueries.swift
rename to submodules/SettingsUI/Sources/Themes/WallpaperSearchRecentQueries.swift
index 7cceae91bc..8dd9078b9e 100644
--- a/submodules/TelegramUI/TelegramUI/WallpaperSearchRecentQueries.swift
+++ b/submodules/SettingsUI/Sources/Themes/WallpaperSearchRecentQueries.swift
@@ -23,8 +23,8 @@ private struct WallpaperSearchRecentQueryItemId {
}
}
-final class RecentWallpaperSearchQueryItem: OrderedItemListEntryContents {
- init() {
+public final class RecentWallpaperSearchQueryItem: OrderedItemListEntryContents {
+ public init() {
}
public init(decoder: PostboxDecoder) {
diff --git a/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift b/submodules/SettingsUI/Sources/UsernameSetupController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/UsernameSetupController.swift
rename to submodules/SettingsUI/Sources/UsernameSetupController.swift
diff --git a/submodules/TelegramUI/TelegramUI/WatchSettingsController.swift b/submodules/SettingsUI/Sources/Watch/WatchSettingsController.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/WatchSettingsController.swift
rename to submodules/SettingsUI/Sources/Watch/WatchSettingsController.swift
diff --git a/submodules/TelegramUI/TelegramUI/AppDelegate.swift b/submodules/TelegramUI/TelegramUI/AppDelegate.swift
index 4f4f85a995..80e1b842af 100644
--- a/submodules/TelegramUI/TelegramUI/AppDelegate.swift
+++ b/submodules/TelegramUI/TelegramUI/AppDelegate.swift
@@ -22,6 +22,7 @@ import LegacyUI
import PassportUI
import WatchBridge
import LegacyDataImport
+import SettingsUI
private let handleVoipNotifications = false
diff --git a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift
index d4cc28d80b..89aba444c0 100644
--- a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift
+++ b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift
@@ -18,6 +18,7 @@ import TelegramPermissionsUI
import PasscodeUI
import ImageBlur
import WatchBridge
+import SettingsUI
func isAccessLocked(data: PostboxAccessChallengeData, at timestamp: Int32) -> Bool {
if data.isLockable, let autolockDeadline = data.autolockDeadline, autolockDeadline <= timestamp {
diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift
index edb4817fb7..d41d1388b4 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceAwaitingAccountResetControllerNode.swift
@@ -4,6 +4,7 @@ import AsyncDisplayKit
import Display
import SwiftSignalKit
import TelegramPresentationData
+import AuthorizationUI
private func timerValueString(days: Int32, hours: Int32, minutes: Int32, color: UIColor, strings: PresentationStrings) -> NSAttributedString {
var daysString = ""
diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift
index 1c400a069e..4bcfcf0b83 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceCodeEntryControllerNode.swift
@@ -6,50 +6,7 @@ import TelegramCore
import SwiftSignalKit
import TelegramPresentationData
import TextFormat
-
-func authorizationCurrentOptionText(_ type: SentAuthorizationCodeType, strings: PresentationStrings, primaryColor: UIColor, accentColor: UIColor) -> NSAttributedString {
- switch type {
- case .sms:
- return NSAttributedString(string: strings.Login_CodeSentSms, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center)
- case .otherSession:
- let body = MarkdownAttributeSet(font: Font.regular(16.0), textColor: primaryColor)
- let bold = MarkdownAttributeSet(font: Font.semibold(16.0), textColor: primaryColor)
- return parseMarkdownIntoAttributedString(strings.Login_CodeSentInternal, attributes: MarkdownAttributes(body: body, bold: bold, link: body, linkAttribute: { _ in nil }), textAlignment: .center)
- case .call, .flashCall:
- return NSAttributedString(string: strings.ChangePhoneNumberCode_Called, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center)
- }
-}
-
-func authorizationNextOptionText(currentType: SentAuthorizationCodeType, nextType: AuthorizationCodeNextType?, timeout: Int32?, strings: PresentationStrings, primaryColor: UIColor, accentColor: UIColor) -> (NSAttributedString, Bool) {
- if let nextType = nextType, let timeout = timeout {
- let minutes = timeout / 60
- let seconds = timeout % 60
- switch nextType {
- case .sms:
- if timeout <= 0 {
- return (NSAttributedString(string: strings.Login_CodeSentSms, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center), false)
- } else {
- let timeString = NSString(format: "%d:%.02d", Int(minutes), Int(seconds))
- return (NSAttributedString(string: strings.Login_WillSendSms(timeString as String).0, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center), false)
- }
- case .call, .flashCall:
- if timeout <= 0 {
- return (NSAttributedString(string: strings.ChangePhoneNumberCode_Called, font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center), false)
- } else {
- return (NSAttributedString(string: String(format: strings.ChangePhoneNumberCode_CallTimer(String(format: "%d:%.2d", minutes, seconds)).0, minutes, seconds), font: Font.regular(16.0), textColor: primaryColor, paragraphAlignment: .center), false)
- }
- }
- } else {
- switch currentType {
- case .otherSession:
- return (NSAttributedString(string: strings.Login_SendCodeViaSms, font: Font.regular(16.0), textColor: accentColor, paragraphAlignment: .center), true)
- default:
- return (NSAttributedString(string: strings.Login_HaveNotReceivedCodeInternal, font: Font.regular(16.0), textColor: accentColor, paragraphAlignment: .center), true)
- }
- }
-}
-
-
+import AuthorizationUI
final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextFieldDelegate {
private let strings: PresentationStrings
diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift
index 3ec6dc4228..fceecad702 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift
+++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift
@@ -16,6 +16,7 @@ import TelegramPresentationData
import TextFormat
import AccountContext
import CountrySelectionUI
+import SettingsUI
private enum InnerState: Equatable {
case state(UnauthorizedAccountStateContents)
diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift
index a5ac857177..db8d6c3575 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordEntryControllerNode.swift
@@ -3,6 +3,7 @@ import UIKit
import AsyncDisplayKit
import Display
import TelegramPresentationData
+import AuthorizationUI
final class AuthorizationSequencePasswordEntryControllerNode: ASDisplayNode, UITextFieldDelegate {
private let strings: PresentationStrings
diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift
index 672a1f7f02..6c1d2baef2 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePasswordRecoveryControllerNode.swift
@@ -3,6 +3,7 @@ import UIKit
import AsyncDisplayKit
import Display
import TelegramPresentationData
+import AuthorizationUI
final class AuthorizationSequencePasswordRecoveryControllerNode: ASDisplayNode, UITextFieldDelegate {
private let strings: PresentationStrings
diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryController.swift
index 2b4db3f9c8..a7b68c24c6 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryController.swift
+++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryController.swift
@@ -9,6 +9,7 @@ import TelegramPresentationData
import ProgressNavigationButtonNode
import AccountContext
import CountrySelectionUI
+import SettingsUI
final class AuthorizationSequencePhoneEntryController: ViewController {
private var controllerNode: AuthorizationSequencePhoneEntryControllerNode {
diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift
index b87aed2345..6ecb2c7cfd 100644
--- a/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequencePhoneEntryControllerNode.swift
@@ -6,6 +6,7 @@ import TelegramCore
import TelegramPresentationData
import PhoneInputNode
import CountrySelectionUI
+import AuthorizationUI
private func emojiFlagForISOCountryCode(_ countryCode: NSString) -> String {
if countryCode.length != 2 {
diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift
index 9ae957ac83..f665b50f30 100644
--- a/submodules/TelegramUI/TelegramUI/ChatController.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatController.swift
@@ -42,6 +42,7 @@ import Emoji
import PeerAvatarGalleryUI
import PeerInfoUI
import RaiseToListen
+import UrlHandling
public enum ChatControllerPeekActions {
case standard
@@ -5995,7 +5996,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
}
private func forwardMessages(messageIds: [MessageId], resetCurrent: Bool = false) {
- let controller = PeerSelectionController(context: self.context, filter: [.onlyWriteable, .excludeDisabled, .includeSavedMessages])
+ let controller = self.context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: self.context, filter: [.onlyWriteable, .excludeDisabled, .includeSavedMessages]))
controller.peerSelected = { [weak self, weak controller] peerId in
guard let strongSelf = self, let strongController = controller else {
return
@@ -6150,7 +6151,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
break
case let .chat(textInputState, _):
if let textInputState = textInputState {
- let controller = PeerSelectionController(context: self.context)
+ let controller = self.context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: self.context))
controller.peerSelected = { [weak self, weak controller] peerId in
if let strongSelf = self, let strongController = controller {
if case let .peer(currentPeerId) = strongSelf.chatLocation, peerId == currentPeerId {
diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputNode.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputNode.swift
index b30fe77c18..6f08bba0a8 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMediaInputNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputNode.swift
@@ -10,6 +10,7 @@ import MergeLists
import AccountContext
import StickerPackPreviewUI
import PeerInfoUI
+import SettingsUI
private struct PeerSpecificPackData {
let peer: Peer
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift
index 56be379212..314bc7f4bc 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift
@@ -17,6 +17,8 @@ import TextSelectionNode
import PlatformRestrictionMatching
import Emoji
import ReactionSelectionNode
+import PersistentStringHash
+import GridMessageSelectionNode
private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [(Message, AnyClass)] {
var result: [(Message, AnyClass)] = []
@@ -143,7 +145,7 @@ private enum ContentNodeOperation {
case insert(index: Int, node: ChatMessageBubbleContentNode)
}
-class ChatMessageBubbleItemNode: ChatMessageItemView {
+class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode {
private let contextSourceNode: ContextContentContainingNode
private let backgroundWallpaperNode: ChatMessageBubbleBackdrop
private let backgroundNode: ChatMessageBackground
@@ -157,7 +159,10 @@ class ChatMessageBubbleItemNode: ChatMessageItemView {
private var nameNode: TextNode?
private var adminBadgeNode: TextNode?
private var credibilityIconNode: ASImageNode?
- var forwardInfoNode: ChatMessageForwardInfoNode?
+ private var forwardInfoNode: ChatMessageForwardInfoNode?
+ var forwardInfoReferenceNode: ASDisplayNode? {
+ return self.forwardInfoNode
+ }
private var replyInfoNode: ChatMessageReplyInfoNode?
private var contentNodes: [ChatMessageBubbleContentNode] = []
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift
index 1c2aa18e95..8dca768f0c 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift
@@ -18,6 +18,7 @@ import TelegramStringFormatting
import GalleryUI
import AnimationUI
import LocalMediaResources
+import WallpaperResources
private struct FetchControls {
let fetch: (Bool) -> Void
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageItem.swift b/submodules/TelegramUI/TelegramUI/ChatMessageItem.swift
index 0af69211ca..acbd7c32b2 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageItem.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageItem.swift
@@ -9,6 +9,7 @@ import TelegramPresentationData
import TelegramUIPreferences
import AccountContext
import Emoji
+import PersistentStringHash
public enum ChatMessageItemContent: Sequence {
case message(message: Message, read: Bool, selection: ChatHistoryMessageSelection, attributes: ChatMessageEntryAttributes)
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift
index 2443bbb718..5f1ee57306 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift
@@ -7,6 +7,7 @@ import Postbox
import TelegramCore
import TelegramUIPreferences
import AccountContext
+import GridMessageSelectionNode
class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode {
override var supportsMosaic: Bool {
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift
index a47131df82..c9f047d38c 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift
@@ -10,6 +10,7 @@ import TextFormat
import AccountContext
import WebsiteType
import InstantPageUI
+import UrlHandling
enum InstantPageType {
case generic
diff --git a/submodules/TelegramUI/TelegramUI/CheckDiskSpace.swift b/submodules/TelegramUI/TelegramUI/CheckDiskSpace.swift
index 616b14a728..0e1351bb98 100644
--- a/submodules/TelegramUI/TelegramUI/CheckDiskSpace.swift
+++ b/submodules/TelegramUI/TelegramUI/CheckDiskSpace.swift
@@ -3,6 +3,7 @@ import Display
import TelegramCore
import AccountContext
import AlertUI
+import SettingsUI
func totalDiskSpace() -> Int64 {
do {
diff --git a/submodules/TelegramUI/TelegramUI/ContactMultiselectionController.swift b/submodules/TelegramUI/TelegramUI/ContactMultiselectionController.swift
index f7206140dd..1090b75511 100644
--- a/submodules/TelegramUI/TelegramUI/ContactMultiselectionController.swift
+++ b/submodules/TelegramUI/TelegramUI/ContactMultiselectionController.swift
@@ -10,6 +10,7 @@ import ProgressNavigationButtonNode
import AccountContext
import AlertUI
import ContactListUI
+import CounterContollerTitleView
class ContactMultiselectionControllerImpl: ViewController, ContactMultiselectionController {
private let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
index 900f768a58..11cc745962 100644
--- a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
+++ b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
@@ -6,6 +6,8 @@ import InstantPageUI
import AccountContext
import LocalMediaResources
import WebSearchUI
+import InstantPageCache
+import SettingsUI
private var telegramUIDeclaredEncodables: Void = {
declareEncodable(InAppNotificationSettings.self, f: { InAppNotificationSettings(decoder: $0) })
diff --git a/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift b/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift
index 279a572d03..298f544eff 100644
--- a/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift
+++ b/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift
@@ -17,6 +17,7 @@ import MediaResources
import PhotoResources
import ImageBlur
import AnimationUI
+import WallpaperResources
public func fetchCachedResourceRepresentation(account: Account, resource: MediaResource, representation: CachedMediaResourceRepresentation) -> Signal {
if let representation = representation as? CachedStickerAJpegRepresentation {
diff --git a/submodules/TelegramUI/TelegramUI/FileMediaResourceStatus.swift b/submodules/TelegramUI/TelegramUI/FileMediaResourceStatus.swift
index 1bf2cf5aab..3267a245de 100644
--- a/submodules/TelegramUI/TelegramUI/FileMediaResourceStatus.swift
+++ b/submodules/TelegramUI/TelegramUI/FileMediaResourceStatus.swift
@@ -6,21 +6,6 @@ import SwiftSignalKit
import UniversalMediaPlayer
import AccountContext
-enum FileMediaResourcePlaybackStatus: Equatable {
- case playing
- case paused
-}
-
-struct FileMediaResourceStatus: Equatable {
- let mediaStatus: FileMediaResourceMediaStatus
- let fetchStatus: MediaResourceStatus
-}
-
-enum FileMediaResourceMediaStatus: Equatable {
- case fetchStatus(MediaResourceStatus)
- case playbackStatus(FileMediaResourcePlaybackStatus)
-}
-
private func internalMessageFileMediaPlaybackStatus(context: AccountContext, file: TelegramMediaFile, message: Message, isRecentActions: Bool) -> Signal {
guard let playerType = peerMessageMediaPlayerType(message) else {
return .single(nil)
diff --git a/submodules/TelegramUI/TelegramUI/GridMessageItem.swift b/submodules/TelegramUI/TelegramUI/GridMessageItem.swift
index b96d53a789..0f8326e261 100644
--- a/submodules/TelegramUI/TelegramUI/GridMessageItem.swift
+++ b/submodules/TelegramUI/TelegramUI/GridMessageItem.swift
@@ -10,6 +10,7 @@ import TelegramStringFormatting
import AccountContext
import RadialStatusNode
import PhotoResources
+import GridMessageSelectionNode
private func mediaForMessage(_ message: Message) -> Media? {
for media in message.media {
diff --git a/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift b/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift
index 1e0d5259ef..8c53706927 100644
--- a/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift
@@ -10,6 +10,7 @@ import ItemListUI
import TextFormat
import PhotoResources
import WebsiteType
+import UrlHandling
private let titleFont = Font.medium(16.0)
private let descriptionFont = Font.regular(14.0)
diff --git a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
index 48d8e757b3..65ccf135f4 100644
--- a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
+++ b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
@@ -8,6 +8,7 @@ import GalleryUI
import InstantPageUI
import ChatListUI
import PeerAvatarGalleryUI
+import SettingsUI
public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParams) {
var found = false
diff --git a/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift b/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift
index dfa8455669..c0461ff305 100644
--- a/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift
+++ b/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift
@@ -15,6 +15,7 @@ import LocationUI
import StickerPackPreviewUI
import PeerAvatarGalleryUI
import PeerInfoUI
+import SettingsUI
private enum ChatMessageGalleryControllerData {
case url(String)
diff --git a/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift b/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift
index c8e6f00fd6..2a79a99b3c 100644
--- a/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift
+++ b/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift
@@ -13,6 +13,7 @@ import InstantPageUI
import StickerPackPreviewUI
import JoinLinkPreviewUI
import LanguageLinkPreviewUI
+import SettingsUI
private func defaultNavigationForPeerId(_ peerId: PeerId?, navigation: ChatControllerInteractionNavigateToPeer) -> ChatControllerInteractionNavigateToPeer {
if case .default = navigation {
@@ -46,7 +47,7 @@ func openResolvedUrlImpl(_ resolvedUrl: ResolvedUrl, context: AccountContext, ur
case let .botStart(peerId, payload):
openPeer(peerId, .withBotStartPayload(ChatControllerInitialBotStart(payload: payload, behavior: .interactive)))
case let .groupBotStart(botPeerId, payload):
- let controller = PeerSelectionController(context: context, filter: [.onlyWriteable, .onlyGroups, .onlyManageable], title: presentationData.strings.UserInfo_InviteBotToGroup)
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyWriteable, .onlyGroups, .onlyManageable], title: presentationData.strings.UserInfo_InviteBotToGroup))
controller.peerSelected = { [weak controller] peerId in
if payload.isEmpty {
if peerId.namespace == Namespaces.Peer.CloudGroup {
@@ -194,7 +195,7 @@ func openResolvedUrlImpl(_ resolvedUrl: ResolvedUrl, context: AccountContext, ur
}
})
} else {
- let controller = PeerSelectionController(context: context, filter: [.onlyWriteable, .excludeDisabled])
+ let controller = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.onlyWriteable, .excludeDisabled]))
controller.peerSelected = { [weak controller] peerId in
if let strongController = controller {
strongController.dismiss()
diff --git a/submodules/TelegramUI/TelegramUI/OpenUrl.swift b/submodules/TelegramUI/TelegramUI/OpenUrl.swift
index dff3178505..111903e658 100644
--- a/submodules/TelegramUI/TelegramUI/OpenUrl.swift
+++ b/submodules/TelegramUI/TelegramUI/OpenUrl.swift
@@ -13,6 +13,7 @@ import TelegramPresentationData
import AccountContext
import UrlEscaping
import PassportUI
+import UrlHandling
public struct ParsedSecureIdUrl {
public let peerId: PeerId
diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift
index f44edfbf6a..2b0e3a7908 100644
--- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift
+++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift
@@ -656,7 +656,7 @@ public class PeerMediaCollectionController: TelegramBaseController {
}
let forwardMessageIds = Array(messageIds).sorted()
- let controller = PeerSelectionController(context: strongSelf.context, filter: [.onlyWriteable, .excludeDisabled])
+ let controller = strongSelf.context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: strongSelf.context, filter: [.onlyWriteable, .excludeDisabled]))
controller.peerSelected = { [weak controller] peerId in
if let strongSelf = self, let _ = controller {
let _ = (strongSelf.context.account.postbox.transaction({ transaction -> Void in
diff --git a/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift b/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
index 75b41c4ef3..fc34c4ba87 100644
--- a/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
+++ b/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
@@ -10,7 +10,7 @@ import AccountContext
import SearchUI
import ChatListUI
-public final class PeerSelectionController: ViewController {
+public final class PeerSelectionControllerImpl: ViewController, PeerSelectionController {
private let context: AccountContext
private var presentationData: PresentationData
@@ -18,10 +18,10 @@ public final class PeerSelectionController: ViewController {
private var customTitle: String?
- var peerSelected: ((PeerId) -> Void)?
+ public var peerSelected: ((PeerId) -> Void)?
private let filter: ChatListNodePeersFilter
- var inProgress: Bool = false {
+ public var inProgress: Bool = false {
didSet {
if self.inProgress != oldValue {
if self.isNodeLoaded {
@@ -52,16 +52,16 @@ public final class PeerSelectionController: ViewController {
private var searchContentNode: NavigationBarSearchContentNode?
- public init(context: AccountContext, filter: ChatListNodePeersFilter = [.onlyWriteable], hasContactSelector: Bool = true, title: String? = nil) {
- self.context = context
- self.filter = filter
- self.hasContactSelector = hasContactSelector
- self.presentationData = context.sharedContext.currentPresentationData.with { $0 }
+ public init(_ params: PeerSelectionControllerParams) {
+ self.context = params.context
+ self.filter = params.filter
+ self.hasContactSelector = params.hasContactSelector
+ self.presentationData = self.context.sharedContext.currentPresentationData.with { $0 }
super.init(navigationBarPresentationData: NavigationBarPresentationData(presentationData: self.presentationData))
self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBarStyle.style
- self.customTitle = title
+ self.customTitle = params.title
self.title = self.customTitle ?? self.presentationData.strings.Conversation_ForwardTitle
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Cancel, style: .plain, target: self, action: #selector(self.cancelPressed))
@@ -75,7 +75,7 @@ public final class PeerSelectionController: ViewController {
}
}
- self.presentationDataDisposable = (context.sharedContext.presentationData
+ self.presentationDataDisposable = (self.context.sharedContext.presentationData
|> deliverOnMainQueue).start(next: { [weak self] presentationData in
if let strongSelf = self {
let previousTheme = strongSelf.presentationData.theme
diff --git a/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift b/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift
index 648708c081..32aca3c406 100644
--- a/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift
+++ b/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift
@@ -10,6 +10,7 @@ import ShareController
import LegacyUI
import PeerInfoUI
import ShareItems
+import SettingsUI
private let inForeground = ValuePromise(false, ignoreRepeated: true)
diff --git a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
index 36f85e9a51..0f7f11eb34 100644
--- a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
+++ b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
@@ -12,6 +12,8 @@ import LegacyUI
import ChatListUI
import PeersNearbyUI
import PeerInfoUI
+import SettingsUI
+import UrlHandling
private enum CallStatusText: Equatable {
case none
@@ -1000,4 +1002,14 @@ public final class SharedAccountContextImpl: SharedAccountContext {
public func makeChatListController(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, hideNetworkActivityStatus: Bool, enableDebugActions: Bool) -> ChatListController {
return ChatListControllerImpl(context: context, groupId: groupId, controlsHistoryPreload: controlsHistoryPreload, hideNetworkActivityStatus: hideNetworkActivityStatus, enableDebugActions: enableDebugActions)
}
+
+ public func makePeerSelectionController(_ params: PeerSelectionControllerParams) -> PeerSelectionController {
+ return PeerSelectionControllerImpl(params)
+ }
+
+ public func makeChatMessagePreviewItem(context: AccountContext, message: Message, theme: PresentationTheme, strings: PresentationStrings, wallpaper: TelegramWallpaper, fontSize: PresentationFontSize, dateTimeFormat: PresentationDateTimeFormat, nameOrder: PresentationPersonNameOrder, forcedResourceStatus: FileMediaResourceStatus?) -> ListViewItem {
+ return ChatMessageItem(presentationData: ChatPresentationData(theme: ChatPresentationThemeData(theme: theme, wallpaper: wallpaper), fontSize: fontSize, strings: strings, dateTimeFormat: dateTimeFormat, nameDisplayOrder: nameOrder, disableAnimations: false, largeEmoji: false, animatedEmojiScale: 1.0), context: context, chatLocation: .peer(message.id.peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false, isScheduledMessages: false, contactsPeerIds: Set(), animatedEmojiStickers: [:], forcedResourceStatus: forcedResourceStatus), controllerInteraction: defaultChatControllerInteraction, content: .message(message: message, read: true, selection: .none, attributes: ChatMessageEntryAttributes()), disableDate: true, additionalContent: nil)
+ }
}
+
+private let defaultChatControllerInteraction = ChatControllerInteraction.default
diff --git a/submodules/TelegramUI/TelegramUI/TelegramRootController.swift b/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
index 8570b08578..264e1570c3 100644
--- a/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
+++ b/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
@@ -9,6 +9,7 @@ import AccountContext
import ContactListUI
import CallListUI
import ChatListUI
+import SettingsUI
public final class TelegramRootController: NavigationController {
private let context: AccountContext
@@ -111,7 +112,7 @@ public final class TelegramRootController: NavigationController {
sharedContext.switchingData = (nil, nil, nil)
}
- let accountSettingsController = restoreSettignsController ?? settingsController(context: self.context, accountManager: context.sharedContext.accountManager)
+ let accountSettingsController = restoreSettignsController ?? settingsController(context: self.context, accountManager: context.sharedContext.accountManager, enableDebugActions: !GlobalExperimentalSettings.isAppStoreBuild)
controllers.append(accountSettingsController)
tabBarController.setControllers(controllers, selectedIndex: restoreSettignsController != nil ? (controllers.count - 1) : (controllers.count - 2))
diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
index 2a6ac4b0a8..79fe602828 100644
--- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
@@ -7,18 +7,10 @@
objects = {
/* Begin PBXBuildFile section */
- 0900678D21ED5EA800530762 /* WallpaperColorPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0900678C21ED5EA800530762 /* WallpaperColorPanelNode.swift */; };
- 0900678F21ED8E0E00530762 /* HexColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0900678E21ED8E0E00530762 /* HexColor.swift */; };
- 0902838821931D960067EFBD /* LanguageSuggestionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0902838721931D960067EFBD /* LanguageSuggestionController.swift */; };
090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090B48C72200BCA8005083FA /* WallpaperUploadManager.swift */; };
090E63EE2196FE3A00E3C035 /* OpenAddContact.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090E63ED2196FE3A00E3C035 /* OpenAddContact.swift */; };
- 090E777922A6A32E00CD99F5 /* ThemeSettingsThemeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090E777822A6A32E00CD99F5 /* ThemeSettingsThemeItem.swift */; };
090E778C22AA842300CD99F5 /* anim_success.json in Resources */ = {isa = PBXBuildFile; fileRef = 090E778B22AA842200CD99F5 /* anim_success.json */; };
0910B0ED21FA178C00F8F87D /* WallpaperPreviewMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0910B0EC21FA178C00F8F87D /* WallpaperPreviewMedia.swift */; };
- 0910B0EF21FA532D00F8F87D /* WallpaperResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0910B0EE21FA532D00F8F87D /* WallpaperResources.swift */; };
- 0910B0F121FB3DE100F8F87D /* WallpaperPatternPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0910B0F021FB3DE100F8F87D /* WallpaperPatternPanelNode.swift */; };
- 091417F221EF4E5D00C8325A /* WallpaperGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091417F121EF4E5D00C8325A /* WallpaperGalleryController.swift */; };
- 091417F421EF4F5F00C8325A /* WallpaperGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */; };
091BEAB3214552D9003AEA30 /* Vision.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02DADBE2138D76F00116225 /* Vision.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
0921F60E228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */; };
092F368D2154AAEA001A9F49 /* SFCompactRounded-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */; };
@@ -37,17 +29,11 @@
094735162275D72100EA2312 /* anim_unmute.json in Resources */ = {isa = PBXBuildFile; fileRef = 0947350C2275D72100EA2312 /* anim_unmute.json */; };
094735172275D72100EA2312 /* anim_pin.json in Resources */ = {isa = PBXBuildFile; fileRef = 0947350D2275D72100EA2312 /* anim_pin.json */; };
094735192277483C00EA2312 /* anim_infotip.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735182277483B00EA2312 /* anim_infotip.json */; };
- 0947FCAE224043450086741C /* SettingsSearchRecentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0947FCAD224043450086741C /* SettingsSearchRecentItem.swift */; };
- 0947FCB0224055990086741C /* StringHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0947FCAF224055990086741C /* StringHash.swift */; };
09510B0F22F9347E0078CAB7 /* BundleResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09510B0E22F9347E0078CAB7 /* BundleResource.swift */; };
09510B1322F96E5B0078CAB7 /* ChatScheduleTimeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09510B1222F96E5B0078CAB7 /* ChatScheduleTimeController.swift */; };
09510B1522F96E6C0078CAB7 /* ChatScheduleTimeControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09510B1422F96E6C0078CAB7 /* ChatScheduleTimeControllerNode.swift */; };
- 0957DE2322DE28FB001B4D57 /* ThemePreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0957DE2222DE28FB001B4D57 /* ThemePreviewController.swift */; };
- 0957DE2522DE2909001B4D57 /* ThemePreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0957DE2422DE2909001B4D57 /* ThemePreviewControllerNode.swift */; };
0962E67921B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67821B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift */; };
09749BC521F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BC421F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift */; };
- 09749BCD21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */; };
- 09749BCF21F236F2008FDDE9 /* ModernCheckNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */; };
09874E4F21078FA100E190B8 /* Generic.html in Resources */ = {isa = PBXBuildFile; fileRef = 0979788321065F8C0077D77F /* Generic.html */; };
09874E5021078FA100E190B8 /* GenericUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = 0979788821065F8C0077D77F /* GenericUserScript.js */; };
09874E5121078FA100E190B8 /* Instagram.html in Resources */ = {isa = PBXBuildFile; fileRef = 0979788421065F8C0077D77F /* Instagram.html */; };
@@ -57,61 +43,23 @@
09874E5521078FA100E190B8 /* VimeoUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = 0979788021065F8B0077D77F /* VimeoUserScript.js */; };
09874E5621078FA100E190B8 /* Youtube.html in Resources */ = {isa = PBXBuildFile; fileRef = 0979788721065F8C0077D77F /* Youtube.html */; };
09874E5721078FA100E190B8 /* YoutubeUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = 0979788121065F8B0077D77F /* YoutubeUserScript.js */; };
- 098CF79222B924E200AF6134 /* ThemeSettingsAccentColorItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098CF79122B924E200AF6134 /* ThemeSettingsAccentColorItem.swift */; };
- 099529AA21CDB27900805E13 /* ShareProxyServerActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099529A921CDB27900805E13 /* ShareProxyServerActionSheetController.swift */; };
- 099529AC21CDBBB200805E13 /* QRCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099529AB21CDBBB200805E13 /* QRCode.swift */; };
099529B021D2123E00805E13 /* ChatMessageUnsupportedBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099529AF21D2123E00805E13 /* ChatMessageUnsupportedBubbleContentNode.swift */; };
099529B421D3E5D800805E13 /* CheckDiskSpace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099529B321D3E5D800805E13 /* CheckDiskSpace.swift */; };
09A218D9229EE1B600DE6898 /* HorizontalStickerGridItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A218D7229EE1B500DE6898 /* HorizontalStickerGridItem.swift */; };
09A218DA229EE1B600DE6898 /* HorizontalStickersChatContextPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A218D8229EE1B500DE6898 /* HorizontalStickersChatContextPanelNode.swift */; };
- 09A218F522A15F1400DE6898 /* ThemeSettingsAppIconItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A218F422A15F1400DE6898 /* ThemeSettingsAppIconItem.swift */; };
- 09B4819323028A4200D5B32B /* ThemeAccentColorController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B4819223028A4200D5B32B /* ThemeAccentColorController.swift */; };
- 09B4819523028A8A00D5B32B /* ThemeAccentColorControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B4819423028A8A00D5B32B /* ThemeAccentColorControllerNode.swift */; };
- 09B4EE4721A6D33F00847FA6 /* RecentSessionsEmptyStateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B4EE4621A6D33F00847FA6 /* RecentSessionsEmptyStateItem.swift */; };
- 09C500242142BA6400EF253E /* ItemListWebsiteItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C500232142BA6400EF253E /* ItemListWebsiteItem.swift */; };
09CE95002232729A00A7D2C3 /* StickerPaneSearchContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE94FF2232729A00A7D2C3 /* StickerPaneSearchContentNode.swift */; };
09CE9502223272B700A7D2C3 /* GifPaneSearchContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE9501223272B700A7D2C3 /* GifPaneSearchContentNode.swift */; };
- 09CE95042236C6B300A7D2C3 /* CachedInstantPages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE95032236C6B300A7D2C3 /* CachedInstantPages.swift */; };
- 09CE95062236D47F00A7D2C3 /* SettingsSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE95052236D47F00A7D2C3 /* SettingsSearchItem.swift */; };
- 09CE95082237A53900A7D2C3 /* SettingsSearchableItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE95072237A53900A7D2C3 /* SettingsSearchableItems.swift */; };
- 09CE950A2237B93500A7D2C3 /* SettingsSearchResultItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE95092237B93500A7D2C3 /* SettingsSearchResultItem.swift */; };
- 09CE950E2237E45E00A7D2C3 /* CachedFaqInstantPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE950D2237E45E00A7D2C3 /* CachedFaqInstantPage.swift */; };
- 09CE95112237F3C100A7D2C3 /* SettingsSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE95102237F3C100A7D2C3 /* SettingsSearchRecentQueries.swift */; };
- 09CE9513223825B700A7D2C3 /* CustomWallpaperPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CE9512223825B700A7D2C3 /* CustomWallpaperPicker.swift */; };
09D304152173C0E900C00567 /* WatchManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D304142173C0E900C00567 /* WatchManager.swift */; };
- 09D304182173C15700C00567 /* WatchSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D304172173C15700C00567 /* WatchSettingsController.swift */; };
09D96899221DE92600B1458A /* ID3ArtworkReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D96898221DE92600B1458A /* ID3ArtworkReader.swift */; };
09DD5D5021ECC3C400D7007A /* SuppressContactsWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD5D4F21ECC3C400D7007A /* SuppressContactsWarning.swift */; };
- 09DD5D5221ED175300D7007A /* WallpaperColorPickerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD5D5121ED175300D7007A /* WallpaperColorPickerNode.swift */; };
- 09DE2F272269D5730045E975 /* PrivacyIntroController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F262269D5730045E975 /* PrivacyIntroController.swift */; };
- 09DE2F292269D5E30045E975 /* PrivacyIntroControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */; };
09E2D9EF226F1AFA00EA0AA4 /* Emoji.mapping in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9ED226F1AF300EA0AA4 /* Emoji.mapping */; };
09E2D9F1226F214000EA0AA4 /* EmojiResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E2D9F0226F214000EA0AA4 /* EmojiResources.swift */; };
09E2DA132273367900EA0AA4 /* anim_archiveAvatar.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2DA122273367900EA0AA4 /* anim_archiveAvatar.json */; };
- 09E4A803223B833B0038140F /* ForwardPrivacyChatPreviewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A802223B833B0038140F /* ForwardPrivacyChatPreviewItem.swift */; };
- 09E4A805223D4A5A0038140F /* OpenSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A804223D4A5A0038140F /* OpenSettings.swift */; };
- 09E4A807223D4B860038140F /* AccountUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A806223D4B860038140F /* AccountUtils.swift */; };
09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EC0DEC22CB583C00E7185B /* TextLinkHandling.swift */; };
- 09EDAD26220D30980012A50B /* AutodownloadConnectionTypeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD25220D30980012A50B /* AutodownloadConnectionTypeController.swift */; };
09EDAD2A220DA6A40012A50B /* VolumeButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD29220DA6A40012A50B /* VolumeButtons.swift */; };
- 09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */; };
- 09EDAD2E221164440012A50B /* AutodownloadSizeLimitItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2D221164440012A50B /* AutodownloadSizeLimitItem.swift */; };
- 09EDAD30221164530012A50B /* AutodownloadDataUsagePickerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2F221164530012A50B /* AutodownloadDataUsagePickerItem.swift */; };
09F2158D225CF5BC00AEDF6D /* Pasteboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */; };
- 09F664C021EAAFAF00AB7E26 /* ThemeColorsGridController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664BF21EAAFAF00AB7E26 /* ThemeColorsGridController.swift */; };
- 09F664C221EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C121EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift */; };
- 09F664C421EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C321EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift */; };
- 09F664C621EB400A00AB7E26 /* ThemeGridSearchContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C521EB400A00AB7E26 /* ThemeGridSearchContentNode.swift */; };
- 09F664C821EB4A2600AB7E26 /* ThemeGridSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C721EB4A2600AB7E26 /* ThemeGridSearchItem.swift */; };
- 09F664CA21EB4F2700AB7E26 /* ThemeGridSearchColorsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C921EB4F2700AB7E26 /* ThemeGridSearchColorsItem.swift */; };
- 09F664CC21EB552C00AB7E26 /* WallpaperSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664CB21EB552C00AB7E26 /* WallpaperSearchRecentQueries.swift */; };
- 09F664D021EBCFB900AB7E26 /* WallpaperCropNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664CF21EBCFB900AB7E26 /* WallpaperCropNode.swift */; };
- 09F85BA521E7821500D73170 /* ThemeGridSelectionPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F85BA421E7821500D73170 /* ThemeGridSelectionPanelNode.swift */; };
- 09F85BA721E7DA5F00D73170 /* BlurredImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F85BA621E7DA5F00D73170 /* BlurredImageNode.swift */; };
09FFBCD1227B7F9900C33B4B /* anim_archiveswipe.json in Resources */ = {isa = PBXBuildFile; fileRef = 09FFBCCF227B7F9000C33B4B /* anim_archiveswipe.json */; };
09FFBCD72281BB2D00C33B4B /* ChatTextLinkEditController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FFBCD62281BB2D00C33B4B /* ChatTextLinkEditController.swift */; };
- 9F06830921A404AB001D8EDB /* NotificationExceptionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830821A404AB001D8EDB /* NotificationExceptionControllerNode.swift */; };
- 9F06830B21A404C4001D8EDB /* NotificationExceptionSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830A21A404C4001D8EDB /* NotificationExceptionSettingsController.swift */; };
D000CABC21F158AD0011B15D /* PrepareSecretThumbnailData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000CABB21F158AD0011B15D /* PrepareSecretThumbnailData.swift */; };
D0068FA821760FA300D1B315 /* StoreDownloadedMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */; };
D007019C2029E8F2006B9E34 /* LegacyICloudFileController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D007019B2029E8F2006B9E34 /* LegacyICloudFileController.swift */; };
@@ -131,9 +79,6 @@
D017734C22049BF800DA06A7 /* UpgradedAccounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = D017734B22049BF800DA06A7 /* UpgradedAccounts.swift */; };
D01776BE1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01776BD1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift */; };
D01848E821A03BDA00B6DEBD /* ChatSearchState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01848E721A03BDA00B6DEBD /* ChatSearchState.swift */; };
- D0185E882089ED5F005E1A6C /* ProxyListSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0185E872089ED5F005E1A6C /* ProxyListSettingsController.swift */; };
- D0185E8A208A01AF005E1A6C /* ProxySettingsActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0185E89208A01AF005E1A6C /* ProxySettingsActionItem.swift */; };
- D0185E8C208A025A005E1A6C /* ProxySettingsServerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0185E8B208A025A005E1A6C /* ProxySettingsServerItem.swift */; };
D018BE58218C7BD800C02DDC /* ChatMessageDeliveryFailedNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D018BE57218C7BD800C02DDC /* ChatMessageDeliveryFailedNode.swift */; };
D0192D44210A5AA50005FA10 /* DeviceContactDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0192D43210A5AA50005FA10 /* DeviceContactDataManager.swift */; };
D01C06B51FBB7720001561AB /* ChatMediaInputSettingsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01C06B41FBB7720001561AB /* ChatMediaInputSettingsItem.swift */; };
@@ -149,8 +94,6 @@
D02B198A21F1DA9E0094A764 /* SharedAccountContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02B198921F1DA9E0094A764 /* SharedAccountContext.swift */; };
D02B2B9820810DA00062476B /* StickerPaneSearchStickerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02B2B9720810DA00062476B /* StickerPaneSearchStickerItem.swift */; };
D02B676320800A00001A864A /* PaneSearchBarPlaceholderItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02B676220800A00001A864A /* PaneSearchBarPlaceholderItem.swift */; };
- D02C81712177729000CD1006 /* NotificationExceptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02C81702177729000CD1006 /* NotificationExceptions.swift */; };
- D02C81732177AC5900CD1006 /* NotificationSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02C81722177AC5900CD1006 /* NotificationSearchItem.swift */; };
D02D634A22B85B94006BE519 /* PushKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02D634922B85B94006BE519 /* PushKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
D02F4AE91FCF370B004DFBAE /* ChatMessageInteractiveMediaBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02F4AE81FCF370B004DFBAE /* ChatMessageInteractiveMediaBadge.swift */; };
D0380DAD204ED434000414AB /* LegacyLiveUploadInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0380DAC204ED434000414AB /* LegacyLiveUploadInterface.swift */; };
@@ -196,6 +139,16 @@
D03E44E22305BC900049C28B /* LegacyDataImport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E44E12305BC900049C28B /* LegacyDataImport.framework */; };
D03E45252305C07A0049C28B /* ShareItems.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E45242305C07A0049C28B /* ShareItems.framework */; };
D03E46102305FD360049C28B /* ReactionSelectionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E460F2305FD360049C28B /* ReactionSelectionNode.framework */; };
+ D03E47B62307636E0049C28B /* SettingsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47B52307636E0049C28B /* SettingsUI.framework */; };
+ D03E47D7230767FF0049C28B /* UrlHandling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E47D6230767FF0049C28B /* UrlHandling.framework */; };
+ D03E480E230769AF0049C28B /* HexColor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E480D230769AF0049C28B /* HexColor.framework */; };
+ D03E483823076AF30049C28B /* QrCode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E483723076AF30049C28B /* QrCode.framework */; };
+ D03E487023076C500049C28B /* WallpaperResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E486F23076C500049C28B /* WallpaperResources.framework */; };
+ D03E48A4230774380049C28B /* AuthorizationUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48A3230774380049C28B /* AuthorizationUI.framework */; };
+ D03E48E4230864AB0049C28B /* CounterContollerTitleView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E48E3230864AB0049C28B /* CounterContollerTitleView.framework */; };
+ D03E4910230866280049C28B /* GridMessageSelectionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E490F230866280049C28B /* GridMessageSelectionNode.framework */; };
+ D03E493C2308679D0049C28B /* InstantPageCache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E493B2308679D0049C28B /* InstantPageCache.framework */; };
+ D03E495D230868DF0049C28B /* PersistentStringHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E495C230868DF0049C28B /* PersistentStringHash.framework */; };
D04203152037162700490EA5 /* MediaInputPaneTrendingItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04203142037162700490EA5 /* MediaInputPaneTrendingItem.swift */; };
D04281F4200E5AB0009DDE36 /* ChatRecentActionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04281F3200E5AB0009DDE36 /* ChatRecentActionsController.swift */; };
D04281F6200E5AC2009DDE36 /* ChatRecentActionsControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04281F5200E5AC2009DDE36 /* ChatRecentActionsControllerNode.swift */; };
@@ -203,7 +156,6 @@
D04281FC200E61BC009DDE36 /* ChatRecentActionsInteraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04281FB200E61BC009DDE36 /* ChatRecentActionsInteraction.swift */; };
D04281FE200E639A009DDE36 /* ChatRecentActionsTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04281FD200E639A009DDE36 /* ChatRecentActionsTitleView.swift */; };
D0428200200E6A00009DDE36 /* ChatRecentActionsHistoryTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04281FF200E6A00009DDE36 /* ChatRecentActionsHistoryTransition.swift */; };
- D04554A421B42982007A6DD9 /* ConfirmPhoneNumberController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04554A321B42982007A6DD9 /* ConfirmPhoneNumberController.swift */; };
D0471B541EFD8ECA0074D609 /* currencies.json in Resources */ = {isa = PBXBuildFile; fileRef = D0471B531EFD8ECA0074D609 /* currencies.json */; };
D048B339203C532800038D05 /* ChatMediaInputPane.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048B338203C532800038D05 /* ChatMediaInputPane.swift */; };
D04B4D131EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04B4D121EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift */; };
@@ -215,9 +167,6 @@
D056CD781FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD771FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift */; };
D056CD7A1FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD791FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift */; };
D05B077421BFC38600B1D27C /* FFMpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D05B077321BFC38600B1D27C /* FFMpeg.framework */; };
- D05D8B3A2192FC460064586F /* LocalizationListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05D8B392192FC460064586F /* LocalizationListController.swift */; };
- D05D8B3F2192FC6E0064586F /* LocalizationListControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05D8B3E2192FC6E0064586F /* LocalizationListControllerNode.swift */; };
- D05D8B412192FC8A0064586F /* LocalizationListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05D8B402192FC8A0064586F /* LocalizationListItem.swift */; };
D060184022F35D1C00796784 /* MergeLists.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D060183F22F35D1C00796784 /* MergeLists.framework */; };
D060184222F35D2000796784 /* ActivityIndicator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D060184122F35D2000796784 /* ActivityIndicator.framework */; };
D060184422F35D2400796784 /* ProgressNavigationButtonNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D060184322F35D2400796784 /* ProgressNavigationButtonNode.framework */; };
@@ -228,11 +177,7 @@
D069F5D0212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D069F5CF212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift */; };
D06BB8821F58994B0084FC30 /* LegacyInstantVideoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06BB8811F58994B0084FC30 /* LegacyInstantVideoController.swift */; };
D06E0F8E1F79ABFB003CF3DD /* ChatLoadingNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E0F8D1F79ABFB003CF3DD /* ChatLoadingNode.swift */; };
- D06E4C332134A59700088087 /* ThemeAccentColorActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C322134A59700088087 /* ThemeAccentColorActionSheet.swift */; };
- D06E4C352134AE3C00088087 /* ThemeAutoNightSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C342134AE3C00088087 /* ThemeAutoNightSettingsController.swift */; };
D06F1EA41F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06F1EA31F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift */; };
- D06F31E4213597FF001A0F12 /* ThemeAutoNightTimeSelectionActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06F31E3213597FF001A0F12 /* ThemeAutoNightTimeSelectionActionSheet.swift */; };
- D06F31E62135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06F31E52135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift */; };
D0750C7822B2A13300BE5F6E /* UniversalMediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0750C7722B2A13300BE5F6E /* UniversalMediaPlayer.framework */; };
D0750C7A22B2A14300BE5F6E /* DeviceAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0750C7922B2A14300BE5F6E /* DeviceAccess.framework */; };
D0750C7C22B2A14300BE5F6E /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0750C7B22B2A14300BE5F6E /* TelegramPresentationData.framework */; };
@@ -246,7 +191,6 @@
D0754D221EEDF89900884F6E /* ChatMessageInvoiceBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0754D211EEDF89900884F6E /* ChatMessageInvoiceBubbleContentNode.swift */; };
D077C5C122B59A800097D617 /* ApplicationContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D077C5C022B59A800097D617 /* ApplicationContext.swift */; };
D07BCBFE1F2B792300ED97AA /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D07BCBFD1F2B792300ED97AA /* LegacyComponents.framework */; };
- D07E413D208A494D00FCA8F0 /* ProxyServerActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07E413C208A494D00FCA8F0 /* ProxyServerActionSheetController.swift */; };
D08799F022F649A600C4D6B3 /* TelegramBaseController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08799EF22F649A600C4D6B3 /* TelegramBaseController.framework */; };
D0879A0D22F64E4C00C4D6B3 /* DeviceLocationManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0879A0C22F64E4C00C4D6B3 /* DeviceLocationManager.framework */; };
D0879B1F22F7189600C4D6B3 /* AvatarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0879B1E22F7189600C4D6B3 /* AvatarNode.framework */; };
@@ -261,18 +205,14 @@
D0879C9622F875C000C4D6B3 /* PeerPresenceStatusManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0879C9522F875C000C4D6B3 /* PeerPresenceStatusManager.framework */; };
D0879CCC22F876DD00C4D6B3 /* ChatListSearchRecentPeersNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0879CCB22F876DD00C4D6B3 /* ChatListSearchRecentPeersNode.framework */; };
D08803C51F6064CF00DD7951 /* TelegramUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0FC40821D5B8E7400261D9D /* TelegramUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
- D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08984EF2114AE0C00918162 /* DataPrivacySettingsController.swift */; };
D08BDF641FA37BEA009D08E1 /* ChatRecordingPreviewInputPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08BDF631FA37BEA009D08E1 /* ChatRecordingPreviewInputPanelNode.swift */; };
- D08BDF661FA8CB10009D08E1 /* EditSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08BDF651FA8CB10009D08E1 /* EditSettingsController.swift */; };
D091C7A41F8EBB1E00D7DE13 /* ChatPresentationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D091C7A31F8EBB1E00D7DE13 /* ChatPresentationData.swift */; };
- D091C7A61F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D091C7A51F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift */; };
D09250061FE5371D003F693F /* GlobalExperimentalSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */; };
D0943B001FDAE852001522CC /* ChatFeedNavigationInputPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0943AFF1FDAE852001522CC /* ChatFeedNavigationInputPanelNode.swift */; };
D0943B051FDDFDA0001522CC /* OverlayInstantVideoNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0943B041FDDFDA0001522CC /* OverlayInstantVideoNode.swift */; };
D0943B071FDEC529001522CC /* InstantVideoRadialStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0943B061FDEC528001522CC /* InstantVideoRadialStatusNode.swift */; };
D0955FB521912B6000F89427 /* PresentationStrings.mapping in Resources */ = {isa = PBXBuildFile; fileRef = D0955FB32191278C00F89427 /* PresentationStrings.mapping */; };
D099E220229405BB00561B75 /* Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099E21F229405BB00561B75 /* Weak.swift */; };
- D09D88731F86D56B00BEB4C9 /* AuthorizationLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09D88721F86D56B00BEB4C9 /* AuthorizationLayout.swift */; };
D09E637C1F0E7C28003444CD /* SharedMediaPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09E637B1F0E7C28003444CD /* SharedMediaPlayer.swift */; };
D09E637F1F0E8C9F003444CD /* PeerMessagesMediaPlaylist.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09E637E1F0E8C9F003444CD /* PeerMessagesMediaPlaylist.swift */; };
D09E63B01F1010FE003444CD /* Contacts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E63AF1F1010FE003444CD /* Contacts.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
@@ -295,7 +235,6 @@
D09E77A922FA5CEA00B9CCA7 /* TextFormat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E77A822FA5CEA00B9CCA7 /* TextFormat.framework */; };
D09E77AB22FA5CEA00B9CCA7 /* Tuples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E77AA22FA5CEA00B9CCA7 /* Tuples.framework */; };
D09E77AD22FA5CEA00B9CCA7 /* UrlEscaping.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E77AC22FA5CEA00B9CCA7 /* UrlEscaping.framework */; };
- D0A8998D217A294100759EE6 /* SaveIncomingMediaController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A8998C217A294100759EE6 /* SaveIncomingMediaController.swift */; };
D0AA840C1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA840B1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift */; };
D0AB262921C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */; };
D0ACCB1C1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */; };
@@ -309,13 +248,7 @@
D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE262080D6970013176E /* PaneSearchBarNode.swift */; };
D0AEAE292080FD660013176E /* StickerPaneSearchGlobaltem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE282080FD660013176E /* StickerPaneSearchGlobaltem.swift */; };
D0AF323A1FB1D8D60097362B /* ChatOverlayNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AF32391FB1D8D60097362B /* ChatOverlayNavigationBar.swift */; };
- D0B21B15220D85DD003F741D /* TabBarAccountSwitchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B14220D85DD003F741D /* TabBarAccountSwitchController.swift */; };
- D0B21B17220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B16220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift */; };
D0B21B1F22156D92003F741D /* LegacyCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B1E22156D92003F741D /* LegacyCache.swift */; };
- D0B21B212215B539003F741D /* LogoutOptionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B202215B539003F741D /* LogoutOptionsController.swift */; };
- D0B37C5C1F8D22AE004252DF /* ThemeSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B37C5B1F8D22AE004252DF /* ThemeSettingsController.swift */; };
- D0B37C5E1F8D26A8004252DF /* ThemeSettingsChatPreviewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B37C5D1F8D26A8004252DF /* ThemeSettingsChatPreviewItem.swift */; };
- D0B37C601F8D286E004252DF /* ThemeSettingsFontSizeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B37C5F1F8D286E004252DF /* ThemeSettingsFontSizeItem.swift */; };
D0B4AF861EC111FA00D51FF6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D0AB0BBA1D6719B5002C78E7 /* Images.xcassets */; };
D0B4AF881EC112EE00D51FF6 /* CallKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B4AF871EC112ED00D51FF6 /* CallKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
D0B69C3920EBB397003632C7 /* ChatMessageInteractiveInstantVideoNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B69C3820EBB397003632C7 /* ChatMessageInteractiveInstantVideoNode.swift */; };
@@ -331,7 +264,6 @@
D0C0B59B1EE019E5000F4D2C /* ChatSearchNavigationContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C0B59A1EE019E5000F4D2C /* ChatSearchNavigationContentNode.swift */; };
D0C0B59F1EE082F5000F4D2C /* ChatSearchInputPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C0B59E1EE082F5000F4D2C /* ChatSearchInputPanelNode.swift */; };
D0C0B5B11EE1C421000F4D2C /* ChatDateSelectionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C0B5B01EE1C421000F4D2C /* ChatDateSelectionSheet.swift */; };
- D0C0B5B71EE1DEF1000F4D2C /* ThemeGridControllerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C0B5B61EE1DEF1000F4D2C /* ThemeGridControllerItem.swift */; };
D0C12A1D1F33A85600B3F66D /* ChatWallpaperBuiltin0.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D0C12A1B1F33964900B3F66D /* ChatWallpaperBuiltin0.jpg */; };
D0C12EB01F9A8D1300600BB2 /* ListMessageDateHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C12EAF1F9A8D1300600BB2 /* ListMessageDateHeader.swift */; };
D0C26D571FDF2388004ABF18 /* OpenChatMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C26D561FDF2388004ABF18 /* OpenChatMessage.swift */; };
@@ -388,19 +320,14 @@
D0C9CBB62302B65600FAB518 /* LanguageSuggestionUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBB52302B65600FAB518 /* LanguageSuggestionUI.framework */; };
D0C9CBD72302C09000FAB518 /* TextSelectionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBD62302C09000FAB518 /* TextSelectionNode.framework */; };
D0CAD90120AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */; };
- D0CB27CF20C17A4A001ACF93 /* TermsOfServiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */; };
- D0CB27D220C17A7F001ACF93 /* TermsOfServiceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */; };
D0CCD61B222E8B4500EE1E08 /* TimeBasedVideoPreload.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CCD61A222E8B4500EE1E08 /* TimeBasedVideoPreload.swift */; };
D0CE67941F7DB45100FFB557 /* ChatMessageContactBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE67931F7DB45100FFB557 /* ChatMessageContactBubbleContentNode.swift */; };
- D0CE6F70213EEE5000BCD44B /* CreatePasswordController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE6F6F213EEE5000BCD44B /* CreatePasswordController.swift */; };
D0CE8CE51F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE8CE41F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift */; };
D0CE8CE71F6F35A300AA2DB0 /* ChatTextInputPanelState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE8CE61F6F35A300AA2DB0 /* ChatTextInputPanelState.swift */; };
D0CFBB911FD881A600B65C0D /* AudioRecordningToneData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CFBB901FD881A600B65C0D /* AudioRecordningToneData.swift */; };
D0CFBB951FD8B05000B65C0D /* OverlayInstantVideoDecoration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CFBB941FD8B05000B65C0D /* OverlayInstantVideoDecoration.swift */; };
D0D3281422F31B3000D07EE2 /* TelegramUpdateUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0D3281322F31B3000D07EE2 /* TelegramUpdateUI.framework */; };
- D0D4345C1F97CEAA00CC1806 /* ProxyServerSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D4345B1F97CEAA00CC1806 /* ProxyServerSettingsController.swift */; };
D0DE66061F9A51E200EF4AE9 /* GalleryHiddenMediaManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DE66051F9A51E200EF4AE9 /* GalleryHiddenMediaManager.swift */; };
- D0DFD5E21FCE2BA50039B3B1 /* CalculatingCacheSizeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DFD5E11FCE2BA50039B3B1 /* CalculatingCacheSizeItem.swift */; };
D0E2CE6C222930540084E3DD /* PrefetchManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E2CE6B222930540084E3DD /* PrefetchManager.swift */; };
D0E8174C2011F8A300B82BBB /* ChatMessageEventLogPreviousMessageContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8174B2011F8A300B82BBB /* ChatMessageEventLogPreviousMessageContentNode.swift */; };
D0E8174E2011FC3800B82BBB /* ChatMessageEventLogPreviousDescriptionContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E8174D2011FC3800B82BBB /* ChatMessageEventLogPreviousDescriptionContentNode.swift */; };
@@ -457,7 +384,6 @@
D0EC6CCC1EB9F58800EBF1C3 /* ServiceSoundManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D073CE641DCBC26B007511FD /* ServiceSoundManager.swift */; };
D0EC6CCD1EB9F58800EBF1C3 /* DeclareEncodables.swift in Sources */ = {isa = PBXBuildFile; fileRef = D073CE701DCBF23F007511FD /* DeclareEncodables.swift */; };
D0EC6CCE1EB9F58800EBF1C3 /* AccountContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05811931DD5F9380057C769 /* AccountContext.swift */; };
- D0EC6CD11EB9F58800EBF1C3 /* UrlHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = D023836F1DDF0462004018B6 /* UrlHandling.swift */; };
D0EC6CDC1EB9F58800EBF1C3 /* TelegramAccountAuxiliaryMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */; };
D0EC6CF91EB9F58800EBF1C3 /* MediaManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */; };
D0EC6CFB1EB9F58800EBF1C3 /* ManagedAudioRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */; };
@@ -468,7 +394,6 @@
D0EC6D261EB9F58800EBF1C3 /* TransformOutgoingMessageMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04662801E68BA64006FAFC4 /* TransformOutgoingMessageMedia.swift */; };
D0EC6D271EB9F58800EBF1C3 /* FetchResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8B51E83120A00B4C64C /* FetchResource.swift */; };
D0EC6D291EB9F58800EBF1C3 /* FetchVideoMediaResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8B91E831E6300B4C64C /* FetchVideoMediaResource.swift */; };
- D0EC6D2A1EB9F58800EBF1C3 /* FetchPhotoLibraryImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4AC31E84806300627D1D /* FetchPhotoLibraryImageResource.swift */; };
D0EC6D2B1EB9F58800EBF1C3 /* FileMediaResourceStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0177B831DFB095000A5083A /* FileMediaResourceStatus.swift */; };
D0EC6D301EB9F58800EBF1C3 /* RadialProgressNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DC41D6B89E10046BCD6 /* RadialProgressNode.swift */; };
D0EC6D311EB9F58800EBF1C3 /* RadialTimeoutNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00C7CE51E378FD00080C3D5 /* RadialTimeoutNode.swift */; };
@@ -488,7 +413,6 @@
D0EC6D5E1EB9F58800EBF1C3 /* ListMessageHoleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02383831DDFA22C004018B6 /* ListMessageHoleItem.swift */; };
D0EC6D5F1EB9F58800EBF1C3 /* GridMessageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02BE0761D9190EF000889C2 /* GridMessageItem.swift */; };
D0EC6D601EB9F58800EBF1C3 /* GridHoleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DE76F61D91BA3D002B8809 /* GridHoleItem.swift */; };
- D0EC6D611EB9F58800EBF1C3 /* GridMessageSelectionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DE77281D932923002B8809 /* GridMessageSelectionNode.swift */; };
D0EC6D681EB9F58800EBF1C3 /* AuthorizationSequenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D049EAF21E44DE2500A2CD3A /* AuthorizationSequenceController.swift */; };
D0EC6D691EB9F58800EBF1C3 /* AuthorizationSequenceSplashController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2B21E44E56200650E93 /* AuthorizationSequenceSplashController.swift */; };
D0EC6D6A1EB9F58800EBF1C3 /* AuthorizationSequenceSplashControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BB2BA1E44EA2400650E93 /* AuthorizationSequenceSplashControllerNode.swift */; };
@@ -611,7 +535,6 @@
D0EC6DF91EB9F58900EBF1C3 /* PeerMediaCollectionInterfaceStateButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DE77241D93225E002B8809 /* PeerMediaCollectionInterfaceStateButtons.swift */; };
D0EC6E2B1EB9F58900EBF1C3 /* ComposeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D087750F1E3F46A400A97350 /* ComposeController.swift */; };
D0EC6E2C1EB9F58900EBF1C3 /* ComposeControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08775111E3F46AB00A97350 /* ComposeControllerNode.swift */; };
- D0EC6E2D1EB9F58900EBF1C3 /* CounterContollerTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D087751D1E3F579300A97350 /* CounterContollerTitleView.swift */; };
D0EC6E2E1EB9F58900EBF1C3 /* ContactMultiselectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08775181E3F53FC00A97350 /* ContactMultiselectionController.swift */; };
D0EC6E2F1EB9F58900EBF1C3 /* ContactMultiselectionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D087751B1E3F542500A97350 /* ContactMultiselectionControllerNode.swift */; };
D0EC6E301EB9F58900EBF1C3 /* ContactSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BC387E1E40F1CF0044D6FE /* ContactSelectionController.swift */; };
@@ -620,35 +543,6 @@
D0EC6E331EB9F58900EBF1C3 /* CreateChannelController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D018D3341E6489EC00C5E089 /* CreateChannelController.swift */; };
D0EC6E581EB9F58900EBF1C3 /* PeerSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF731DCA207200761F81 /* PeerSelectionController.swift */; };
D0EC6E591EB9F58900EBF1C3 /* PeerSelectionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF751DCA224100761F81 /* PeerSelectionControllerNode.swift */; };
- D0EC6E5D1EB9F58900EBF1C3 /* PrivacyAndSecurityController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05A32DD1E6F0097002760B4 /* PrivacyAndSecurityController.swift */; };
- D0EC6E5E1EB9F58900EBF1C3 /* ItemListRecentSessionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05A32ED1E6F25A0002760B4 /* ItemListRecentSessionItem.swift */; };
- D0EC6E5F1EB9F58900EBF1C3 /* RecentSessionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05A32E91E6F143C002760B4 /* RecentSessionsController.swift */; };
- D0EC6E601EB9F58900EBF1C3 /* BlockedPeersController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05A32EB1E6F1462002760B4 /* BlockedPeersController.swift */; };
- D0EC6E611EB9F58900EBF1C3 /* SelectivePrivacySettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B724C1E720393000BD3AD /* SelectivePrivacySettingsController.swift */; };
- D0EC6E621EB9F58900EBF1C3 /* SelectivePrivacySettingsPeersController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EF40DC1E72F00E000DFCD4 /* SelectivePrivacySettingsPeersController.swift */; };
- D0EC6E631EB9F58900EBF1C3 /* TwoStepVerificationUnlockController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01C2AAA1E75E010001F6F9A /* TwoStepVerificationUnlockController.swift */; };
- D0EC6E641EB9F58900EBF1C3 /* TwoStepVerificationPasswordEntryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA0ABE1E76E17F005BB9B7 /* TwoStepVerificationPasswordEntryController.swift */; };
- D0EC6E651EB9F58900EBF1C3 /* TwoStepVerificationResetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA0AC01E7725AA005BB9B7 /* TwoStepVerificationResetController.swift */; };
- D0EC6E661EB9F58900EBF1C3 /* PasscodeOptionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0760B231E9D015D00F1F3C4 /* PasscodeOptionsController.swift */; };
- D0EC6E671EB9F58900EBF1C3 /* DataAndStorageSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9323B1E0B4AE90074F044 /* DataAndStorageSettingsController.swift */; };
- D0EC6E681EB9F58900EBF1C3 /* VoiceCallDataSavingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0223A951EA54D0D00211D94 /* VoiceCallDataSavingController.swift */; };
- D0EC6E691EB9F58900EBF1C3 /* NetworkUsageStatsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0223A9D1EA5732300211D94 /* NetworkUsageStatsController.swift */; };
- D0EC6E6A1EB9F58900EBF1C3 /* StorageUsageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA35001EA6127000E56FFA /* StorageUsageController.swift */; };
- D0EC6E6B1EB9F58900EBF1C3 /* InstalledStickerPacksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA0AC41E77431A005BB9B7 /* InstalledStickerPacksController.swift */; };
- D0EC6E6C1EB9F58900EBF1C3 /* FeaturedStickerPacksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E23DD71E805E2600B9B6D2 /* FeaturedStickerPacksController.swift */; };
- D0EC6E6E1EB9F58900EBF1C3 /* ArchivedStickerPacksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E23DDC1E8081A200B9B6D2 /* ArchivedStickerPacksController.swift */; };
- D0EC6E731EB9F58900EBF1C3 /* WallpaperGalleryToolbarNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174AA1EAA5B4700A1BF36 /* WallpaperGalleryToolbarNode.swift */; };
- D0EC6E741EB9F58900EBF1C3 /* ThemeGridController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6B351EB88D0A00EBF1C3 /* ThemeGridController.swift */; };
- D0EC6E751EB9F58900EBF1C3 /* ThemeGridControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6B371EB88D1600EBF1C3 /* ThemeGridControllerNode.swift */; };
- D0EC6E761EB9F58900EBF1C3 /* SettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01B279A1E39386C0022A4C0 /* SettingsController.swift */; };
- D0EC6E771EB9F58900EBF1C3 /* NotificationsAndSounds.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01B279C1E394A500022A4C0 /* NotificationsAndSounds.swift */; };
- D0EC6E7A1EB9F58900EBF1C3 /* DebugController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CE1BD21E51BC6100404327 /* DebugController.swift */; };
- D0EC6E7B1EB9F58900EBF1C3 /* DebugAccountsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E5E081E55C49C0029569A /* DebugAccountsController.swift */; };
- D0EC6E7C1EB9F58900EBF1C3 /* UsernameSetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0528E671E65CB2C00E2FEF5 /* UsernameSetupController.swift */; };
- D0EC6E7D1EB9F58900EBF1C3 /* ChangePhoneNumberIntroController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A11BF91E7836C20081CE03 /* ChangePhoneNumberIntroController.swift */; };
- D0EC6E7E1EB9F58900EBF1C3 /* ChangePhoneNumberController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A11BFB1E7840750081CE03 /* ChangePhoneNumberController.swift */; };
- D0EC6E7F1EB9F58900EBF1C3 /* ChangePhoneNumberControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A11BFD1E7840A50081CE03 /* ChangePhoneNumberControllerNode.swift */; };
- D0EC6E801EB9F58900EBF1C3 /* ChangePhoneNumberCodeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F53BEB1E784DA900117362 /* ChangePhoneNumberCodeController.swift */; };
D0EC6E811EB9F58900EBF1C3 /* NotificationContainerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C50E371E93CB1500F62E39 /* NotificationContainerController.swift */; };
D0EC6E821EB9F58900EBF1C3 /* NotificationContainerControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C50E391E93CB4300F62E39 /* NotificationContainerControllerNode.swift */; };
D0EC6E831EB9F58900EBF1C3 /* NotificationItemContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C50E3D1E93D09200F62E39 /* NotificationItemContainerNode.swift */; };
@@ -679,18 +573,10 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
- 0900678C21ED5EA800530762 /* WallpaperColorPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperColorPanelNode.swift; sourceTree = ""; };
- 0900678E21ED8E0E00530762 /* HexColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HexColor.swift; sourceTree = ""; };
- 0902838721931D960067EFBD /* LanguageSuggestionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageSuggestionController.swift; sourceTree = ""; };
090B48C72200BCA8005083FA /* WallpaperUploadManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperUploadManager.swift; sourceTree = ""; };
090E63ED2196FE3A00E3C035 /* OpenAddContact.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenAddContact.swift; sourceTree = ""; };
- 090E777822A6A32E00CD99F5 /* ThemeSettingsThemeItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeSettingsThemeItem.swift; sourceTree = ""; };
090E778B22AA842200CD99F5 /* anim_success.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_success.json; sourceTree = ""; };
0910B0EC21FA178C00F8F87D /* WallpaperPreviewMedia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperPreviewMedia.swift; sourceTree = ""; };
- 0910B0EE21FA532D00F8F87D /* WallpaperResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperResources.swift; sourceTree = ""; };
- 0910B0F021FB3DE100F8F87D /* WallpaperPatternPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperPatternPanelNode.swift; sourceTree = ""; };
- 091417F121EF4E5D00C8325A /* WallpaperGalleryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryController.swift; sourceTree = ""; };
- 091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryItem.swift; sourceTree = ""; };
0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageActionUrlAuthController.swift; sourceTree = ""; };
092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SFCompactRounded-Semibold.otf"; sourceTree = ""; };
09310D1A213BC5DE0020033A /* anim_ungroup.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_ungroup.json; sourceTree = ""; };
@@ -708,17 +594,11 @@
0947350C2275D72100EA2312 /* anim_unmute.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unmute.json; sourceTree = ""; };
0947350D2275D72100EA2312 /* anim_pin.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_pin.json; sourceTree = ""; };
094735182277483B00EA2312 /* anim_infotip.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_infotip.json; sourceTree = ""; };
- 0947FCAD224043450086741C /* SettingsSearchRecentItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsSearchRecentItem.swift; sourceTree = ""; };
- 0947FCAF224055990086741C /* StringHash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringHash.swift; sourceTree = ""; };
09510B0E22F9347E0078CAB7 /* BundleResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleResource.swift; sourceTree = ""; };
09510B1222F96E5B0078CAB7 /* ChatScheduleTimeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatScheduleTimeController.swift; sourceTree = ""; };
09510B1422F96E6C0078CAB7 /* ChatScheduleTimeControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatScheduleTimeControllerNode.swift; sourceTree = ""; };
- 0957DE2222DE28FB001B4D57 /* ThemePreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemePreviewController.swift; sourceTree = ""; };
- 0957DE2422DE2909001B4D57 /* ThemePreviewControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemePreviewControllerNode.swift; sourceTree = ""; };
0962E67821B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageAnimatedStickerItemNode.swift; sourceTree = ""; };
09749BC421F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickersChatInputContextPanelItem.swift; sourceTree = "