From be0473cf8580de3a45f540b6cbecd1909c065428 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Tue, 13 Aug 2019 02:24:18 +0300 Subject: [PATCH] Refactor PasscodeUI --- .../contents.xcworkspacedata | 3 + submodules/PasscodeUI/Info.plist | 22 + .../project.pbxproj | 635 ++++++++++++++++++ .../PasscodeUI/Sources/FrameworkBundle.swift | 13 + .../Sources}/PasscodeBackground.swift | 1 - .../Sources}/PasscodeEntryController.swift | 7 +- .../PasscodeEntryControllerNode.swift | 0 .../PasscodeEntryInputFieldNode.swift | 8 +- .../Sources}/PasscodeEntryKeyboardNode.swift | 0 .../Sources}/PasscodeEntryLabelNode.swift | 0 .../Sources}/PasscodeLayout.swift | 0 .../Sources}/PasscodeLockIconNode.swift | 0 .../Sources}/PasscodeSetupController.swift | 20 +- .../PasscodeSetupControllerNode.swift | 0 submodules/PasscodeUI/Sources/PasscodeUI.h | 19 + .../Sources}/NumberFormat.swift | 2 +- .../project.pbxproj | 4 + .../TelegramUI/ApplicationContext.swift | 1 + .../ChatContextResultManagedMediaId.swift | 23 - .../TelegramUI/ExtractVideoData.swift | 7 - .../TelegramUI/ManagedMediaId.swift | 6 - .../PasscodeOptionsController.swift | 2 + .../PeerMessageManagedMediaId.swift | 22 - .../TelegramUI/RecentGifManagedMediaId.swift | 23 - .../project.pbxproj | 84 +-- 25 files changed, 722 insertions(+), 180 deletions(-) create mode 100644 submodules/PasscodeUI/Info.plist create mode 100644 submodules/PasscodeUI/PasscodeUI_Xcode.xcodeproj/project.pbxproj create mode 100644 submodules/PasscodeUI/Sources/FrameworkBundle.swift rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeBackground.swift (99%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeEntryController.swift (98%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeEntryControllerNode.swift (100%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeEntryInputFieldNode.swift (98%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeEntryKeyboardNode.swift (100%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeEntryLabelNode.swift (100%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeLayout.swift (100%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeLockIconNode.swift (100%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeSetupController.swift (90%) rename submodules/{TelegramUI/TelegramUI => PasscodeUI/Sources}/PasscodeSetupControllerNode.swift (100%) create mode 100644 submodules/PasscodeUI/Sources/PasscodeUI.h rename submodules/{TelegramUI/TelegramUI => TelegramStringFormatting/Sources}/NumberFormat.swift (81%) delete mode 100644 submodules/TelegramUI/TelegramUI/ChatContextResultManagedMediaId.swift delete mode 100644 submodules/TelegramUI/TelegramUI/ExtractVideoData.swift delete mode 100644 submodules/TelegramUI/TelegramUI/ManagedMediaId.swift delete mode 100644 submodules/TelegramUI/TelegramUI/PeerMessageManagedMediaId.swift delete mode 100644 submodules/TelegramUI/TelegramUI/RecentGifManagedMediaId.swift diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata index efd3029867..2670de51a9 100644 --- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata +++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata @@ -379,6 +379,9 @@ + + diff --git a/submodules/PasscodeUI/Info.plist b/submodules/PasscodeUI/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/PasscodeUI/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/PasscodeUI/PasscodeUI_Xcode.xcodeproj/project.pbxproj b/submodules/PasscodeUI/PasscodeUI_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..7c5dbbf5ae --- /dev/null +++ b/submodules/PasscodeUI/PasscodeUI_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,635 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C9FA230228D400FAB518 /* PasscodeUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C9F8230228D400FAB518 /* PasscodeUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9CA0E2302293400FAB518 /* PasscodeEntryControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA042302293200FAB518 /* PasscodeEntryControllerNode.swift */; }; + D0C9CA0F2302293400FAB518 /* PasscodeBackground.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA052302293300FAB518 /* PasscodeBackground.swift */; }; + D0C9CA102302293400FAB518 /* PasscodeEntryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA062302293300FAB518 /* PasscodeEntryController.swift */; }; + D0C9CA112302293400FAB518 /* PasscodeSetupControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA072302293300FAB518 /* PasscodeSetupControllerNode.swift */; }; + D0C9CA122302293400FAB518 /* PasscodeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA082302293300FAB518 /* PasscodeLayout.swift */; }; + D0C9CA132302293400FAB518 /* PasscodeLockIconNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA092302293300FAB518 /* PasscodeLockIconNode.swift */; }; + D0C9CA142302293400FAB518 /* PasscodeEntryInputFieldNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA0A2302293400FAB518 /* PasscodeEntryInputFieldNode.swift */; }; + D0C9CA152302293400FAB518 /* PasscodeEntryLabelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA0B2302293400FAB518 /* PasscodeEntryLabelNode.swift */; }; + D0C9CA162302293400FAB518 /* PasscodeEntryKeyboardNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA0C2302293400FAB518 /* PasscodeEntryKeyboardNode.swift */; }; + D0C9CA172302293400FAB518 /* PasscodeSetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA0D2302293400FAB518 /* PasscodeSetupController.swift */; }; + D0C9CA1C2302298E00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA1B2302298E00FAB518 /* Foundation.framework */; }; + D0C9CA1E2302299200FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA1D2302299200FAB518 /* UIKit.framework */; }; + D0C9CA202302299500FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA1F2302299500FAB518 /* Display.framework */; }; + D0C9CA222302299A00FAB518 /* ImageBlur.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA212302299A00FAB518 /* ImageBlur.framework */; }; + D0C9CA24230229A200FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA23230229A200FAB518 /* AsyncDisplayKit.framework */; }; + D0C9CA26230229AA00FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA25230229AA00FAB518 /* SwiftSignalKit.framework */; }; + D0C9CA28230229AF00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA27230229AF00FAB518 /* Postbox.framework */; }; + D0C9CA2A230229BA00FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA29230229BA00FAB518 /* TelegramPresentationData.framework */; }; + D0C9CA2C230229C200FAB518 /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA2B230229C200FAB518 /* TelegramUIPreferences.framework */; }; + D0C9CA2E230229C900FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA2D230229C900FAB518 /* AccountContext.framework */; }; + D0C9CA30230229D100FAB518 /* LocalAuth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA2F230229D100FAB518 /* LocalAuth.framework */; }; + D0C9CA32230229DE00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA31230229DE00FAB518 /* TelegramCore.framework */; }; + D0C9CA34230229F100FAB518 /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA33230229F100FAB518 /* LegacyComponents.framework */; }; + D0C9CA3623022A7400FAB518 /* TelegramStringFormatting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA3523022A7400FAB518 /* TelegramStringFormatting.framework */; }; + D0C9CA3A23022AA300FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA3923022AA300FAB518 /* FrameworkBundle.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C9F5230228D400FAB518 /* PasscodeUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PasscodeUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C9F8230228D400FAB518 /* PasscodeUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PasscodeUI.h; sourceTree = ""; }; + D0C9C9F9230228D400FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9CA042302293200FAB518 /* PasscodeEntryControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryControllerNode.swift; sourceTree = ""; }; + D0C9CA052302293300FAB518 /* PasscodeBackground.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeBackground.swift; sourceTree = ""; }; + D0C9CA062302293300FAB518 /* PasscodeEntryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryController.swift; sourceTree = ""; }; + D0C9CA072302293300FAB518 /* PasscodeSetupControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeSetupControllerNode.swift; sourceTree = ""; }; + D0C9CA082302293300FAB518 /* PasscodeLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeLayout.swift; sourceTree = ""; }; + D0C9CA092302293300FAB518 /* PasscodeLockIconNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeLockIconNode.swift; sourceTree = ""; }; + D0C9CA0A2302293400FAB518 /* PasscodeEntryInputFieldNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryInputFieldNode.swift; sourceTree = ""; }; + D0C9CA0B2302293400FAB518 /* PasscodeEntryLabelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryLabelNode.swift; sourceTree = ""; }; + D0C9CA0C2302293400FAB518 /* PasscodeEntryKeyboardNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryKeyboardNode.swift; sourceTree = ""; }; + D0C9CA0D2302293400FAB518 /* PasscodeSetupController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeSetupController.swift; sourceTree = ""; }; + D0C9CA1B2302298E00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9CA1D2302299200FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + D0C9CA1F2302299500FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA212302299A00FAB518 /* ImageBlur.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ImageBlur.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA23230229A200FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA25230229AA00FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA27230229AF00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA29230229BA00FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA2B230229C200FAB518 /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA2D230229C900FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA2F230229D100FAB518 /* LocalAuth.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LocalAuth.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA31230229DE00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA33230229F100FAB518 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA3523022A7400FAB518 /* TelegramStringFormatting.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramStringFormatting.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA3923022AA300FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C9F2230228D400FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9CA3623022A7400FAB518 /* TelegramStringFormatting.framework in Frameworks */, + D0C9CA34230229F100FAB518 /* LegacyComponents.framework in Frameworks */, + D0C9CA32230229DE00FAB518 /* TelegramCore.framework in Frameworks */, + D0C9CA30230229D100FAB518 /* LocalAuth.framework in Frameworks */, + D0C9CA2E230229C900FAB518 /* AccountContext.framework in Frameworks */, + D0C9CA2C230229C200FAB518 /* TelegramUIPreferences.framework in Frameworks */, + D0C9CA2A230229BA00FAB518 /* TelegramPresentationData.framework in Frameworks */, + D0C9CA28230229AF00FAB518 /* Postbox.framework in Frameworks */, + D0C9CA26230229AA00FAB518 /* SwiftSignalKit.framework in Frameworks */, + D0C9CA24230229A200FAB518 /* AsyncDisplayKit.framework in Frameworks */, + D0C9CA222302299A00FAB518 /* ImageBlur.framework in Frameworks */, + D0C9CA202302299500FAB518 /* Display.framework in Frameworks */, + D0C9CA1E2302299200FAB518 /* UIKit.framework in Frameworks */, + D0C9CA1C2302298E00FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C9EB230228D400FAB518 = { + isa = PBXGroup; + children = ( + D0C9C9F9230228D400FAB518 /* Info.plist */, + D0C9C9F7230228D400FAB518 /* Sources */, + D0C9C9F6230228D400FAB518 /* Products */, + D0C9CA1A2302298D00FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C9F6230228D400FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C9F5230228D400FAB518 /* PasscodeUI.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C9F7230228D400FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9CA052302293300FAB518 /* PasscodeBackground.swift */, + D0C9CA062302293300FAB518 /* PasscodeEntryController.swift */, + D0C9CA042302293200FAB518 /* PasscodeEntryControllerNode.swift */, + D0C9CA0A2302293400FAB518 /* PasscodeEntryInputFieldNode.swift */, + D0C9CA0C2302293400FAB518 /* PasscodeEntryKeyboardNode.swift */, + D0C9CA0B2302293400FAB518 /* PasscodeEntryLabelNode.swift */, + D0C9CA082302293300FAB518 /* PasscodeLayout.swift */, + D0C9CA092302293300FAB518 /* PasscodeLockIconNode.swift */, + D0C9CA0D2302293400FAB518 /* PasscodeSetupController.swift */, + D0C9CA072302293300FAB518 /* PasscodeSetupControllerNode.swift */, + D0C9CA3923022AA300FAB518 /* FrameworkBundle.swift */, + D0C9C9F8230228D400FAB518 /* PasscodeUI.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9CA1A2302298D00FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9CA3523022A7400FAB518 /* TelegramStringFormatting.framework */, + D0C9CA33230229F100FAB518 /* LegacyComponents.framework */, + D0C9CA31230229DE00FAB518 /* TelegramCore.framework */, + D0C9CA2F230229D100FAB518 /* LocalAuth.framework */, + D0C9CA2D230229C900FAB518 /* AccountContext.framework */, + D0C9CA2B230229C200FAB518 /* TelegramUIPreferences.framework */, + D0C9CA29230229BA00FAB518 /* TelegramPresentationData.framework */, + D0C9CA27230229AF00FAB518 /* Postbox.framework */, + D0C9CA25230229AA00FAB518 /* SwiftSignalKit.framework */, + D0C9CA23230229A200FAB518 /* AsyncDisplayKit.framework */, + D0C9CA212302299A00FAB518 /* ImageBlur.framework */, + D0C9CA1F2302299500FAB518 /* Display.framework */, + D0C9CA1D2302299200FAB518 /* UIKit.framework */, + D0C9CA1B2302298E00FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C9F0230228D400FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C9FA230228D400FAB518 /* PasscodeUI.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C9F4230228D400FAB518 /* PasscodeUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C9FD230228D400FAB518 /* Build configuration list for PBXNativeTarget "PasscodeUI" */; + buildPhases = ( + D0C9C9F0230228D400FAB518 /* Headers */, + D0C9C9F1230228D400FAB518 /* Sources */, + D0C9C9F2230228D400FAB518 /* Frameworks */, + D0C9C9F3230228D400FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PasscodeUI; + productName = PasscodeUI; + productReference = D0C9C9F5230228D400FAB518 /* PasscodeUI.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C9EC230228D400FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C9F4230228D400FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C9EF230228D400FAB518 /* Build configuration list for PBXProject "PasscodeUI_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C9EB230228D400FAB518; + productRefGroup = D0C9C9F6230228D400FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C9F4230228D400FAB518 /* PasscodeUI */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C9F3230228D400FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C9F1230228D400FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9CA0E2302293400FAB518 /* PasscodeEntryControllerNode.swift in Sources */, + D0C9CA152302293400FAB518 /* PasscodeEntryLabelNode.swift in Sources */, + D0C9CA162302293400FAB518 /* PasscodeEntryKeyboardNode.swift in Sources */, + D0C9CA172302293400FAB518 /* PasscodeSetupController.swift in Sources */, + D0C9CA0F2302293400FAB518 /* PasscodeBackground.swift in Sources */, + D0C9CA142302293400FAB518 /* PasscodeEntryInputFieldNode.swift in Sources */, + D0C9CA122302293400FAB518 /* PasscodeLayout.swift in Sources */, + D0C9CA132302293400FAB518 /* PasscodeLockIconNode.swift in Sources */, + D0C9CA3A23022AA300FAB518 /* FrameworkBundle.swift in Sources */, + D0C9CA102302293400FAB518 /* PasscodeEntryController.swift in Sources */, + D0C9CA112302293400FAB518 /* PasscodeSetupControllerNode.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C9FB230228D400FAB518 /* 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; + }; + D0C9C9FC230228D400FAB518 /* 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; + }; + D0C9C9FE230228D400FAB518 /* 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.PasscodeUI; + 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; + }; + D0C9C9FF230228D400FAB518 /* 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.PasscodeUI; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9CA00230228FB00FAB518 /* 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; + }; + D0C9CA01230228FB00FAB518 /* 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.PasscodeUI; + 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; + }; + D0C9CA022302290600FAB518 /* 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; + }; + D0C9CA032302290600FAB518 /* 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.PasscodeUI; + 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 */ + D0C9C9EF230228D400FAB518 /* Build configuration list for PBXProject "PasscodeUI_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C9FB230228D400FAB518 /* DebugAppStoreLLC */, + D0C9CA00230228FB00FAB518 /* DebugHockeyapp */, + D0C9C9FC230228D400FAB518 /* ReleaseAppStoreLLC */, + D0C9CA022302290600FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C9FD230228D400FAB518 /* Build configuration list for PBXNativeTarget "PasscodeUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C9FE230228D400FAB518 /* DebugAppStoreLLC */, + D0C9CA01230228FB00FAB518 /* DebugHockeyapp */, + D0C9C9FF230228D400FAB518 /* ReleaseAppStoreLLC */, + D0C9CA032302290600FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C9EC230228D400FAB518 /* Project object */; +} diff --git a/submodules/PasscodeUI/Sources/FrameworkBundle.swift b/submodules/PasscodeUI/Sources/FrameworkBundle.swift new file mode 100644 index 0000000000..8ca13d7d92 --- /dev/null +++ b/submodules/PasscodeUI/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/PasscodeBackground.swift b/submodules/PasscodeUI/Sources/PasscodeBackground.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/PasscodeBackground.swift rename to submodules/PasscodeUI/Sources/PasscodeBackground.swift index 333b85273f..9203e6c1cb 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeBackground.swift +++ b/submodules/PasscodeUI/Sources/PasscodeBackground.swift @@ -2,7 +2,6 @@ import Foundation import UIKit import Display import ImageBlur -import TelegramUIPrivateModule protocol PasscodeBackground { var size: CGSize { get } diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift b/submodules/PasscodeUI/Sources/PasscodeEntryController.swift similarity index 98% rename from submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift rename to submodules/PasscodeUI/Sources/PasscodeEntryController.swift index ce710c6c21..c6c4a57f62 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift +++ b/submodules/PasscodeUI/Sources/PasscodeEntryController.swift @@ -8,8 +8,9 @@ import TelegramPresentationData import TelegramUIPreferences import AccountContext import LocalAuth +import TelegramStringFormatting -final public class PasscodeEntryControllerPresentationArguments { +public final class PasscodeEntryControllerPresentationArguments { let animated: Bool let fadeIn: Bool let lockIconInitialFrame: () -> CGRect @@ -28,7 +29,7 @@ public enum PasscodeEntryControllerBiometricsMode { case enabled(Data?) } -final public class PasscodeEntryController: ViewController { +public final class PasscodeEntryController: ViewController { private var controllerNode: PasscodeEntryControllerNode { return self.displayNode as! PasscodeEntryControllerNode } @@ -88,7 +89,7 @@ final public class PasscodeEntryController: ViewController { self.inBackgroundDisposable?.dispose() } - required init(coder aDecoder: NSCoder) { + required public init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryControllerNode.swift b/submodules/PasscodeUI/Sources/PasscodeEntryControllerNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/PasscodeEntryControllerNode.swift rename to submodules/PasscodeUI/Sources/PasscodeEntryControllerNode.swift diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryInputFieldNode.swift b/submodules/PasscodeUI/Sources/PasscodeEntryInputFieldNode.swift similarity index 98% rename from submodules/TelegramUI/TelegramUI/PasscodeEntryInputFieldNode.swift rename to submodules/PasscodeUI/Sources/PasscodeEntryInputFieldNode.swift index a40c7ef3db..60f4279ba7 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeEntryInputFieldNode.swift +++ b/submodules/PasscodeUI/Sources/PasscodeEntryInputFieldNode.swift @@ -51,12 +51,12 @@ private let validDigitsSet: CharacterSet = { return CharacterSet(charactersIn: "0".unicodeScalars.first! ... "9".unicodeScalars.first!) }() -enum PasscodeEntryFieldType { +public enum PasscodeEntryFieldType { case digits6 case digits4 case alphanumeric - var maxLength: Int? { + public var maxLength: Int? { switch self { case .digits6: return 6 @@ -67,7 +67,7 @@ enum PasscodeEntryFieldType { } } - var allowedCharacters: CharacterSet? { + public var allowedCharacters: CharacterSet? { switch self { case .digits6, .digits4: return validDigitsSet @@ -76,7 +76,7 @@ enum PasscodeEntryFieldType { } } - var keyboardType: UIKeyboardType { + public var keyboardType: UIKeyboardType { switch self { case .digits6, .digits4: if #available(iOS 10.0, *) { diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryKeyboardNode.swift b/submodules/PasscodeUI/Sources/PasscodeEntryKeyboardNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/PasscodeEntryKeyboardNode.swift rename to submodules/PasscodeUI/Sources/PasscodeEntryKeyboardNode.swift diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryLabelNode.swift b/submodules/PasscodeUI/Sources/PasscodeEntryLabelNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/PasscodeEntryLabelNode.swift rename to submodules/PasscodeUI/Sources/PasscodeEntryLabelNode.swift diff --git a/submodules/TelegramUI/TelegramUI/PasscodeLayout.swift b/submodules/PasscodeUI/Sources/PasscodeLayout.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/PasscodeLayout.swift rename to submodules/PasscodeUI/Sources/PasscodeLayout.swift diff --git a/submodules/TelegramUI/TelegramUI/PasscodeLockIconNode.swift b/submodules/PasscodeUI/Sources/PasscodeLockIconNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/PasscodeLockIconNode.swift rename to submodules/PasscodeUI/Sources/PasscodeLockIconNode.swift diff --git a/submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift b/submodules/PasscodeUI/Sources/PasscodeSetupController.swift similarity index 90% rename from submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift rename to submodules/PasscodeUI/Sources/PasscodeSetupController.swift index 7db159bdf0..a48258ee4f 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift +++ b/submodules/PasscodeUI/Sources/PasscodeSetupController.swift @@ -8,12 +8,12 @@ import Postbox import TelegramPresentationData import AccountContext -enum PasscodeSetupControllerMode { +public enum PasscodeSetupControllerMode { case setup(change: Bool, PasscodeEntryFieldType) case entry(PostboxAccessChallengeData) } -final class PasscodeSetupController: ViewController { +public final class PasscodeSetupController: ViewController { private var controllerNode: PasscodeSetupControllerNode { return self.displayNode as! PasscodeSetupControllerNode } @@ -21,8 +21,8 @@ final class PasscodeSetupController: ViewController { private let context: AccountContext private var mode: PasscodeSetupControllerMode - var complete: ((String, Bool) -> Void)? - var check: ((String) -> Bool)? + public var complete: ((String, Bool) -> Void)? + public var check: ((String) -> Bool)? private let hapticFeedback = HapticFeedback() @@ -30,7 +30,7 @@ final class PasscodeSetupController: ViewController { private var nextAction: UIBarButtonItem? - init(context: AccountContext, mode: PasscodeSetupControllerMode) { + public init(context: AccountContext, mode: PasscodeSetupControllerMode) { self.context = context self.mode = mode self.presentationData = context.sharedContext.currentPresentationData.with { $0 } @@ -45,7 +45,7 @@ final class PasscodeSetupController: ViewController { self.title = self.presentationData.strings.PasscodeSettings_Title } - required init(coder aDecoder: NSCoder) { + required public init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } @@ -126,26 +126,26 @@ final class PasscodeSetupController: ViewController { } } - override func viewWillAppear(_ animated: Bool) { + override public func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.controllerNode.activateInput() } - override func viewDidAppear(_ animated: Bool) { + override public func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) self.view.disablesInteractiveTransitionGestureRecognizer = true self.controllerNode.activateInput() } - 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) } - @objc func nextPressed() { + @objc private func nextPressed() { self.controllerNode.activateNext() } } diff --git a/submodules/TelegramUI/TelegramUI/PasscodeSetupControllerNode.swift b/submodules/PasscodeUI/Sources/PasscodeSetupControllerNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/PasscodeSetupControllerNode.swift rename to submodules/PasscodeUI/Sources/PasscodeSetupControllerNode.swift diff --git a/submodules/PasscodeUI/Sources/PasscodeUI.h b/submodules/PasscodeUI/Sources/PasscodeUI.h new file mode 100644 index 0000000000..aff8b6a225 --- /dev/null +++ b/submodules/PasscodeUI/Sources/PasscodeUI.h @@ -0,0 +1,19 @@ +// +// PasscodeUI.h +// PasscodeUI +// +// Created by Peter on 8/13/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for PasscodeUI. +FOUNDATION_EXPORT double PasscodeUIVersionNumber; + +//! Project version string for PasscodeUI. +FOUNDATION_EXPORT const unsigned char PasscodeUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramUI/TelegramUI/NumberFormat.swift b/submodules/TelegramStringFormatting/Sources/NumberFormat.swift similarity index 81% rename from submodules/TelegramUI/TelegramUI/NumberFormat.swift rename to submodules/TelegramStringFormatting/Sources/NumberFormat.swift index ab36c7c313..987c42651a 100644 --- a/submodules/TelegramUI/TelegramUI/NumberFormat.swift +++ b/submodules/TelegramStringFormatting/Sources/NumberFormat.swift @@ -1,6 +1,6 @@ import Foundation -func convertToArabicNumeralString(_ string: String) -> String { +public func convertToArabicNumeralString(_ string: String) -> String { var string = string let arabicNumbers = ["٠": "0", "١": "1", "٢": "2", "٣": "3", "٤": "4", "٥": "5", "٦": "6", "٧": "7", "٨": "8", "٩": "9"] for (arabic, generic) in arabicNumbers { diff --git a/submodules/TelegramStringFormatting/TelegramStringFormatting_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramStringFormatting/TelegramStringFormatting_Xcode.xcodeproj/project.pbxproj index b8afb93043..9b75caa1b8 100644 --- a/submodules/TelegramStringFormatting/TelegramStringFormatting_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramStringFormatting/TelegramStringFormatting_Xcode.xcodeproj/project.pbxproj @@ -24,6 +24,7 @@ D0C9C35E2300AEF100FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C35D2300AEF100FAB518 /* Display.framework */; }; D0C9C3622300AFCC00FAB518 /* CurrencyFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3612300AFCB00FAB518 /* CurrencyFormat.swift */; }; D0C9C3642300AFE800FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3632300AFE800FAB518 /* FrameworkBundle.swift */; }; + D0C9CA3823022A8300FAB518 /* NumberFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA3723022A8300FAB518 /* NumberFormat.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -46,6 +47,7 @@ D0C9C35D2300AEF100FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0C9C3612300AFCB00FAB518 /* CurrencyFormat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CurrencyFormat.swift; sourceTree = ""; }; D0C9C3632300AFE800FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; + D0C9CA3723022A8300FAB518 /* NumberFormat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberFormat.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -88,6 +90,7 @@ D0879AAF22F7021000C4D6B3 /* Sources */ = { isa = PBXGroup; children = ( + D0C9CA3723022A8300FAB518 /* NumberFormat.swift */, D0C9C3612300AFCB00FAB518 /* CurrencyFormat.swift */, D0C9C3552300AD9900FAB518 /* MessageContentKind.swift */, D0C9C3572300ADCF00FAB518 /* ServiceMessageStrings.swift */, @@ -199,6 +202,7 @@ D0C9C3642300AFE800FAB518 /* FrameworkBundle.swift in Sources */, D0C9C3622300AFCC00FAB518 /* CurrencyFormat.swift in Sources */, D0C9C3562300AD9900FAB518 /* MessageContentKind.swift in Sources */, + D0C9CA3823022A8300FAB518 /* NumberFormat.swift in Sources */, D0879ACA22F7063300C4D6B3 /* DateFormat.swift in Sources */, D0879ABD22F705AE00C4D6B3 /* PresenceStrings.swift in Sources */, D0C9C3542300AD7000FAB518 /* StringForDuration.swift in Sources */, diff --git a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift index 7eb20a9383..621d517387 100644 --- a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift +++ b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift @@ -15,6 +15,7 @@ import TelegramPermissions import TelegramNotices import LegacyUI import TelegramPermissionsUI +import PasscodeUI func isAccessLocked(data: PostboxAccessChallengeData, at timestamp: Int32) -> Bool { if data.isLockable, let autolockDeadline = data.autolockDeadline, autolockDeadline <= timestamp { diff --git a/submodules/TelegramUI/TelegramUI/ChatContextResultManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/ChatContextResultManagedMediaId.swift deleted file mode 100644 index 8d228e1d3b..0000000000 --- a/submodules/TelegramUI/TelegramUI/ChatContextResultManagedMediaId.swift +++ /dev/null @@ -1,23 +0,0 @@ -import Foundation -import TelegramCore -import Postbox - -struct ChatContextResultManagedMediaId: ManagedMediaId { - let result: ChatContextResult - - init(result: ChatContextResult) { - self.result = result - } - - var hashValue: Int { - return self.result.id.hashValue - } - - func isEqual(to: ManagedMediaId) -> Bool { - if let to = to as? ChatContextResultManagedMediaId { - return self.result == to.result - } else { - return false - } - } -} diff --git a/submodules/TelegramUI/TelegramUI/ExtractVideoData.swift b/submodules/TelegramUI/TelegramUI/ExtractVideoData.swift deleted file mode 100644 index 591fdb5a0a..0000000000 --- a/submodules/TelegramUI/TelegramUI/ExtractVideoData.swift +++ /dev/null @@ -1,7 +0,0 @@ -import Foundation -import SwiftSignalKit -import Postbox - -func extractVideoDimensions() { - -} diff --git a/submodules/TelegramUI/TelegramUI/ManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/ManagedMediaId.swift deleted file mode 100644 index 0029c53f39..0000000000 --- a/submodules/TelegramUI/TelegramUI/ManagedMediaId.swift +++ /dev/null @@ -1,6 +0,0 @@ -import Foundation - -protocol ManagedMediaId { - var hashValue: Int { get } - func isEqual(to: ManagedMediaId) -> Bool -} diff --git a/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift b/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift index e90081f234..efd05b9ce4 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift +++ b/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift @@ -11,6 +11,8 @@ import TelegramUIPreferences import ItemListUI import AccountContext import LocalAuth +import PasscodeUI +import TelegramStringFormatting private final class PasscodeOptionsControllerArguments { let turnPasscodeOff: () -> Void diff --git a/submodules/TelegramUI/TelegramUI/PeerMessageManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/PeerMessageManagedMediaId.swift deleted file mode 100644 index 3bc5040bc4..0000000000 --- a/submodules/TelegramUI/TelegramUI/PeerMessageManagedMediaId.swift +++ /dev/null @@ -1,22 +0,0 @@ -import Foundation -import Postbox - -struct PeerMessageManagedMediaId: ManagedMediaId { - let messageId: MessageId - - init(messageId: MessageId) { - self.messageId = messageId - } - - var hashValue: Int { - return self.messageId.hashValue - } - - func isEqual(to: ManagedMediaId) -> Bool { - if let to = to as? PeerMessageManagedMediaId { - return self.messageId == to.messageId - } else { - return false - } - } -} diff --git a/submodules/TelegramUI/TelegramUI/RecentGifManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/RecentGifManagedMediaId.swift deleted file mode 100644 index 8474854ba6..0000000000 --- a/submodules/TelegramUI/TelegramUI/RecentGifManagedMediaId.swift +++ /dev/null @@ -1,23 +0,0 @@ -import Foundation -import TelegramCore -import Postbox - -struct RecentGifManagedMediaId: ManagedMediaId { - let id: MediaId - - init(id: MediaId) { - self.id = id - } - - var hashValue: Int { - return self.id.hashValue - } - - func isEqual(to: ManagedMediaId) -> Bool { - if let to = to as? RecentGifManagedMediaId { - return self.id == to.id - } else { - return false - } - } -} diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj index 337f6cfadd..1cb9d86f6f 100644 --- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj @@ -31,7 +31,6 @@ 09310D33213ED5FC0020033A /* anim_group.json in Resources */ = {isa = PBXBuildFile; fileRef = 09310D1B213BC5DE0020033A /* anim_group.json */; }; 0940932422E73DFB003846A3 /* ChatSendMessageActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0940932322E73DFB003846A3 /* ChatSendMessageActionSheetController.swift */; }; 0940932622E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0940932522E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift */; }; - 094735032275B62B00EA2312 /* PasscodeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094735022275B62B00EA2312 /* PasscodeLayout.swift */; }; 0947350E2275D72100EA2312 /* anim_hide.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735042275D71F00EA2312 /* anim_hide.json */; }; 0947350F2275D72100EA2312 /* anim_unread.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735052275D72000EA2312 /* anim_unread.json */; }; 094735102275D72100EA2312 /* anim_read.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735062275D72000EA2312 /* anim_read.json */; }; @@ -104,7 +103,6 @@ 09DD88EF21BDDE2B000766BC /* Geocoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88EE21BDDE2B000766BC /* Geocoding.swift */; }; 09DD88F321BF907C000766BC /* WebSearchRecentQueryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */; }; 09DD88F521BF9730000766BC /* WebSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */; }; - 09DE2F252269B7E80045E975 /* PasscodeSetupControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.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 */; }; @@ -114,7 +112,6 @@ 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 */; }; - 09EC5CDC22CBD33D00292E42 /* NumberFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EC5CDB22CBD33D00292E42 /* NumberFormat.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 */; }; @@ -123,14 +120,6 @@ 09F21563225C776100AEDF6D /* ChatListBadgeNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */; }; 09F21565225C83E100AEDF6D /* ChatListStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */; }; 09F2158D225CF5BC00AEDF6D /* Pasteboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */; }; - 09F2159A2263E62900AEDF6D /* PasscodeEntryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215992263E62900AEDF6D /* PasscodeEntryController.swift */; }; - 09F2159C2263E63200AEDF6D /* PasscodeEntryControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2159B2263E63200AEDF6D /* PasscodeEntryControllerNode.swift */; }; - 09F215A022649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2159F22649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift */; }; - 09F215A422649C2200AEDF6D /* PasscodeEntryLabelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215A322649C2200AEDF6D /* PasscodeEntryLabelNode.swift */; }; - 09F215A622649C3000AEDF6D /* PasscodeLockIconNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215A522649C3000AEDF6D /* PasscodeLockIconNode.swift */; }; - 09F215A822649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215A722649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift */; }; - 09F215AB2264ABA600AEDF6D /* PasscodeBackground.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215AA2264ABA600AEDF6D /* PasscodeBackground.swift */; }; - 09F215AD2264DC4500AEDF6D /* PasscodeSetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215AC2264DC4500AEDF6D /* PasscodeSetupController.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 */; }; @@ -520,6 +509,7 @@ D0C9C98F2302154500FAB518 /* TelegramPermissionsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C98E2302154500FAB518 /* TelegramPermissionsUI.framework */; }; D0C9C9BB2302168100FAB518 /* PeersNearbyIconNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C9BA2302168100FAB518 /* PeersNearbyIconNode.framework */; }; D0C9C9DE2302267200FAB518 /* SolidRoundedButtonNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */; }; + D0C9CA192302297C00FAB518 /* PasscodeUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA182302297C00FAB518 /* PasscodeUI.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 */; }; @@ -609,10 +599,6 @@ D0EC6CD71EB9F58800EBF1C3 /* EmojiUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01D6BFB1E42AB3C006151C6 /* EmojiUtils.swift */; }; D0EC6CD91EB9F58800EBF1C3 /* ValidateAddressNameInteractive.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E305A41E5B2BFB00D7A3A2 /* ValidateAddressNameInteractive.swift */; }; D0EC6CDC1EB9F58800EBF1C3 /* TelegramAccountAuxiliaryMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */; }; - D0EC6CF41EB9F58800EBF1C3 /* ManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */; }; - D0EC6CF51EB9F58800EBF1C3 /* PeerMessageManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */; }; - D0EC6CF61EB9F58800EBF1C3 /* ChatContextResultManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */; }; - D0EC6CF71EB9F58800EBF1C3 /* RecentGifManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */; }; D0EC6CF91EB9F58800EBF1C3 /* MediaManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */; }; D0EC6CFB1EB9F58800EBF1C3 /* ManagedAudioRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */; }; D0EC6CFD1EB9F58800EBF1C3 /* AudioWaveform.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B2B1DED9B8900220C46 /* AudioWaveform.swift */; }; @@ -882,7 +868,6 @@ D0F760DD222034980074F7E5 /* ChannelStatsControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F760DC222034980074F7E5 /* ChannelStatsControllerNode.swift */; }; D0F9720F1FFE4BD5002595C8 /* notification.caf in Resources */ = {isa = PBXBuildFile; fileRef = D0C50E431E93FCD200F62E39 /* notification.caf */; }; D0F972101FFE4BD5002595C8 /* MessageSent.caf in Resources */ = {isa = PBXBuildFile; fileRef = D073CE621DCBBE5D007511FD /* MessageSent.caf */; }; - D0FA08C020483F9600DD23FC /* ExtractVideoData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08BF20483F9600DD23FC /* ExtractVideoData.swift */; }; D0FA08C8204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08C7204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift */; }; D0FA08CA2049BEAC00DD23FC /* ChatEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08C92049BEAC00DD23FC /* ChatEmptyNode.swift */; }; D0FAB13E22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FAB13D22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift */; }; @@ -916,7 +901,6 @@ 09310D1B213BC5DE0020033A /* anim_group.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_group.json; sourceTree = ""; }; 0940932322E73DFB003846A3 /* ChatSendMessageActionSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSendMessageActionSheetController.swift; sourceTree = ""; }; 0940932522E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSendMessageActionSheetControllerNode.swift; sourceTree = ""; }; - 094735022275B62B00EA2312 /* PasscodeLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeLayout.swift; sourceTree = ""; }; 094735042275D71F00EA2312 /* anim_hide.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_hide.json; sourceTree = ""; }; 094735052275D72000EA2312 /* anim_unread.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unread.json; sourceTree = ""; }; 094735062275D72000EA2312 /* anim_read.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_read.json; sourceTree = ""; }; @@ -989,7 +973,6 @@ 09DD88EE21BDDE2B000766BC /* Geocoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Geocoding.swift; sourceTree = ""; }; 09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueryItem.swift; sourceTree = ""; }; 09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueries.swift; sourceTree = ""; }; - 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeSetupControllerNode.swift; sourceTree = ""; }; 09DE2F262269D5730045E975 /* PrivacyIntroController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroController.swift; sourceTree = ""; }; 09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroControllerNode.swift; sourceTree = ""; }; 09E2D9ED226F1AF300EA0AA4 /* Emoji.mapping */ = {isa = PBXFileReference; lastKnownFileType = file; name = Emoji.mapping; path = TelegramUI/Resources/Emoji.mapping; sourceTree = ""; }; @@ -999,7 +982,6 @@ 09E4A804223D4A5A0038140F /* OpenSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenSettings.swift; sourceTree = ""; }; 09E4A806223D4B860038140F /* AccountUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountUtils.swift; sourceTree = ""; }; 09EC0DEC22CB583C00E7185B /* TextLinkHandling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkHandling.swift; sourceTree = ""; }; - 09EC5CDB22CBD33D00292E42 /* NumberFormat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberFormat.swift; sourceTree = ""; }; 09EDAD25220D30980012A50B /* AutodownloadConnectionTypeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadConnectionTypeController.swift; sourceTree = ""; }; 09EDAD29220DA6A40012A50B /* VolumeButtons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VolumeButtons.swift; sourceTree = ""; }; 09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadMediaCategoryController.swift; sourceTree = ""; }; @@ -1008,14 +990,6 @@ 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListBadgeNode.swift; sourceTree = ""; }; 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListStatusNode.swift; sourceTree = ""; }; 09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pasteboard.swift; sourceTree = ""; }; - 09F215992263E62900AEDF6D /* PasscodeEntryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryController.swift; sourceTree = ""; }; - 09F2159B2263E63200AEDF6D /* PasscodeEntryControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryControllerNode.swift; sourceTree = ""; }; - 09F2159F22649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryInputFieldNode.swift; sourceTree = ""; }; - 09F215A322649C2200AEDF6D /* PasscodeEntryLabelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryLabelNode.swift; sourceTree = ""; }; - 09F215A522649C3000AEDF6D /* PasscodeLockIconNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeLockIconNode.swift; sourceTree = ""; }; - 09F215A722649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryKeyboardNode.swift; sourceTree = ""; }; - 09F215AA2264ABA600AEDF6D /* PasscodeBackground.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeBackground.swift; sourceTree = ""; }; - 09F215AC2264DC4500AEDF6D /* PasscodeSetupController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeSetupController.swift; sourceTree = ""; }; 09F664BF21EAAFAF00AB7E26 /* ThemeColorsGridController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridController.swift; sourceTree = ""; }; 09F664C121EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridControllerNode.swift; sourceTree = ""; }; 09F664C321EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridControllerItem.swift; sourceTree = ""; }; @@ -1386,9 +1360,6 @@ D099E21F229405BB00561B75 /* Weak.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Weak.swift; sourceTree = ""; }; D099EA1E1DE7450B001AF5A8 /* HorizontalListContextResultsChatInputContextPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalListContextResultsChatInputContextPanelNode.swift; sourceTree = ""; }; D099EA201DE7451D001AF5A8 /* HorizontalListContextResultsChatInputPanelItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalListContextResultsChatInputPanelItem.swift; sourceTree = ""; }; - D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagedMediaId.swift; sourceTree = ""; }; - D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMessageManagedMediaId.swift; sourceTree = ""; }; - D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatContextResultManagedMediaId.swift; sourceTree = ""; }; D09D88721F86D56B00BEB4C9 /* AuthorizationLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationLayout.swift; sourceTree = ""; }; D09E637B1F0E7C28003444CD /* SharedMediaPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedMediaPlayer.swift; sourceTree = ""; }; D09E637E1F0E8C9F003444CD /* PeerMessagesMediaPlaylist.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMessagesMediaPlaylist.swift; sourceTree = ""; }; @@ -1581,6 +1552,7 @@ D0C9C98E2302154500FAB518 /* TelegramPermissionsUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPermissionsUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0C9C9BA2302168100FAB518 /* PeersNearbyIconNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PeersNearbyIconNode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SolidRoundedButtonNode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9CA182302297C00FAB518 /* PasscodeUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PasscodeUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEditInterfaceMessageState.swift; sourceTree = ""; }; D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceController.swift; sourceTree = ""; }; D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceControllerNode.swift; sourceTree = ""; }; @@ -1737,7 +1709,6 @@ D0EF40DE1E73100D000DFCD4 /* ChatHistoryNavigationStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatHistoryNavigationStack.swift; sourceTree = ""; }; D0F02CCB1E96EF350065DEE2 /* ChatMediaInputStickerPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputStickerPane.swift; sourceTree = ""; }; D0F02CCD1E96FACE0065DEE2 /* ChatMediaInputGifPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputGifPane.swift; sourceTree = ""; }; - D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentGifManagedMediaId.swift; sourceTree = ""; }; D0F19F6120E5694D00EEC860 /* GroupStickerPackCurrentItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupStickerPackCurrentItem.swift; sourceTree = ""; }; D0F19F6320E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPeerSpecificItem.swift; sourceTree = ""; }; D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelegramAccountAuxiliaryMethods.swift; sourceTree = ""; }; @@ -1797,7 +1768,6 @@ D0F760DA222034910074F7E5 /* ChannelStatsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelStatsController.swift; sourceTree = ""; }; D0F760DC222034980074F7E5 /* ChannelStatsControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelStatsControllerNode.swift; sourceTree = ""; }; D0F7AB381DCFF87B009AD9A1 /* ChatMessageDateHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageDateHeader.swift; sourceTree = ""; }; - D0FA08BF20483F9600DD23FC /* ExtractVideoData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtractVideoData.swift; sourceTree = ""; }; D0FA08C7204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextInputActionButtonsNode.swift; sourceTree = ""; }; D0FA08C92049BEAC00DD23FC /* ChatEmptyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEmptyNode.swift; sourceTree = ""; }; D0FA0ABE1E76E17F005BB9B7 /* TwoStepVerificationPasswordEntryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoStepVerificationPasswordEntryController.swift; sourceTree = ""; }; @@ -1820,6 +1790,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D0C9CA192302297C00FAB518 /* PasscodeUI.framework in Frameworks */, D0C9C9DE2302267200FAB518 /* SolidRoundedButtonNode.framework in Frameworks */, D0C9C9BB2302168100FAB518 /* PeersNearbyIconNode.framework in Frameworks */, D0C9C98F2302154500FAB518 /* TelegramPermissionsUI.framework in Frameworks */, @@ -2129,30 +2100,6 @@ name = Data; sourceTree = ""; }; - 09E4A7FF223AE0440038140F /* UI */ = { - isa = PBXGroup; - children = ( - ); - name = UI; - sourceTree = ""; - }; - 09F215982263E61400AEDF6D /* Passcode */ = { - isa = PBXGroup; - children = ( - 09F215AA2264ABA600AEDF6D /* PasscodeBackground.swift */, - 09F215992263E62900AEDF6D /* PasscodeEntryController.swift */, - 09F2159B2263E63200AEDF6D /* PasscodeEntryControllerNode.swift */, - 09F215A722649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift */, - 09F2159F22649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift */, - 09F215A322649C2200AEDF6D /* PasscodeEntryLabelNode.swift */, - 09F215A522649C3000AEDF6D /* PasscodeLockIconNode.swift */, - 09F215AC2264DC4500AEDF6D /* PasscodeSetupController.swift */, - 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */, - 094735022275B62B00EA2312 /* PasscodeLayout.swift */, - ); - name = Passcode; - sourceTree = ""; - }; D008178022B47450008A895F /* Notification Content */ = { isa = PBXGroup; children = ( @@ -2276,7 +2223,6 @@ 0900678E21ED8E0E00530762 /* HexColor.swift */, 0947FCAF224055990086741C /* StringHash.swift */, 09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */, - 09EC5CDB22CBD33D00292E42 /* NumberFormat.swift */, ); name = Strings; sourceTree = ""; @@ -2735,6 +2681,7 @@ D08D45281D5E340200A7428A /* Frameworks */ = { isa = PBXGroup; children = ( + D0C9CA182302297C00FAB518 /* PasscodeUI.framework */, D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */, D0C9C9BA2302168100FAB518 /* PeersNearbyIconNode.framework */, D0C9C98E2302154500FAB518 /* TelegramPermissionsUI.framework */, @@ -3467,10 +3414,6 @@ isa = PBXGroup; children = ( D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */, - D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */, - D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */, - D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */, - D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */, D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */, D0CFBB901FD881A600B65C0D /* AudioRecordningToneData.swift */, D0D03B2B1DED9B8900220C46 /* AudioWaveform.swift */, @@ -3482,7 +3425,6 @@ 0919546D229458E900E11046 /* Animated Stickers */, D0F69E9D1D6B8E240046BCD6 /* Resources */, D0177B831DFB095000A5083A /* FileMediaResourceStatus.swift */, - D0FA08BF20483F9600DD23FC /* ExtractVideoData.swift */, D0ADF965212E05A300310BBC /* TonePlayer.swift */, 0910B0EC21FA178C00F8F87D /* WallpaperPreviewMedia.swift */, ); @@ -3554,7 +3496,6 @@ D01BAA161ECC8DED00295217 /* Call List */, D0F69E791D6B8C3B0046BCD6 /* Settings */, D0C50E361E93CAF200F62E39 /* Notifications */, - 09F215982263E61400AEDF6D /* Passcode */, 090E778422A9B94700CD99F5 /* Peers Nearby */, ); name = Controllers; @@ -3838,7 +3779,6 @@ D04614352005093B00EC0EF2 /* Location */, 09E4A7FD223ADF940038140F /* Routing */, D01848F021A2323D00B6DEBD /* Strings */, - 09E4A7FF223AE0440038140F /* UI */, D073CE701DCBF23F007511FD /* DeclareEncodables.swift */, D073CE641DCBC26B007511FD /* ServiceSoundManager.swift */, D0E305A41E5B2BFB00D7A3A2 /* ValidateAddressNameInteractive.swift */, @@ -4263,14 +4203,10 @@ D02B2B9820810DA00062476B /* StickerPaneSearchStickerItem.swift in Sources */, D020A9DC1FEAE6E7008C66F7 /* OverlayPlayerControllerNode.swift in Sources */, 09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */, - D0EC6CF41EB9F58800EBF1C3 /* ManagedMediaId.swift in Sources */, 09D968A3221F800A00B1458A /* ChatUploadingActivityContentNode.swift in Sources */, - D0EC6CF51EB9F58800EBF1C3 /* PeerMessageManagedMediaId.swift in Sources */, - D0EC6CF61EB9F58800EBF1C3 /* ChatContextResultManagedMediaId.swift in Sources */, 090E778622A9B95A00CD99F5 /* PeersNearbyController.swift in Sources */, D04ECD721FFBF22B00DE9029 /* OpenUrl.swift in Sources */, D056CD7A1FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift in Sources */, - D0EC6CF71EB9F58800EBF1C3 /* RecentGifManagedMediaId.swift in Sources */, D0EC6CF91EB9F58800EBF1C3 /* MediaManager.swift in Sources */, 0962E66521B3631100245FD9 /* WebSearchNavigationContentNode.swift in Sources */, D0EB5ADF1F798033004E89B6 /* PeerMediaCollectionEmptyNode.swift in Sources */, @@ -4352,7 +4288,6 @@ D0EC6D2A1EB9F58800EBF1C3 /* FetchPhotoLibraryImageResource.swift in Sources */, D0EC6D2B1EB9F58800EBF1C3 /* FileMediaResourceStatus.swift in Sources */, 09510B0F22F9347E0078CAB7 /* BundleResource.swift in Sources */, - D0FA08C020483F9600DD23FC /* ExtractVideoData.swift in Sources */, D025402522E1E00100AC0195 /* ChatSlowmodeHintController.swift in Sources */, D008177D22B46B7E008A895F /* TGContactModel.m in Sources */, D0EC6D301EB9F58800EBF1C3 /* RadialProgressNode.swift in Sources */, @@ -4371,14 +4306,12 @@ D0EB42011F30ED4F00838FE6 /* LegacyImageProcessors.m in Sources */, D01590C322BDAEBC0017C33E /* BMPImage.cpp in Sources */, D0CE8CE51F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift in Sources */, - 09F215AD2264DC4500AEDF6D /* PasscodeSetupController.swift in Sources */, D097C26820DD0A1D007BB4B8 /* PeerReportController.swift in Sources */, 09F664C621EB400A00AB7E26 /* ThemeGridSearchContentNode.swift in Sources */, D01BAA181ECC8E0000295217 /* CallListController.swift in Sources */, D0EC6D4B1EB9F58800EBF1C3 /* ChatListNode.swift in Sources */, D0EC6D4D1EB9F58800EBF1C3 /* ChatListHoleItem.swift in Sources */, 0962E67921B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift in Sources */, - 09DE2F252269B7E80045E975 /* PasscodeSetupControllerNode.swift in Sources */, D0EC6D4E1EB9F58800EBF1C3 /* ChatListItem.swift in Sources */, D0B2F76A2052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift in Sources */, D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */, @@ -4418,7 +4351,6 @@ D0B85C1E1FF6F76600E795B4 /* AuthorizationSequencePasswordRecoveryControllerNode.swift in Sources */, 09B4EE4721A6D33F00847FA6 /* RecentSessionsEmptyStateItem.swift in Sources */, 09F664C421EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift in Sources */, - 09F2159C2263E63200AEDF6D /* PasscodeEntryControllerNode.swift in Sources */, D07E413D208A494D00FCA8F0 /* ProxyServerActionSheetController.swift in Sources */, D02C81732177AC5900CD1006 /* NotificationSearchItem.swift in Sources */, D018BE58218C7BD800C02DDC /* ChatMessageDeliveryFailedNode.swift in Sources */, @@ -4452,7 +4384,6 @@ D00817D622B47A14008A895F /* TGProxyItem.m in Sources */, D0EC6D7A1EB9F58800EBF1C3 /* ChatListSearchContainerNode.swift in Sources */, D0EC6D7B1EB9F58800EBF1C3 /* ChatListRecentPeersListItem.swift in Sources */, - 09F215A022649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift in Sources */, 0910B0ED21FA178C00F8F87D /* WallpaperPreviewMedia.swift in Sources */, D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */, D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */, @@ -4596,7 +4527,6 @@ D0EC6DD21EB9F58900EBF1C3 /* MentionChatInputContextPanelNode.swift in Sources */, D00701A22029F6D0006B9E34 /* TGMimeTypeMap.m in Sources */, D0EC6DD31EB9F58900EBF1C3 /* MentionChatInputPanelItem.swift in Sources */, - 094735032275B62B00EA2312 /* PasscodeLayout.swift in Sources */, D0EC6DD41EB9F58900EBF1C3 /* CommandChatInputContextPanelNode.swift in Sources */, D0EC6DD51EB9F58900EBF1C3 /* CommandChatInputPanelItem.swift in Sources */, D0EC6DD61EB9F58900EBF1C3 /* VerticalListContextResultsChatInputContextPanelNode.swift in Sources */, @@ -4635,7 +4565,6 @@ D0EC6DE71EB9F58900EBF1C3 /* ChatTitleAccessoryPanelNode.swift in Sources */, D0EC6DE81EB9F58900EBF1C3 /* ChatPinnedMessageTitlePanelNode.swift in Sources */, D0EC6DE91EB9F58900EBF1C3 /* ChatInfoTitlePanelNode.swift in Sources */, - 09F2159A2263E62900AEDF6D /* PasscodeEntryController.swift in Sources */, 09D96899221DE92600B1458A /* ID3ArtworkReader.swift in Sources */, D0EC6DEA1EB9F58900EBF1C3 /* ChatReportPeerTitlePanelNode.swift in Sources */, D0B21B1F22156D92003F741D /* LegacyCache.swift in Sources */, @@ -4654,7 +4583,6 @@ 09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */, D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */, D0EC6DFB1EB9F58900EBF1C3 /* AvatarGalleryController.swift in Sources */, - 09EC5CDC22CBD33D00292E42 /* NumberFormat.swift in Sources */, D00817DB22B47A14008A895F /* LegacyChatImport.swift in Sources */, 09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */, 090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */, @@ -4675,7 +4603,6 @@ D04554A421B42982007A6DD9 /* ConfirmPhoneNumberController.swift in Sources */, D07ABBA5202A14BC003671DE /* LegacyImagePicker.swift in Sources */, D0EC6E0E1EB9F58900EBF1C3 /* PeerAvatarImageGalleryItem.swift in Sources */, - 09F215A822649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift in Sources */, D0D4345C1F97CEAA00CC1806 /* ProxyServerSettingsController.swift in Sources */, D08BDF641FA37BEA009D08E1 /* ChatRecordingPreviewInputPanelNode.swift in Sources */, D0943B071FDEC529001522CC /* InstantVideoRadialStatusNode.swift in Sources */, @@ -4699,7 +4626,6 @@ D0AF323A1FB1D8D60097362B /* ChatOverlayNavigationBar.swift in Sources */, D0943AF61FDAAE7E001522CC /* MultipleAvatarsNode.swift in Sources */, D0EC6E2B1EB9F58900EBF1C3 /* ComposeController.swift in Sources */, - 09F215A422649C2200AEDF6D /* PasscodeEntryLabelNode.swift in Sources */, 09749BCF21F236F2008FDDE9 /* ModernCheckNode.swift in Sources */, 0940932422E73DFB003846A3 /* ChatSendMessageActionSheetController.swift in Sources */, D0EC6E2C1EB9F58900EBF1C3 /* ComposeControllerNode.swift in Sources */, @@ -4715,7 +4641,6 @@ D0EC6E331EB9F58900EBF1C3 /* CreateChannelController.swift in Sources */, D0AA29AE1F72770D00C050AC /* ChatListItemStrings.swift in Sources */, D0EC6E351EB9F58900EBF1C3 /* ItemListAvatarAndNameItem.swift in Sources */, - 09F215A622649C3000AEDF6D /* PasscodeLockIconNode.swift in Sources */, D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */, D04203152037162700490EA5 /* MediaInputPaneTrendingItem.swift in Sources */, D0EC6E3C1EB9F58900EBF1C3 /* ItemListPeerActionItem.swift in Sources */, @@ -4809,7 +4734,6 @@ D0E8175B201254FA00B82BBB /* ChatRecentActionsEmptyNode.swift in Sources */, 09510B1522F96E6C0078CAB7 /* ChatScheduleTimeControllerNode.swift in Sources */, D0EC6E7D1EB9F58900EBF1C3 /* ChangePhoneNumberIntroController.swift in Sources */, - 09F215AB2264ABA600AEDF6D /* PasscodeBackground.swift in Sources */, D0EC6E7E1EB9F58900EBF1C3 /* ChangePhoneNumberController.swift in Sources */, D0B21B17220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift in Sources */, D0EC6E7F1EB9F58900EBF1C3 /* ChangePhoneNumberControllerNode.swift in Sources */,