diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata index e681a480b3..905405c567 100644 --- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata +++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata @@ -74,6 +74,12 @@ + + + + @@ -138,6 +144,9 @@ + + + + @@ -325,6 +337,12 @@ + + + + diff --git a/submodules/AccountContext/Sources/AccountContext.swift b/submodules/AccountContext/Sources/AccountContext.swift index 129ae09bb3..8cb6cead67 100644 --- a/submodules/AccountContext/Sources/AccountContext.swift +++ b/submodules/AccountContext/Sources/AccountContext.swift @@ -145,6 +145,71 @@ public struct ChatAvailableMessageActions { } } +public enum WallpaperUrlParameter { + case slug(String, WallpaperPresentationOptions, UIColor?, Int32?) + case color(UIColor) +} + +public enum ResolvedUrl { + case externalUrl(String) + case peer(PeerId?, ChatControllerInteractionNavigateToPeer) + case inaccessiblePeer + case botStart(peerId: PeerId, payload: String) + case groupBotStart(peerId: PeerId, payload: String) + case channelMessage(peerId: PeerId, messageId: MessageId) + case stickerPack(name: String) + case instantView(TelegramMediaWebpage, String?) + case proxy(host: String, port: Int32, username: String?, password: String?, secret: Data?) + case join(String) + case localization(String) + case confirmationCode(Int) + case cancelAccountReset(phone: String, hash: String) + case share(url: String?, text: String?, to: String?) + case wallpaper(WallpaperUrlParameter) +} + +public enum NavigateToChatKeepStack { + case `default` + case always + case never +} + +public final class NavigateToChatControllerParams { + public let navigationController: NavigationController + public let chatController: ChatController? + public let context: AccountContext + public let chatLocation: ChatLocation + public let messageId: MessageId? + public let botStart: ChatControllerInitialBotStart? + public let updateTextInputState: ChatTextInputState? + public let activateInput: Bool + public let keepStack: NavigateToChatKeepStack + public let purposefulAction: (() -> Void)? + public let scrollToEndIfExists: Bool + public let animated: Bool + public let options: NavigationAnimationOptions + public let parentGroupId: PeerGroupId? + public let completion: () -> Void + + public init(navigationController: NavigationController, chatController: ChatController? = nil, context: AccountContext, chatLocation: ChatLocation, messageId: MessageId? = nil, botStart: ChatControllerInitialBotStart? = nil, updateTextInputState: ChatTextInputState? = nil, activateInput: Bool = false, keepStack: NavigateToChatKeepStack = .default, purposefulAction: (() -> Void)? = nil, scrollToEndIfExists: Bool = false, animated: Bool = true, options: NavigationAnimationOptions = [], parentGroupId: PeerGroupId? = nil, completion: @escaping () -> Void = {}) { + self.navigationController = navigationController + self.chatController = chatController + self.context = context + self.chatLocation = chatLocation + self.messageId = messageId + self.botStart = botStart + self.updateTextInputState = updateTextInputState + self.activateInput = activateInput + self.keepStack = keepStack + self.purposefulAction = purposefulAction + self.scrollToEndIfExists = scrollToEndIfExists + self.animated = animated + self.options = options + self.parentGroupId = parentGroupId + self.completion = completion + } +} + public protocol SharedAccountContext: class { var basePath: String { get } var mainWindow: Window1? { get } @@ -181,8 +246,11 @@ public protocol SharedAccountContext: class { func messageFromPreloadedChatHistoryViewForLocation(id: MessageId, location: ChatHistoryLocationInput, account: Account, chatLocation: ChatLocation, tagMask: MessageTags?) -> Signal<(MessageIndex?, Bool), NoError> func makeOverlayAudioPlayerController(context: AccountContext, peerId: PeerId, type: MediaManagerPlayerType, initialMessageId: MessageId, initialOrder: MusicPlaybackSettingsOrder, parentNavigationController: NavigationController?) -> ViewController & OverlayAudioPlayerController func makePeerInfoController(context: AccountContext, peer: Peer) -> ViewController? + func navigateToChatController(_ params: NavigateToChatControllerParams) func openExternalUrl(context: AccountContext, urlContext: OpenURLContext, url: String, forceExternal: Bool, presentationData: PresentationData, navigationController: NavigationController?, dismissInput: @escaping () -> Void) - func chatAvailableMessageActions(postbox: Postbox, accountPeerId: PeerId, messageIds: Set) -> Signal + func chatAvailableMessageActions(postbox: Postbox, accountPeerId: PeerId, messageIds: Set) -> Signal + func resolveUrl(account: Account, url: String) -> Signal + func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlContext: OpenURLContext, navigationController: NavigationController?, openPeer: @escaping (PeerId, ChatControllerInteractionNavigateToPeer) -> Void, sendFile: ((FileMediaReference) -> Void)?, sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void) func navigateToCurrentCall() var hasOngoingCall: ValuePromise { get } diff --git a/submodules/AccountContext/Sources/ChatController.swift b/submodules/AccountContext/Sources/ChatController.swift index b9d594709e..40a1148f2d 100644 --- a/submodules/AccountContext/Sources/ChatController.swift +++ b/submodules/AccountContext/Sources/ChatController.swift @@ -1,6 +1,7 @@ import Foundation import Postbox import TextFormat +import Display public enum ChatControllerInitialBotStartBehavior { case interactive @@ -232,3 +233,7 @@ public struct ChatTextInputStateText: PostboxCoding, Equatable { return result } } + +public protocol ChatController: ViewController { + +} diff --git a/submodules/ImageBlur/ImageBlur_Xcode.xcodeproj/project.pbxproj b/submodules/ImageBlur/ImageBlur_Xcode.xcodeproj/project.pbxproj index 07bfe8c85a..b509ae5b9f 100644 --- a/submodules/ImageBlur/ImageBlur_Xcode.xcodeproj/project.pbxproj +++ b/submodules/ImageBlur/ImageBlur_Xcode.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ D0879E2122F885E800C4D6B3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0879E2022F885E800C4D6B3 /* UIKit.framework */; }; D0879E2422F8860300C4D6B3 /* FastBlur.m in Sources */ = {isa = PBXBuildFile; fileRef = D0879E2222F8860300C4D6B3 /* FastBlur.m */; }; D0879E2522F8860300C4D6B3 /* FastBlur.h in Headers */ = {isa = PBXBuildFile; fileRef = D0879E2322F8860300C4D6B3 /* FastBlur.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C53A2301CE4E00FAB518 /* ImageBlur.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5392301CE4D00FAB518 /* ImageBlur.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -24,6 +25,7 @@ D0879E2022F885E800C4D6B3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; D0879E2222F8860300C4D6B3 /* FastBlur.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FastBlur.m; sourceTree = ""; }; D0879E2322F8860300C4D6B3 /* FastBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastBlur.h; sourceTree = ""; }; + D0C9C5392301CE4D00FAB518 /* ImageBlur.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageBlur.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -61,6 +63,7 @@ D0879E1422F8858600C4D6B3 /* Sources */ = { isa = PBXGroup; children = ( + D0C9C5392301CE4D00FAB518 /* ImageBlur.swift */, D0879E2322F8860300C4D6B3 /* FastBlur.h */, D0879E2222F8860300C4D6B3 /* FastBlur.m */, D0879E1522F8858600C4D6B3 /* ImageBlur.h */, @@ -123,6 +126,7 @@ TargetAttributes = { D0879E1122F8858600C4D6B3 = { CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; }; }; }; @@ -158,6 +162,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + D0C9C53A2301CE4E00FAB518 /* ImageBlur.swift in Sources */, D0879E2422F8860300C4D6B3 /* FastBlur.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -230,6 +235,7 @@ D038AC1B22F886A600320981 /* DebugHockeyapp */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -249,6 +255,8 @@ 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; @@ -312,6 +320,7 @@ D038AC1D22F886B100320981 /* ReleaseHockeyappInternal */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -331,6 +340,7 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = ReleaseHockeyappInternal; @@ -456,6 +466,7 @@ D0879E1B22F8858600C4D6B3 /* DebugAppStoreLLC */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -475,6 +486,8 @@ 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; @@ -482,6 +495,7 @@ D0879E1C22F8858600C4D6B3 /* ReleaseAppStoreLLC */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -501,6 +515,7 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = ReleaseAppStoreLLC; diff --git a/submodules/TelegramUI/TelegramUI/ImageBlur.swift b/submodules/ImageBlur/Sources/ImageBlur.swift similarity index 95% rename from submodules/TelegramUI/TelegramUI/ImageBlur.swift rename to submodules/ImageBlur/Sources/ImageBlur.swift index 2ef23bf71f..05fb8da1be 100644 --- a/submodules/TelegramUI/TelegramUI/ImageBlur.swift +++ b/submodules/ImageBlur/Sources/ImageBlur.swift @@ -5,7 +5,7 @@ private func imageBuffer(from data: UnsafeMutableRawPointer!, width: vImagePixel return vImage_Buffer(data: data, height: vImagePixelCount(height), width: vImagePixelCount(width), rowBytes: rowBytes) } -func blurredImage(_ image: UIImage, radius: CGFloat, iterations: Int = 3) -> UIImage? { +public func blurredImage(_ image: UIImage, radius: CGFloat, iterations: Int = 3) -> UIImage? { guard let cgImage = image.cgImage, let providerData = cgImage.dataProvider?.data else { return nil } diff --git a/submodules/InstantPageUI/Info.plist b/submodules/InstantPageUI/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/InstantPageUI/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/InstantPageUI/InstantPageUI_Xcode.xcodeproj/project.pbxproj b/submodules/InstantPageUI/InstantPageUI_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..8f903cc37b --- /dev/null +++ b/submodules/InstantPageUI/InstantPageUI_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,807 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C56F2301CFA600FAB518 /* InstantPageUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C56D2301CFA600FAB518 /* InstantPageUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C57B2301D01200FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C57A2301D01200FAB518 /* Foundation.framework */; }; + D0C9C57D2301D01600FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C57C2301D01600FAB518 /* UIKit.framework */; }; + D0C9C57F2301D01B00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C57E2301D01B00FAB518 /* Postbox.framework */; }; + D0C9C5812301D01E00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5802301D01E00FAB518 /* TelegramCore.framework */; }; + D0C9C5832301D02400FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5822301D02400FAB518 /* SwiftSignalKit.framework */; }; + D0C9C5852301D02A00FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5842301D02A00FAB518 /* TelegramPresentationData.framework */; }; + D0C9C5872301D03000FAB518 /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5862301D03000FAB518 /* TelegramUIPreferences.framework */; }; + D0C9C5C02301D04700FAB518 /* InstantPageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C58A2301D03E00FAB518 /* InstantPageController.swift */; }; + D0C9C5C12301D04700FAB518 /* InstantPageFeedbackNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C58B2301D03E00FAB518 /* InstantPageFeedbackNode.swift */; }; + D0C9C5C22301D04700FAB518 /* InstantPageSettingsItemTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C58C2301D03E00FAB518 /* InstantPageSettingsItemTheme.swift */; }; + D0C9C5C32301D04700FAB518 /* InstantPageAudioNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C58D2301D03E00FAB518 /* InstantPageAudioNode.swift */; }; + D0C9C5C42301D04700FAB518 /* InstantPageArticleNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C58E2301D03E00FAB518 /* InstantPageArticleNode.swift */; }; + D0C9C5C52301D04700FAB518 /* InstantPageAudioItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C58F2301D03E00FAB518 /* InstantPageAudioItem.swift */; }; + D0C9C5C62301D04700FAB518 /* InstantPageFeedbackItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5902301D03F00FAB518 /* InstantPageFeedbackItem.swift */; }; + D0C9C5C72301D04700FAB518 /* InstantPageGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5912301D03F00FAB518 /* InstantPageGalleryController.swift */; }; + D0C9C5C82301D04700FAB518 /* InstantPageTableItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5922301D03F00FAB518 /* InstantPageTableItem.swift */; }; + D0C9C5C92301D04700FAB518 /* InstantPageTextStyleStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5932301D03F00FAB518 /* InstantPageTextStyleStack.swift */; }; + D0C9C5CA2301D04700FAB518 /* InstantPageMediaPlaylist.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5942301D03F00FAB518 /* InstantPageMediaPlaylist.swift */; }; + D0C9C5CB2301D04700FAB518 /* InstantPageWebEmbedItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5952301D03F00FAB518 /* InstantPageWebEmbedItem.swift */; }; + D0C9C5CC2301D04700FAB518 /* InstantPageSettingsItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5962301D03F00FAB518 /* InstantPageSettingsItemNode.swift */; }; + D0C9C5CD2301D04700FAB518 /* InstantPageContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5972301D03F00FAB518 /* InstantPageContentNode.swift */; }; + D0C9C5CE2301D04700FAB518 /* InstantPageSettingsThemeItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5982301D04000FAB518 /* InstantPageSettingsThemeItemNode.swift */; }; + D0C9C5CF2301D04700FAB518 /* InstantPageSettingsFontFamilyItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5992301D04000FAB518 /* InstantPageSettingsFontFamilyItemNode.swift */; }; + D0C9C5D02301D04700FAB518 /* InstantImageGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C59A2301D04000FAB518 /* InstantImageGalleryItem.swift */; }; + D0C9C5D12301D04700FAB518 /* InstantPageScrollableNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C59B2301D04000FAB518 /* InstantPageScrollableNode.swift */; }; + D0C9C5D22301D04700FAB518 /* InstantPageSettingsBacklightItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C59C2301D04000FAB518 /* InstantPageSettingsBacklightItemNode.swift */; }; + D0C9C5D32301D04700FAB518 /* InstantPageLayoutSpacings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C59D2301D04000FAB518 /* InstantPageLayoutSpacings.swift */; }; + D0C9C5D42301D04700FAB518 /* InstantPageArticleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C59E2301D04000FAB518 /* InstantPageArticleItem.swift */; }; + D0C9C5D52301D04700FAB518 /* InstantPageSettingsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C59F2301D04000FAB518 /* InstantPageSettingsNode.swift */; }; + D0C9C5D62301D04700FAB518 /* InstantPageAnchorItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A02301D04000FAB518 /* InstantPageAnchorItem.swift */; }; + D0C9C5D72301D04700FAB518 /* InstantPageImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A12301D04100FAB518 /* InstantPageImageNode.swift */; }; + D0C9C5D82301D04700FAB518 /* InstantPageSettingsButtonItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A22301D04100FAB518 /* InstantPageSettingsButtonItemNode.swift */; }; + D0C9C5D92301D04700FAB518 /* InstantPageShapeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A32301D04100FAB518 /* InstantPageShapeItem.swift */; }; + D0C9C5DA2301D04700FAB518 /* InstantPageImageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A42301D04100FAB518 /* InstantPageImageItem.swift */; }; + D0C9C5DB2301D04700FAB518 /* InstantPageSlideshowItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A52301D04100FAB518 /* InstantPageSlideshowItemNode.swift */; }; + D0C9C5DC2301D04700FAB518 /* InstantPageReferenceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A62301D04100FAB518 /* InstantPageReferenceControllerNode.swift */; }; + D0C9C5DD2301D04700FAB518 /* InstantPageLinkSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A72301D04100FAB518 /* InstantPageLinkSelectionView.swift */; }; + D0C9C5DE2301D04700FAB518 /* InstantPageGalleryFooterContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A82301D04200FAB518 /* InstantPageGalleryFooterContentNode.swift */; }; + D0C9C5DF2301D04700FAB518 /* InstantPagePlayableVideoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5A92301D04200FAB518 /* InstantPagePlayableVideoItem.swift */; }; + D0C9C5E02301D04700FAB518 /* InstantPageWebEmbedNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5AA2301D04200FAB518 /* InstantPageWebEmbedNode.swift */; }; + D0C9C5E12301D04700FAB518 /* InstantPagePeerReferenceItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5AB2301D04200FAB518 /* InstantPagePeerReferenceItem.swift */; }; + D0C9C5E22301D04700FAB518 /* InstantPageTileNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5AC2301D04200FAB518 /* InstantPageTileNode.swift */; }; + D0C9C5E32301D04700FAB518 /* InstantPageSlideshowItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5AD2301D04200FAB518 /* InstantPageSlideshowItem.swift */; }; + D0C9C5E42301D04700FAB518 /* InstantPageTile.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5AE2301D04200FAB518 /* InstantPageTile.swift */; }; + D0C9C5E52301D04700FAB518 /* InstantPageSettingsSwitchItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5AF2301D04300FAB518 /* InstantPageSettingsSwitchItemNode.swift */; }; + D0C9C5E62301D04700FAB518 /* InstantPageStoredState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B02301D04300FAB518 /* InstantPageStoredState.swift */; }; + D0C9C5E72301D04700FAB518 /* InstantPagePeerReferenceNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B12301D04300FAB518 /* InstantPagePeerReferenceNode.swift */; }; + D0C9C5E82301D04700FAB518 /* InstantPageDetailsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B22301D04300FAB518 /* InstantPageDetailsNode.swift */; }; + D0C9C5E92301D04700FAB518 /* InstantPageTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B32301D04300FAB518 /* InstantPageTheme.swift */; }; + D0C9C5EA2301D04700FAB518 /* InstantPageSettingsFontSizeItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B42301D04300FAB518 /* InstantPageSettingsFontSizeItemNode.swift */; }; + D0C9C5EB2301D04700FAB518 /* InstantPageNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B52301D04300FAB518 /* InstantPageNavigationBar.swift */; }; + D0C9C5EC2301D04700FAB518 /* InstantPageMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B62301D04400FAB518 /* InstantPageMedia.swift */; }; + D0C9C5ED2301D04700FAB518 /* InstantPageDetailsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B72301D04500FAB518 /* InstantPageDetailsItem.swift */; }; + D0C9C5EE2301D04700FAB518 /* InstantPageTextItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B82301D04500FAB518 /* InstantPageTextItem.swift */; }; + D0C9C5EF2301D04700FAB518 /* InstantPageLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5B92301D04500FAB518 /* InstantPageLayout.swift */; }; + D0C9C5F02301D04700FAB518 /* InstantPageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5BA2301D04500FAB518 /* InstantPageItem.swift */; }; + D0C9C5F12301D04700FAB518 /* InstantPageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5BB2301D04500FAB518 /* InstantPageNode.swift */; }; + D0C9C5F22301D04700FAB518 /* InstantPageReferenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5BC2301D04600FAB518 /* InstantPageReferenceController.swift */; }; + D0C9C5F32301D04700FAB518 /* InstantPagePlayableVideoNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5BD2301D04600FAB518 /* InstantPagePlayableVideoNode.swift */; }; + D0C9C5F42301D04700FAB518 /* InstantPageControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5BE2301D04600FAB518 /* InstantPageControllerNode.swift */; }; + D0C9C5F72301D04A00FAB518 /* GalleryUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5F62301D04A00FAB518 /* GalleryUI.framework */; }; + D0C9C5F92301D04F00FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5F82301D04F00FAB518 /* AsyncDisplayKit.framework */; }; + D0C9C5FB2301D05400FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5FA2301D05400FAB518 /* Display.framework */; }; + D0C9C5FD2301D0A900FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5FC2301D0A900FAB518 /* FrameworkBundle.swift */; }; + D0C9C6272301D21600FAB518 /* MusicAlbumArtResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6262301D21600FAB518 /* MusicAlbumArtResources.framework */; }; + D0C9C6572301D30C00FAB518 /* LiveLocationPositionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6562301D30C00FAB518 /* LiveLocationPositionNode.framework */; }; + D0C9C67D2301D45A00FAB518 /* MosaicLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C67C2301D45A00FAB518 /* MosaicLayout.framework */; }; + D0C9C6BB2301D92000FAB518 /* LocationUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6BA2301D92000FAB518 /* LocationUI.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C56A2301CFA600FAB518 /* InstantPageUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = InstantPageUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C56D2301CFA600FAB518 /* InstantPageUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstantPageUI.h; sourceTree = ""; }; + D0C9C56E2301CFA600FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C57A2301D01200FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C57C2301D01600FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + D0C9C57E2301D01B00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5802301D01E00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5822301D02400FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5842301D02A00FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5862301D03000FAB518 /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C58A2301D03E00FAB518 /* InstantPageController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageController.swift; sourceTree = ""; }; + D0C9C58B2301D03E00FAB518 /* InstantPageFeedbackNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageFeedbackNode.swift; sourceTree = ""; }; + D0C9C58C2301D03E00FAB518 /* InstantPageSettingsItemTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsItemTheme.swift; sourceTree = ""; }; + D0C9C58D2301D03E00FAB518 /* InstantPageAudioNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageAudioNode.swift; sourceTree = ""; }; + D0C9C58E2301D03E00FAB518 /* InstantPageArticleNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageArticleNode.swift; sourceTree = ""; }; + D0C9C58F2301D03E00FAB518 /* InstantPageAudioItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageAudioItem.swift; sourceTree = ""; }; + D0C9C5902301D03F00FAB518 /* InstantPageFeedbackItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageFeedbackItem.swift; sourceTree = ""; }; + D0C9C5912301D03F00FAB518 /* InstantPageGalleryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageGalleryController.swift; sourceTree = ""; }; + D0C9C5922301D03F00FAB518 /* InstantPageTableItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTableItem.swift; sourceTree = ""; }; + D0C9C5932301D03F00FAB518 /* InstantPageTextStyleStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTextStyleStack.swift; sourceTree = ""; }; + D0C9C5942301D03F00FAB518 /* InstantPageMediaPlaylist.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageMediaPlaylist.swift; sourceTree = ""; }; + D0C9C5952301D03F00FAB518 /* InstantPageWebEmbedItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageWebEmbedItem.swift; sourceTree = ""; }; + D0C9C5962301D03F00FAB518 /* InstantPageSettingsItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsItemNode.swift; sourceTree = ""; }; + D0C9C5972301D03F00FAB518 /* InstantPageContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageContentNode.swift; sourceTree = ""; }; + D0C9C5982301D04000FAB518 /* InstantPageSettingsThemeItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsThemeItemNode.swift; sourceTree = ""; }; + D0C9C5992301D04000FAB518 /* InstantPageSettingsFontFamilyItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsFontFamilyItemNode.swift; sourceTree = ""; }; + D0C9C59A2301D04000FAB518 /* InstantImageGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantImageGalleryItem.swift; sourceTree = ""; }; + D0C9C59B2301D04000FAB518 /* InstantPageScrollableNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageScrollableNode.swift; sourceTree = ""; }; + D0C9C59C2301D04000FAB518 /* InstantPageSettingsBacklightItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsBacklightItemNode.swift; sourceTree = ""; }; + D0C9C59D2301D04000FAB518 /* InstantPageLayoutSpacings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLayoutSpacings.swift; sourceTree = ""; }; + D0C9C59E2301D04000FAB518 /* InstantPageArticleItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageArticleItem.swift; sourceTree = ""; }; + D0C9C59F2301D04000FAB518 /* InstantPageSettingsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsNode.swift; sourceTree = ""; }; + D0C9C5A02301D04000FAB518 /* InstantPageAnchorItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageAnchorItem.swift; sourceTree = ""; }; + D0C9C5A12301D04100FAB518 /* InstantPageImageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageImageNode.swift; sourceTree = ""; }; + D0C9C5A22301D04100FAB518 /* InstantPageSettingsButtonItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsButtonItemNode.swift; sourceTree = ""; }; + D0C9C5A32301D04100FAB518 /* InstantPageShapeItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageShapeItem.swift; sourceTree = ""; }; + D0C9C5A42301D04100FAB518 /* InstantPageImageItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageImageItem.swift; sourceTree = ""; }; + D0C9C5A52301D04100FAB518 /* InstantPageSlideshowItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSlideshowItemNode.swift; sourceTree = ""; }; + D0C9C5A62301D04100FAB518 /* InstantPageReferenceControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageReferenceControllerNode.swift; sourceTree = ""; }; + D0C9C5A72301D04100FAB518 /* InstantPageLinkSelectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLinkSelectionView.swift; sourceTree = ""; }; + D0C9C5A82301D04200FAB518 /* InstantPageGalleryFooterContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageGalleryFooterContentNode.swift; sourceTree = ""; }; + D0C9C5A92301D04200FAB518 /* InstantPagePlayableVideoItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePlayableVideoItem.swift; sourceTree = ""; }; + D0C9C5AA2301D04200FAB518 /* InstantPageWebEmbedNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageWebEmbedNode.swift; sourceTree = ""; }; + D0C9C5AB2301D04200FAB518 /* InstantPagePeerReferenceItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceItem.swift; sourceTree = ""; }; + D0C9C5AC2301D04200FAB518 /* InstantPageTileNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTileNode.swift; sourceTree = ""; }; + D0C9C5AD2301D04200FAB518 /* InstantPageSlideshowItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSlideshowItem.swift; sourceTree = ""; }; + D0C9C5AE2301D04200FAB518 /* InstantPageTile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTile.swift; sourceTree = ""; }; + D0C9C5AF2301D04300FAB518 /* InstantPageSettingsSwitchItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsSwitchItemNode.swift; sourceTree = ""; }; + D0C9C5B02301D04300FAB518 /* InstantPageStoredState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageStoredState.swift; sourceTree = ""; }; + D0C9C5B12301D04300FAB518 /* InstantPagePeerReferenceNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceNode.swift; sourceTree = ""; }; + D0C9C5B22301D04300FAB518 /* InstantPageDetailsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageDetailsNode.swift; sourceTree = ""; }; + D0C9C5B32301D04300FAB518 /* InstantPageTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTheme.swift; sourceTree = ""; }; + D0C9C5B42301D04300FAB518 /* InstantPageSettingsFontSizeItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsFontSizeItemNode.swift; sourceTree = ""; }; + D0C9C5B52301D04300FAB518 /* InstantPageNavigationBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageNavigationBar.swift; sourceTree = ""; }; + D0C9C5B62301D04400FAB518 /* InstantPageMedia.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageMedia.swift; sourceTree = ""; }; + D0C9C5B72301D04500FAB518 /* InstantPageDetailsItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageDetailsItem.swift; sourceTree = ""; }; + D0C9C5B82301D04500FAB518 /* InstantPageTextItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTextItem.swift; sourceTree = ""; }; + D0C9C5B92301D04500FAB518 /* InstantPageLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLayout.swift; sourceTree = ""; }; + D0C9C5BA2301D04500FAB518 /* InstantPageItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageItem.swift; sourceTree = ""; }; + D0C9C5BB2301D04500FAB518 /* InstantPageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageNode.swift; sourceTree = ""; }; + D0C9C5BC2301D04600FAB518 /* InstantPageReferenceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageReferenceController.swift; sourceTree = ""; }; + D0C9C5BD2301D04600FAB518 /* InstantPagePlayableVideoNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePlayableVideoNode.swift; sourceTree = ""; }; + D0C9C5BE2301D04600FAB518 /* InstantPageControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageControllerNode.swift; sourceTree = ""; }; + D0C9C5F62301D04A00FAB518 /* GalleryUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GalleryUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5F82301D04F00FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5FA2301D05400FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5FC2301D0A900FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; + D0C9C6262301D21600FAB518 /* MusicAlbumArtResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MusicAlbumArtResources.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6562301D30C00FAB518 /* LiveLocationPositionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LiveLocationPositionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C67C2301D45A00FAB518 /* MosaicLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MosaicLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6BA2301D92000FAB518 /* LocationUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LocationUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C5672301CFA600FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C6BB2301D92000FAB518 /* LocationUI.framework in Frameworks */, + D0C9C67D2301D45A00FAB518 /* MosaicLayout.framework in Frameworks */, + D0C9C6572301D30C00FAB518 /* LiveLocationPositionNode.framework in Frameworks */, + D0C9C6272301D21600FAB518 /* MusicAlbumArtResources.framework in Frameworks */, + D0C9C5FB2301D05400FAB518 /* Display.framework in Frameworks */, + D0C9C5F92301D04F00FAB518 /* AsyncDisplayKit.framework in Frameworks */, + D0C9C5F72301D04A00FAB518 /* GalleryUI.framework in Frameworks */, + D0C9C5872301D03000FAB518 /* TelegramUIPreferences.framework in Frameworks */, + D0C9C5852301D02A00FAB518 /* TelegramPresentationData.framework in Frameworks */, + D0C9C5832301D02400FAB518 /* SwiftSignalKit.framework in Frameworks */, + D0C9C5812301D01E00FAB518 /* TelegramCore.framework in Frameworks */, + D0C9C57F2301D01B00FAB518 /* Postbox.framework in Frameworks */, + D0C9C57D2301D01600FAB518 /* UIKit.framework in Frameworks */, + D0C9C57B2301D01200FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C5602301CFA600FAB518 = { + isa = PBXGroup; + children = ( + D0C9C56E2301CFA600FAB518 /* Info.plist */, + D0C9C56C2301CFA600FAB518 /* Sources */, + D0C9C56B2301CFA600FAB518 /* Products */, + D0C9C5792301D01200FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C56B2301CFA600FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C56A2301CFA600FAB518 /* InstantPageUI.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C56C2301CFA600FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C59A2301D04000FAB518 /* InstantImageGalleryItem.swift */, + D0C9C5A02301D04000FAB518 /* InstantPageAnchorItem.swift */, + D0C9C59E2301D04000FAB518 /* InstantPageArticleItem.swift */, + D0C9C58E2301D03E00FAB518 /* InstantPageArticleNode.swift */, + D0C9C58F2301D03E00FAB518 /* InstantPageAudioItem.swift */, + D0C9C58D2301D03E00FAB518 /* InstantPageAudioNode.swift */, + D0C9C5972301D03F00FAB518 /* InstantPageContentNode.swift */, + D0C9C58A2301D03E00FAB518 /* InstantPageController.swift */, + D0C9C5BE2301D04600FAB518 /* InstantPageControllerNode.swift */, + D0C9C5B72301D04500FAB518 /* InstantPageDetailsItem.swift */, + D0C9C5B22301D04300FAB518 /* InstantPageDetailsNode.swift */, + D0C9C5902301D03F00FAB518 /* InstantPageFeedbackItem.swift */, + D0C9C58B2301D03E00FAB518 /* InstantPageFeedbackNode.swift */, + D0C9C5912301D03F00FAB518 /* InstantPageGalleryController.swift */, + D0C9C5A82301D04200FAB518 /* InstantPageGalleryFooterContentNode.swift */, + D0C9C5A42301D04100FAB518 /* InstantPageImageItem.swift */, + D0C9C5A12301D04100FAB518 /* InstantPageImageNode.swift */, + D0C9C5BA2301D04500FAB518 /* InstantPageItem.swift */, + D0C9C5B92301D04500FAB518 /* InstantPageLayout.swift */, + D0C9C59D2301D04000FAB518 /* InstantPageLayoutSpacings.swift */, + D0C9C5A72301D04100FAB518 /* InstantPageLinkSelectionView.swift */, + D0C9C5B62301D04400FAB518 /* InstantPageMedia.swift */, + D0C9C5942301D03F00FAB518 /* InstantPageMediaPlaylist.swift */, + D0C9C5B52301D04300FAB518 /* InstantPageNavigationBar.swift */, + D0C9C5BB2301D04500FAB518 /* InstantPageNode.swift */, + D0C9C5AB2301D04200FAB518 /* InstantPagePeerReferenceItem.swift */, + D0C9C5B12301D04300FAB518 /* InstantPagePeerReferenceNode.swift */, + D0C9C5A92301D04200FAB518 /* InstantPagePlayableVideoItem.swift */, + D0C9C5BD2301D04600FAB518 /* InstantPagePlayableVideoNode.swift */, + D0C9C5BC2301D04600FAB518 /* InstantPageReferenceController.swift */, + D0C9C5A62301D04100FAB518 /* InstantPageReferenceControllerNode.swift */, + D0C9C59B2301D04000FAB518 /* InstantPageScrollableNode.swift */, + D0C9C59C2301D04000FAB518 /* InstantPageSettingsBacklightItemNode.swift */, + D0C9C5A22301D04100FAB518 /* InstantPageSettingsButtonItemNode.swift */, + D0C9C5992301D04000FAB518 /* InstantPageSettingsFontFamilyItemNode.swift */, + D0C9C5B42301D04300FAB518 /* InstantPageSettingsFontSizeItemNode.swift */, + D0C9C5962301D03F00FAB518 /* InstantPageSettingsItemNode.swift */, + D0C9C58C2301D03E00FAB518 /* InstantPageSettingsItemTheme.swift */, + D0C9C59F2301D04000FAB518 /* InstantPageSettingsNode.swift */, + D0C9C5AF2301D04300FAB518 /* InstantPageSettingsSwitchItemNode.swift */, + D0C9C5982301D04000FAB518 /* InstantPageSettingsThemeItemNode.swift */, + D0C9C5A32301D04100FAB518 /* InstantPageShapeItem.swift */, + D0C9C5AD2301D04200FAB518 /* InstantPageSlideshowItem.swift */, + D0C9C5A52301D04100FAB518 /* InstantPageSlideshowItemNode.swift */, + D0C9C5B02301D04300FAB518 /* InstantPageStoredState.swift */, + D0C9C5922301D03F00FAB518 /* InstantPageTableItem.swift */, + D0C9C5B82301D04500FAB518 /* InstantPageTextItem.swift */, + D0C9C5932301D03F00FAB518 /* InstantPageTextStyleStack.swift */, + D0C9C5B32301D04300FAB518 /* InstantPageTheme.swift */, + D0C9C5AE2301D04200FAB518 /* InstantPageTile.swift */, + D0C9C5AC2301D04200FAB518 /* InstantPageTileNode.swift */, + D0C9C5952301D03F00FAB518 /* InstantPageWebEmbedItem.swift */, + D0C9C5AA2301D04200FAB518 /* InstantPageWebEmbedNode.swift */, + D0C9C5FC2301D0A900FAB518 /* FrameworkBundle.swift */, + D0C9C56D2301CFA600FAB518 /* InstantPageUI.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C5792301D01200FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C6BA2301D92000FAB518 /* LocationUI.framework */, + D0C9C67C2301D45A00FAB518 /* MosaicLayout.framework */, + D0C9C6562301D30C00FAB518 /* LiveLocationPositionNode.framework */, + D0C9C6262301D21600FAB518 /* MusicAlbumArtResources.framework */, + D0C9C5FA2301D05400FAB518 /* Display.framework */, + D0C9C5F82301D04F00FAB518 /* AsyncDisplayKit.framework */, + D0C9C5F62301D04A00FAB518 /* GalleryUI.framework */, + D0C9C5862301D03000FAB518 /* TelegramUIPreferences.framework */, + D0C9C5842301D02A00FAB518 /* TelegramPresentationData.framework */, + D0C9C5822301D02400FAB518 /* SwiftSignalKit.framework */, + D0C9C5802301D01E00FAB518 /* TelegramCore.framework */, + D0C9C57E2301D01B00FAB518 /* Postbox.framework */, + D0C9C57C2301D01600FAB518 /* UIKit.framework */, + D0C9C57A2301D01200FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C5652301CFA600FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C56F2301CFA600FAB518 /* InstantPageUI.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C5692301CFA600FAB518 /* InstantPageUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C5722301CFA600FAB518 /* Build configuration list for PBXNativeTarget "InstantPageUI" */; + buildPhases = ( + D0C9C5652301CFA600FAB518 /* Headers */, + D0C9C5662301CFA600FAB518 /* Sources */, + D0C9C5672301CFA600FAB518 /* Frameworks */, + D0C9C5682301CFA600FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = InstantPageUI; + productName = InstantPageUI; + productReference = D0C9C56A2301CFA600FAB518 /* InstantPageUI.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C5612301CFA600FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C5692301CFA600FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C5642301CFA600FAB518 /* Build configuration list for PBXProject "InstantPageUI_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C5602301CFA600FAB518; + productRefGroup = D0C9C56B2301CFA600FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C5692301CFA600FAB518 /* InstantPageUI */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C5682301CFA600FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C5662301CFA600FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C5C92301D04700FAB518 /* InstantPageTextStyleStack.swift in Sources */, + D0C9C5D12301D04700FAB518 /* InstantPageScrollableNode.swift in Sources */, + D0C9C5D82301D04700FAB518 /* InstantPageSettingsButtonItemNode.swift in Sources */, + D0C9C5D32301D04700FAB518 /* InstantPageLayoutSpacings.swift in Sources */, + D0C9C5EB2301D04700FAB518 /* InstantPageNavigationBar.swift in Sources */, + D0C9C5E72301D04700FAB518 /* InstantPagePeerReferenceNode.swift in Sources */, + D0C9C5E52301D04700FAB518 /* InstantPageSettingsSwitchItemNode.swift in Sources */, + D0C9C5F42301D04700FAB518 /* InstantPageControllerNode.swift in Sources */, + D0C9C5CA2301D04700FAB518 /* InstantPageMediaPlaylist.swift in Sources */, + D0C9C5DA2301D04700FAB518 /* InstantPageImageItem.swift in Sources */, + D0C9C5C52301D04700FAB518 /* InstantPageAudioItem.swift in Sources */, + D0C9C5D22301D04700FAB518 /* InstantPageSettingsBacklightItemNode.swift in Sources */, + D0C9C5D92301D04700FAB518 /* InstantPageShapeItem.swift in Sources */, + D0C9C5D42301D04700FAB518 /* InstantPageArticleItem.swift in Sources */, + D0C9C5E42301D04700FAB518 /* InstantPageTile.swift in Sources */, + D0C9C5F22301D04700FAB518 /* InstantPageReferenceController.swift in Sources */, + D0C9C5EF2301D04700FAB518 /* InstantPageLayout.swift in Sources */, + D0C9C5F02301D04700FAB518 /* InstantPageItem.swift in Sources */, + D0C9C5DB2301D04700FAB518 /* InstantPageSlideshowItemNode.swift in Sources */, + D0C9C5FD2301D0A900FAB518 /* FrameworkBundle.swift in Sources */, + D0C9C5E92301D04700FAB518 /* InstantPageTheme.swift in Sources */, + D0C9C5D52301D04700FAB518 /* InstantPageSettingsNode.swift in Sources */, + D0C9C5CF2301D04700FAB518 /* InstantPageSettingsFontFamilyItemNode.swift in Sources */, + D0C9C5C42301D04700FAB518 /* InstantPageArticleNode.swift in Sources */, + D0C9C5EA2301D04700FAB518 /* InstantPageSettingsFontSizeItemNode.swift in Sources */, + D0C9C5EE2301D04700FAB518 /* InstantPageTextItem.swift in Sources */, + D0C9C5E02301D04700FAB518 /* InstantPageWebEmbedNode.swift in Sources */, + D0C9C5CB2301D04700FAB518 /* InstantPageWebEmbedItem.swift in Sources */, + D0C9C5CE2301D04700FAB518 /* InstantPageSettingsThemeItemNode.swift in Sources */, + D0C9C5D72301D04700FAB518 /* InstantPageImageNode.swift in Sources */, + D0C9C5D62301D04700FAB518 /* InstantPageAnchorItem.swift in Sources */, + D0C9C5C82301D04700FAB518 /* InstantPageTableItem.swift in Sources */, + D0C9C5DC2301D04700FAB518 /* InstantPageReferenceControllerNode.swift in Sources */, + D0C9C5C02301D04700FAB518 /* InstantPageController.swift in Sources */, + D0C9C5E62301D04700FAB518 /* InstantPageStoredState.swift in Sources */, + D0C9C5C72301D04700FAB518 /* InstantPageGalleryController.swift in Sources */, + D0C9C5F32301D04700FAB518 /* InstantPagePlayableVideoNode.swift in Sources */, + D0C9C5DE2301D04700FAB518 /* InstantPageGalleryFooterContentNode.swift in Sources */, + D0C9C5DF2301D04700FAB518 /* InstantPagePlayableVideoItem.swift in Sources */, + D0C9C5DD2301D04700FAB518 /* InstantPageLinkSelectionView.swift in Sources */, + D0C9C5C62301D04700FAB518 /* InstantPageFeedbackItem.swift in Sources */, + D0C9C5E12301D04700FAB518 /* InstantPagePeerReferenceItem.swift in Sources */, + D0C9C5F12301D04700FAB518 /* InstantPageNode.swift in Sources */, + D0C9C5EC2301D04700FAB518 /* InstantPageMedia.swift in Sources */, + D0C9C5E32301D04700FAB518 /* InstantPageSlideshowItem.swift in Sources */, + D0C9C5C12301D04700FAB518 /* InstantPageFeedbackNode.swift in Sources */, + D0C9C5E22301D04700FAB518 /* InstantPageTileNode.swift in Sources */, + D0C9C5CD2301D04700FAB518 /* InstantPageContentNode.swift in Sources */, + D0C9C5E82301D04700FAB518 /* InstantPageDetailsNode.swift in Sources */, + D0C9C5D02301D04700FAB518 /* InstantImageGalleryItem.swift in Sources */, + D0C9C5C22301D04700FAB518 /* InstantPageSettingsItemTheme.swift in Sources */, + D0C9C5C32301D04700FAB518 /* InstantPageAudioNode.swift in Sources */, + D0C9C5ED2301D04700FAB518 /* InstantPageDetailsItem.swift in Sources */, + D0C9C5CC2301D04700FAB518 /* InstantPageSettingsItemNode.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C5702301CFA600FAB518 /* 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; + }; + D0C9C5712301CFA600FAB518 /* 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; + }; + D0C9C5732301CFA600FAB518 /* 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.InstantPageUI; + 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; + }; + D0C9C5742301CFA600FAB518 /* 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.InstantPageUI; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C5752301CFCB00FAB518 /* 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; + }; + D0C9C5762301CFCB00FAB518 /* 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.InstantPageUI; + 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; + }; + D0C9C5772301CFD600FAB518 /* 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; + }; + D0C9C5782301CFD600FAB518 /* 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.InstantPageUI; + 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 */ + D0C9C5642301CFA600FAB518 /* Build configuration list for PBXProject "InstantPageUI_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C5702301CFA600FAB518 /* DebugAppStoreLLC */, + D0C9C5752301CFCB00FAB518 /* DebugHockeyapp */, + D0C9C5712301CFA600FAB518 /* ReleaseAppStoreLLC */, + D0C9C5772301CFD600FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C5722301CFA600FAB518 /* Build configuration list for PBXNativeTarget "InstantPageUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C5732301CFA600FAB518 /* DebugAppStoreLLC */, + D0C9C5762301CFCB00FAB518 /* DebugHockeyapp */, + D0C9C5742301CFA600FAB518 /* ReleaseAppStoreLLC */, + D0C9C5782301CFD600FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C5612301CFA600FAB518 /* Project object */; +} diff --git a/submodules/InstantPageUI/Sources/FrameworkBundle.swift b/submodules/InstantPageUI/Sources/FrameworkBundle.swift new file mode 100644 index 0000000000..8ca13d7d92 --- /dev/null +++ b/submodules/InstantPageUI/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/InstantImageGalleryItem.swift b/submodules/InstantPageUI/Sources/InstantImageGalleryItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift rename to submodules/InstantPageUI/Sources/InstantImageGalleryItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageAnchorItem.swift b/submodules/InstantPageUI/Sources/InstantPageAnchorItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageAnchorItem.swift rename to submodules/InstantPageUI/Sources/InstantPageAnchorItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageArticleItem.swift b/submodules/InstantPageUI/Sources/InstantPageArticleItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageArticleItem.swift rename to submodules/InstantPageUI/Sources/InstantPageArticleItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift b/submodules/InstantPageUI/Sources/InstantPageArticleNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift rename to submodules/InstantPageUI/Sources/InstantPageArticleNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageAudioItem.swift b/submodules/InstantPageUI/Sources/InstantPageAudioItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageAudioItem.swift rename to submodules/InstantPageUI/Sources/InstantPageAudioItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageAudioNode.swift b/submodules/InstantPageUI/Sources/InstantPageAudioNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageAudioNode.swift rename to submodules/InstantPageUI/Sources/InstantPageAudioNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageContentNode.swift b/submodules/InstantPageUI/Sources/InstantPageContentNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageContentNode.swift rename to submodules/InstantPageUI/Sources/InstantPageContentNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageController.swift b/submodules/InstantPageUI/Sources/InstantPageController.swift similarity index 88% rename from submodules/TelegramUI/TelegramUI/InstantPageController.swift rename to submodules/InstantPageUI/Sources/InstantPageController.swift index caa5b127e9..d33f358d9a 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageController.swift +++ b/submodules/InstantPageUI/Sources/InstantPageController.swift @@ -8,7 +8,7 @@ import TelegramPresentationData import TelegramUIPreferences import AccountContext -final class InstantPageController: ViewController { +public final class InstantPageController: ViewController { private let context: AccountContext private var webPage: TelegramMediaWebpage private let sourcePeerType: MediaAutoDownloadPeerType @@ -17,11 +17,11 @@ final class InstantPageController: ViewController { private var presentationData: PresentationData private let _ready = Promise() - override var ready: Promise { + override public var ready: Promise { return self._ready } - var controllerNode: InstantPageControllerNode { + private var controllerNode: InstantPageControllerNode { return self.displayNode as! InstantPageControllerNode } @@ -32,7 +32,7 @@ final class InstantPageController: ViewController { private var settingsDisposable: Disposable? private var themeSettings: PresentationThemeSettings? - init(context: AccountContext, webPage: TelegramMediaWebpage, sourcePeerType: MediaAutoDownloadPeerType, anchor: String? = nil) { + public init(context: AccountContext, webPage: TelegramMediaWebpage, sourcePeerType: MediaAutoDownloadPeerType, anchor: String? = nil) { self.context = context self.presentationData = context.sharedContext.currentPresentationData.with { $0 } @@ -78,7 +78,7 @@ final class InstantPageController: ViewController { }) } - required init(coder aDecoder: NSCoder) { + required public init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } @@ -88,7 +88,7 @@ final class InstantPageController: ViewController { self.settingsDisposable?.dispose() } - override func viewWillDisappear(_ animated: Bool) { + override public func viewWillDisappear(_ animated: Bool) { let _ = updateInstantPageStoredStateInteractively(postbox: self.context.account.postbox, webPage: self.webPage, state: self.controllerNode.currentState).start() } @@ -100,8 +100,8 @@ final class InstantPageController: ViewController { }, pushController: { [weak self] c in (self?.navigationController as? NavigationController)?.pushViewController(c) }, openPeer: { [weak self] peerId in - if let strongSelf = self { - (strongSelf.navigationController as? NavigationController)?.pushViewController(ChatController(context: strongSelf.context, chatLocation: .peer(peerId))) + if let strongSelf = self, let navigationController = strongSelf.navigationController as? NavigationController { + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), animated: true)) } }, navigateBack: { [weak self] in if let strongSelf = self, let controllers = strongSelf.navigationController?.viewControllers.reversed() { diff --git a/submodules/TelegramUI/TelegramUI/InstantPageControllerNode.swift b/submodules/InstantPageUI/Sources/InstantPageControllerNode.swift similarity index 98% rename from submodules/TelegramUI/TelegramUI/InstantPageControllerNode.swift rename to submodules/InstantPageUI/Sources/InstantPageControllerNode.swift index 1ed0447a06..590a0952c5 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageControllerNode.swift +++ b/submodules/InstantPageUI/Sources/InstantPageControllerNode.swift @@ -13,6 +13,7 @@ import ShareController import SaveToCameraRoll import GalleryUI import OpenInExternalAppUI +import LocationUI final class InstantPageControllerNode: ASDisplayNode, UIScrollViewDelegate { private let context: AccountContext @@ -1162,7 +1163,8 @@ final class InstantPageControllerNode: ASDisplayNode, UIScrollViewDelegate { self.loadProgress.set(0.02) self.loadWebpageDisposable.set(nil) - self.resolveUrlDisposable.set((resolveUrl(account: self.context.account, url: url.url) |> deliverOnMainQueue).start(next: { [weak self] result in + self.resolveUrlDisposable.set((self.context.sharedContext.resolveUrl(account: self.context.account, url: url.url) + |> deliverOnMainQueue).start(next: { [weak self] result in if let strongSelf = self { strongSelf.loadProgress.set(0.07) switch result { @@ -1195,15 +1197,15 @@ final class InstantPageControllerNode: ASDisplayNode, UIScrollViewDelegate { } default: strongSelf.loadProgress.set(1.0) - openResolvedUrl(result, context: strongSelf.context, navigationController: strongSelf.getNavigationController(), openPeer: { peerId, navigation in + strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.getNavigationController(), openPeer: { peerId, navigation in switch navigation { case let .chat(_, messageId): if let navigationController = strongSelf.getNavigationController() { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId)) } case let .withBotStartPayload(botStart): if let navigationController = strongSelf.getNavigationController() { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), botStart: botStart, keepStack: .always) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), botStart: botStart, keepStack: .always)) } case .info: let _ = (strongSelf.context.account.postbox.loadedPeerWithId(peerId) @@ -1217,7 +1219,9 @@ final class InstantPageControllerNode: ASDisplayNode, UIScrollViewDelegate { default: break } - }, present: { c, a in + }, sendFile: nil, + sendSticker: nil, + present: { c, a in self?.present(c, a) }, dismissInput: { self?.view.endEditing(true) diff --git a/submodules/TelegramUI/TelegramUI/InstantPageDetailsItem.swift b/submodules/InstantPageUI/Sources/InstantPageDetailsItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageDetailsItem.swift rename to submodules/InstantPageUI/Sources/InstantPageDetailsItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageDetailsNode.swift b/submodules/InstantPageUI/Sources/InstantPageDetailsNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageDetailsNode.swift rename to submodules/InstantPageUI/Sources/InstantPageDetailsNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageFeedbackItem.swift b/submodules/InstantPageUI/Sources/InstantPageFeedbackItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageFeedbackItem.swift rename to submodules/InstantPageUI/Sources/InstantPageFeedbackItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageFeedbackNode.swift b/submodules/InstantPageUI/Sources/InstantPageFeedbackNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageFeedbackNode.swift rename to submodules/InstantPageUI/Sources/InstantPageFeedbackNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageGalleryController.swift b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift similarity index 90% rename from submodules/TelegramUI/TelegramUI/InstantPageGalleryController.swift rename to submodules/InstantPageUI/Sources/InstantPageGalleryController.swift index 064b2f212f..b0e61f6416 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageGalleryController.swift +++ b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift @@ -13,24 +13,38 @@ import GalleryUI import TelegramUniversalVideoContent import OpenInExternalAppUI -struct InstantPageGalleryEntryLocation: Equatable { - let position: Int32 - let totalCount: Int32 +public struct InstantPageGalleryEntryLocation: Equatable { + public let position: Int32 + public let totalCount: Int32 - static func ==(lhs: InstantPageGalleryEntryLocation, rhs: InstantPageGalleryEntryLocation) -> Bool { + public init(position: Int32, totalCount: Int32) { + self.position = position + self.totalCount = totalCount + } + + public static func ==(lhs: InstantPageGalleryEntryLocation, rhs: InstantPageGalleryEntryLocation) -> Bool { return lhs.position == rhs.position && lhs.totalCount == rhs.totalCount } } -struct InstantPageGalleryEntry: Equatable { - let index: Int32 - let pageId: MediaId - let media: InstantPageMedia - let caption: RichText? - let credit: RichText? - let location: InstantPageGalleryEntryLocation? +public struct InstantPageGalleryEntry: Equatable { + public let index: Int32 + public let pageId: MediaId + public let media: InstantPageMedia + public let caption: RichText? + public let credit: RichText? + public let location: InstantPageGalleryEntryLocation? - static func ==(lhs: InstantPageGalleryEntry, rhs: InstantPageGalleryEntry) -> Bool { + public init(index: Int32, pageId: MediaId, media: InstantPageMedia, caption: RichText?, credit: RichText?, location: InstantPageGalleryEntryLocation?) { + self.index = index + self.pageId = pageId + self.media = media + self.caption = caption + self.credit = credit + self.location = location + } + + public static func ==(lhs: InstantPageGalleryEntry, rhs: InstantPageGalleryEntry) -> Bool { return lhs.index == rhs.index && lhs.pageId == rhs.pageId && lhs.media == rhs.media && lhs.caption == rhs.caption && lhs.credit == rhs.credit && lhs.location == rhs.location } @@ -120,15 +134,15 @@ struct InstantPageGalleryEntry: Equatable { } } -final class InstantPageGalleryControllerPresentationArguments { +public final class InstantPageGalleryControllerPresentationArguments { let transitionArguments: (InstantPageGalleryEntry) -> GalleryTransitionArguments? - init(transitionArguments: @escaping (InstantPageGalleryEntry) -> GalleryTransitionArguments?) { + public init(transitionArguments: @escaping (InstantPageGalleryEntry) -> GalleryTransitionArguments?) { self.transitionArguments = transitionArguments } } -class InstantPageGalleryController: ViewController { +public class InstantPageGalleryController: ViewController { private var galleryNode: GalleryControllerNode { return self.displayNode as! GalleryControllerNode } @@ -139,7 +153,7 @@ class InstantPageGalleryController: ViewController { private var presentationData: PresentationData private let _ready = Promise() - override var ready: Promise { + override public var ready: Promise { return self._ready } private var didSetReady = false @@ -159,7 +173,7 @@ class InstantPageGalleryController: ViewController { private let centralItemAttributesDisposable = DisposableSet(); private let _hiddenMedia = Promise(nil) - var hiddenMedia: Signal { + public var hiddenMedia: Signal { return self._hiddenMedia.get() } @@ -170,7 +184,7 @@ class InstantPageGalleryController: ViewController { private var innerOpenUrl: (InstantPageUrlItem) -> Void private var openUrlOptions: (InstantPageUrlItem) -> Void - init(context: AccountContext, webPage: TelegramMediaWebpage, message: Message? = nil, entries: [InstantPageGalleryEntry], centralIndex: Int, fromPlayingVideo: Bool = false, landscape: Bool = false, timecode: Double? = nil, replaceRootController: @escaping (ViewController, ValuePromise?) -> Void, baseNavigationController: NavigationController?) { + public init(context: AccountContext, webPage: TelegramMediaWebpage, message: Message? = nil, entries: [InstantPageGalleryEntry], centralIndex: Int, fromPlayingVideo: Bool = false, landscape: Bool = false, timecode: Double? = nil, replaceRootController: @escaping (ViewController, ValuePromise?) -> Void, baseNavigationController: NavigationController?) { self.context = context self.webPage = webPage self.message = message @@ -272,7 +286,7 @@ class InstantPageGalleryController: ViewController { } } - required init(coder aDecoder: NSCoder) { + required public init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } @@ -281,7 +295,7 @@ class InstantPageGalleryController: ViewController { self.centralItemAttributesDisposable.dispose() } - @objc func donePressed() { + @objc private func donePressed() { self.dismiss(forceAway: false) } @@ -314,7 +328,7 @@ class InstantPageGalleryController: ViewController { }) } - override func loadDisplayNode() { + override public func loadDisplayNode() { let controllerInteraction = GalleryControllerInteraction(presentController: { [weak self] controller, arguments in if let strongSelf = self { strongSelf.present(controller, in: .window(.root), with: arguments, blockInteraction: true) @@ -377,7 +391,7 @@ class InstantPageGalleryController: ViewController { self._ready.set(ready |> map { true }) } - override func viewDidAppear(_ animated: Bool) { + override public func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) var nodeAnimatesItself = false @@ -401,7 +415,7 @@ class InstantPageGalleryController: ViewController { self.galleryNode.animateIn(animateContent: !nodeAnimatesItself) } - override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { + override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size) diff --git a/submodules/TelegramUI/TelegramUI/InstantPageGalleryFooterContentNode.swift b/submodules/InstantPageUI/Sources/InstantPageGalleryFooterContentNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageGalleryFooterContentNode.swift rename to submodules/InstantPageUI/Sources/InstantPageGalleryFooterContentNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageImageItem.swift b/submodules/InstantPageUI/Sources/InstantPageImageItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageImageItem.swift rename to submodules/InstantPageUI/Sources/InstantPageImageItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift b/submodules/InstantPageUI/Sources/InstantPageImageNode.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift rename to submodules/InstantPageUI/Sources/InstantPageImageNode.swift index d396be54aa..bcdae5eb38 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift +++ b/submodules/InstantPageUI/Sources/InstantPageImageNode.swift @@ -10,6 +10,7 @@ import AccountContext import RadialStatusNode import PhotoResources import MediaResources +import LiveLocationPositionNode private struct FetchControls { let fetch: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/InstantPageItem.swift b/submodules/InstantPageUI/Sources/InstantPageItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageItem.swift rename to submodules/InstantPageUI/Sources/InstantPageItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageLayout.swift b/submodules/InstantPageUI/Sources/InstantPageLayout.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/InstantPageLayout.swift rename to submodules/InstantPageUI/Sources/InstantPageLayout.swift index 02e5f542ef..1b492cd355 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageLayout.swift +++ b/submodules/InstantPageUI/Sources/InstantPageLayout.swift @@ -6,6 +6,7 @@ import Display import TelegramPresentationData import TelegramUIPreferences import TelegramStringFormatting +import MosaicLayout final class InstantPageLayout { let origin: CGPoint diff --git a/submodules/TelegramUI/TelegramUI/InstantPageLayoutSpacings.swift b/submodules/InstantPageUI/Sources/InstantPageLayoutSpacings.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageLayoutSpacings.swift rename to submodules/InstantPageUI/Sources/InstantPageLayoutSpacings.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageLinkSelectionView.swift b/submodules/InstantPageUI/Sources/InstantPageLinkSelectionView.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageLinkSelectionView.swift rename to submodules/InstantPageUI/Sources/InstantPageLinkSelectionView.swift diff --git a/submodules/InstantPageUI/Sources/InstantPageMedia.swift b/submodules/InstantPageUI/Sources/InstantPageMedia.swift new file mode 100644 index 0000000000..757ba68a04 --- /dev/null +++ b/submodules/InstantPageUI/Sources/InstantPageMedia.swift @@ -0,0 +1,23 @@ +import Foundation +import Postbox +import TelegramCore + +public struct InstantPageMedia: Equatable { + public let index: Int + public let media: Media + public let url: InstantPageUrlItem? + public let caption: RichText? + public let credit: RichText? + + public init(index: Int, media: Media, url: InstantPageUrlItem?, caption: RichText?, credit: RichText?) { + self.index = index + self.media = media + self.url = url + self.caption = caption + self.credit = credit + } + + public static func ==(lhs: InstantPageMedia, rhs: InstantPageMedia) -> Bool { + return lhs.index == rhs.index && lhs.media.isEqual(to: rhs.media) && lhs.url == rhs.url && lhs.caption == rhs.caption && lhs.credit == rhs.credit + } +} diff --git a/submodules/TelegramUI/TelegramUI/InstantPageMediaPlaylist.swift b/submodules/InstantPageUI/Sources/InstantPageMediaPlaylist.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/InstantPageMediaPlaylist.swift rename to submodules/InstantPageUI/Sources/InstantPageMediaPlaylist.swift index c8837589a1..eb3c995a12 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageMediaPlaylist.swift +++ b/submodules/InstantPageUI/Sources/InstantPageMediaPlaylist.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import TelegramUIPreferences import AccountContext +import MusicAlbumArtResources struct InstantPageMediaPlaylistItemId: SharedMediaPlaylistItemId { let index: Int diff --git a/submodules/TelegramUI/TelegramUI/InstantPageNavigationBar.swift b/submodules/InstantPageUI/Sources/InstantPageNavigationBar.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageNavigationBar.swift rename to submodules/InstantPageUI/Sources/InstantPageNavigationBar.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageNode.swift b/submodules/InstantPageUI/Sources/InstantPageNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageNode.swift rename to submodules/InstantPageUI/Sources/InstantPageNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceItem.swift b/submodules/InstantPageUI/Sources/InstantPagePeerReferenceItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceItem.swift rename to submodules/InstantPageUI/Sources/InstantPagePeerReferenceItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceNode.swift b/submodules/InstantPageUI/Sources/InstantPagePeerReferenceNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPagePeerReferenceNode.swift rename to submodules/InstantPageUI/Sources/InstantPagePeerReferenceNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoItem.swift b/submodules/InstantPageUI/Sources/InstantPagePlayableVideoItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoItem.swift rename to submodules/InstantPageUI/Sources/InstantPagePlayableVideoItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoNode.swift b/submodules/InstantPageUI/Sources/InstantPagePlayableVideoNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPagePlayableVideoNode.swift rename to submodules/InstantPageUI/Sources/InstantPagePlayableVideoNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageReferenceController.swift b/submodules/InstantPageUI/Sources/InstantPageReferenceController.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageReferenceController.swift rename to submodules/InstantPageUI/Sources/InstantPageReferenceController.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageReferenceControllerNode.swift b/submodules/InstantPageUI/Sources/InstantPageReferenceControllerNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageReferenceControllerNode.swift rename to submodules/InstantPageUI/Sources/InstantPageReferenceControllerNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageScrollableNode.swift b/submodules/InstantPageUI/Sources/InstantPageScrollableNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageScrollableNode.swift rename to submodules/InstantPageUI/Sources/InstantPageScrollableNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsBacklightItemNode.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsBacklightItemNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsBacklightItemNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsBacklightItemNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsButtonItemNode.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsButtonItemNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsButtonItemNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsButtonItemNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsFontFamilyItemNode.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsFontFamilyItemNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsFontFamilyItemNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsFontFamilyItemNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsFontSizeItemNode.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsFontSizeItemNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsFontSizeItemNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsFontSizeItemNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsItemNode.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsItemNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsItemNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsItemNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsItemTheme.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsItemTheme.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsItemTheme.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsItemTheme.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsNode.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsSwitchItemNode.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsSwitchItemNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsSwitchItemNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsSwitchItemNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSettingsThemeItemNode.swift b/submodules/InstantPageUI/Sources/InstantPageSettingsThemeItemNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSettingsThemeItemNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSettingsThemeItemNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageShapeItem.swift b/submodules/InstantPageUI/Sources/InstantPageShapeItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageShapeItem.swift rename to submodules/InstantPageUI/Sources/InstantPageShapeItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItem.swift b/submodules/InstantPageUI/Sources/InstantPageSlideshowItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSlideshowItem.swift rename to submodules/InstantPageUI/Sources/InstantPageSlideshowItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageSlideshowItemNode.swift b/submodules/InstantPageUI/Sources/InstantPageSlideshowItemNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageSlideshowItemNode.swift rename to submodules/InstantPageUI/Sources/InstantPageSlideshowItemNode.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageStoredState.swift b/submodules/InstantPageUI/Sources/InstantPageStoredState.swift similarity index 68% rename from submodules/TelegramUI/TelegramUI/InstantPageStoredState.swift rename to submodules/InstantPageUI/Sources/InstantPageStoredState.swift index cfe84c104b..3334d421cb 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageStoredState.swift +++ b/submodules/InstantPageUI/Sources/InstantPageStoredState.swift @@ -5,51 +5,51 @@ import Postbox import TelegramCore import TelegramUIPreferences -final class InstantPageStoredDetailsState: PostboxCoding { - let index: Int32 - let expanded: Bool - let details: [InstantPageStoredDetailsState] +public final class InstantPageStoredDetailsState: PostboxCoding { + public let index: Int32 + public let expanded: Bool + public let details: [InstantPageStoredDetailsState] - init(index: Int32, expanded: Bool, details: [InstantPageStoredDetailsState]) { + public init(index: Int32, expanded: Bool, details: [InstantPageStoredDetailsState]) { self.index = index self.expanded = expanded self.details = details } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { self.index = decoder.decodeInt32ForKey("index", orElse: 0) self.expanded = decoder.decodeBoolForKey("expanded", orElse: false) self.details = decoder.decodeObjectArrayForKey("details") } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(self.index, forKey: "index") encoder.encodeBool(self.expanded, forKey: "expanded") encoder.encodeObjectArray(self.details, forKey: "details") } } -final class InstantPageStoredState: PostboxCoding { - let contentOffset: Double - let details: [InstantPageStoredDetailsState] +public final class InstantPageStoredState: PostboxCoding { + public let contentOffset: Double + public let details: [InstantPageStoredDetailsState] - init(contentOffset: Double, details: [InstantPageStoredDetailsState]) { + public init(contentOffset: Double, details: [InstantPageStoredDetailsState]) { self.contentOffset = contentOffset self.details = details } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { self.contentOffset = decoder.decodeDoubleForKey("offset", orElse: 0.0) self.details = decoder.decodeObjectArrayForKey("details") } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { encoder.encodeDouble(self.contentOffset, forKey: "offset") encoder.encodeObjectArray(self.details, forKey: "details") } } -func instantPageStoredState(postbox: Postbox, webPage: TelegramMediaWebpage) -> Signal { +public func instantPageStoredState(postbox: Postbox, webPage: TelegramMediaWebpage) -> Signal { return postbox.transaction { transaction -> InstantPageStoredState? in let key = ValueBoxKey(length: 8) key.setInt64(0, value: webPage.webpageId.id) @@ -63,7 +63,7 @@ func instantPageStoredState(postbox: Postbox, webPage: TelegramMediaWebpage) -> private let collectionSpec = ItemCacheCollectionSpec(lowWaterItemCount: 100, highWaterItemCount: 200) -func updateInstantPageStoredStateInteractively(postbox: Postbox, webPage: TelegramMediaWebpage, state: InstantPageStoredState?) -> Signal { +public func updateInstantPageStoredStateInteractively(postbox: Postbox, webPage: TelegramMediaWebpage, state: InstantPageStoredState?) -> Signal { return postbox.transaction { transaction -> Void in let key = ValueBoxKey(length: 8) key.setInt64(0, value: webPage.webpageId.id) diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTableItem.swift b/submodules/InstantPageUI/Sources/InstantPageTableItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageTableItem.swift rename to submodules/InstantPageUI/Sources/InstantPageTableItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTextItem.swift b/submodules/InstantPageUI/Sources/InstantPageTextItem.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/InstantPageTextItem.swift rename to submodules/InstantPageUI/Sources/InstantPageTextItem.swift index 6be99e4a96..6b67e5b365 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageTextItem.swift +++ b/submodules/InstantPageUI/Sources/InstantPageTextItem.swift @@ -8,11 +8,11 @@ import TelegramPresentationData import TextFormat import AccountContext -final class InstantPageUrlItem: Equatable { - let url: String - let webpageId: MediaId? +public final class InstantPageUrlItem: Equatable { + public let url: String + public let webpageId: MediaId? - init(url: String, webpageId: MediaId?) { + public init(url: String, webpageId: MediaId?) { self.url = url self.webpageId = webpageId } diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTextStyleStack.swift b/submodules/InstantPageUI/Sources/InstantPageTextStyleStack.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageTextStyleStack.swift rename to submodules/InstantPageUI/Sources/InstantPageTextStyleStack.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTheme.swift b/submodules/InstantPageUI/Sources/InstantPageTheme.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageTheme.swift rename to submodules/InstantPageUI/Sources/InstantPageTheme.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTile.swift b/submodules/InstantPageUI/Sources/InstantPageTile.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageTile.swift rename to submodules/InstantPageUI/Sources/InstantPageTile.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageTileNode.swift b/submodules/InstantPageUI/Sources/InstantPageTileNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageTileNode.swift rename to submodules/InstantPageUI/Sources/InstantPageTileNode.swift diff --git a/submodules/InstantPageUI/Sources/InstantPageUI.h b/submodules/InstantPageUI/Sources/InstantPageUI.h new file mode 100644 index 0000000000..5ac61c2c82 --- /dev/null +++ b/submodules/InstantPageUI/Sources/InstantPageUI.h @@ -0,0 +1,19 @@ +// +// InstantPageUI.h +// InstantPageUI +// +// Created by Peter on 8/12/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for InstantPageUI. +FOUNDATION_EXPORT double InstantPageUIVersionNumber; + +//! Project version string for InstantPageUI. +FOUNDATION_EXPORT const unsigned char InstantPageUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedItem.swift b/submodules/InstantPageUI/Sources/InstantPageWebEmbedItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageWebEmbedItem.swift rename to submodules/InstantPageUI/Sources/InstantPageWebEmbedItem.swift diff --git a/submodules/TelegramUI/TelegramUI/InstantPageWebEmbedNode.swift b/submodules/InstantPageUI/Sources/InstantPageWebEmbedNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/InstantPageWebEmbedNode.swift rename to submodules/InstantPageUI/Sources/InstantPageWebEmbedNode.swift diff --git a/submodules/LiveLocationPositionNode/Info.plist b/submodules/LiveLocationPositionNode/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/LiveLocationPositionNode/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/LiveLocationPositionNode/LiveLocationPositionNode_Xcode.xcodeproj/project.pbxproj b/submodules/LiveLocationPositionNode/LiveLocationPositionNode_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..8d20c24eda --- /dev/null +++ b/submodules/LiveLocationPositionNode/LiveLocationPositionNode_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,575 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C6392301D25D00FAB518 /* LiveLocationPositionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C6372301D25D00FAB518 /* LiveLocationPositionNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C6442301D2BC00FAB518 /* ChatMessageLiveLocationPositionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C6432301D2BC00FAB518 /* ChatMessageLiveLocationPositionNode.swift */; }; + D0C9C6472301D2C800FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6462301D2C800FAB518 /* Foundation.framework */; }; + D0C9C6492301D2CA00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6482301D2CA00FAB518 /* UIKit.framework */; }; + D0C9C64B2301D2CD00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C64A2301D2CD00FAB518 /* Display.framework */; }; + D0C9C64D2301D2D000FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C64C2301D2D000FAB518 /* AsyncDisplayKit.framework */; }; + D0C9C64F2301D2D500FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C64E2301D2D500FAB518 /* TelegramCore.framework */; }; + D0C9C6512301D2DA00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6502301D2DA00FAB518 /* Postbox.framework */; }; + D0C9C6532301D2E000FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6522301D2E000FAB518 /* TelegramPresentationData.framework */; }; + D0C9C6552301D2E400FAB518 /* AvatarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6542301D2E400FAB518 /* AvatarNode.framework */; }; + D0C9C65B2301D34000FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C65A2301D34000FAB518 /* FrameworkBundle.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C6342301D25D00FAB518 /* LiveLocationPositionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LiveLocationPositionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6372301D25D00FAB518 /* LiveLocationPositionNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LiveLocationPositionNode.h; sourceTree = ""; }; + D0C9C6382301D25D00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C6432301D2BC00FAB518 /* ChatMessageLiveLocationPositionNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageLiveLocationPositionNode.swift; sourceTree = ""; }; + D0C9C6462301D2C800FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C6482301D2CA00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + D0C9C64A2301D2CD00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C64C2301D2D000FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C64E2301D2D500FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6502301D2DA00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6522301D2E000FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6542301D2E400FAB518 /* AvatarNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AvatarNode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C65A2301D34000FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C6312301D25D00FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C6552301D2E400FAB518 /* AvatarNode.framework in Frameworks */, + D0C9C6532301D2E000FAB518 /* TelegramPresentationData.framework in Frameworks */, + D0C9C6512301D2DA00FAB518 /* Postbox.framework in Frameworks */, + D0C9C64F2301D2D500FAB518 /* TelegramCore.framework in Frameworks */, + D0C9C64D2301D2D000FAB518 /* AsyncDisplayKit.framework in Frameworks */, + D0C9C64B2301D2CD00FAB518 /* Display.framework in Frameworks */, + D0C9C6492301D2CA00FAB518 /* UIKit.framework in Frameworks */, + D0C9C6472301D2C800FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C62A2301D25D00FAB518 = { + isa = PBXGroup; + children = ( + D0C9C6382301D25D00FAB518 /* Info.plist */, + D0C9C6362301D25D00FAB518 /* Sources */, + D0C9C6352301D25D00FAB518 /* Products */, + D0C9C6452301D2C700FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C6352301D25D00FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C6342301D25D00FAB518 /* LiveLocationPositionNode.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C6362301D25D00FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C6432301D2BC00FAB518 /* ChatMessageLiveLocationPositionNode.swift */, + D0C9C65A2301D34000FAB518 /* FrameworkBundle.swift */, + D0C9C6372301D25D00FAB518 /* LiveLocationPositionNode.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C6452301D2C700FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C6542301D2E400FAB518 /* AvatarNode.framework */, + D0C9C6522301D2E000FAB518 /* TelegramPresentationData.framework */, + D0C9C6502301D2DA00FAB518 /* Postbox.framework */, + D0C9C64E2301D2D500FAB518 /* TelegramCore.framework */, + D0C9C64C2301D2D000FAB518 /* AsyncDisplayKit.framework */, + D0C9C64A2301D2CD00FAB518 /* Display.framework */, + D0C9C6482301D2CA00FAB518 /* UIKit.framework */, + D0C9C6462301D2C800FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C62F2301D25D00FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C6392301D25D00FAB518 /* LiveLocationPositionNode.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C6332301D25D00FAB518 /* LiveLocationPositionNode */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C63C2301D25D00FAB518 /* Build configuration list for PBXNativeTarget "LiveLocationPositionNode" */; + buildPhases = ( + D0C9C62F2301D25D00FAB518 /* Headers */, + D0C9C6302301D25D00FAB518 /* Sources */, + D0C9C6312301D25D00FAB518 /* Frameworks */, + D0C9C6322301D25D00FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LiveLocationPositionNode; + productName = LiveLocationPositionNode; + productReference = D0C9C6342301D25D00FAB518 /* LiveLocationPositionNode.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C62B2301D25D00FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C6332301D25D00FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C62E2301D25D00FAB518 /* Build configuration list for PBXProject "LiveLocationPositionNode_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C62A2301D25D00FAB518; + productRefGroup = D0C9C6352301D25D00FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C6332301D25D00FAB518 /* LiveLocationPositionNode */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C6322301D25D00FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C6302301D25D00FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C65B2301D34000FAB518 /* FrameworkBundle.swift in Sources */, + D0C9C6442301D2BC00FAB518 /* ChatMessageLiveLocationPositionNode.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C63A2301D25D00FAB518 /* 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; + }; + D0C9C63B2301D25D00FAB518 /* 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; + }; + D0C9C63D2301D25D00FAB518 /* 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.LiveLocationPositionNode; + 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; + }; + D0C9C63E2301D25D00FAB518 /* 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.LiveLocationPositionNode; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C63F2301D27E00FAB518 /* 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; + }; + D0C9C6402301D27E00FAB518 /* 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.LiveLocationPositionNode; + 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; + }; + D0C9C6412301D28700FAB518 /* 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; + }; + D0C9C6422301D28700FAB518 /* 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.LiveLocationPositionNode; + 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 */ + D0C9C62E2301D25D00FAB518 /* Build configuration list for PBXProject "LiveLocationPositionNode_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C63A2301D25D00FAB518 /* DebugAppStoreLLC */, + D0C9C63F2301D27E00FAB518 /* DebugHockeyapp */, + D0C9C63B2301D25D00FAB518 /* ReleaseAppStoreLLC */, + D0C9C6412301D28700FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C63C2301D25D00FAB518 /* Build configuration list for PBXNativeTarget "LiveLocationPositionNode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C63D2301D25D00FAB518 /* DebugAppStoreLLC */, + D0C9C6402301D27E00FAB518 /* DebugHockeyapp */, + D0C9C63E2301D25D00FAB518 /* ReleaseAppStoreLLC */, + D0C9C6422301D28700FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C62B2301D25D00FAB518 /* Project object */; +} diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationPositionNode.swift b/submodules/LiveLocationPositionNode/Sources/ChatMessageLiveLocationPositionNode.swift similarity index 94% rename from submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationPositionNode.swift rename to submodules/LiveLocationPositionNode/Sources/ChatMessageLiveLocationPositionNode.swift index 9ecdfbd2fe..36b3898bfa 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageLiveLocationPositionNode.swift +++ b/submodules/LiveLocationPositionNode/Sources/ChatMessageLiveLocationPositionNode.swift @@ -34,14 +34,14 @@ private func removePulseAnimations(layer: CALayer) { layer.removeAnimation(forKey: "pulse-opacity") } -final class ChatMessageLiveLocationPositionNode: ASDisplayNode { +public final class ChatMessageLiveLocationPositionNode: ASDisplayNode { private let backgroundNode: ASImageNode private let avatarNode: AvatarNode private let pulseNode: ASImageNode private var pulseImage: UIImage? - override init() { + override public init() { let isLayerBacked = !smartInvertColorsEnabled() self.backgroundNode = ASImageNode() @@ -67,7 +67,7 @@ final class ChatMessageLiveLocationPositionNode: ASDisplayNode { self.addSubnode(self.avatarNode) } - func asyncLayout() -> (_ account: Account, _ theme: PresentationTheme, _ peer: Peer?, _ liveActive: Bool?) -> (CGSize, () -> Void) { + public func asyncLayout() -> (_ account: Account, _ theme: PresentationTheme, _ peer: Peer?, _ liveActive: Bool?) -> (CGSize, () -> Void) { let currentPulseImage = self.pulseImage return { [weak self] account, theme, peer, liveActive in @@ -129,14 +129,14 @@ final class ChatMessageLiveLocationPositionNode: ASDisplayNode { } } - override func willEnterHierarchy() { + override public func willEnterHierarchy() { super.willEnterHierarchy() if !self.pulseNode.isHidden { addPulseAnimations(layer: self.pulseNode.layer) } } - override func didExitHierarchy() { + override public func didExitHierarchy() { super.didExitHierarchy() if !self.pulseNode.isHidden { removePulseAnimations(layer: self.pulseNode.layer) diff --git a/submodules/LiveLocationPositionNode/Sources/FrameworkBundle.swift b/submodules/LiveLocationPositionNode/Sources/FrameworkBundle.swift new file mode 100644 index 0000000000..8ca13d7d92 --- /dev/null +++ b/submodules/LiveLocationPositionNode/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/LiveLocationPositionNode/Sources/LiveLocationPositionNode.h b/submodules/LiveLocationPositionNode/Sources/LiveLocationPositionNode.h new file mode 100644 index 0000000000..19804edceb --- /dev/null +++ b/submodules/LiveLocationPositionNode/Sources/LiveLocationPositionNode.h @@ -0,0 +1,19 @@ +// +// LiveLocationPositionNode.h +// LiveLocationPositionNode +// +// Created by Peter on 8/12/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for LiveLocationPositionNode. +FOUNDATION_EXPORT double LiveLocationPositionNodeVersionNumber; + +//! Project version string for LiveLocationPositionNode. +FOUNDATION_EXPORT const unsigned char LiveLocationPositionNodeVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/LocationUI/Info.plist b/submodules/LocationUI/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/LocationUI/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/LocationUI/LocationUI_Xcode.xcodeproj/project.pbxproj b/submodules/LocationUI/LocationUI_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..8536397cd7 --- /dev/null +++ b/submodules/LocationUI/LocationUI_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,599 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C68F2301D83500FAB518 /* LocationUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C68D2301D83500FAB518 /* LocationUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C69B2301D89700FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C69A2301D89700FAB518 /* Foundation.framework */; }; + D0C9C69D2301D89A00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C69C2301D89A00FAB518 /* UIKit.framework */; }; + D0C9C69F2301D89E00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C69E2301D89E00FAB518 /* Display.framework */; }; + D0C9C6A12301D8A200FAB518 /* LegacyUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6A02301D8A200FAB518 /* LegacyUI.framework */; }; + D0C9C6A32301D8A600FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6A22301D8A600FAB518 /* SwiftSignalKit.framework */; }; + D0C9C6A52301D8AA00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6A42301D8AA00FAB518 /* Postbox.framework */; }; + D0C9C6A72301D8AF00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6A62301D8AF00FAB518 /* TelegramCore.framework */; }; + D0C9C6AA2301D8CB00FAB518 /* LegacyLocationPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C6A82301D8CB00FAB518 /* LegacyLocationPicker.swift */; }; + D0C9C6AB2301D8CB00FAB518 /* LegacyLocationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C6A92301D8CB00FAB518 /* LegacyLocationController.swift */; }; + D0C9C6AD2301D8D300FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6AC2301D8D300FAB518 /* TelegramPresentationData.framework */; }; + D0C9C6AF2301D8DF00FAB518 /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6AE2301D8DF00FAB518 /* LegacyComponents.framework */; }; + D0C9C6B12301D8E500FAB518 /* ShareController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6B02301D8E500FAB518 /* ShareController.framework */; }; + D0C9C6B32301D8EB00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6B22301D8EB00FAB518 /* AccountContext.framework */; }; + D0C9C6B52301D8F000FAB518 /* OpenInExternalAppUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6B42301D8F000FAB518 /* OpenInExternalAppUI.framework */; }; + D0C9C6B72301D8FE00FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C6B62301D8FE00FAB518 /* FrameworkBundle.swift */; }; + D0C9C6BD2301D94000FAB518 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6BC2301D94000FAB518 /* CoreLocation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C68A2301D83500FAB518 /* LocationUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LocationUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C68D2301D83500FAB518 /* LocationUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LocationUI.h; sourceTree = ""; }; + D0C9C68E2301D83500FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C69A2301D89700FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C69C2301D89A00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + D0C9C69E2301D89E00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6A02301D8A200FAB518 /* LegacyUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6A22301D8A600FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6A42301D8AA00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6A62301D8AF00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6A82301D8CB00FAB518 /* LegacyLocationPicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyLocationPicker.swift; sourceTree = ""; }; + D0C9C6A92301D8CB00FAB518 /* LegacyLocationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyLocationController.swift; sourceTree = ""; }; + D0C9C6AC2301D8D300FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6AE2301D8DF00FAB518 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6B02301D8E500FAB518 /* ShareController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ShareController.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6B22301D8EB00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6B42301D8F000FAB518 /* OpenInExternalAppUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = OpenInExternalAppUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6B62301D8FE00FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; + D0C9C6BC2301D94000FAB518 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C6872301D83500FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C6BD2301D94000FAB518 /* CoreLocation.framework in Frameworks */, + D0C9C6B52301D8F000FAB518 /* OpenInExternalAppUI.framework in Frameworks */, + D0C9C6B32301D8EB00FAB518 /* AccountContext.framework in Frameworks */, + D0C9C6B12301D8E500FAB518 /* ShareController.framework in Frameworks */, + D0C9C6AF2301D8DF00FAB518 /* LegacyComponents.framework in Frameworks */, + D0C9C6AD2301D8D300FAB518 /* TelegramPresentationData.framework in Frameworks */, + D0C9C6A72301D8AF00FAB518 /* TelegramCore.framework in Frameworks */, + D0C9C6A52301D8AA00FAB518 /* Postbox.framework in Frameworks */, + D0C9C6A32301D8A600FAB518 /* SwiftSignalKit.framework in Frameworks */, + D0C9C6A12301D8A200FAB518 /* LegacyUI.framework in Frameworks */, + D0C9C69F2301D89E00FAB518 /* Display.framework in Frameworks */, + D0C9C69D2301D89A00FAB518 /* UIKit.framework in Frameworks */, + D0C9C69B2301D89700FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C6802301D83500FAB518 = { + isa = PBXGroup; + children = ( + D0C9C68E2301D83500FAB518 /* Info.plist */, + D0C9C68C2301D83500FAB518 /* Sources */, + D0C9C68B2301D83500FAB518 /* Products */, + D0C9C6992301D89600FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C68B2301D83500FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C68A2301D83500FAB518 /* LocationUI.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C68C2301D83500FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C6A92301D8CB00FAB518 /* LegacyLocationController.swift */, + D0C9C6A82301D8CB00FAB518 /* LegacyLocationPicker.swift */, + D0C9C6B62301D8FE00FAB518 /* FrameworkBundle.swift */, + D0C9C68D2301D83500FAB518 /* LocationUI.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C6992301D89600FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C6BC2301D94000FAB518 /* CoreLocation.framework */, + D0C9C6B42301D8F000FAB518 /* OpenInExternalAppUI.framework */, + D0C9C6B22301D8EB00FAB518 /* AccountContext.framework */, + D0C9C6B02301D8E500FAB518 /* ShareController.framework */, + D0C9C6AE2301D8DF00FAB518 /* LegacyComponents.framework */, + D0C9C6AC2301D8D300FAB518 /* TelegramPresentationData.framework */, + D0C9C6A62301D8AF00FAB518 /* TelegramCore.framework */, + D0C9C6A42301D8AA00FAB518 /* Postbox.framework */, + D0C9C6A22301D8A600FAB518 /* SwiftSignalKit.framework */, + D0C9C6A02301D8A200FAB518 /* LegacyUI.framework */, + D0C9C69E2301D89E00FAB518 /* Display.framework */, + D0C9C69C2301D89A00FAB518 /* UIKit.framework */, + D0C9C69A2301D89700FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C6852301D83500FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C68F2301D83500FAB518 /* LocationUI.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C6892301D83500FAB518 /* LocationUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C6922301D83500FAB518 /* Build configuration list for PBXNativeTarget "LocationUI" */; + buildPhases = ( + D0C9C6852301D83500FAB518 /* Headers */, + D0C9C6862301D83500FAB518 /* Sources */, + D0C9C6872301D83500FAB518 /* Frameworks */, + D0C9C6882301D83500FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LocationUI; + productName = LocationUI; + productReference = D0C9C68A2301D83500FAB518 /* LocationUI.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C6812301D83500FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C6892301D83500FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C6842301D83500FAB518 /* Build configuration list for PBXProject "LocationUI_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C6802301D83500FAB518; + productRefGroup = D0C9C68B2301D83500FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C6892301D83500FAB518 /* LocationUI */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C6882301D83500FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C6862301D83500FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C6AA2301D8CB00FAB518 /* LegacyLocationPicker.swift in Sources */, + D0C9C6AB2301D8CB00FAB518 /* LegacyLocationController.swift in Sources */, + D0C9C6B72301D8FE00FAB518 /* FrameworkBundle.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C6902301D83500FAB518 /* 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; + }; + D0C9C6912301D83500FAB518 /* 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; + }; + D0C9C6932301D83500FAB518 /* 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.LocationUI; + 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; + }; + D0C9C6942301D83500FAB518 /* 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.LocationUI; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C6952301D85E00FAB518 /* 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; + }; + D0C9C6962301D85E00FAB518 /* 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.LocationUI; + 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; + }; + D0C9C6972301D86900FAB518 /* 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; + }; + D0C9C6982301D86900FAB518 /* 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.LocationUI; + 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 */ + D0C9C6842301D83500FAB518 /* Build configuration list for PBXProject "LocationUI_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C6902301D83500FAB518 /* DebugAppStoreLLC */, + D0C9C6952301D85E00FAB518 /* DebugHockeyapp */, + D0C9C6912301D83500FAB518 /* ReleaseAppStoreLLC */, + D0C9C6972301D86900FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C6922301D83500FAB518 /* Build configuration list for PBXNativeTarget "LocationUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C6932301D83500FAB518 /* DebugAppStoreLLC */, + D0C9C6962301D85E00FAB518 /* DebugHockeyapp */, + D0C9C6942301D83500FAB518 /* ReleaseAppStoreLLC */, + D0C9C6982301D86900FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C6812301D83500FAB518 /* Project object */; +} diff --git a/submodules/LocationUI/Sources/FrameworkBundle.swift b/submodules/LocationUI/Sources/FrameworkBundle.swift new file mode 100644 index 0000000000..8ca13d7d92 --- /dev/null +++ b/submodules/LocationUI/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/LegacyLocationController.swift b/submodules/LocationUI/Sources/LegacyLocationController.swift similarity index 97% rename from submodules/TelegramUI/TelegramUI/LegacyLocationController.swift rename to submodules/LocationUI/Sources/LegacyLocationController.swift index 9984f2f175..32a18df551 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyLocationController.swift +++ b/submodules/LocationUI/Sources/LegacyLocationController.swift @@ -126,7 +126,7 @@ func legacyLocationPalette(from theme: PresentationTheme) -> TGLocationPallete { return TGLocationPallete(backgroundColor: listTheme.plainBackgroundColor, selectionColor: listTheme.itemHighlightedBackgroundColor, separatorColor: listTheme.itemPlainSeparatorColor, textColor: listTheme.itemPrimaryTextColor, secondaryTextColor: listTheme.itemSecondaryTextColor, accentColor: listTheme.itemAccentColor, destructiveColor: listTheme.itemDestructiveColor, locationColor: UIColor(rgb: 0x008df2), liveLocationColor: UIColor(rgb: 0xff6464), iconColor: searchTheme.backgroundColor, sectionHeaderBackgroundColor: theme.chatList.sectionHeaderFillColor, sectionHeaderTextColor: theme.chatList.sectionHeaderTextColor, searchBarPallete: TGSearchBarPallete(dark: theme.overallDarkAppearance, backgroundColor: searchTheme.backgroundColor, highContrastBackgroundColor: searchTheme.backgroundColor, textColor: searchTheme.inputTextColor, placeholderColor: searchTheme.inputPlaceholderTextColor, clearIcon: generateClearIcon(color: theme.rootController.navigationSearchBar.inputClearButtonColor), barBackgroundColor: searchTheme.backgroundColor, barSeparatorColor: searchTheme.separatorColor, plainBackgroundColor: searchTheme.backgroundColor, accentColor: searchTheme.accentColor, accentContrastColor: searchTheme.backgroundColor, menuBackgroundColor: searchTheme.backgroundColor, segmentedControlBackgroundImage: nil, segmentedControlSelectedImage: nil, segmentedControlHighlightedImage: nil, segmentedControlDividerImage: nil), avatarPlaceholder: nil) } -func legacyLocationController(message: Message?, mapMedia: TelegramMediaMap, context: AccountContext, isModal: Bool, openPeer: @escaping (Peer) -> Void, sendLiveLocation: @escaping (CLLocationCoordinate2D, Int32) -> Void, stopLiveLocation: @escaping () -> Void, openUrl: @escaping (String) -> Void) -> ViewController { +public func legacyLocationController(message: Message?, mapMedia: TelegramMediaMap, context: AccountContext, isModal: Bool, openPeer: @escaping (Peer) -> Void, sendLiveLocation: @escaping (CLLocationCoordinate2D, Int32) -> Void, stopLiveLocation: @escaping () -> Void, openUrl: @escaping (String) -> Void) -> ViewController { let legacyLocation = TGLocationMediaAttachment() legacyLocation.latitude = mapMedia.latitude legacyLocation.longitude = mapMedia.longitude diff --git a/submodules/TelegramUI/TelegramUI/LegacyLocationPicker.swift b/submodules/LocationUI/Sources/LegacyLocationPicker.swift similarity index 92% rename from submodules/TelegramUI/TelegramUI/LegacyLocationPicker.swift rename to submodules/LocationUI/Sources/LegacyLocationPicker.swift index 1ea8ad789f..fe5e92e4e6 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyLocationPicker.swift +++ b/submodules/LocationUI/Sources/LegacyLocationPicker.swift @@ -13,7 +13,7 @@ private func generateClearIcon(color: UIColor) -> UIImage? { return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: color) } -func legacyLocationPickerController(context: AccountContext, selfPeer: Peer, peer: Peer, sendLocation: @escaping (CLLocationCoordinate2D, MapVenue?, String?) -> Void, sendLiveLocation: @escaping (CLLocationCoordinate2D, Int32) -> Void, theme: PresentationTheme, customLocationPicker: Bool = false, presentationCompleted: @escaping () -> Void = {}) -> ViewController { +public func legacyLocationPickerController(context: AccountContext, selfPeer: Peer, peer: Peer, sendLocation: @escaping (CLLocationCoordinate2D, MapVenue?, String?) -> Void, sendLiveLocation: @escaping (CLLocationCoordinate2D, Int32) -> Void, theme: PresentationTheme, customLocationPicker: Bool = false, presentationCompleted: @escaping () -> Void = {}) -> ViewController { let legacyController = LegacyController(presentation: .modal(animateIn: true), theme: theme) legacyController.presentationCompleted = { presentationCompleted() diff --git a/submodules/LocationUI/Sources/LocationUI.h b/submodules/LocationUI/Sources/LocationUI.h new file mode 100644 index 0000000000..477d4eb9b7 --- /dev/null +++ b/submodules/LocationUI/Sources/LocationUI.h @@ -0,0 +1,19 @@ +// +// LocationUI.h +// LocationUI +// +// Created by Peter on 8/12/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for LocationUI. +FOUNDATION_EXPORT double LocationUIVersionNumber; + +//! Project version string for LocationUI. +FOUNDATION_EXPORT const unsigned char LocationUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/MosaicLayout/Info.plist b/submodules/MosaicLayout/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/MosaicLayout/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/MosaicLayout/MosaicLayout_Xcode.xcodeproj/project.pbxproj b/submodules/MosaicLayout/MosaicLayout_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..07340b8797 --- /dev/null +++ b/submodules/MosaicLayout/MosaicLayout_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,547 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C66B2301D39A00FAB518 /* MosaicLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C6692301D39A00FAB518 /* MosaicLayout.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C6762301D42A00FAB518 /* ChatMessageBubbleMosaicLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C6752301D42A00FAB518 /* ChatMessageBubbleMosaicLayout.swift */; }; + D0C9C6792301D44E00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6782301D44E00FAB518 /* Foundation.framework */; }; + D0C9C67B2301D45100FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C67A2301D45100FAB518 /* UIKit.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C6662301D39A00FAB518 /* MosaicLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MosaicLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6692301D39A00FAB518 /* MosaicLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MosaicLayout.h; sourceTree = ""; }; + D0C9C66A2301D39A00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C6752301D42A00FAB518 /* ChatMessageBubbleMosaicLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageBubbleMosaicLayout.swift; sourceTree = ""; }; + D0C9C6782301D44E00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C67A2301D45100FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C6632301D39A00FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C67B2301D45100FAB518 /* UIKit.framework in Frameworks */, + D0C9C6792301D44E00FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C65C2301D39A00FAB518 = { + isa = PBXGroup; + children = ( + D0C9C66A2301D39A00FAB518 /* Info.plist */, + D0C9C6682301D39A00FAB518 /* Sources */, + D0C9C6672301D39A00FAB518 /* Products */, + D0C9C6772301D44D00FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C6672301D39A00FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C6662301D39A00FAB518 /* MosaicLayout.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C6682301D39A00FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C6752301D42A00FAB518 /* ChatMessageBubbleMosaicLayout.swift */, + D0C9C6692301D39A00FAB518 /* MosaicLayout.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C6772301D44D00FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C67A2301D45100FAB518 /* UIKit.framework */, + D0C9C6782301D44E00FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C6612301D39A00FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C66B2301D39A00FAB518 /* MosaicLayout.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C6652301D39A00FAB518 /* MosaicLayout */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C66E2301D39A00FAB518 /* Build configuration list for PBXNativeTarget "MosaicLayout" */; + buildPhases = ( + D0C9C6612301D39A00FAB518 /* Headers */, + D0C9C6622301D39A00FAB518 /* Sources */, + D0C9C6632301D39A00FAB518 /* Frameworks */, + D0C9C6642301D39A00FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MosaicLayout; + productName = MosaicLayout; + productReference = D0C9C6662301D39A00FAB518 /* MosaicLayout.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C65D2301D39A00FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C6652301D39A00FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C6602301D39A00FAB518 /* Build configuration list for PBXProject "MosaicLayout_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C65C2301D39A00FAB518; + productRefGroup = D0C9C6672301D39A00FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C6652301D39A00FAB518 /* MosaicLayout */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C6642301D39A00FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C6622301D39A00FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C6762301D42A00FAB518 /* ChatMessageBubbleMosaicLayout.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C66C2301D39A00FAB518 /* 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; + }; + D0C9C66D2301D39A00FAB518 /* 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; + }; + D0C9C66F2301D39A00FAB518 /* 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.MosaicLayout; + 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; + }; + D0C9C6702301D39A00FAB518 /* 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.MosaicLayout; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C6712301D3C300FAB518 /* 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; + }; + D0C9C6722301D3C300FAB518 /* 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.MosaicLayout; + 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; + }; + D0C9C6732301D3CD00FAB518 /* 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; + }; + D0C9C6742301D3CD00FAB518 /* 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.MosaicLayout; + 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 */ + D0C9C6602301D39A00FAB518 /* Build configuration list for PBXProject "MosaicLayout_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C66C2301D39A00FAB518 /* DebugAppStoreLLC */, + D0C9C6712301D3C300FAB518 /* DebugHockeyapp */, + D0C9C66D2301D39A00FAB518 /* ReleaseAppStoreLLC */, + D0C9C6732301D3CD00FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C66E2301D39A00FAB518 /* Build configuration list for PBXNativeTarget "MosaicLayout" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C66F2301D39A00FAB518 /* DebugAppStoreLLC */, + D0C9C6722301D3C300FAB518 /* DebugHockeyapp */, + D0C9C6702301D39A00FAB518 /* ReleaseAppStoreLLC */, + D0C9C6742301D3CD00FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C65D2301D39A00FAB518 /* Project object */; +} diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleMosaicLayout.swift b/submodules/MosaicLayout/Sources/ChatMessageBubbleMosaicLayout.swift similarity index 95% rename from submodules/TelegramUI/TelegramUI/ChatMessageBubbleMosaicLayout.swift rename to submodules/MosaicLayout/Sources/ChatMessageBubbleMosaicLayout.swift index fb635000f0..7fd6b159af 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleMosaicLayout.swift +++ b/submodules/MosaicLayout/Sources/ChatMessageBubbleMosaicLayout.swift @@ -1,25 +1,22 @@ import Foundation import UIKit -import Postbox -import TelegramCore -import Display -struct MosaicItemPosition: OptionSet { - var rawValue: Int32 +public struct MosaicItemPosition: OptionSet { + public var rawValue: Int32 - init(rawValue: Int32) { + public init(rawValue: Int32) { self.rawValue = rawValue } - static let none = MosaicItemPosition(rawValue: 0) - static let top = MosaicItemPosition(rawValue: 1) - static let bottom = MosaicItemPosition(rawValue: 2) - static let left = MosaicItemPosition(rawValue: 4) - static let right = MosaicItemPosition(rawValue: 8) - static let inside = MosaicItemPosition(rawValue: 16) - static let unknown = MosaicItemPosition(rawValue: 65536) + public static let none = MosaicItemPosition(rawValue: 0) + public static let top = MosaicItemPosition(rawValue: 1) + public static let bottom = MosaicItemPosition(rawValue: 2) + public static let left = MosaicItemPosition(rawValue: 4) + public static let right = MosaicItemPosition(rawValue: 8) + public static let inside = MosaicItemPosition(rawValue: 16) + public static let unknown = MosaicItemPosition(rawValue: 65536) - var isWide: Bool { + public var isWide: Bool { return self.contains(.left) && self.contains(.right) && (self.contains(.top) || self.contains(.bottom)) } } @@ -38,7 +35,7 @@ private struct MosaicLayoutAttempt { let heights: [CGFloat] } -func chatMessageBubbleMosaicLayout(maxSize: CGSize, itemSizes: [CGSize]) -> ([(CGRect, MosaicItemPosition)], CGSize) { +public func chatMessageBubbleMosaicLayout(maxSize: CGSize, itemSizes: [CGSize]) -> ([(CGRect, MosaicItemPosition)], CGSize) { var larger: Bool = false let spacing: CGFloat = 2.0 diff --git a/submodules/MosaicLayout/Sources/MosaicLayout.h b/submodules/MosaicLayout/Sources/MosaicLayout.h new file mode 100644 index 0000000000..ed69843504 --- /dev/null +++ b/submodules/MosaicLayout/Sources/MosaicLayout.h @@ -0,0 +1,19 @@ +// +// MosaicLayout.h +// MosaicLayout +// +// Created by Peter on 8/12/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for MosaicLayout. +FOUNDATION_EXPORT double MosaicLayoutVersionNumber; + +//! Project version string for MosaicLayout. +FOUNDATION_EXPORT const unsigned char MosaicLayoutVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/MusicAlbumArtResources/Info.plist b/submodules/MusicAlbumArtResources/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/MusicAlbumArtResources/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/MusicAlbumArtResources/MusicAlbumArtResources_Xcode.xcodeproj/project.pbxproj b/submodules/MusicAlbumArtResources/MusicAlbumArtResources_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..7ae11bda19 --- /dev/null +++ b/submodules/MusicAlbumArtResources/MusicAlbumArtResources_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,563 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C60D2301D13D00FAB518 /* MusicAlbumArtResources.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C60B2301D13D00FAB518 /* MusicAlbumArtResources.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C6182301D19100FAB518 /* ExternalMusicAlbumArtResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C6172301D19100FAB518 /* ExternalMusicAlbumArtResources.swift */; }; + D0C9C61B2301D19E00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C61A2301D19D00FAB518 /* Foundation.framework */; }; + D0C9C61D2301D1A000FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C61C2301D1A000FAB518 /* UIKit.framework */; }; + D0C9C61F2301D1A300FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C61E2301D1A300FAB518 /* TelegramCore.framework */; }; + D0C9C6212301D1A700FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6202301D1A700FAB518 /* SwiftSignalKit.framework */; }; + D0C9C6232301D1AB00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6222301D1AB00FAB518 /* Postbox.framework */; }; + D0C9C6252301D1FA00FAB518 /* UrlEscaping.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6242301D1FA00FAB518 /* UrlEscaping.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C6082301D13D00FAB518 /* MusicAlbumArtResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MusicAlbumArtResources.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C60B2301D13D00FAB518 /* MusicAlbumArtResources.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MusicAlbumArtResources.h; sourceTree = ""; }; + D0C9C60C2301D13D00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C6172301D19100FAB518 /* ExternalMusicAlbumArtResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExternalMusicAlbumArtResources.swift; sourceTree = ""; }; + D0C9C61A2301D19D00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C61C2301D1A000FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + D0C9C61E2301D1A300FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6202301D1A700FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6222301D1AB00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6242301D1FA00FAB518 /* UrlEscaping.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UrlEscaping.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C6052301D13D00FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C6252301D1FA00FAB518 /* UrlEscaping.framework in Frameworks */, + D0C9C6232301D1AB00FAB518 /* Postbox.framework in Frameworks */, + D0C9C6212301D1A700FAB518 /* SwiftSignalKit.framework in Frameworks */, + D0C9C61F2301D1A300FAB518 /* TelegramCore.framework in Frameworks */, + D0C9C61D2301D1A000FAB518 /* UIKit.framework in Frameworks */, + D0C9C61B2301D19E00FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C5FE2301D13D00FAB518 = { + isa = PBXGroup; + children = ( + D0C9C60C2301D13D00FAB518 /* Info.plist */, + D0C9C60A2301D13D00FAB518 /* Sources */, + D0C9C6092301D13D00FAB518 /* Products */, + D0C9C6192301D19C00FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C6092301D13D00FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C6082301D13D00FAB518 /* MusicAlbumArtResources.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C60A2301D13D00FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C6172301D19100FAB518 /* ExternalMusicAlbumArtResources.swift */, + D0C9C60B2301D13D00FAB518 /* MusicAlbumArtResources.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C6192301D19C00FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C6242301D1FA00FAB518 /* UrlEscaping.framework */, + D0C9C6222301D1AB00FAB518 /* Postbox.framework */, + D0C9C6202301D1A700FAB518 /* SwiftSignalKit.framework */, + D0C9C61E2301D1A300FAB518 /* TelegramCore.framework */, + D0C9C61C2301D1A000FAB518 /* UIKit.framework */, + D0C9C61A2301D19D00FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C6032301D13D00FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C60D2301D13D00FAB518 /* MusicAlbumArtResources.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C6072301D13D00FAB518 /* MusicAlbumArtResources */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C6102301D13D00FAB518 /* Build configuration list for PBXNativeTarget "MusicAlbumArtResources" */; + buildPhases = ( + D0C9C6032301D13D00FAB518 /* Headers */, + D0C9C6042301D13D00FAB518 /* Sources */, + D0C9C6052301D13D00FAB518 /* Frameworks */, + D0C9C6062301D13D00FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MusicAlbumArtResources; + productName = MusicAlbumArtResources; + productReference = D0C9C6082301D13D00FAB518 /* MusicAlbumArtResources.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C5FF2301D13D00FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C6072301D13D00FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C6022301D13D00FAB518 /* Build configuration list for PBXProject "MusicAlbumArtResources_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C5FE2301D13D00FAB518; + productRefGroup = D0C9C6092301D13D00FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C6072301D13D00FAB518 /* MusicAlbumArtResources */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C6062301D13D00FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C6042301D13D00FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C6182301D19100FAB518 /* ExternalMusicAlbumArtResources.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C60E2301D13D00FAB518 /* 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; + }; + D0C9C60F2301D13D00FAB518 /* 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; + }; + D0C9C6112301D13D00FAB518 /* 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.MusicAlbumArtResources; + 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; + }; + D0C9C6122301D13D00FAB518 /* 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.MusicAlbumArtResources; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C6132301D15B00FAB518 /* 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; + }; + D0C9C6142301D15B00FAB518 /* 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.MusicAlbumArtResources; + 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; + }; + D0C9C6152301D16500FAB518 /* 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; + }; + D0C9C6162301D16500FAB518 /* 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.MusicAlbumArtResources; + 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 */ + D0C9C6022301D13D00FAB518 /* Build configuration list for PBXProject "MusicAlbumArtResources_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C60E2301D13D00FAB518 /* DebugAppStoreLLC */, + D0C9C6132301D15B00FAB518 /* DebugHockeyapp */, + D0C9C60F2301D13D00FAB518 /* ReleaseAppStoreLLC */, + D0C9C6152301D16500FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C6102301D13D00FAB518 /* Build configuration list for PBXNativeTarget "MusicAlbumArtResources" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C6112301D13D00FAB518 /* DebugAppStoreLLC */, + D0C9C6142301D15B00FAB518 /* DebugHockeyapp */, + D0C9C6122301D13D00FAB518 /* ReleaseAppStoreLLC */, + D0C9C6162301D16500FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C5FF2301D13D00FAB518 /* Project object */; +} diff --git a/submodules/TelegramUI/TelegramUI/ExternalMusicAlbumArtResources.swift b/submodules/MusicAlbumArtResources/Sources/ExternalMusicAlbumArtResources.swift similarity index 90% rename from submodules/TelegramUI/TelegramUI/ExternalMusicAlbumArtResources.swift rename to submodules/MusicAlbumArtResources/Sources/ExternalMusicAlbumArtResources.swift index 04b11d6182..73c59244d7 100644 --- a/submodules/TelegramUI/TelegramUI/ExternalMusicAlbumArtResources.swift +++ b/submodules/MusicAlbumArtResources/Sources/ExternalMusicAlbumArtResources.swift @@ -3,12 +3,19 @@ import UIKit import TelegramCore import SwiftSignalKit import Postbox +import UrlEscaping public struct ExternalMusicAlbumArtResourceId: MediaResourceId { public let title: String public let performer: String public let isThumbnail: Bool + public init(title: String, performer: String, isThumbnail: Bool) { + self.title = title + self.performer = performer + self.isThumbnail = isThumbnail + } + public var uniqueId: String { return "ext-album-art-\(isThumbnail ? "thump" : "full")-\(self.title.replacingOccurrences(of: "/", with: "_"))-\(self.performer.replacingOccurrences(of: "/", with: "_"))" } @@ -62,17 +69,7 @@ public class ExternalMusicAlbumArtResource: TelegramMediaResource { } } -func urlEncodedStringFromString(_ string: String) -> String { - var nsString: NSString = string as NSString - if let value = nsString.replacingPercentEscapes(using: String.Encoding.utf8.rawValue) { - nsString = value as NSString - } - - let result = CFURLCreateStringByAddingPercentEscapes(nil, nsString as CFString, nil, "?!@#$^&%*+=,:;'\"`<>()[]{}/\\|~ " as CFString, CFStringConvertNSStringEncodingToEncoding(String.Encoding.utf8.rawValue))! - return result as String -} - -func fetchExternalMusicAlbumArtResource(account: Account, resource: ExternalMusicAlbumArtResource) -> Signal { +public func fetchExternalMusicAlbumArtResource(account: Account, resource: ExternalMusicAlbumArtResource) -> Signal { return Signal { subscriber in subscriber.putNext(.reset) diff --git a/submodules/MusicAlbumArtResources/Sources/MusicAlbumArtResources.h b/submodules/MusicAlbumArtResources/Sources/MusicAlbumArtResources.h new file mode 100644 index 0000000000..2bfd4a8539 --- /dev/null +++ b/submodules/MusicAlbumArtResources/Sources/MusicAlbumArtResources.h @@ -0,0 +1,19 @@ +// +// MusicAlbumArtResources.h +// MusicAlbumArtResources +// +// Created by Peter on 8/12/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for MusicAlbumArtResources. +FOUNDATION_EXPORT double MusicAlbumArtResourcesVersionNumber; + +//! Project version string for MusicAlbumArtResources. +FOUNDATION_EXPORT const unsigned char MusicAlbumArtResourcesVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/Pdf/Info.plist b/submodules/Pdf/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/Pdf/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/Pdf/Pdf_Xcode.xcodeproj/project.pbxproj b/submodules/Pdf/Pdf_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..0c72733cce --- /dev/null +++ b/submodules/Pdf/Pdf_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,551 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C54B2301CEBD00FAB518 /* Pdf.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C5492301CEBD00FAB518 /* Pdf.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C5562301CF1700FAB518 /* PDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C5552301CF1600FAB518 /* PDF.swift */; }; + D0C9C5592301CF2700FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5582301CF2700FAB518 /* Foundation.framework */; }; + D0C9C55B2301CF2A00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C55A2301CF2A00FAB518 /* UIKit.framework */; }; + D0C9C55D2301CF3500FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C55C2301CF3500FAB518 /* Display.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C5462301CEBD00FAB518 /* Pdf.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pdf.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5492301CEBD00FAB518 /* Pdf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Pdf.h; sourceTree = ""; }; + D0C9C54A2301CEBD00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C5552301CF1600FAB518 /* PDF.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PDF.swift; sourceTree = ""; }; + D0C9C5582301CF2700FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C55A2301CF2A00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + D0C9C55C2301CF3500FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C5432301CEBD00FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C55D2301CF3500FAB518 /* Display.framework in Frameworks */, + D0C9C55B2301CF2A00FAB518 /* UIKit.framework in Frameworks */, + D0C9C5592301CF2700FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C53C2301CEBD00FAB518 = { + isa = PBXGroup; + children = ( + D0C9C54A2301CEBD00FAB518 /* Info.plist */, + D0C9C5482301CEBD00FAB518 /* Sources */, + D0C9C5472301CEBD00FAB518 /* Products */, + D0C9C5572301CF2600FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C5472301CEBD00FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C5462301CEBD00FAB518 /* Pdf.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C5482301CEBD00FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C5552301CF1600FAB518 /* PDF.swift */, + D0C9C5492301CEBD00FAB518 /* Pdf.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C5572301CF2600FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C55C2301CF3500FAB518 /* Display.framework */, + D0C9C55A2301CF2A00FAB518 /* UIKit.framework */, + D0C9C5582301CF2700FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C5412301CEBD00FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C54B2301CEBD00FAB518 /* Pdf.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C5452301CEBD00FAB518 /* Pdf */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C54E2301CEBD00FAB518 /* Build configuration list for PBXNativeTarget "Pdf" */; + buildPhases = ( + D0C9C5412301CEBD00FAB518 /* Headers */, + D0C9C5422301CEBD00FAB518 /* Sources */, + D0C9C5432301CEBD00FAB518 /* Frameworks */, + D0C9C5442301CEBD00FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Pdf; + productName = Pdf; + productReference = D0C9C5462301CEBD00FAB518 /* Pdf.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C53D2301CEBD00FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C5452301CEBD00FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C5402301CEBD00FAB518 /* Build configuration list for PBXProject "Pdf_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C53C2301CEBD00FAB518; + productRefGroup = D0C9C5472301CEBD00FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C5452301CEBD00FAB518 /* Pdf */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C5442301CEBD00FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C5422301CEBD00FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C5562301CF1700FAB518 /* PDF.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C54C2301CEBD00FAB518 /* 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; + }; + D0C9C54D2301CEBD00FAB518 /* 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; + }; + D0C9C54F2301CEBD00FAB518 /* 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.Pdf; + 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; + }; + D0C9C5502301CEBD00FAB518 /* 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.Pdf; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C5512301CEDD00FAB518 /* 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; + }; + D0C9C5522301CEDD00FAB518 /* 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.Pdf; + 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; + }; + D0C9C5532301CEE900FAB518 /* 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; + }; + D0C9C5542301CEE900FAB518 /* 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.Pdf; + 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 */ + D0C9C5402301CEBD00FAB518 /* Build configuration list for PBXProject "Pdf_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C54C2301CEBD00FAB518 /* DebugAppStoreLLC */, + D0C9C5512301CEDD00FAB518 /* DebugHockeyapp */, + D0C9C54D2301CEBD00FAB518 /* ReleaseAppStoreLLC */, + D0C9C5532301CEE900FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C54E2301CEBD00FAB518 /* Build configuration list for PBXNativeTarget "Pdf" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C54F2301CEBD00FAB518 /* DebugAppStoreLLC */, + D0C9C5522301CEDD00FAB518 /* DebugHockeyapp */, + D0C9C5502301CEBD00FAB518 /* ReleaseAppStoreLLC */, + D0C9C5542301CEE900FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C53D2301CEBD00FAB518 /* Project object */; +} diff --git a/submodules/TelegramUI/TelegramUI/PDF.swift b/submodules/Pdf/Sources/PDF.swift similarity index 88% rename from submodules/TelegramUI/TelegramUI/PDF.swift rename to submodules/Pdf/Sources/PDF.swift index 8dd1670ef0..08cc6438f7 100644 --- a/submodules/TelegramUI/TelegramUI/PDF.swift +++ b/submodules/Pdf/Sources/PDF.swift @@ -2,12 +2,12 @@ import Foundation import UIKit import Display -func generatePdfPreviewImage(url: URL, size: CGSize) -> UIImage? { +public func generatePdfPreviewImage(url: URL, size: CGSize) -> UIImage? { guard let data = try? Data(contentsOf: url, options: .mappedIfSafe) else { return nil } return generatePdfPreviewImage(data: data, size: size) } -func generatePdfPreviewImage(data: Data, size: CGSize) -> UIImage? { +public func generatePdfPreviewImage(data: Data, size: CGSize) -> UIImage? { guard let provider = CGDataProvider(data: data as CFData) else { return nil } guard let document = CGPDFDocument(provider) else { return nil } guard let firstPage = document.page(at: 1) else { return nil } diff --git a/submodules/Pdf/Sources/Pdf.h b/submodules/Pdf/Sources/Pdf.h new file mode 100644 index 0000000000..cc0cc8a96b --- /dev/null +++ b/submodules/Pdf/Sources/Pdf.h @@ -0,0 +1,19 @@ +// +// Pdf.h +// Pdf +// +// Created by Peter on 8/12/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for Pdf. +FOUNDATION_EXPORT double PdfVersionNumber; + +//! Project version string for Pdf. +FOUNDATION_EXPORT const unsigned char PdfVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift index 7d214d6c81..0088607804 100644 --- a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift +++ b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift @@ -359,7 +359,7 @@ final class AuthorizedApplicationContext { if let strongSelf = self, let (messages, _, notify) = messageList.last, let firstMessage = messages.first { if UIApplication.shared.applicationState == .active { var chatIsVisible = false - if let topController = strongSelf.rootController.topViewController as? ChatController, topController.traceVisibility() { + if let topController = strongSelf.rootController.topViewController as? ChatControllerImpl, topController.traceVisibility() { if case .peer(firstMessage.id.peerId) = topController.chatLocation { chatIsVisible = true }/* else if case let .group(topGroupId) = topController.chatLocation, topGroupId == groupId { @@ -373,7 +373,7 @@ final class AuthorizedApplicationContext { if !chatIsVisible { strongSelf.mainWindow.forEachViewController({ controller in - if let controller = controller as? ChatController, case .peer(firstMessage.id.peerId) = controller.chatLocation { + if let controller = controller as? ChatControllerImpl, case .peer(firstMessage.id.peerId) = controller.chatLocation { chatIsVisible = true return false } @@ -431,26 +431,26 @@ final class AuthorizedApplicationContext { return true } - if let topController = strongSelf.rootController.topViewController as? ChatController, case .peer(firstMessage.id.peerId) = topController.chatLocation { + if let topController = strongSelf.rootController.topViewController as? ChatControllerImpl, case .peer(firstMessage.id.peerId) = topController.chatLocation { strongSelf.notificationController.removeItemsWithGroupingKey(firstMessage.id.peerId) return false } for controller in strongSelf.rootController.viewControllers { - if let controller = controller as? ChatController, case .peer(firstMessage.id.peerId) = controller.chatLocation { + if let controller = controller as? ChatControllerImpl, case .peer(firstMessage.id.peerId) = controller.chatLocation { return true } } strongSelf.notificationController.removeItemsWithGroupingKey(firstMessage.id.peerId) - navigateToChatController(navigationController: strongSelf.rootController, context: strongSelf.context, chatLocation: .peer(firstMessage.id.peerId)) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: strongSelf.rootController, context: strongSelf.context, chatLocation: .peer(firstMessage.id.peerId))) } return false }, expandAction: { expandData in if let strongSelf = self { - let chatController = ChatController(context: strongSelf.context, chatLocation: .peer(firstMessage.id.peerId), mode: .overlay) + let chatController = ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(firstMessage.id.peerId), mode: .overlay) (strongSelf.rootController.viewControllers.last as? ViewController)?.present(chatController, in: .window(.root), with: ChatControllerOverlayPresentationData(expandData: expandData())) } })) @@ -491,7 +491,7 @@ final class AuthorizedApplicationContext { if let strongSelf = self, let botName = botName { strongSelf.termsOfServiceProceedToBotDisposable.set((resolvePeerByName(account: strongSelf.context.account, name: botName, ageLimit: 10) |> take(1) |> deliverOnMainQueue).start(next: { peerId in if let strongSelf = self, let peerId = peerId { - self?.rootController.pushViewController(ChatController(context: strongSelf.context, chatLocation: .peer(peerId))) + self?.rootController.pushViewController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(peerId))) } })) } @@ -778,12 +778,12 @@ final class AuthorizedApplicationContext { if let strongSelf = self { if applicationInForeground { var chatIsVisible = false - if let controller = strongSelf.rootController.viewControllers.last as? ChatController, case .peer(messageId.peerId) = controller.chatLocation { + if let controller = strongSelf.rootController.viewControllers.last as? ChatControllerImpl, case .peer(messageId.peerId) = controller.chatLocation { chatIsVisible = true } let navigateToMessage = { - navigateToChatController(navigationController: strongSelf.rootController, context: strongSelf.context, chatLocation: .peer(messageId.peerId), messageId: messageId) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: strongSelf.rootController, context: strongSelf.context, chatLocation: .peer(messageId.peerId), messageId: messageId)) } if chatIsVisible { @@ -822,13 +822,13 @@ final class AuthorizedApplicationContext { func openChatWithPeerId(peerId: PeerId, messageId: MessageId? = nil, activateInput: Bool = false) { var visiblePeerId: PeerId? - if let controller = self.rootController.topViewController as? ChatController, case let .peer(peerId) = controller.chatLocation { + if let controller = self.rootController.topViewController as? ChatControllerImpl, case let .peer(peerId) = controller.chatLocation { visiblePeerId = peerId } if visiblePeerId != peerId || messageId != nil { if self.rootController.rootTabController != nil { - navigateToChatController(navigationController: self.rootController, context: self.context, chatLocation: .peer(peerId), messageId: messageId, activateInput: activateInput) + self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: self.rootController, context: self.context, chatLocation: .peer(peerId), messageId: messageId, activateInput: activateInput)) } else { self.scheduledOperChatWithPeerId = (peerId, messageId, activateInput) } diff --git a/submodules/TelegramUI/TelegramUI/BlurredImageNode.swift b/submodules/TelegramUI/TelegramUI/BlurredImageNode.swift index 3f1cc2917b..e9f0b77b39 100644 --- a/submodules/TelegramUI/TelegramUI/BlurredImageNode.swift +++ b/submodules/TelegramUI/TelegramUI/BlurredImageNode.swift @@ -3,6 +3,7 @@ import UIKit import SwiftSignalKit import AsyncDisplayKit import Accelerate +import ImageBlur private class BlurLayer: CALayer { private static let blurRadiusKey = "blurRadius" diff --git a/submodules/TelegramUI/TelegramUI/CachedFaqInstantPage.swift b/submodules/TelegramUI/TelegramUI/CachedFaqInstantPage.swift index ad01642d21..ba5dfdec83 100644 --- a/submodules/TelegramUI/TelegramUI/CachedFaqInstantPage.swift +++ b/submodules/TelegramUI/TelegramUI/CachedFaqInstantPage.swift @@ -3,6 +3,7 @@ import SwiftSignalKit import Postbox import TelegramCore import AccountContext +import InstantPageUI private func extractAnchor(string: String) -> (String, String?) { var anchorValue: String? diff --git a/submodules/TelegramUI/TelegramUI/ChannelAdminsController.swift b/submodules/TelegramUI/TelegramUI/ChannelAdminsController.swift index 9057a49579..f68ea96874 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelAdminsController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelAdminsController.swift @@ -770,11 +770,11 @@ public func channelAdminsController(context: AccountContext, peerId: PeerId, loa guard let controller = controller, let navigationController = controller.navigationController as? NavigationController else { return } - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(upgradedPeerId), keepStack: .never, animated: false, completion: { + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(upgradedPeerId), keepStack: .never, animated: false, completion: { navigationController.pushViewController(channelAdminsController(context: context, peerId: upgradedPeerId, loadCompleted: { f() }), animated: false) - }) + })) } controller.visibleBottomContentOffsetChanged = { offset in if case let .known(value) = offset, value < 40.0 { diff --git a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupController.swift b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupController.swift index 1a5bdd3609..745c4fba79 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelDiscussionGroupSetupController.swift @@ -612,7 +612,7 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI guard let navigationController = controller?.navigationController as? NavigationController else { return } - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(groupId), keepStack: .always) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(groupId), keepStack: .always)) } return controller } diff --git a/submodules/TelegramUI/TelegramUI/ChannelPermissionsController.swift b/submodules/TelegramUI/TelegramUI/ChannelPermissionsController.swift index 5de260d1c7..e3d8efe8e2 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelPermissionsController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelPermissionsController.swift @@ -826,9 +826,9 @@ public func channelPermissionsController(context: AccountContext, peerId origina return } sourcePeerId.set(.single((upgradedPeerId, true))) - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(upgradedPeerId), keepStack: .never, animated: false, completion: { + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(upgradedPeerId), keepStack: .never, animated: false, completion: { navigationController.pushViewController(controller, animated: false) - }) + })) } controller.visibleBottomContentOffsetChanged = { offset in diff --git a/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift b/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift index f2e7ee0b15..bd122f30ba 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift @@ -1243,7 +1243,7 @@ public func channelVisibilityController(context: AccountContext, peerId: PeerId, } }) if filteredPeerIds.isEmpty { - navigateToChatController(navigationController: navigationController, chatController: nil, context: context, chatLocation: .peer(peerId), keepStack: .never, animated: true) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, chatController: nil, context: context, chatLocation: .peer(peerId), keepStack: .never, animated: true)) } else { selectionController.displayProgress = true let _ = (addChannelMembers(account: context.account, peerId: peerId, memberIds: filteredPeerIds) @@ -1252,18 +1252,18 @@ public func channelVisibilityController(context: AccountContext, peerId: PeerId, return } - navigateToChatController(navigationController: navigationController, chatController: nil, context: context, chatLocation: .peer(peerId), keepStack: .never, animated: true) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, chatController: nil, context: context, chatLocation: .peer(peerId), keepStack: .never, animated: true)) }, completed: { [weak selectionController] in guard let selectionController = selectionController, let navigationController = selectionController.navigationController as? NavigationController else { return } - navigateToChatController(navigationController: navigationController, chatController: nil, context: context, chatLocation: .peer(peerId), keepStack: .never, animated: true) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, chatController: nil, context: context, chatLocation: .peer(peerId), keepStack: .never, animated: true)) }) } }) } else { - (controller.navigationController as? NavigationController)?.replaceAllButRootController(ChatController(context: context, chatLocation: .peer(peerId)), animated: true) + (controller.navigationController as? NavigationController)?.replaceAllButRootController(ChatControllerImpl(context: context, chatLocation: .peer(peerId)), animated: true) } } } diff --git a/submodules/TelegramUI/TelegramUI/ChatAvatarNavigationNode.swift b/submodules/TelegramUI/TelegramUI/ChatAvatarNavigationNode.swift index 24b080d8ff..a37a04c55b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatAvatarNavigationNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatAvatarNavigationNode.swift @@ -16,7 +16,7 @@ final class ChatAvatarNavigationNodeView: UIView, PreviewingHostView { }) } - weak var chatController: ChatController? + weak var chatController: ChatControllerImpl? weak var targetNode: ChatAvatarNavigationNode? override func layoutSubviews() { @@ -28,7 +28,7 @@ final class ChatAvatarNavigationNodeView: UIView, PreviewingHostView { final class ChatAvatarNavigationNode: ASDisplayNode { let avatarNode: AvatarNode - weak var chatController: ChatController? { + weak var chatController: ChatControllerImpl? { didSet { if self.isNodeLoaded { (self.view as? ChatAvatarNavigationNodeView)?.chatController = self.chatController diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index 18b0a345bf..c8c243011a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -31,6 +31,8 @@ import ScreenCaptureDetection import GalleryUI import OpenInExternalAppUI import LegacyUI +import InstantPageUI +import LocationUI public enum ChatControllerPeekActions { case standard @@ -89,11 +91,11 @@ public enum NavigateToMessageLocation { } } -private func isTopmostChatController(_ controller: ChatController) -> Bool { +private func isTopmostChatController(_ controller: ChatControllerImpl) -> Bool { if let _ = controller.navigationController { var hasOther = false controller.window?.forEachController({ c in - if c is ChatController { + if c is ChatControllerImpl { hasOther = true } }) @@ -124,7 +126,7 @@ public enum ChatControllerSubject: Equatable { case scheduledMessages } -public final class ChatController: TelegramBaseController, GalleryHiddenMediaTarget, UIDropInteractionDelegate { +public final class ChatControllerImpl: TelegramBaseController, ChatController, GalleryHiddenMediaTarget, UIDropInteractionDelegate { private var validLayout: ContainerViewLayout? weak var parentController: ViewController? @@ -1440,7 +1442,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar if let strongSelf = self { strongSelf.chatDisplayNode.sendCurrentMessage(scheduleTime: scheduleTime) if !strongSelf.presentationInterfaceState.isScheduledMessages { - let controller = ChatController(context: strongSelf.context, chatLocation: strongSelf.chatLocation, subject: .scheduledMessages) + let controller = ChatControllerImpl(context: strongSelf.context, chatLocation: strongSelf.chatLocation, subject: .scheduledMessages) (strongSelf.navigationController as? NavigationController)?.pushViewController(controller) } } @@ -1792,7 +1794,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar if let navigationController = strongSelf.navigationController as? NavigationController { var viewControllers = navigationController.viewControllers if let index = viewControllers.firstIndex(where: { $0 === strongSelf }) { - viewControllers[index] = ChatController(context: strongSelf.context, chatLocation: .peer(upgradedToPeerId)) + viewControllers[index] = ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(upgradedToPeerId)) navigationController.setViewControllers(viewControllers, animated: false) } } @@ -3040,7 +3042,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar return } if let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: nil, keepStack: .always) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: nil, keepStack: .always)) } }, openPeerInfo: { [weak self] in self?.navigationButtonAction(.openChatInfo) @@ -3759,7 +3761,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar } }, openScheduledMessages: { [weak self] in if let strongSelf = self { - let controller = ChatController(context: strongSelf.context, chatLocation: strongSelf.chatLocation, subject: .scheduledMessages) + let controller = ChatControllerImpl(context: strongSelf.context, chatLocation: strongSelf.chatLocation, subject: .scheduledMessages) (strongSelf.navigationController as? NavigationController)?.pushViewController(controller) } }, statuses: ChatPanelInterfaceInteractionStatuses(editingMessage: self.editingMessage.get(), startingBot: self.startingBot.get(), unblockingPeer: self.unblockingPeer.get(), searching: self.searching.get(), loadingMessage: self.loadingMessage.get())) @@ -5795,7 +5797,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar if case let .peer(peerId) = self.chatLocation, let messageId = messageLocation.messageId, (messageId.peerId != peerId && !forceInCurrentChat) || self.presentationInterfaceState.isScheduledMessages { if let navigationController = self.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: self.context, chatLocation: .peer(messageId.peerId), messageId: messageId, keepStack: .always) + self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: self.context, chatLocation: .peer(messageId.peerId), messageId: messageId, keepStack: .always)) } } else if case let .peer(peerId) = self.chatLocation, (messageLocation.peerId == peerId || forceInCurrentChat) { if let fromIndex = fromIndex { @@ -5933,7 +5935,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar strongSelf.chatDisplayNode.historyNode.scrollToMessage(from: fromIndex, to: index, animated: animated, scrollPosition: scrollPosition) completion?() } else { - (strongSelf.navigationController as? NavigationController)?.pushViewController(ChatController(context: strongSelf.context, chatLocation: .peer(messageLocation.peerId), subject: messageLocation.messageId.flatMap { .message($0) })) + (strongSelf.navigationController as? NavigationController)?.pushViewController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(messageLocation.peerId), subject: messageLocation.messageId.flatMap { .message($0) })) completion?() } } @@ -6019,9 +6021,9 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar })) if let parentController = strongSelf.parentController { - (parentController.navigationController as? NavigationController)?.replaceTopController(ChatController(context: strongSelf.context, chatLocation: .peer(peerId)), animated: false, ready: ready) + (parentController.navigationController as? NavigationController)?.replaceTopController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(peerId)), animated: false, ready: ready) } else { - (strongSelf.navigationController as? NavigationController)?.replaceTopController(ChatController(context: strongSelf.context, chatLocation: .peer(peerId)), animated: false, ready: ready) + (strongSelf.navigationController as? NavigationController)?.replaceTopController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(peerId)), animated: false, ready: ready) } } }) @@ -6085,19 +6087,19 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar }) |> deliverOnMainQueue).start(completed: { [weak self] in if let strongSelf = self, let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId, updateTextInputState: textInputState) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId, updateTextInputState: textInputState)) } }) } else { - (self.navigationController as? NavigationController)?.pushViewController(ChatController(context: self.context, chatLocation: .peer(peerId), subject: messageId.flatMap({ .message($0) }))) + (self.navigationController as? NavigationController)?.pushViewController(ChatControllerImpl(context: self.context, chatLocation: .peer(peerId), subject: messageId.flatMap({ .message($0) }))) } case let .withBotStartPayload(botStart): - (self.navigationController as? NavigationController)?.pushViewController(ChatController(context: self.context, chatLocation: .peer(peerId), botStart: botStart)) + (self.navigationController as? NavigationController)?.pushViewController(ChatControllerImpl(context: self.context, chatLocation: .peer(peerId), botStart: botStart)) default: break } /*case .group: - (self.navigationController as? NavigationController)?.pushViewController(ChatController(context: self.context, chatLocation: .peer(peerId), messageId: fromMessage?.id, botStart: nil))*/ + (self.navigationController as? NavigationController)?.pushViewController(ChatControllerImpl(context: self.context, chatLocation: .peer(peerId), messageId: fromMessage?.id, botStart: nil))*/ } } else { switch navigation { @@ -6138,7 +6140,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar } })) - (strongSelf.navigationController as? NavigationController)?.replaceTopController(ChatController(context: strongSelf.context, chatLocation: .peer(peerId)), animated: false, ready: ready) + (strongSelf.navigationController as? NavigationController)?.replaceTopController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(peerId)), animated: false, ready: ready) } }) } @@ -6454,7 +6456,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar } private func openResolved(_ result: ResolvedUrl) { - openResolvedUrl(result, context: self.context, urlContext: .chat, navigationController: self.navigationController as? NavigationController, openPeer: { [weak self] peerId, navigation in + self.context.sharedContext.openResolvedUrl(result, context: self.context, urlContext: .chat, navigationController: self.navigationController as? NavigationController, openPeer: { [weak self] peerId, navigation in guard let strongSelf = self else { return } @@ -6465,7 +6467,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar strongSelf.navigateToMessage(from: nil, to: .id(messageId)) } } else if let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId, keepStack: .always) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId, keepStack: .always)) } case .info: strongSelf.navigationActionDisposable.set((strongSelf.context.account.postbox.loadedPeerWithId(peerId) @@ -6483,12 +6485,13 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar $0.updatedBotStartPayload(startPayload.payload) }) } else if let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), botStart: startPayload) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), botStart: startPayload)) } default: break } - }, sendSticker: { [weak self] f, sourceNode, sourceRect in + }, sendFile: nil, + sendSticker: { [weak self] f, sourceNode, sourceRect in return self?.interfaceInteraction?.sendSticker(f, sourceNode, sourceRect) ?? false }, present: { [weak self] c, a in self?.present(c, in: .window(.root), with: a) @@ -6532,7 +6535,7 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar cancelImpl = { [weak self] in self?.resolveUrlDisposable?.set(nil) } - disposable.set((resolveUrl(account: strongSelf.context.account, url: url) + disposable.set((strongSelf.context.sharedContext.resolveUrl(account: strongSelf.context.account, url: url) |> afterDisposed { Queue.mainQueue().async { progressDisposable.dispose() @@ -6700,8 +6703,6 @@ public final class ChatController: TelegramBaseController, GalleryHiddenMediaTar } return nil })) - } else if let gallery = viewControllerToCommit as? InstantPageGalleryController { - } if #available(iOSApplicationExtension 9.0, iOS 9.0, *) { diff --git a/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift index 9068716fa2..13aad4715b 100644 --- a/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift @@ -23,7 +23,7 @@ private final class ChatControllerNodeView: UITracingLayerView, WindowInputAcces }) } - weak var controller: ChatController? + weak var controller: ChatControllerImpl? func getWindowInputAccessoryHeight() -> CGFloat { return self.inputAccessoryHeight?() ?? 0.0 @@ -58,7 +58,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { let context: AccountContext let chatLocation: ChatLocation let controllerInteraction: ChatControllerInteraction - private weak var controller: ChatController? + private weak var controller: ChatControllerImpl? let navigationBar: NavigationBar? @@ -190,7 +190,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { } }*/ - init(context: AccountContext, chatLocation: ChatLocation, subject: ChatControllerSubject?, controllerInteraction: ChatControllerInteraction, chatPresentationInterfaceState: ChatPresentationInterfaceState, automaticMediaDownloadSettings: MediaAutoDownloadSettings, navigationBar: NavigationBar?, controller: ChatController?) { + init(context: AccountContext, chatLocation: ChatLocation, subject: ChatControllerSubject?, controllerInteraction: ChatControllerInteraction, chatPresentationInterfaceState: ChatPresentationInterfaceState, automaticMediaDownloadSettings: MediaAutoDownloadSettings, navigationBar: NavigationBar?, controller: ChatControllerImpl?) { self.context = context self.chatLocation = chatLocation self.controllerInteraction = controllerInteraction diff --git a/submodules/TelegramUI/TelegramUI/ChatListController.swift b/submodules/TelegramUI/TelegramUI/ChatListController.swift index 3462ca927c..e2838e6c46 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListController.swift @@ -698,9 +698,9 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview scrollToEndIfExists = true } - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), scrollToEndIfExists: scrollToEndIfExists, options: strongSelf.groupId == PeerGroupId.root ? [.removeOnMasterDetails] : [], parentGroupId: strongSelf.groupId, completion: { [weak self] in + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), scrollToEndIfExists: scrollToEndIfExists, options: strongSelf.groupId == PeerGroupId.root ? [.removeOnMasterDetails] : [], parentGroupId: strongSelf.groupId, completion: { [weak self] in self?.chatListDisplayNode.chatListNode.clearHighlightAnimated(true) - }) + })) } } } @@ -745,9 +745,9 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview } - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(actualPeerId), messageId: messageId, purposefulAction: { + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(actualPeerId), messageId: messageId, purposefulAction: { self?.deactivateSearch(animated: false) - }, scrollToEndIfExists: scrollToEndIfExists, options: strongSelf.groupId == PeerGroupId.root ? [.removeOnMasterDetails] : []) + }, scrollToEndIfExists: scrollToEndIfExists, options: strongSelf.groupId == PeerGroupId.root ? [.removeOnMasterDetails] : [])) strongSelf.chatListDisplayNode.chatListNode.clearHighlightAnimated(true) } } @@ -776,9 +776,9 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview } if let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), purposefulAction: { [weak self] in + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), purposefulAction: { [weak self] in self?.deactivateSearch(animated: false) - }, scrollToEndIfExists: scrollToEndIfExists, options: strongSelf.groupId == PeerGroupId.root ? [.removeOnMasterDetails] : []) + }, scrollToEndIfExists: scrollToEndIfExists, options: strongSelf.groupId == PeerGroupId.root ? [.removeOnMasterDetails] : [])) strongSelf.chatListDisplayNode.chatListNode.clearHighlightAnimated(true) } } @@ -1217,7 +1217,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview sourceRect = CGRect(x: sourceRect.minX, y: sourceRect.minY + bounds.minY, width: bounds.width, height: bounds.height) sourceRect.size.height -= UIScreenPixel - let chatController = ChatController(context: self.context, chatLocation: .peer(peerId), mode: .standard(previewing: true)) + let chatController = ChatControllerImpl(context: self.context, chatLocation: .peer(peerId), mode: .standard(previewing: true)) chatController.canReadHistory.set(false) chatController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate) return (chatController, sourceRect) @@ -1226,7 +1226,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview sourceRect = CGRect(x: sourceRect.minX, y: sourceRect.minY + bounds.minY, width: bounds.width, height: bounds.height) sourceRect.size.height -= UIScreenPixel - let chatController = ChatController(context: self.context, chatLocation: .peer(messageId.peerId), subject: .message(messageId), mode: .standard(previewing: true)) + let chatController = ChatControllerImpl(context: self.context, chatLocation: .peer(messageId.peerId), subject: .message(messageId), mode: .standard(previewing: true)) chatController.canReadHistory.set(false) chatController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate) return (chatController, sourceRect) @@ -1249,7 +1249,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview switch item.content { case let .peer(_, peer, _, _, _, _, _, _, _, _): if peer.peerId.namespace != Namespaces.Peer.SecretChat { - let chatController = ChatController(context: self.context, chatLocation: .peer(peer.peerId), mode: .standard(previewing: true)) + let chatController = ChatControllerImpl(context: self.context, chatLocation: .peer(peer.peerId), mode: .standard(previewing: true)) chatController.canReadHistory.set(false) chatController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate) return (chatController, sourceRect) @@ -1272,11 +1272,11 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview func previewingCommit(_ viewControllerToCommit: UIViewController) { if let viewControllerToCommit = viewControllerToCommit as? ViewController { - if let chatController = viewControllerToCommit as? ChatController { + if let chatController = viewControllerToCommit as? ChatControllerImpl { chatController.canReadHistory.set(true) chatController.updatePresentationMode(.standard(previewing: false)) if let navigationController = self.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, chatController: chatController, context: self.context, chatLocation: chatController.chatLocation, animated: false) + self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, chatController: chatController, context: self.context, chatLocation: chatController.chatLocation, animated: false)) self.chatListDisplayNode.chatListNode.clearHighlightAnimated(true) } } else if let chatListController = viewControllerToCommit as? ChatListController { diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift index dc2f9fce4e..e9f3d1b96c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift @@ -12,6 +12,7 @@ import TemporaryCachedPeerDataManager import LocalizedPeerData import ContextUI import TelegramUniversalVideoContent +import MosaicLayout private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [(Message, AnyClass)] { var result: [(Message, AnyClass)] = [] diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageMapBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageMapBubbleContentNode.swift index 2bd08b7d8e..611d12334f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageMapBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageMapBubbleContentNode.swift @@ -8,6 +8,7 @@ import TelegramCore import LiveLocationTimerNode import PhotoResources import MediaResources +import LiveLocationPositionNode private let titleFont = Font.medium(14.0) private let liveTitleFont = Font.medium(16.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift index a5c625329c..bc26541eb7 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageWebpageBubbleContentNode.swift @@ -9,6 +9,7 @@ import TelegramUIPreferences import TextFormat import AccountContext import WebsiteType +import InstantPageUI enum InstantPageType { case generic diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift index 13fd1e3037..70af4fab8c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift @@ -12,6 +12,7 @@ import AccountContext import TemporaryCachedPeerDataManager import AlertUI import OpenInExternalAppUI +import InstantPageUI private final class ChatRecentActionsListOpaqueState { let entries: [ChatRecentActionsEntry] @@ -655,7 +656,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode { self.navigationActionDisposable.set((peerSignal |> take(1) |> deliverOnMainQueue).start(next: { [weak self] peer in if let strongSelf = self, let peer = peer { if peer is TelegramChannel, let navigationController = strongSelf.getNavigationController() { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), animated: true) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), animated: true)) } else { if let infoController = strongSelf.context.sharedContext.makePeerInfoController(context: strongSelf.context, peer: peer) { strongSelf.pushController(infoController) @@ -756,7 +757,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode { } private func openUrl(_ url: String) { - self.navigationActionDisposable.set((resolveUrl(account: self.context.account, url: url) |> deliverOnMainQueue).start(next: { [weak self] result in + self.navigationActionDisposable.set((self.context.sharedContext.resolveUrl(account: self.context.account, url: url) |> deliverOnMainQueue).start(next: { [weak self] result in if let strongSelf = self { switch result { case let .externalUrl(url): @@ -778,7 +779,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode { break case let .channelMessage(peerId, messageId): if let navigationController = strongSelf.getNavigationController() { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId)) } case let .stickerPack(name): strongSelf.presentController(StickerPackPreviewController(context: strongSelf.context, stickerPack: .name(name), parentNavigationController: strongSelf.getNavigationController()), nil) @@ -793,11 +794,13 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode { case let .localization(identifier): strongSelf.presentController(LanguageLinkPreviewController(context: strongSelf.context, identifier: identifier), nil) case .proxy, .confirmationCode, .cancelAccountReset, .share: - openResolvedUrl(result, context: strongSelf.context, navigationController: strongSelf.getNavigationController(), openPeer: { peerId, _ in + strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.getNavigationController(), openPeer: { peerId, _ in if let strongSelf = self { strongSelf.openPeer(peerId: peerId, peer: nil) } - }, present: { c, a in + }, sendFile: nil, + sendSticker: nil, + present: { c, a in self?.presentController(c, a) }, dismissInput: { self?.view.endEditing(true) diff --git a/submodules/TelegramUI/TelegramUI/ComposeController.swift b/submodules/TelegramUI/TelegramUI/ComposeController.swift index 93273414ec..a515bd0d71 100644 --- a/submodules/TelegramUI/TelegramUI/ComposeController.swift +++ b/submodules/TelegramUI/TelegramUI/ComposeController.swift @@ -149,7 +149,7 @@ public class ComposeController: ViewController { strongSelf.createActionDisposable.set((createSecretChat(account: strongSelf.context.account, peerId: peer.id) |> deliverOnMainQueue).start(next: { peerId in if let strongSelf = self, let controller = controller { controller.displayNavigationActivity = false - (controller.navigationController as? NavigationController)?.replaceAllButRootController(ChatController(context: strongSelf.context, chatLocation: .peer(peerId)), animated: true) + (controller.navigationController as? NavigationController)?.replaceAllButRootController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(peerId)), animated: true) } }, error: { _ in if let strongSelf = self, let controller = controller { @@ -252,6 +252,6 @@ public class ComposeController: ViewController { } private func openPeer(peerId: PeerId) { - (self.navigationController as? NavigationController)?.replaceTopController(ChatController(context: self.context, chatLocation: .peer(peerId)), animated: true) + (self.navigationController as? NavigationController)?.replaceTopController(ChatControllerImpl(context: self.context, chatLocation: .peer(peerId)), animated: true) } } diff --git a/submodules/TelegramUI/TelegramUI/ContactsController.swift b/submodules/TelegramUI/TelegramUI/ContactsController.swift index ace886deb4..4ec336fa3f 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsController.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsController.swift @@ -215,7 +215,7 @@ public class ContactsController: ViewController { scrollToEndIfExists = true } - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), purposefulAction: { [weak self] in + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), purposefulAction: { [weak self] in if fromSearch { self?.deactivateSearch(animated: false) self?.switchToChatsController?() @@ -224,7 +224,7 @@ public class ContactsController: ViewController { if let strongSelf = self { strongSelf.contactsNode.contactListNode.listNode.clearHighlightAnimated(true) } - }) + })) } case let .deviceContact(id, _): let _ = ((strongSelf.context.sharedContext.contactDataManager?.extendedData(stableId: id) ?? .single(nil)) @@ -434,7 +434,7 @@ public class ContactsController: ViewController { return nil } if peer.id.namespace != Namespaces.Peer.SecretChat { - let chatController = ChatController(context: self.context, chatLocation: .peer(peer.id), mode: .standard(previewing: true)) + let chatController = ChatControllerImpl(context: self.context, chatLocation: .peer(peer.id), mode: .standard(previewing: true)) chatController.canReadHistory.set(false) chatController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate) return (chatController, sourceRect) @@ -451,11 +451,11 @@ public class ContactsController: ViewController { func previewingCommit(_ viewControllerToCommit: UIViewController) { if let viewControllerToCommit = viewControllerToCommit as? ViewController { - if let chatController = viewControllerToCommit as? ChatController { + if let chatController = viewControllerToCommit as? ChatControllerImpl { chatController.canReadHistory.set(true) chatController.updatePresentationMode(.standard(previewing: false)) if let navigationController = self.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, chatController: chatController, context: self.context, chatLocation: chatController.chatLocation, animated: false) + self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, chatController: chatController, context: self.context, chatLocation: chatController.chatLocation, animated: false)) self.contactsNode.contactListNode.listNode.clearHighlightAnimated(true) } } diff --git a/submodules/TelegramUI/TelegramUI/ConvertToSupergroupController.swift b/submodules/TelegramUI/TelegramUI/ConvertToSupergroupController.swift index 7ddaee6e45..ab2a7dd41d 100644 --- a/submodules/TelegramUI/TelegramUI/ConvertToSupergroupController.swift +++ b/submodules/TelegramUI/TelegramUI/ConvertToSupergroupController.swift @@ -147,7 +147,7 @@ public func convertToSupergroupController(context: AccountContext, peerId: PeerI if !alreadyConverting { convertDisposable.set((convertGroupToSupergroup(account: context.account, peerId: peerId) |> deliverOnMainQueue).start(next: { createdPeerId in - replaceControllerImpl?(ChatController(context: context, chatLocation: .peer(createdPeerId))) + replaceControllerImpl?(ChatControllerImpl(context: context, chatLocation: .peer(createdPeerId))) })) } })]), nil) diff --git a/submodules/TelegramUI/TelegramUI/WebP.swift b/submodules/TelegramUI/TelegramUI/ConvertToWebP.swift similarity index 68% rename from submodules/TelegramUI/TelegramUI/WebP.swift rename to submodules/TelegramUI/TelegramUI/ConvertToWebP.swift index 2cc572e1fe..029f42b8f7 100644 --- a/submodules/TelegramUI/TelegramUI/WebP.swift +++ b/submodules/TelegramUI/TelegramUI/ConvertToWebP.swift @@ -28,16 +28,6 @@ func convertToWebP(image: UIImage, targetSize: CGSize?, quality: CGFloat) -> Sig } return Signal { subscriber in -// let context = DrawingContext(size: image.size, scale: 0.0, clear: true) -// context.withFlippedContext({ context in -// if let cgImage = image.cgImage { -// context.draw(cgImage, in: CGRect(x: 0.0, y: 0.0, width: image.size.width, height: image.size.height)) -// } -// }) -// let processedImage = context.generateImage()! -// if let data = try? UIImage.convert(toWebP: processedImage, quality: quality * 100.0) { -// subscriber.putNext(data) -// } if let data = try? WebP.convert(toWebP: image, quality: quality * 100.0) { subscriber.putNext(data) } diff --git a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift index 092362ef85..695d514d89 100644 --- a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift @@ -13,6 +13,7 @@ import AlertUI import MediaResources import PhotoResources import LegacyUI +import LocationUI public enum CreateGroupMode { case generic @@ -440,7 +441,7 @@ public func createGroupController(context: AccountContext, peerIds: [PeerId], in dismissImpl?() }) } else { - let controller = ChatController(context: context, chatLocation: .peer(peerId)) + let controller = ChatControllerImpl(context: context, chatLocation: .peer(peerId)) replaceControllerImpl?(controller) } } diff --git a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift index f2d1d2fbfe..9bca752963 100644 --- a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift +++ b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift @@ -2,6 +2,7 @@ import Postbox import TemporaryCachedPeerDataManager import TelegramUIPreferences import TelegramNotices +import InstantPageUI private var telegramUIDeclaredEncodables: Void = { declareEncodable(InAppNotificationSettings.self, f: { InAppNotificationSettings(decoder: $0) }) diff --git a/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift b/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift index 74f636f99d..014a58a427 100644 --- a/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift @@ -1245,7 +1245,7 @@ public func deviceContactInfoController(context: AccountContext, subject: Device } openChatImpl = { [weak controller] peerId in if let navigationController = (controller?.navigationController as? NavigationController) { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) } } replaceControllerImpl = { [weak controller] value in diff --git a/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift b/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift index 0879562ca4..594b343e71 100644 --- a/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift +++ b/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift @@ -16,6 +16,7 @@ import Lottie import TelegramUIPrivateModule import MediaResources import PhotoResources +import ImageBlur public func fetchCachedResourceRepresentation(account: Account, resource: MediaResource, representation: CachedMediaResourceRepresentation) -> Signal { if let representation = representation as? CachedStickerAJpegRepresentation { diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift index 290c0f3420..fda24a4168 100644 --- a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift @@ -20,6 +20,7 @@ import MediaResources import PhotoResources import GalleryUI import LegacyUI +import LocationUI private final class GroupInfoArguments { let context: AccountContext @@ -2298,7 +2299,7 @@ public func groupInfoController(context: AccountContext, peerId originalPeerId: let infoController = groupInfoController(context: context, peerId: upgradedPeerId, membersLoaded: { f() }) - let chatController = ChatController(context: context, chatLocation: .peer(upgradedPeerId), mode: .standard(previewing: false)) + let chatController = ChatControllerImpl(context: context, chatLocation: .peer(upgradedPeerId), mode: .standard(previewing: false)) var viewControllers: [UIViewController] = [] if let first = navigationController.viewControllers.first { viewControllers.append(first) diff --git a/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift b/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift index 58bbbdaaf1..a516fd4ea3 100644 --- a/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift @@ -489,7 +489,7 @@ public func groupStickerPackSetupController(context: AccountContext, peerId: Pee } navigateToChatControllerImpl = { [weak controller] peerId in if let controller = controller, let navigationController = controller.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) } } dismissImpl = { [weak controller] in diff --git a/submodules/TelegramUI/TelegramUI/GroupsInCommonController.swift b/submodules/TelegramUI/TelegramUI/GroupsInCommonController.swift index 1907d1f4e3..be7afcc89f 100644 --- a/submodules/TelegramUI/TelegramUI/GroupsInCommonController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupsInCommonController.swift @@ -130,7 +130,7 @@ public func groupsInCommonController(context: AccountContext, peerId: PeerId) -> var pushControllerImpl: ((ViewController) -> Void)? let arguments = GroupsInCommonControllerArguments(account: context.account, openPeer: { memberId in - pushControllerImpl?(ChatController(context: context, chatLocation: .peer(memberId))) + pushControllerImpl?(ChatControllerImpl(context: context, chatLocation: .peer(memberId))) }) let peersSignal: Signal<[Peer]?, NoError> = .single(nil) |> then(groupsInCommon(account: context.account, peerId: peerId) |> mapToSignal { peerIds -> Signal<[Peer], NoError> in diff --git a/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift b/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift index a47769403e..ce2caf5d2b 100644 --- a/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift +++ b/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift @@ -52,7 +52,7 @@ final class HashtagSearchController: TelegramBaseController { if let strongSelf = self { strongSelf.openMessageFromSearchDisposable.set((storedMessageFromSearchPeer(account: strongSelf.context.account, peer: peer) |> deliverOnMainQueue).start(next: { actualPeerId in if let strongSelf = self, let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(actualPeerId), messageId: message.id.peerId == actualPeerId ? message.id : nil, keepStack: .always) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(actualPeerId), messageId: message.id.peerId == actualPeerId ? message.id : nil, keepStack: .always)) } })) strongSelf.controllerNode.listNode.clearHighlightAnimated(true) diff --git a/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift b/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift index 69cdd9d042..a9b7cf2313 100644 --- a/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift @@ -12,7 +12,7 @@ final class HashtagSearchControllerNode: ASDisplayNode { private let segmentedControl: UISegmentedControl let listNode: ListView - var chatController: ChatController? + var chatController: ChatControllerImpl? private let context: AccountContext private let query: String @@ -39,7 +39,7 @@ final class HashtagSearchControllerNode: ASDisplayNode { self.segmentedControl.selectedSegmentIndex = 0 if let peer = peer { - self.chatController = ChatController(context: context, chatLocation: .peer(peer.id), botStart: nil, mode: .inline) + self.chatController = ChatControllerImpl(context: context, chatLocation: .peer(peer.id), botStart: nil, mode: .inline) } else { self.chatController = nil } diff --git a/submodules/TelegramUI/TelegramUI/ICloudResources.swift b/submodules/TelegramUI/TelegramUI/ICloudResources.swift index 653fed8643..b9dff88e0d 100644 --- a/submodules/TelegramUI/TelegramUI/ICloudResources.swift +++ b/submodules/TelegramUI/TelegramUI/ICloudResources.swift @@ -4,6 +4,7 @@ import Postbox import TelegramCore import SwiftSignalKit import Display +import Pdf public struct ICloudFileResourceId: MediaResourceId { public let urlData: String diff --git a/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift b/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift index 2a3e24e09a..6944ff5efa 100644 --- a/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift +++ b/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift @@ -710,7 +710,7 @@ public func installedStickerPacksController(context: AccountContext, mode: Insta } navigateToChatControllerImpl = { [weak controller] peerId in if let controller = controller, let navigationController = controller.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) } } dismissImpl = { [weak controller] in diff --git a/submodules/TelegramUI/TelegramUI/InstantPageManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/InstantPageManagedMediaId.swift deleted file mode 100644 index 1502af1bbc..0000000000 --- a/submodules/TelegramUI/TelegramUI/InstantPageManagedMediaId.swift +++ /dev/null @@ -1,27 +0,0 @@ -import Foundation -import Postbox - -struct InstantPageManagedMediaId: ManagedMediaId { - let media: InstantPageMedia - - init(media: InstantPageMedia) { - self.media = media - } - - var hashValue: Int { - if let id = self.media.media.id { - return id.hashValue - } else { - return 0 - } - } - - func isEqual(to: ManagedMediaId) -> Bool { - if let to = to as? InstantPageManagedMediaId { - return self.media == to.media - } else { - return false - } - } -} - diff --git a/submodules/TelegramUI/TelegramUI/InstantPageMedia.swift b/submodules/TelegramUI/TelegramUI/InstantPageMedia.swift deleted file mode 100644 index eb0e824492..0000000000 --- a/submodules/TelegramUI/TelegramUI/InstantPageMedia.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Foundation -import Postbox -import TelegramCore - -struct InstantPageMedia: Equatable { - let index: Int - let media: Media - let url: InstantPageUrlItem? - let caption: RichText? - let credit: RichText? - - static func ==(lhs: InstantPageMedia, rhs: InstantPageMedia) -> Bool { - return lhs.index == rhs.index && lhs.media.isEqual(to: rhs.media) && lhs.url == rhs.url && lhs.caption == rhs.caption && lhs.credit == rhs.credit - } -} diff --git a/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift b/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift index 9427ef8cb9..e9d709a1e8 100644 --- a/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift @@ -12,6 +12,7 @@ import TelegramStringFormatting import AccountContext import RadialStatusNode import PhotoResources +import MusicAlbumArtResources private let extensionImageCache = Atomic<[UInt32: UIImage]>(value: [:]) diff --git a/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift b/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift index 25ad51c1de..652dd361f7 100644 --- a/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift +++ b/submodules/TelegramUI/TelegramUI/LogoutOptionsController.swift @@ -174,8 +174,8 @@ func logoutOptionsController(context: AccountContext, navigationController: Navi controller?.dismiss() dismissImpl?() - openResolvedUrl(resolvedUrl, context: context, navigationController: navigationController, openPeer: { peer, navigation in - }, present: { controller, arguments in + context.sharedContext.openResolvedUrl(resolvedUrl, context: context, urlContext: .generic, navigationController: navigationController, openPeer: { peer, navigation in + }, sendFile: nil, sendSticker: nil, present: { controller, arguments in pushControllerImpl?(controller) }, dismissInput: {}) }) @@ -192,7 +192,7 @@ func logoutOptionsController(context: AccountContext, navigationController: Navi |> deliverOnMainQueue).start(next: { peerId in if let peerId = peerId { dismissImpl?() - pushControllerImpl?(ChatController(context: context, chatLocation: .peer(peerId))) + pushControllerImpl?(ChatControllerImpl(context: context, chatLocation: .peer(peerId))) } })) }) diff --git a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift index 6b0720f497..965d436ebd 100644 --- a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift +++ b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift @@ -5,22 +5,19 @@ import TelegramCore import Postbox import AccountContext import GalleryUI +import InstantPageUI -public enum NavigateToChatKeepStack { - case `default` - case always - case never -} - -public func navigateToChatController(navigationController: NavigationController, chatController: ChatController? = nil, context: AccountContext, chatLocation: ChatLocation, messageId: MessageId? = nil, botStart: ChatControllerInitialBotStart? = nil, updateTextInputState: ChatTextInputState? = nil, activateInput: Bool = false, keepStack: NavigateToChatKeepStack = .default, purposefulAction: (() -> Void)? = nil, scrollToEndIfExists: Bool = false, animated: Bool = true, options: NavigationAnimationOptions = [], parentGroupId: PeerGroupId? = nil, completion: @escaping () -> Void = {}) { +public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParams) { var found = false var isFirst = true - for controller in navigationController.viewControllers.reversed() { - if let controller = controller as? ChatController, controller.chatLocation == chatLocation && controller.subject != .scheduledMessages { - if let updateTextInputState = updateTextInputState { + for controller in params.navigationController.viewControllers.reversed() { + if let controller = controller as? ChatControllerImpl, controller.chatLocation == params.chatLocation && controller.subject != .scheduledMessages { + if let updateTextInputState = params.updateTextInputState { controller.updateTextInputState(updateTextInputState) } - if let messageId = messageId { + if let messageId = params.messageId { + let navigationController = params.navigationController + let animated = params.animated controller.navigateToMessage(messageLocation: .id(messageId), animated: isFirst, completion: { [weak navigationController, weak controller] in if let navigationController = navigationController, let controller = controller { let _ = navigationController.popToViewController(controller, animated: animated) @@ -28,19 +25,19 @@ public func navigateToChatController(navigationController: NavigationController, }, customPresentProgress: { [weak navigationController] c, a in (navigationController?.viewControllers.last as? ViewController)?.present(c, in: .window(.root), with: a) }) - } else if scrollToEndIfExists && isFirst { + } else if params.scrollToEndIfExists && isFirst { controller.scrollToEndOfHistory() - let _ = navigationController.popToViewController(controller, animated: animated) - completion() + let _ = params.navigationController.popToViewController(controller, animated: params.animated) + params.completion() } else { - let _ = navigationController.popToViewController(controller, animated: animated) - completion() + let _ = params.navigationController.popToViewController(controller, animated: params.animated) + params.completion() } - controller.purposefulAction = purposefulAction - if activateInput { + controller.purposefulAction = params.purposefulAction + if params.activateInput { controller.activateInput() } - if let botStart = botStart { + if let botStart = params.botStart { controller.updateChatPresentationInterfaceState(interactive: false) { state -> ChatPresentationInterfaceState in return state.updatedBotStartPayload(botStart.payload) } @@ -52,33 +49,33 @@ public func navigateToChatController(navigationController: NavigationController, } if !found { - let controller: ChatController - if let chatController = chatController { + let controller: ChatControllerImpl + if let chatController = params.chatController as? ChatControllerImpl { controller = chatController - if let botStart = botStart { + if let botStart = params.botStart { controller.updateChatPresentationInterfaceState(interactive: false) { state -> ChatPresentationInterfaceState in return state.updatedBotStartPayload(botStart.payload) } } } else { - controller = ChatController(context: context, chatLocation: chatLocation, subject: messageId.flatMap({ .message($0) }), botStart: botStart) + controller = ChatControllerImpl(context: params.context, chatLocation: params.chatLocation, subject: params.messageId.flatMap({ .message($0) }), botStart: params.botStart) } - controller.purposefulAction = purposefulAction + controller.purposefulAction = params.purposefulAction let resolvedKeepStack: Bool - switch keepStack { + switch params.keepStack { case .default: - resolvedKeepStack = context.sharedContext.immediateExperimentalUISettings.keepChatNavigationStack + resolvedKeepStack = params.context.sharedContext.immediateExperimentalUISettings.keepChatNavigationStack case .always: resolvedKeepStack = true case .never: resolvedKeepStack = false } if resolvedKeepStack { - navigationController.pushViewController(controller, animated: animated, completion: completion) + params.navigationController.pushViewController(controller, animated: params.animated, completion: params.completion) } else { - let viewControllers = navigationController.viewControllers.filter({ controller in + let viewControllers = params.navigationController.viewControllers.filter({ controller in if controller is ChatListController { - if let parentGroupId = parentGroupId { + if let parentGroupId = params.parentGroupId { return parentGroupId != .root } else { return true @@ -90,22 +87,22 @@ public func navigateToChatController(navigationController: NavigationController, } }) if viewControllers.isEmpty { - navigationController.replaceAllButRootController(controller, animated: animated, animationOptions: options, completion: completion) + params.navigationController.replaceAllButRootController(controller, animated: params.animated, animationOptions: params.options, completion: params.completion) } else { - navigationController.replaceControllersAndPush(controllers: viewControllers, controller: controller, animated: animated, options: options, completion: completion) + params.navigationController.replaceControllersAndPush(controllers: viewControllers, controller: controller, animated: params.animated, options: params.options, completion: params.completion) } } - if activateInput { + if params.activateInput { controller.activateInput() } } - navigationController.currentWindow?.forEachController { controller in + params.navigationController.currentWindow?.forEachController { controller in if let controller = controller as? NotificationContainerController { controller.removeItems { item in if let item = item as? ChatMessageNotificationItem { for message in item.messages { - switch chatLocation { + switch params.chatLocation { case let .peer(peerId): if message.id.peerId == peerId { return true diff --git a/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift b/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift index 4ea81106bd..6abee52711 100644 --- a/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift +++ b/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift @@ -10,6 +10,8 @@ import TelegramUIPreferences import TelegramPresentationData import AccountContext import GalleryUI +import InstantPageUI +import LocationUI private enum ChatMessageGalleryControllerData { case url(String) @@ -412,7 +414,7 @@ func openChatInstantPage(context: AccountContext, message: Message, sourcePeerTy func openChatWallpaper(context: AccountContext, message: Message, present: @escaping (ViewController, Any?) -> Void) { for media in message.media { if let webpage = media as? TelegramMediaWebpage, case let .Loaded(content) = webpage.content { - let _ = (resolveUrl(account: context.account, url: content.url) + let _ = (context.sharedContext.resolveUrl(account: context.account, url: content.url) |> deliverOnMainQueue).start(next: { resolvedUrl in if case let .wallpaper(parameter) = resolvedUrl { let source: WallpaperListSource diff --git a/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift b/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift index d3be4c5613..25285e852c 100644 --- a/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift +++ b/submodules/TelegramUI/TelegramUI/OpenResolvedUrl.swift @@ -9,6 +9,7 @@ import AccountContext import OverlayStatusController import AlertUI import PassportUI +import InstantPageUI private func defaultNavigationForPeerId(_ peerId: PeerId?, navigation: ChatControllerInteractionNavigateToPeer) -> ChatControllerInteractionNavigateToPeer { if case .default = navigation { @@ -26,7 +27,7 @@ private func defaultNavigationForPeerId(_ peerId: PeerId?, navigation: ChatContr } } -func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlContext: OpenURLContext = .generic, navigationController: NavigationController?, openPeer: @escaping (PeerId, ChatControllerInteractionNavigateToPeer) -> Void, sendFile: ((FileMediaReference) -> Void)? = nil, sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)? = nil, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void) { +func openResolvedUrlImpl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlContext: OpenURLContext, navigationController: NavigationController?, openPeer: @escaping (PeerId, ChatControllerInteractionNavigateToPeer) -> Void, sendFile: ((FileMediaReference) -> Void)?, sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void) { let presentationData = context.sharedContext.currentPresentationData.with { $0 } switch resolvedUrl { case let .externalUrl(url): @@ -60,7 +61,7 @@ func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlCon let _ = (requestStartBotInGroup(account: context.account, botPeerId: botPeerId, groupPeerId: peerId, payload: payload) |> deliverOnMainQueue).start(next: { result in if let navigationController = navigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) } switch result { case let .channelParticipant(participant): @@ -171,10 +172,10 @@ func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlCon }) }) |> deliverOnMainQueue).start(completed: { - navigationController?.pushViewController(ChatController(context: context, chatLocation: .peer(peerId))) + navigationController?.pushViewController(ChatControllerImpl(context: context, chatLocation: .peer(peerId))) }) } else { - navigationController?.pushViewController(ChatController(context: context, chatLocation: .peer(peerId))) + navigationController?.pushViewController(ChatControllerImpl(context: context, chatLocation: .peer(peerId))) } } diff --git a/submodules/TelegramUI/TelegramUI/OpenUrl.swift b/submodules/TelegramUI/TelegramUI/OpenUrl.swift index 08467d2db7..992c70c1f7 100644 --- a/submodules/TelegramUI/TelegramUI/OpenUrl.swift +++ b/submodules/TelegramUI/TelegramUI/OpenUrl.swift @@ -188,7 +188,7 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur if case let .externalUrl(value) = resolved { context.sharedContext.applicationBindings.openUrl(value) } else { - openResolvedUrl(resolved, context: context, navigationController: navigationController, openPeer: { peerId, navigation in + context.sharedContext.openResolvedUrl(resolved, context: context, urlContext: .generic, navigationController: navigationController, openPeer: { peerId, navigation in switch navigation { case .info: let _ = (context.account.postbox.loadedPeerWithId(peerId) @@ -201,17 +201,19 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur case let .chat(_, messageId): context.sharedContext.applicationBindings.dismissNativeController() if let navigationController = navigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId)) } case let .withBotStartPayload(payload): context.sharedContext.applicationBindings.dismissNativeController() if let navigationController = navigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId), botStart: payload) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId), botStart: payload)) } default: break } - }, present: { c, a in + }, sendFile: nil, + sendSticker: nil, + present: { c, a in context.sharedContext.applicationBindings.dismissNativeController() c.presentationArguments = a @@ -224,7 +226,7 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur } let handleInternalUrl: (String) -> Void = { url in - let _ = (resolveUrl(account: context.account, url: url) + let _ = (context.sharedContext.resolveUrl(account: context.account, url: url) |> deliverOnMainQueue).start(next: handleRevolvedUrl) } @@ -244,7 +246,7 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur } if let peerId = peerId, let navigationController = navigationController { context.sharedContext.applicationBindings.dismissNativeController() - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) } } } else if parsedUrl.host == "join" { diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift index c92c645e14..7dbe54058f 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift @@ -117,7 +117,7 @@ public class PeerMediaCollectionController: TelegramBaseController { return false }, openPeer: { [weak self] id, navigation, _ in if let strongSelf = self, let id = id, let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(id)) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(id))) } }, openPeerMention: { _ in }, openMessageContextMenu: { [weak self] message, _, _, _, _ in @@ -131,7 +131,7 @@ public class PeerMediaCollectionController: TelegramBaseController { ActionSheetButtonItem(title: strongSelf.presentationData.strings.SharedMedia_ViewInChat, color: .accent, action: { [weak actionSheet] in actionSheet?.dismissAnimated() if let strongSelf = self, let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(strongSelf.peerId), messageId: message.id) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(strongSelf.peerId), messageId: message.id)) } }), ActionSheetButtonItem(title: strongSelf.presentationData.strings.Conversation_ContextMenuForward, color: .accent, action: { [weak actionSheet] in @@ -176,7 +176,7 @@ public class PeerMediaCollectionController: TelegramBaseController { } }*/ } else { - (strongSelf.navigationController as? NavigationController)?.pushViewController(ChatController(context: strongSelf.context, chatLocation: .peer(id.peerId), subject: .message(id))) + (strongSelf.navigationController as? NavigationController)?.pushViewController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(id.peerId), subject: .message(id))) } } }, clickThroughMessage: { [weak self] in @@ -591,17 +591,17 @@ public class PeerMediaCollectionController: TelegramBaseController { if external { resolvedUrl = .single(.externalUrl(url)) } else { - resolvedUrl = resolveUrl(account: self.context.account, url: url) + resolvedUrl = self.context.sharedContext.resolveUrl(account: self.context.account, url: url) } disposable.set((resolvedUrl |> deliverOnMainQueue).start(next: { [weak self] result in if let strongSelf = self { - openResolvedUrl(result, context: strongSelf.context, navigationController: strongSelf.navigationController as? NavigationController, openPeer: { peerId, navigation in + strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.navigationController as? NavigationController, openPeer: { peerId, navigation in if let strongSelf = self { switch navigation { case let .chat(_, messageId): if let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId, keepStack: .always) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), messageId: messageId, keepStack: .always)) } case .info: strongSelf.navigationActionDisposable.set((strongSelf.context.account.postbox.loadedPeerWithId(peerId) @@ -615,13 +615,15 @@ public class PeerMediaCollectionController: TelegramBaseController { })) case let .withBotStartPayload(startPayload): if let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), botStart: startPayload) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peerId), botStart: startPayload)) } default: break } } - }, present: { c, a in + }, sendFile: nil, + sendSticker: nil, + present: { c, a in self?.present(c, in: .window(.root), with: a) }, dismissInput: { self?.view.endEditing(true) @@ -706,7 +708,7 @@ public class PeerMediaCollectionController: TelegramBaseController { } })) - (strongSelf.navigationController as? NavigationController)?.replaceTopController(ChatController(context: strongSelf.context, chatLocation: .peer(peerId)), animated: false, ready: ready) + (strongSelf.navigationController as? NavigationController)?.replaceTopController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(peerId)), animated: false, ready: ready) } } }) diff --git a/submodules/TelegramUI/TelegramUI/PeerMessagesMediaPlaylist.swift b/submodules/TelegramUI/TelegramUI/PeerMessagesMediaPlaylist.swift index ae3ed49fe8..77dd93692c 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMessagesMediaPlaylist.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMessagesMediaPlaylist.swift @@ -5,6 +5,7 @@ import Postbox import TelegramCore import TelegramUIPreferences import AccountContext +import MusicAlbumArtResources private enum PeerMessagesMediaPlaylistLoadAnchor { case messageId(MessageId) diff --git a/submodules/TelegramUI/TelegramUI/PeersNearbyController.swift b/submodules/TelegramUI/TelegramUI/PeersNearbyController.swift index 6c84483ced..4d0987a5ec 100644 --- a/submodules/TelegramUI/TelegramUI/PeersNearbyController.swift +++ b/submodules/TelegramUI/TelegramUI/PeersNearbyController.swift @@ -431,11 +431,11 @@ public func peersNearbyController(context: AccountContext) -> ViewController { } navigateToChatImpl = { [weak controller] peer in if let navigationController = controller?.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peer.id), keepStack: .always, purposefulAction: { [weak navigationController] in - if let navigationController = navigationController, let chatController = navigationController.viewControllers.last as? ChatController { + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peer.id), keepStack: .always, purposefulAction: { [weak navigationController] in + if let navigationController = navigationController, let chatController = navigationController.viewControllers.last as? ChatControllerImpl { replaceAllButRootControllerImpl?(chatController, false) } - }) + })) } } pushControllerImpl = { [weak controller] c in diff --git a/submodules/TelegramUI/TelegramUI/ProgressiveImage.swift b/submodules/TelegramUI/TelegramUI/ProgressiveImage.swift deleted file mode 100644 index 328f420a84..0000000000 --- a/submodules/TelegramUI/TelegramUI/ProgressiveImage.swift +++ /dev/null @@ -1,52 +0,0 @@ -import Foundation -import UIKit -import SwiftSignalKit -import Display -import ImageIO - -public final class ProgressiveImage { - let backgroundImage: UIImage? - let image: UIImage? - - public init(backgroundImage: UIImage?, image: UIImage?) { - self.backgroundImage = backgroundImage - self.image = image - } -} - -public func progressiveImage(dataSignal: Signal, size: Int, mapping: @escaping (CGImage) -> UIImage) -> Signal { - return Signal { subscriber in - let imageSource = CGImageSourceCreateIncremental(nil) - var lastSize = 0 - - return dataSignal.start(next: { data in - if let data = data { - if data.count >= lastSize + 24 * 1024 || (lastSize != data.count && data.count >= size) { - lastSize = data.count - - let copyData = data.withUnsafeBytes { bytes -> CFData in - return CFDataCreate(nil, bytes, data.count) - } - CGImageSourceUpdateData(imageSource, copyData, data.count >= size) - - let options = NSMutableDictionary() - options[kCGImageSourceShouldCache as NSString] = false as NSNumber - if let image = CGImageSourceCreateImageAtIndex(imageSource, 0, options as CFDictionary) { - subscriber.putNext(mapping(image)) - } else { - subscriber.putNext(nil) - } - if data.count >= size { - subscriber.putCompletion() - } - } - } else { - subscriber.putNext(nil) - } - }, error: { error in - subscriber.putError(error) - }, completed: { - subscriber.putCompletion() - }) - } -} diff --git a/submodules/TelegramUI/TelegramUI/SettingsController.swift b/submodules/TelegramUI/TelegramUI/SettingsController.swift index 6998a136b5..0733d4ccbe 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsController.swift @@ -671,8 +671,8 @@ public func settingsController(context: AccountContext, accountManager: AccountM if case let .instantView(webPage, _) = resolvedUrl, let customAnchor = customAnchor { resolvedUrl = .instantView(webPage, customAnchor) } - openResolvedUrl(resolvedUrl, context: context, navigationController: getNavigationControllerImpl?(), openPeer: { peer, navigation in - }, present: { controller, arguments in + context.sharedContext.openResolvedUrl(resolvedUrl, context: context, urlContext: .generic, navigationController: getNavigationControllerImpl?(), openPeer: { peer, navigation in + }, sendFile: nil, sendSticker: nil, present: { controller, arguments in pushControllerImpl?(controller) }, dismissInput: {}) }) @@ -815,7 +815,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?(ChatController(context: context, chatLocation: .peer(peerId))) + pushControllerImpl?(ChatControllerImpl(context: context, chatLocation: .peer(peerId))) } })) })]), nil) @@ -1299,7 +1299,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM |> take(1) |> deliverOnMainQueue).start(next: { context in if let controller = controller, let navigationController = controller.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(context.account.peerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(context.account.peerId))) } }) } diff --git a/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift b/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift index 96a14ffe95..4bfbbd9ecf 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsSearchableItems.swift @@ -809,7 +809,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, ChatController(context: context, chatLocation: .peer(context.account.peerId))) + present(.push, ChatControllerImpl(context: context, chatLocation: .peer(context.account.peerId))) }) allItems.append(savedMessages) @@ -853,7 +853,7 @@ func settingsSearchableItems(context: AccountContext, notificationExceptionsList let _ = (supportPeerId(account: context.account) |> deliverOnMainQueue).start(next: { peerId in if let peerId = peerId { - present(.push, ChatController(context: context, chatLocation: .peer(peerId))) + present(.push, ChatControllerImpl(context: context, chatLocation: .peer(peerId))) } }) }) @@ -863,8 +863,8 @@ func settingsSearchableItems(context: AccountContext, notificationExceptionsList let _ = (cachedFaqInstantPage(context: context) |> deliverOnMainQueue).start(next: { resolvedUrl in - openResolvedUrl(resolvedUrl, context: context, navigationController: navigationController, openPeer: { peer, navigation in - }, present: { controller, arguments in + context.sharedContext.openResolvedUrl(resolvedUrl, context: context, urlContext: .generic, navigationController: navigationController, openPeer: { peer, navigation in + }, sendFile: nil, sendSticker: nil, present: { controller, arguments in present(.push, controller) }, dismissInput: {}) }) diff --git a/submodules/TelegramUI/TelegramUI/ShareItems.swift b/submodules/TelegramUI/TelegramUI/ShareItems.swift index 28143de5a7..9dc6e3a3c1 100644 --- a/submodules/TelegramUI/TelegramUI/ShareItems.swift +++ b/submodules/TelegramUI/TelegramUI/ShareItems.swift @@ -11,6 +11,7 @@ import Display import TelegramUIPrivateModule import AccountContext import LegacyComponents +import Pdf enum UnpreparedShareItemContent { case contact(DeviceContactExtendedData) diff --git a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift index 6edd03df78..fa2317beb0 100644 --- a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift +++ b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift @@ -947,4 +947,16 @@ public final class SharedAccountContextImpl: SharedAccountContext { public func chatAvailableMessageActions(postbox: Postbox, accountPeerId: PeerId, messageIds: Set) -> Signal { return chatAvailableMessageActionsImpl(postbox: postbox, accountPeerId: accountPeerId, messageIds: messageIds) } + + public func navigateToChatController(_ params: NavigateToChatControllerParams) { + navigateToChatControllerImpl(params) + } + + public func resolveUrl(account: Account, url: String) -> Signal { + return resolveUrlImpl(account: account, url: url) + } + + public func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlContext: OpenURLContext, navigationController: NavigationController?, openPeer: @escaping (PeerId, ChatControllerInteractionNavigateToPeer) -> Void, sendFile: ((FileMediaReference) -> Void)?, sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void) { + openResolvedUrlImpl(resolvedUrl, context: context, urlContext: urlContext, navigationController: navigationController, openPeer: openPeer, sendFile: sendFile, sendSticker: sendSticker, present: present, dismissInput: dismissInput) + } } diff --git a/submodules/TelegramUI/TelegramUI/StickerPackPreviewController.swift b/submodules/TelegramUI/TelegramUI/StickerPackPreviewController.swift index 210671d101..cbeb03f226 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPackPreviewController.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPackPreviewController.swift @@ -128,7 +128,7 @@ final class StickerPackPreviewController: ViewController { } if let peer = peer { strongSelf.dismiss() - strongSelf.parentNavigationController?.pushViewController(ChatController(context: strongSelf.context, chatLocation: .peer(peer.id))) + strongSelf.parentNavigationController?.pushViewController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(peer.id))) } })) }) diff --git a/submodules/TelegramUI/TelegramUI/TelegramAccountAuxiliaryMethods.swift b/submodules/TelegramUI/TelegramUI/TelegramAccountAuxiliaryMethods.swift index b9b8f61373..91b2367395 100644 --- a/submodules/TelegramUI/TelegramUI/TelegramAccountAuxiliaryMethods.swift +++ b/submodules/TelegramUI/TelegramUI/TelegramAccountAuxiliaryMethods.swift @@ -4,6 +4,7 @@ import Postbox import MediaResources import PassportUI import OpenInExternalAppUI +import MusicAlbumArtResources public let telegramAccountAuxiliaryMethods = AccountAuxiliaryMethods(updatePeerChatInputState: { interfaceState, inputState -> PeerChatInterfaceState? in if interfaceState == nil { diff --git a/submodules/TelegramUI/TelegramUI/TextLinkHandling.swift b/submodules/TelegramUI/TelegramUI/TextLinkHandling.swift index ef4a9718ae..8a4061dcff 100644 --- a/submodules/TelegramUI/TelegramUI/TextLinkHandling.swift +++ b/submodules/TelegramUI/TelegramUI/TextLinkHandling.swift @@ -9,6 +9,7 @@ import AccountContext import AccountContext import SafariServices import OpenInExternalAppUI +import InstantPageUI func handleTextLinkActionImpl(context: AccountContext, peerId: PeerId?, navigateDisposable: MetaDisposable, controller: ViewController, action: TextLinkItemActionType, itemLink: TextLinkItem) { let presentImpl: (ViewController, Any?) -> Void = { controllerToPresent, _ in @@ -16,11 +17,11 @@ func handleTextLinkActionImpl(context: AccountContext, peerId: PeerId?, navigate } let openResolvedPeerImpl: (PeerId?, ChatControllerInteractionNavigateToPeer) -> Void = { [weak controller] peerId, navigation in - openResolvedUrl(.peer(peerId, navigation), context: context, navigationController: (controller?.navigationController as? NavigationController), openPeer: { (peerId, navigation) in + context.sharedContext.openResolvedUrl(.peer(peerId, navigation), context: context, urlContext: .generic, navigationController: (controller?.navigationController as? NavigationController), openPeer: { (peerId, navigation) in switch navigation { case let .chat(_, messageId): if let navigationController = controller?.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId, keepStack: .always) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId, keepStack: .always)) } case .info: let peerSignal: Signal @@ -35,11 +36,13 @@ func handleTextLinkActionImpl(context: AccountContext, peerId: PeerId?, navigate default: break } - }, present: presentImpl, dismissInput: {}) + }, sendFile: nil, + sendSticker: nil, + present: presentImpl, dismissInput: {}) } let openLinkImpl: (String) -> Void = { [weak controller] url in - navigateDisposable.set((resolveUrl(account: context.account, url: url) |> deliverOnMainQueue).start(next: { result in + navigateDisposable.set((context.sharedContext.resolveUrl(account: context.account, url: url) |> deliverOnMainQueue).start(next: { result in if let controller = controller { switch result { case let .externalUrl(url): @@ -48,7 +51,7 @@ func handleTextLinkActionImpl(context: AccountContext, peerId: PeerId?, navigate openResolvedPeerImpl(peerId, .default) case let .channelMessage(peerId, messageId): if let navigationController = controller.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId), messageId: messageId)) } case let .stickerPack(name): controller.present(StickerPackPreviewController(context: context, stickerPack: .name(name), parentNavigationController: controller.navigationController as? NavigationController), in: .window(.root)) diff --git a/submodules/TelegramUI/TelegramUI/UrlHandling.swift b/submodules/TelegramUI/TelegramUI/UrlHandling.swift index 9ea9b7d6d2..9e818703f8 100644 --- a/submodules/TelegramUI/TelegramUI/UrlHandling.swift +++ b/submodules/TelegramUI/TelegramUI/UrlHandling.swift @@ -18,11 +18,6 @@ enum ParsedInternalPeerUrlParameter { case channelMessage(Int32) } -enum WallpaperUrlParameter { - case slug(String, WallpaperPresentationOptions, UIColor?, Int32?) - case color(UIColor) -} - enum ParsedInternalUrl { case peerName(String, ParsedInternalPeerUrlParameter?) case peerId(PeerId) @@ -43,24 +38,6 @@ private enum ParsedUrl { case internalUrl(ParsedInternalUrl) } -enum ResolvedUrl { - case externalUrl(String) - case peer(PeerId?, ChatControllerInteractionNavigateToPeer) - case inaccessiblePeer - case botStart(peerId: PeerId, payload: String) - case groupBotStart(peerId: PeerId, payload: String) - case channelMessage(peerId: PeerId, messageId: MessageId) - case stickerPack(name: String) - case instantView(TelegramMediaWebpage, String?) - case proxy(host: String, port: Int32, username: String?, password: String?, secret: Data?) - case join(String) - case localization(String) - case confirmationCode(Int) - case cancelAccountReset(phone: String, hash: String) - case share(url: String?, text: String?, to: String?) - case wallpaper(WallpaperUrlParameter) -} - func parseInternalUrl(query: String) -> ParsedInternalUrl? { var query = query if query.hasPrefix("s/") { @@ -389,7 +366,7 @@ func parseWallpaperUrl(_ url: String) -> WallpaperUrlParameter? { return nil } -func resolveUrl(account: Account, url: String) -> Signal { +func resolveUrlImpl(account: Account, url: String) -> Signal { let schemes = ["http://", "https://", ""] let baseTelegramMePaths = ["telegram.me", "t.me"] for basePath in baseTelegramMePaths { diff --git a/submodules/TelegramUI/TelegramUI/UserInfoController.swift b/submodules/TelegramUI/TelegramUI/UserInfoController.swift index 0b3304f731..db3793ca74 100644 --- a/submodules/TelegramUI/TelegramUI/UserInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/UserInfoController.swift @@ -1316,7 +1316,7 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Us } openChatImpl = { [weak controller] in if let navigationController = (controller?.navigationController as? NavigationController) { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) } } shareContactImpl = { [weak controller] in @@ -1369,7 +1369,7 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Us } |> deliverOnMainQueue).start(next: { currentPeerId in if let currentPeerId = currentPeerId { if let navigationController = (controller?.navigationController as? NavigationController) { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(currentPeerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(currentPeerId))) } } else { var createSignal = createSecretChat(account: context.account, peerId: peerId) @@ -1402,7 +1402,7 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Us createSecretChatDisposable.set((createSignal |> deliverOnMainQueue).start(next: { peerId in if let navigationController = (controller?.navigationController as? NavigationController) { - navigateToChatController(navigationController: navigationController, context: context, chatLocation: .peer(peerId)) + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) } }, error: { _ in if let controller = controller { @@ -1417,9 +1417,11 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Us guard let controller = controller else { return } - openResolvedUrl(.groupBotStart(peerId: peerId, payload: ""), context: context, navigationController: controller.navigationController as? NavigationController, openPeer: { id, navigation in + context.sharedContext.openResolvedUrl(.groupBotStart(peerId: peerId, payload: ""), context: context, urlContext: .generic, navigationController: controller.navigationController as? NavigationController, openPeer: { id, navigation in - }, present: { c, a in + }, sendFile: nil, + sendSticker: nil, + present: { c, a in presentControllerImpl?(c, a) }, dismissInput: { dismissInputImpl?() diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj index b3ea3b0d96..ed41dddc32 100644 --- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj @@ -22,10 +22,6 @@ 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 */; }; - 091346962183496900846E49 /* InstantPageArticleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091346952183496900846E49 /* InstantPageArticleItem.swift */; }; - 091346982183498A00846E49 /* InstantPageArticleNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091346972183498A00846E49 /* InstantPageArticleNode.swift */; }; - 0913469A218528D200846E49 /* InstantPageTableItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09134699218528D200846E49 /* InstantPageTableItem.swift */; }; - 0913469C21883C3700846E49 /* InstantPageDetailsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0913469B21883C3700846E49 /* InstantPageDetailsItem.swift */; }; 091417F221EF4E5D00C8325A /* WallpaperGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091417F121EF4E5D00C8325A /* WallpaperGalleryController.swift */; }; 091417F421EF4F5F00C8325A /* WallpaperGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */; }; 091954792294754E00E11046 /* AnimatedStickerUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091954782294754E00E11046 /* AnimatedStickerUtils.swift */; }; @@ -57,12 +53,6 @@ 0952D1752176DEB500194860 /* NotificationMuteSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0952D1742176DEB500194860 /* NotificationMuteSettingsController.swift */; }; 0957DE2322DE28FB001B4D57 /* ThemePreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0957DE2222DE28FB001B4D57 /* ThemePreviewController.swift */; }; 0957DE2522DE2909001B4D57 /* ThemePreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0957DE2422DE2909001B4D57 /* ThemePreviewControllerNode.swift */; }; - 0958FBB9218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0958FBB8218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift */; }; - 0958FBBB218AD6BC00E0CBD8 /* InstantPageFeedbackNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0958FBBA218AD6BC00E0CBD8 /* InstantPageFeedbackNode.swift */; }; - 0958FBBD218B03CA00E0CBD8 /* InstantPageDetailsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0958FBBC218B03CA00E0CBD8 /* InstantPageDetailsNode.swift */; }; - 09619B8E21A34C0100493558 /* InstantPageScrollableNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09619B8D21A34C0100493558 /* InstantPageScrollableNode.swift */; }; - 09619B9521A4ABF600493558 /* InstantPageReferenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09619B9321A4ABF500493558 /* InstantPageReferenceController.swift */; }; - 09619B9621A4ABF600493558 /* InstantPageReferenceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09619B9421A4ABF600493558 /* InstantPageReferenceControllerNode.swift */; }; 0962E66121B3512500245FD9 /* WebSearchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E66021B3512500245FD9 /* WebSearchController.swift */; }; 0962E66321B3513100245FD9 /* WebSearchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E66221B3513100245FD9 /* WebSearchControllerNode.swift */; }; 0962E66521B3631100245FD9 /* WebSearchNavigationContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E66421B3631100245FD9 /* WebSearchNavigationContentNode.swift */; }; @@ -73,7 +63,6 @@ 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 */; }; - 09797873210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09797872210633CD0077D77F /* InstantPageSettingsButtonItemNode.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 */; }; @@ -98,8 +87,6 @@ 09B4EE5221A7CC3E00847FA6 /* SolidRoundedButtonNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B4EE5121A7CC3E00847FA6 /* SolidRoundedButtonNode.swift */; }; 09B4EE5621A8149C00847FA6 /* ItemListInfoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B4EE5521A8149C00847FA6 /* ItemListInfoItem.swift */; }; 09B4EE5E21AC626B00847FA6 /* PermissionContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B4EE5D21AC626B00847FA6 /* PermissionContentNode.swift */; }; - 09B4EE6021AD4A0E00847FA6 /* InstantPageContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B4EE5F21AD4A0E00847FA6 /* InstantPageContentNode.swift */; }; - 09B4EE6221AD791600847FA6 /* InstantPageStoredState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B4EE6121AD791600847FA6 /* InstantPageStoredState.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 */; }; @@ -160,7 +147,6 @@ 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 */; }; - 09F664CE21EBB3A100AB7E26 /* ImageBlur.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664CD21EBB3A100AB7E26 /* ImageBlur.swift */; }; 09F664D021EBCFB900AB7E26 /* WallpaperCropNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664CF21EBCFB900AB7E26 /* WallpaperCropNode.swift */; }; 09F799FA21C3542D00820234 /* LegacyWebSearchGallery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F799F921C3542D00820234 /* LegacyWebSearchGallery.swift */; }; 09F799FC21C3FF3000820234 /* WebSearchGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F799FB21C3FF3000820234 /* WebSearchGalleryController.swift */; }; @@ -172,7 +158,6 @@ 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 */; }; - 09FFBCDB22849CB500C33B4B /* PDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FFBCDA22849CB500C33B4B /* PDF.swift */; }; 9F06830921A404AB001D8EDB /* NotificationExceptionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830821A404AB001D8EDB /* NotificationExceptionControllerNode.swift */; }; 9F06830B21A404C4001D8EDB /* NotificationExceptionSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830A21A404C4001D8EDB /* NotificationExceptionSettingsController.swift */; }; D000CABA21EE130D0011B15D /* MapResourceToAvatarSizes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000CAB921EE130D0011B15D /* MapResourceToAvatarSizes.swift */; }; @@ -221,10 +206,6 @@ D00ACA4B20222C280045D427 /* libtgvoip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00ACA4C20222C280045D427 /* libtgvoip.framework */; }; D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00ACA592022897D0045D427 /* ProcessedPeerRestrictionText.swift */; }; D00BDA1F1EE5B69200C64C5E /* ChannelAdminController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00BDA1E1EE5B69200C64C5E /* ChannelAdminController.swift */; }; - D00FF2091F4E2414006FA332 /* InstantPageSettingsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00FF2081F4E2414006FA332 /* InstantPageSettingsNode.swift */; }; - D0104F281F47171F004E4881 /* InstantPageGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0104F271F47171F004E4881 /* InstantPageGalleryController.swift */; }; - D0104F2A1F471DA6004E4881 /* InstantImageGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0104F291F471DA6004E4881 /* InstantImageGalleryItem.swift */; }; - D0104F2C1F471EEB004E4881 /* InstantPageGalleryFooterContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0104F2B1F471EEB004E4881 /* InstantPageGalleryFooterContentNode.swift */; }; D010E17D22C238BC009324D4 /* RLottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D010E17C22C238BC009324D4 /* RLottie.framework */; }; D01590A622BD460C0017C33E /* MetalAnimationRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01590A522BD460C0017C33E /* MetalAnimationRenderer.swift */; }; D01590A822BD462C0017C33E /* SoftwareAnimationRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01590A722BD462C0017C33E /* SoftwareAnimationRenderer.swift */; }; @@ -254,8 +235,6 @@ D018BE58218C7BD800C02DDC /* ChatMessageDeliveryFailedNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D018BE57218C7BD800C02DDC /* ChatMessageDeliveryFailedNode.swift */; }; D0192D44210A5AA50005FA10 /* DeviceContactDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0192D43210A5AA50005FA10 /* DeviceContactDataManager.swift */; }; D0192D46210F4F950005FA10 /* FixSearchableListNodeScrolling.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0192D45210F4F940005FA10 /* FixSearchableListNodeScrolling.swift */; }; - D01A21AF1F39EA2E00DDA104 /* InstantPageTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01A21AE1F39EA2E00DDA104 /* InstantPageTheme.swift */; }; - D01A21B11F3A050E00DDA104 /* InstantPageNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01A21B01F3A050E00DDA104 /* InstantPageNavigationBar.swift */; }; D01BAA181ECC8E0000295217 /* CallListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01BAA171ECC8E0000295217 /* CallListController.swift */; }; D01BAA1A1ECC8E0D00295217 /* CallListControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01BAA191ECC8E0D00295217 /* CallListControllerNode.swift */; }; D01BAA1C1ECC92F700295217 /* CallListViewTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01BAA1B1ECC92F700295217 /* CallListViewTransition.swift */; }; @@ -266,8 +245,6 @@ D01C06B11FBB4643001561AB /* JoinLinkPreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01C06B01FBB4643001561AB /* JoinLinkPreviewControllerNode.swift */; }; D01C06B31FBB49A5001561AB /* JoinLinkPreviewPeerContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01C06B21FBB49A5001561AB /* JoinLinkPreviewPeerContentNode.swift */; }; D01C06B51FBB7720001561AB /* ChatMediaInputSettingsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01C06B41FBB7720001561AB /* ChatMediaInputSettingsItem.swift */; }; - D01C06BE1FBCAF06001561AB /* ChatMessageBubbleMosaicLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01C06BD1FBCAF06001561AB /* ChatMessageBubbleMosaicLayout.swift */; }; - D01C99781F4F382C00DCFAF6 /* InstantPageSettingsItemTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01C99771F4F382C00DCFAF6 /* InstantPageSettingsItemTheme.swift */; }; D01DBA9B209CC6AD00C64E64 /* ChatLinkPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01DBA9A209CC6AD00C64E64 /* ChatLinkPreview.swift */; }; D01FB437217CEC62009C6134 /* FetchVideoThumbnail.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01FB436217CEC62009C6134 /* FetchVideoThumbnail.swift */; }; D0208AD51FA33D14001F0D5F /* RaiseToListenActivator.h in Headers */ = {isa = PBXBuildFile; fileRef = D0208AD31FA33D14001F0D5F /* RaiseToListenActivator.h */; }; @@ -324,23 +301,13 @@ D0471B621EFEB5B70074D609 /* BotPaymentSwitchItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0471B611EFEB5B70074D609 /* BotPaymentSwitchItemNode.swift */; }; D0471B641EFEB5CB0074D609 /* BotPaymentItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0471B631EFEB5CB0074D609 /* BotPaymentItemNode.swift */; }; D048B339203C532800038D05 /* ChatMediaInputPane.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048B338203C532800038D05 /* ChatMediaInputPane.swift */; }; - D048EA851F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA841F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift */; }; - D048EA871F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA861F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift */; }; - D048EA891F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA881F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift */; }; - D048EA8B1F4F298A00188713 /* InstantPageSettingsThemeItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA8A1F4F298A00188713 /* InstantPageSettingsThemeItemNode.swift */; }; - D048EA8D1F4F299A00188713 /* InstantPageSettingsSwitchItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA8C1F4F299A00188713 /* InstantPageSettingsSwitchItemNode.swift */; }; - D048EA8F1F4F2A9C00188713 /* InstantPageSettingsItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA8E1F4F2A9C00188713 /* InstantPageSettingsItemNode.swift */; }; D04B4D131EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04B4D121EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift */; }; - D04B4D661EEA993A00711AF6 /* LegacyLocationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04B4D651EEA993A00711AF6 /* LegacyLocationController.swift */; }; D04ECD721FFBF22B00DE9029 /* OpenUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04ECD711FFBF22B00DE9029 /* OpenUrl.swift */; }; D050A464229C052A0044F11A /* ChannelDiscussionGroupSetupSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D050A463229C052A0044F11A /* ChannelDiscussionGroupSetupSearchItem.swift */; }; D050A466229C06460044F11A /* ChannelDiscussionGroupSearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D050A465229C06460044F11A /* ChannelDiscussionGroupSearchContainerNode.swift */; }; D053B4371F1A9CA000E2D58A /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D053B4361F1A9CA000E2D58A /* WebKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; D053DADC201AAAB100993D32 /* ChatTextInputMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = D053DADB201AAAB100993D32 /* ChatTextInputMenu.swift */; }; - D05677511F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05677501F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift */; }; - D05677531F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05677521F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift */; }; D056CD701FF147B000880D28 /* IconButtonNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD6F1FF147B000880D28 /* IconButtonNode.swift */; }; - D056CD741FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD731FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift */; }; D056CD761FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD751FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift */; }; D056CD781FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD771FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift */; }; D056CD7A1FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D056CD791FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift */; }; @@ -388,7 +355,6 @@ D07BCBFE1F2B792300ED97AA /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D07BCBFD1F2B792300ED97AA /* LegacyComponents.framework */; }; D07E413B208A432100FCA8F0 /* ChatListTitleProxyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07E413A208A432100FCA8F0 /* ChatListTitleProxyNode.swift */; }; D07E413D208A494D00FCA8F0 /* ProxyServerActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07E413C208A494D00FCA8F0 /* ProxyServerActionSheetController.swift */; }; - D080B27F1F4C7C6000AA3847 /* InstantPageManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D080B27E1F4C7C6000AA3847 /* InstantPageManagedMediaId.swift */; }; D081A9A922EB26AE0069C449 /* PhoneLabelController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081A9A822EB26AE0069C449 /* PhoneLabelController.swift */; }; D081E104217F57D2003CD921 /* LanguageLinkPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081E103217F57D2003CD921 /* LanguageLinkPreviewController.swift */; }; D081E106217F5834003CD921 /* LanguageLinkPreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081E105217F5834003CD921 /* LanguageLinkPreviewControllerNode.swift */; }; @@ -457,7 +423,6 @@ D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */; }; D0ACCB1C1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */; }; D0AD02EA1FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AD02E91FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift */; }; - D0AD02EC20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AD02EB20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift */; }; D0ADF966212E05A300310BBC /* TonePlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ADF965212E05A300310BBC /* TonePlayer.swift */; }; D0AE303522B1D3620058D3BC /* TGBridgeAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D0AE2FDC22B1D3610058D3BC /* TGBridgeAudioEncoder.m */; }; D0AE303622B1D3620058D3BC /* TGBridgeAudioDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE2FDD22B1D3610058D3BC /* TGBridgeAudioDecoder.h */; }; @@ -508,8 +473,6 @@ D0AF798F22C2E26500CECCB8 /* compressed.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795922C2E26500CECCB8 /* compressed.cc */; }; D0AF799022C2E26500CECCB8 /* bgra.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795A22C2E26500CECCB8 /* bgra.h */; }; D0AF79A322C2E36400CECCB8 /* astc.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF79A222C2E36400CECCB8 /* astc.h */; }; - D0AFCC791F4C8D2C000720C6 /* InstantPageSlideshowItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AFCC781F4C8D2C000720C6 /* InstantPageSlideshowItem.swift */; }; - D0AFCC7B1F4C8D39000720C6 /* InstantPageSlideshowItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AFCC7A1F4C8D39000720C6 /* InstantPageSlideshowItemNode.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 */; }; @@ -543,8 +506,6 @@ 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 */; }; - D0C27B3B1F4B453700A4E170 /* InstantPagePlayableVideoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C27B3A1F4B453700A4E170 /* InstantPagePlayableVideoItem.swift */; }; - D0C27B3D1F4B454800A4E170 /* InstantPagePlayableVideoNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C27B3C1F4B454800A4E170 /* InstantPagePlayableVideoNode.swift */; }; D0C45E9F213FFAFD00988156 /* Lottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C45E9E213FFAFD00988156 /* Lottie.framework */; }; D0C683FC21AD797F00A6CAD5 /* ChatListSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */; }; D0C9BFAD22FE316E00FAB518 /* ComposePollUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFAC22FE316E00FAB518 /* ComposePollUI.framework */; }; @@ -573,6 +534,12 @@ D0C9C4C12300E5BB00FAB518 /* ImageCompression.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4C02300E5BB00FAB518 /* ImageCompression.framework */; }; D0C9C4DC2300E67900FAB518 /* DateSelectionUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C4DB2300E67900FAB518 /* DateSelectionUI.framework */; }; D0C9C52B2300EFA800FAB518 /* PasswordSetupUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C52A2300EFA800FAB518 /* PasswordSetupUI.framework */; }; + D0C9C55F2301CF5B00FAB518 /* Pdf.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C55E2301CF5B00FAB518 /* Pdf.framework */; }; + D0C9C5892301D03800FAB518 /* InstantPageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C5882301D03800FAB518 /* InstantPageUI.framework */; }; + D0C9C6292301D21D00FAB518 /* MusicAlbumArtResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6282301D21D00FAB518 /* MusicAlbumArtResources.framework */; }; + D0C9C6592301D31200FAB518 /* LiveLocationPositionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6582301D31200FAB518 /* LiveLocationPositionNode.framework */; }; + D0C9C67F2301D46300FAB518 /* MosaicLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C67E2301D46300FAB518 /* MosaicLayout.framework */; }; + D0C9C6B92301D91800FAB518 /* LocationUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C6B82301D91800FAB518 /* LocationUI.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 */; }; @@ -585,7 +552,6 @@ 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 */; }; - D0D9DE0D20EFEA2E00F20B06 /* InstantPageMediaPlaylist.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D9DE0C20EFEA2E00F20B06 /* InstantPageMediaPlaylist.swift */; }; D0DE66061F9A51E200EF4AE9 /* GalleryHiddenMediaManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DE66051F9A51E200EF4AE9 /* GalleryHiddenMediaManager.swift */; }; D0DFD5E21FCE2BA50039B3B1 /* CalculatingCacheSizeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DFD5E11FCE2BA50039B3B1 /* CalculatingCacheSizeItem.swift */; }; D0E1199A2297F9C6008CAE3A /* ChannelDiscussionGroupSetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E119992297F9C6008CAE3A /* ChannelDiscussionGroupSetupController.swift */; }; @@ -726,11 +692,9 @@ D0EC6CBF1EB9F58800EBF1C3 /* LegacyAttachmentMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = D023ED2D1DDB5BEC00BD496D /* LegacyAttachmentMenu.swift */; }; D0EC6CC01EB9F58800EBF1C3 /* LegacyMediaPickers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D023EBB11DDA800700BD496D /* LegacyMediaPickers.swift */; }; D0EC6CC11EB9F58800EBF1C3 /* LegacyCamera.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00E15251DDBD4E700ACF65C /* LegacyCamera.swift */; }; - D0EC6CC41EB9F58800EBF1C3 /* LegacyLocationPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EFD8951DDE8249009E508A /* LegacyLocationPicker.swift */; }; D0EC6CC51EB9F58800EBF1C3 /* TGDataItem.m in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B221DECB1AD00220C46 /* TGDataItem.m */; }; D0EC6CC71EB9F58800EBF1C3 /* PeerNotificationSoundStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08775081E3E59DE00A97350 /* PeerNotificationSoundStrings.swift */; }; - D0EC6CC81EB9F58800EBF1C3 /* ProgressiveImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E931D6B8C9B0046BCD6 /* ProgressiveImage.swift */; }; - D0EC6CC91EB9F58800EBF1C3 /* WebP.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E941D6B8C9B0046BCD6 /* WebP.swift */; }; + D0EC6CC91EB9F58800EBF1C3 /* ConvertToWebP.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E941D6B8C9B0046BCD6 /* ConvertToWebP.swift */; }; 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 */; }; @@ -768,7 +732,6 @@ 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 */; }; - D0EC6D321EB9F58800EBF1C3 /* TextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DC21D6B89DA0046BCD6 /* TextNode.swift */; }; D0EC6D371EB9F58800EBF1C3 /* SearchDisplayController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DCD1D6B8A0D0046BCD6 /* SearchDisplayController.swift */; }; D0EC6D381EB9F58800EBF1C3 /* SearchDisplayControllerContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DCE1D6B8A0D0046BCD6 /* SearchDisplayControllerContentNode.swift */; }; D0EC6D3A1EB9F58800EBF1C3 /* AudioWaveformNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0568AAC1DF198130022E7DA /* AudioWaveformNode.swift */; }; @@ -931,24 +894,6 @@ D0EC6DF91EB9F58900EBF1C3 /* PeerMediaCollectionInterfaceStateButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DE77241D93225E002B8809 /* PeerMediaCollectionInterfaceStateButtons.swift */; }; D0EC6DFB1EB9F58900EBF1C3 /* AvatarGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0575AF91EA0FDA7006F2541 /* AvatarGalleryController.swift */; }; D0EC6E0E1EB9F58900EBF1C3 /* PeerAvatarImageGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0575AFB1EA104A6006F2541 /* PeerAvatarImageGalleryItem.swift */; }; - D0EC6E111EB9F58900EBF1C3 /* InstantPageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D371E040F53001A0B1E /* InstantPageNode.swift */; }; - D0EC6E121EB9F58900EBF1C3 /* InstantPageLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D391E041003001A0B1E /* InstantPageLayout.swift */; }; - D0EC6E131EB9F58900EBF1C3 /* InstantPageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D3B1E041014001A0B1E /* InstantPageItem.swift */; }; - D0EC6E141EB9F58900EBF1C3 /* InstantPageMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D3D1E041048001A0B1E /* InstantPageMedia.swift */; }; - D0EC6E151EB9F58900EBF1C3 /* InstantPageLinkSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D3F1E0410D9001A0B1E /* InstantPageLinkSelectionView.swift */; }; - D0EC6E161EB9F58900EBF1C3 /* InstantPageLayoutSpacings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D411E0411DB001A0B1E /* InstantPageLayoutSpacings.swift */; }; - D0EC6E171EB9F58900EBF1C3 /* InstantPageTextStyleStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D431E0413FB001A0B1E /* InstantPageTextStyleStack.swift */; }; - D0EC6E181EB9F58900EBF1C3 /* InstantPageTextItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D451E041851001A0B1E /* InstantPageTextItem.swift */; }; - D0EC6E191EB9F58900EBF1C3 /* InstantPageAnchorItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D471E041B90001A0B1E /* InstantPageAnchorItem.swift */; }; - D0EC6E1A1EB9F58900EBF1C3 /* InstantPageImageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D491E041CAF001A0B1E /* InstantPageImageItem.swift */; }; - D0EC6E1B1EB9F58900EBF1C3 /* InstantPageImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D4B1E041D5E001A0B1E /* InstantPageImageNode.swift */; }; - D0EC6E1C1EB9F58900EBF1C3 /* InstantPageWebEmbedItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D4F1E0422C7001A0B1E /* InstantPageWebEmbedItem.swift */; }; - D0EC6E1D1EB9F58900EBF1C3 /* InstantPageWebEmbedNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D4D1E042164001A0B1E /* InstantPageWebEmbedNode.swift */; }; - D0EC6E1E1EB9F58900EBF1C3 /* InstantPageShapeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D511E0423EE001A0B1E /* InstantPageShapeItem.swift */; }; - D0EC6E1F1EB9F58900EBF1C3 /* InstantPageTile.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D591E04310C001A0B1E /* InstantPageTile.swift */; }; - D0EC6E201EB9F58900EBF1C3 /* InstantPageTileNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D571E04302E001A0B1E /* InstantPageTileNode.swift */; }; - D0EC6E211EB9F58900EBF1C3 /* InstantPageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D531E043018001A0B1E /* InstantPageController.swift */; }; - D0EC6E221EB9F58900EBF1C3 /* InstantPageControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0215D551E043020001A0B1E /* InstantPageControllerNode.swift */; }; D0EC6E231EB9F58900EBF1C3 /* StickerPackPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D748051E7AF63800F4B1F6 /* StickerPackPreviewController.swift */; }; D0EC6E241EB9F58900EBF1C3 /* StickerPackPreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D748071E7AF64400F4B1F6 /* StickerPackPreviewControllerNode.swift */; }; D0EC6E251EB9F58900EBF1C3 /* StickerPackPreviewGridItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D7480E1E7B1BD600F4B1F6 /* StickerPackPreviewGridItem.swift */; }; @@ -1052,8 +997,6 @@ D0FC194D201F82A000FEDBB2 /* OpenResolvedUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FC194C201F82A000FEDBB2 /* OpenResolvedUrl.swift */; }; D0FC408E1D5B8E7500261D9D /* TelegramUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FC408D1D5B8E7500261D9D /* TelegramUITests.swift */; }; D0FE4DE41F0AEBB900E8A0B3 /* SharedVideoContextManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FE4DE31F0AEBB900E8A0B3 /* SharedVideoContextManager.swift */; }; - D0FFF7F61F55B82500BEBC01 /* InstantPageAudioItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FFF7F51F55B82500BEBC01 /* InstantPageAudioItem.swift */; }; - D0FFF7F81F55B83600BEBC01 /* InstantPageAudioNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FFF7F71F55B83600BEBC01 /* InstantPageAudioNode.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -1072,10 +1015,6 @@ 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 = ""; }; - 091346952183496900846E49 /* InstantPageArticleItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageArticleItem.swift; sourceTree = ""; }; - 091346972183498A00846E49 /* InstantPageArticleNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageArticleNode.swift; sourceTree = ""; }; - 09134699218528D200846E49 /* InstantPageTableItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageTableItem.swift; sourceTree = ""; }; - 0913469B21883C3700846E49 /* InstantPageDetailsItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageDetailsItem.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 = ""; }; 091954782294754E00E11046 /* AnimatedStickerUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatedStickerUtils.swift; sourceTree = ""; }; @@ -1106,12 +1045,6 @@ 0952D1742176DEB500194860 /* NotificationMuteSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationMuteSettingsController.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 = ""; }; - 0958FBB8218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageFeedbackItem.swift; sourceTree = ""; }; - 0958FBBA218AD6BC00E0CBD8 /* InstantPageFeedbackNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageFeedbackNode.swift; sourceTree = ""; }; - 0958FBBC218B03CA00E0CBD8 /* InstantPageDetailsNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageDetailsNode.swift; sourceTree = ""; }; - 09619B8D21A34C0100493558 /* InstantPageScrollableNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageScrollableNode.swift; sourceTree = ""; }; - 09619B9321A4ABF500493558 /* InstantPageReferenceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageReferenceController.swift; sourceTree = ""; }; - 09619B9421A4ABF600493558 /* InstantPageReferenceControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageReferenceControllerNode.swift; sourceTree = ""; }; 0962E66021B3512500245FD9 /* WebSearchController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchController.swift; sourceTree = ""; }; 0962E66221B3513100245FD9 /* WebSearchControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchControllerNode.swift; sourceTree = ""; }; 0962E66421B3631100245FD9 /* WebSearchNavigationContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchNavigationContentNode.swift; sourceTree = ""; }; @@ -1122,7 +1055,6 @@ 09749BC421F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickersChatInputContextPanelItem.swift; sourceTree = ""; }; 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryDecorationNode.swift; sourceTree = ""; }; 09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModernCheckNode.swift; sourceTree = ""; }; - 09797872210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsButtonItemNode.swift; sourceTree = ""; }; 0979788021065F8B0077D77F /* VimeoUserScript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = VimeoUserScript.js; sourceTree = ""; }; 0979788121065F8B0077D77F /* YoutubeUserScript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = YoutubeUserScript.js; sourceTree = ""; }; 0979788221065F8C0077D77F /* Vimeo.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Vimeo.html; sourceTree = ""; }; @@ -1147,8 +1079,6 @@ 09B4EE5121A7CC3E00847FA6 /* SolidRoundedButtonNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SolidRoundedButtonNode.swift; sourceTree = ""; }; 09B4EE5521A8149C00847FA6 /* ItemListInfoItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListInfoItem.swift; sourceTree = ""; }; 09B4EE5D21AC626B00847FA6 /* PermissionContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PermissionContentNode.swift; sourceTree = ""; }; - 09B4EE5F21AD4A0E00847FA6 /* InstantPageContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageContentNode.swift; sourceTree = ""; }; - 09B4EE6121AD791600847FA6 /* InstantPageStoredState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageStoredState.swift; sourceTree = ""; }; 09C500232142BA6400EF253E /* ItemListWebsiteItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListWebsiteItem.swift; sourceTree = ""; }; 09CE94FF2232729A00A7D2C3 /* StickerPaneSearchContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerPaneSearchContentNode.swift; sourceTree = ""; }; 09CE9501223272B700A7D2C3 /* GifPaneSearchContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GifPaneSearchContentNode.swift; sourceTree = ""; }; @@ -1209,7 +1139,6 @@ 09F664C721EB4A2600AB7E26 /* ThemeGridSearchItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeGridSearchItem.swift; sourceTree = ""; }; 09F664C921EB4F2700AB7E26 /* ThemeGridSearchColorsItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeGridSearchColorsItem.swift; sourceTree = ""; }; 09F664CB21EB552C00AB7E26 /* WallpaperSearchRecentQueries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperSearchRecentQueries.swift; sourceTree = ""; }; - 09F664CD21EBB3A100AB7E26 /* ImageBlur.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageBlur.swift; sourceTree = ""; }; 09F664CF21EBCFB900AB7E26 /* WallpaperCropNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperCropNode.swift; sourceTree = ""; }; 09F799F921C3542D00820234 /* LegacyWebSearchGallery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyWebSearchGallery.swift; sourceTree = ""; }; 09F799FB21C3FF3000820234 /* WebSearchGalleryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchGalleryController.swift; sourceTree = ""; }; @@ -1221,7 +1150,6 @@ 09F85BA621E7DA5F00D73170 /* BlurredImageNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurredImageNode.swift; sourceTree = ""; }; 09FFBCCF227B7F9000C33B4B /* anim_archiveswipe.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_archiveswipe.json; sourceTree = ""; }; 09FFBCD62281BB2D00C33B4B /* ChatTextLinkEditController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextLinkEditController.swift; sourceTree = ""; }; - 09FFBCDA22849CB500C33B4B /* PDF.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PDF.swift; sourceTree = ""; }; 9F06830821A404AB001D8EDB /* NotificationExceptionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationExceptionControllerNode.swift; sourceTree = ""; }; 9F06830A21A404C4001D8EDB /* NotificationExceptionSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationExceptionSettingsController.swift; sourceTree = ""; }; D000CAB921EE130D0011B15D /* MapResourceToAvatarSizes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapResourceToAvatarSizes.swift; sourceTree = ""; }; @@ -1285,10 +1213,6 @@ D00D34361E6E14E30057B307 /* ChatMessageThrottledProcessingManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageThrottledProcessingManager.swift; sourceTree = ""; }; D00DBBDC1E65650800DB5485 /* ChatReportPeerTitlePanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatReportPeerTitlePanelNode.swift; sourceTree = ""; }; D00E15251DDBD4E700ACF65C /* LegacyCamera.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyCamera.swift; sourceTree = ""; }; - D00FF2081F4E2414006FA332 /* InstantPageSettingsNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsNode.swift; sourceTree = ""; }; - D0104F271F47171F004E4881 /* InstantPageGalleryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageGalleryController.swift; sourceTree = ""; }; - D0104F291F471DA6004E4881 /* InstantImageGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantImageGalleryItem.swift; sourceTree = ""; }; - D0104F2B1F471EEB004E4881 /* InstantPageGalleryFooterContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageGalleryFooterContentNode.swift; sourceTree = ""; }; D0105D591D80B957008755D8 /* ChatChannelSubscriberInputPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatChannelSubscriberInputPanelNode.swift; sourceTree = ""; }; D010E17C22C238BC009324D4 /* RLottie.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = RLottie.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0127A0C1E6424AC003BFF2E /* ChatPinnedMessageTitlePanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatPinnedMessageTitlePanelNode.swift; sourceTree = ""; }; @@ -1328,8 +1252,6 @@ D018D3341E6489EC00C5E089 /* CreateChannelController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateChannelController.swift; sourceTree = ""; }; D0192D43210A5AA50005FA10 /* DeviceContactDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceContactDataManager.swift; sourceTree = ""; }; D0192D45210F4F940005FA10 /* FixSearchableListNodeScrolling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FixSearchableListNodeScrolling.swift; sourceTree = ""; }; - D01A21AE1F39EA2E00DDA104 /* InstantPageTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTheme.swift; sourceTree = ""; }; - D01A21B01F3A050E00DDA104 /* InstantPageNavigationBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageNavigationBar.swift; sourceTree = ""; }; D01AC9171DD5033100E8160F /* ChatMessageActionButtonsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageActionButtonsNode.swift; sourceTree = ""; }; D01AC91E1DD5E09000E8160F /* EditAccessoryPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditAccessoryPanelNode.swift; sourceTree = ""; }; D01B279A1E39386C0022A4C0 /* SettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsController.swift; sourceTree = ""; }; @@ -1344,10 +1266,8 @@ D01C06B01FBB4643001561AB /* JoinLinkPreviewControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinLinkPreviewControllerNode.swift; sourceTree = ""; }; D01C06B21FBB49A5001561AB /* JoinLinkPreviewPeerContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinLinkPreviewPeerContentNode.swift; sourceTree = ""; }; D01C06B41FBB7720001561AB /* ChatMediaInputSettingsItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputSettingsItem.swift; sourceTree = ""; }; - D01C06BD1FBCAF06001561AB /* ChatMessageBubbleMosaicLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageBubbleMosaicLayout.swift; sourceTree = ""; }; D01C2AA01E758F90001F6F9A /* NavigateToChatController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigateToChatController.swift; sourceTree = ""; }; D01C2AAA1E75E010001F6F9A /* TwoStepVerificationUnlockController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoStepVerificationUnlockController.swift; sourceTree = ""; }; - D01C99771F4F382C00DCFAF6 /* InstantPageSettingsItemTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsItemTheme.swift; sourceTree = ""; }; D01D6BFB1E42AB3C006151C6 /* EmojiUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiUtils.swift; sourceTree = ""; }; D01DBA9A209CC6AD00C64E64 /* ChatLinkPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatLinkPreview.swift; sourceTree = ""; }; D01F66121DE8903300345CBE /* ChatTextInputMediaRecordingButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTextInputMediaRecordingButton.swift; sourceTree = ""; }; @@ -1359,24 +1279,6 @@ D0208ADB1FA346A4001F0D5F /* RaiseToListen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RaiseToListen.swift; sourceTree = ""; }; D020A9D91FEAE675008C66F7 /* OverlayAudioPlayerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayAudioPlayerController.swift; sourceTree = ""; }; D020A9DB1FEAE6E7008C66F7 /* OverlayPlayerControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayPlayerControllerNode.swift; sourceTree = ""; }; - D0215D371E040F53001A0B1E /* InstantPageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageNode.swift; sourceTree = ""; }; - D0215D391E041003001A0B1E /* InstantPageLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLayout.swift; sourceTree = ""; }; - D0215D3B1E041014001A0B1E /* InstantPageItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageItem.swift; sourceTree = ""; }; - D0215D3D1E041048001A0B1E /* InstantPageMedia.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageMedia.swift; sourceTree = ""; }; - D0215D3F1E0410D9001A0B1E /* InstantPageLinkSelectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLinkSelectionView.swift; sourceTree = ""; }; - D0215D411E0411DB001A0B1E /* InstantPageLayoutSpacings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLayoutSpacings.swift; sourceTree = ""; }; - D0215D431E0413FB001A0B1E /* InstantPageTextStyleStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTextStyleStack.swift; sourceTree = ""; }; - D0215D451E041851001A0B1E /* InstantPageTextItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTextItem.swift; sourceTree = ""; }; - D0215D471E041B90001A0B1E /* InstantPageAnchorItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageAnchorItem.swift; sourceTree = ""; }; - D0215D491E041CAF001A0B1E /* InstantPageImageItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageImageItem.swift; sourceTree = ""; }; - D0215D4B1E041D5E001A0B1E /* InstantPageImageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageImageNode.swift; sourceTree = ""; }; - D0215D4D1E042164001A0B1E /* InstantPageWebEmbedNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageWebEmbedNode.swift; sourceTree = ""; }; - D0215D4F1E0422C7001A0B1E /* InstantPageWebEmbedItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageWebEmbedItem.swift; sourceTree = ""; }; - D0215D511E0423EE001A0B1E /* InstantPageShapeItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageShapeItem.swift; sourceTree = ""; }; - D0215D531E043018001A0B1E /* InstantPageController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageController.swift; sourceTree = ""; }; - D0215D551E043020001A0B1E /* InstantPageControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageControllerNode.swift; sourceTree = ""; }; - D0215D571E04302E001A0B1E /* InstantPageTileNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTileNode.swift; sourceTree = ""; }; - D0215D591E04310C001A0B1E /* InstantPageTile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTile.swift; sourceTree = ""; }; D021E0CD1DB4135500C6B04F /* ChatMediaInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputNode.swift; sourceTree = ""; }; D021E0CF1DB413BC00C6B04F /* ChatInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInputNode.swift; sourceTree = ""; }; D021E0D11DB4147500C6B04F /* ChatInterfaceInputNodes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInterfaceInputNodes.swift; sourceTree = ""; }; @@ -1457,18 +1359,11 @@ D04791661E79A22000F18979 /* ItemListStickerPackItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListStickerPackItem.swift; sourceTree = ""; }; D0486F091E523C8500091F0C /* GroupInfoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupInfoController.swift; sourceTree = ""; }; D048B338203C532800038D05 /* ChatMediaInputPane.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPane.swift; sourceTree = ""; }; - D048EA841F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsBacklightItemNode.swift; sourceTree = ""; }; - D048EA861F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsFontSizeItemNode.swift; sourceTree = ""; }; - D048EA881F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsFontFamilyItemNode.swift; sourceTree = ""; }; - D048EA8A1F4F298A00188713 /* InstantPageSettingsThemeItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsThemeItemNode.swift; sourceTree = ""; }; - D048EA8C1F4F299A00188713 /* InstantPageSettingsSwitchItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsSwitchItemNode.swift; sourceTree = ""; }; - D048EA8E1F4F2A9C00188713 /* InstantPageSettingsItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsItemNode.swift; sourceTree = ""; }; D049EAE11E447AD500A2CD3A /* StickersChatInputContextPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickersChatInputContextPanelNode.swift; sourceTree = ""; }; D049EAE51E44AD5600A2CD3A /* ChatMediaInputMetaSectionItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputMetaSectionItemNode.swift; sourceTree = ""; }; D049EAED1E44BB3200A2CD3A /* ChatListRecentPeersListItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListRecentPeersListItem.swift; sourceTree = ""; }; D049EAF21E44DE2500A2CD3A /* AuthorizationSequenceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceController.swift; sourceTree = ""; }; D04B4D121EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageMapBubbleContentNode.swift; sourceTree = ""; }; - D04B4D651EEA993A00711AF6 /* LegacyLocationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyLocationController.swift; sourceTree = ""; }; D04BB2B21E44E56200650E93 /* AuthorizationSequenceSplashController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceSplashController.swift; sourceTree = ""; }; D04BB2B41E44E58E00650E93 /* AuthorizationSequencePhoneEntryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequencePhoneEntryController.swift; sourceTree = ""; }; D04BB2B81E44E5E400650E93 /* AuthorizationSequencePhoneEntryControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequencePhoneEntryControllerNode.swift; sourceTree = ""; }; @@ -1490,11 +1385,8 @@ D053B4361F1A9CA000E2D58A /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; D053DADB201AAAB100993D32 /* ChatTextInputMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextInputMenu.swift; sourceTree = ""; }; D0561DE71E574C3200E6B9E9 /* ChannelAdminsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelAdminsController.swift; sourceTree = ""; }; - D05677501F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceItem.swift; sourceTree = ""; }; - D05677521F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceNode.swift; sourceTree = ""; }; D0568AAC1DF198130022E7DA /* AudioWaveformNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AudioWaveformNode.swift; sourceTree = ""; }; D056CD6F1FF147B000880D28 /* IconButtonNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconButtonNode.swift; sourceTree = ""; }; - D056CD731FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalMusicAlbumArtResources.swift; sourceTree = ""; }; D056CD751FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSwipeToReplyRecognizer.swift; sourceTree = ""; }; D056CD771FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageSwipeToReplyNode.swift; sourceTree = ""; }; D056CD791FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListMessagePlaybackOverlayNode.swift; sourceTree = ""; }; @@ -1578,7 +1470,6 @@ D07CFF861DCAAE5E00761F81 /* ForwardAccessoryPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForwardAccessoryPanelNode.swift; sourceTree = ""; }; D07E413A208A432100FCA8F0 /* ChatListTitleProxyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListTitleProxyNode.swift; sourceTree = ""; }; D07E413C208A494D00FCA8F0 /* ProxyServerActionSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyServerActionSheetController.swift; sourceTree = ""; }; - D080B27E1F4C7C6000AA3847 /* InstantPageManagedMediaId.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageManagedMediaId.swift; sourceTree = ""; }; D081A9A822EB26AE0069C449 /* PhoneLabelController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneLabelController.swift; sourceTree = ""; }; D081E103217F57D2003CD921 /* LanguageLinkPreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageLinkPreviewController.swift; sourceTree = ""; }; D081E105217F5834003CD921 /* LanguageLinkPreviewControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageLinkPreviewControllerNode.swift; sourceTree = ""; }; @@ -1678,7 +1569,6 @@ D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelPermissionsController.swift; sourceTree = ""; }; D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageCallBubbleContentNode.swift; sourceTree = ""; }; D0AD02E91FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageLiveLocationTextNode.swift; sourceTree = ""; }; - D0AD02EB20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageLiveLocationPositionNode.swift; sourceTree = ""; }; D0ADF965212E05A300310BBC /* TonePlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TonePlayer.swift; sourceTree = ""; }; D0AE2FDC22B1D3610058D3BC /* TGBridgeAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeAudioEncoder.m; sourceTree = ""; }; D0AE2FDD22B1D3610058D3BC /* TGBridgeAudioDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeAudioDecoder.h; sourceTree = ""; }; @@ -1729,8 +1619,6 @@ D0AF795922C2E26500CECCB8 /* compressed.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compressed.cc; sourceTree = ""; }; D0AF795A22C2E26500CECCB8 /* bgra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bgra.h; sourceTree = ""; }; D0AF79A222C2E36400CECCB8 /* astc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = astc.h; sourceTree = ""; }; - D0AFCC781F4C8D2C000720C6 /* InstantPageSlideshowItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSlideshowItem.swift; sourceTree = ""; }; - D0AFCC7A1F4C8D39000720C6 /* InstantPageSlideshowItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSlideshowItemNode.swift; sourceTree = ""; }; D0B21B14220D85DD003F741D /* TabBarAccountSwitchController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarAccountSwitchController.swift; sourceTree = ""; }; D0B21B16220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarAccountSwitchControllerNode.swift; sourceTree = ""; }; D0B21B1E22156D92003F741D /* LegacyCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyCache.swift; sourceTree = ""; }; @@ -1779,8 +1667,6 @@ D0C12A1B1F33964900B3F66D /* ChatWallpaperBuiltin0.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = ChatWallpaperBuiltin0.jpg; path = TelegramUI/Resources/ChatWallpaperBuiltin0.jpg; sourceTree = ""; }; D0C12EAF1F9A8D1300600BB2 /* ListMessageDateHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListMessageDateHeader.swift; sourceTree = ""; }; D0C26D561FDF2388004ABF18 /* OpenChatMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenChatMessage.swift; sourceTree = ""; }; - D0C27B3A1F4B453700A4E170 /* InstantPagePlayableVideoItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePlayableVideoItem.swift; sourceTree = ""; }; - D0C27B3C1F4B454800A4E170 /* InstantPagePlayableVideoNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePlayableVideoNode.swift; sourceTree = ""; }; D0C45E9E213FFAFD00988156 /* Lottie.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Lottie.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0C50DE81E93A07900F62E39 /* libtgvoip.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libtgvoip.framework; path = "../libtgvoip/build/Debug-iphoneos/libtgvoip.framework"; sourceTree = ""; }; D0C50E281E93A33700F62E39 /* VoipDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VoipDynamic.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphoneos/VoipDynamic.framework"; sourceTree = ""; }; @@ -1820,6 +1706,12 @@ D0C9C4C02300E5BB00FAB518 /* ImageCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ImageCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0C9C4DB2300E67900FAB518 /* DateSelectionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DateSelectionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0C9C52A2300EFA800FAB518 /* PasswordSetupUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PasswordSetupUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C55E2301CF5B00FAB518 /* Pdf.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pdf.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C5882301D03800FAB518 /* InstantPageUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = InstantPageUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6282301D21D00FAB518 /* MusicAlbumArtResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MusicAlbumArtResources.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6582301D31200FAB518 /* LiveLocationPositionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LiveLocationPositionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C67E2301D46300FAB518 /* MosaicLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MosaicLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C6B82301D91800FAB518 /* LocationUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LocationUI.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 = ""; }; @@ -1870,7 +1762,6 @@ D0D748051E7AF63800F4B1F6 /* StickerPackPreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewController.swift; sourceTree = ""; }; D0D748071E7AF64400F4B1F6 /* StickerPackPreviewControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewControllerNode.swift; sourceTree = ""; }; D0D7480E1E7B1BD600F4B1F6 /* StickerPackPreviewGridItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewGridItem.swift; sourceTree = ""; }; - D0D9DE0C20EFEA2E00F20B06 /* InstantPageMediaPlaylist.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageMediaPlaylist.swift; sourceTree = ""; }; D0DC35431DE32230000195EB /* ChatInterfaceStateContextQueries.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInterfaceStateContextQueries.swift; sourceTree = ""; }; D0DC35451DE35805000195EB /* MentionChatInputPanelItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MentionChatInputPanelItem.swift; sourceTree = ""; }; D0DC35491DE366CD000195EB /* CommandChatInputContextPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommandChatInputContextPanelNode.swift; sourceTree = ""; }; @@ -2049,7 +1940,6 @@ D0EEE9A02165585F001292A6 /* DocumentPreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPreviewController.swift; sourceTree = ""; }; D0EF40DC1E72F00E000DFCD4 /* SelectivePrivacySettingsPeersController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectivePrivacySettingsPeersController.swift; sourceTree = ""; }; D0EF40DE1E73100D000DFCD4 /* ChatHistoryNavigationStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatHistoryNavigationStack.swift; sourceTree = ""; }; - D0EFD8951DDE8249009E508A /* LegacyLocationPicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyLocationPicker.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 = ""; }; @@ -2111,8 +2001,7 @@ D0F69E701D6B8C340046BCD6 /* ContactsSearchContainerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactsSearchContainerNode.swift; sourceTree = ""; }; D0F69E711D6B8C340046BCD6 /* ContactsSectionHeaderAccessoryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactsSectionHeaderAccessoryItem.swift; sourceTree = ""; }; D0F69E831D6B8C850046BCD6 /* FrameworkBundle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; - D0F69E931D6B8C9B0046BCD6 /* ProgressiveImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProgressiveImage.swift; sourceTree = ""; }; - D0F69E941D6B8C9B0046BCD6 /* WebP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebP.swift; sourceTree = ""; }; + D0F69E941D6B8C9B0046BCD6 /* ConvertToWebP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConvertToWebP.swift; sourceTree = ""; }; D0F69EA61D6B9BBC0046BCD6 /* libwebp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libwebp.a; path = "third-party/libwebp/lib/libwebp.a"; sourceTree = ""; }; D0F69EA81D6B9BCB0046BCD6 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "third-party/FFmpeg-iOS/lib/libavcodec.a"; sourceTree = ""; }; D0F69EA91D6B9BCB0046BCD6 /* libavformat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavformat.a; path = "third-party/FFmpeg-iOS/lib/libavformat.a"; sourceTree = ""; }; @@ -2137,8 +2026,6 @@ D0FC408D1D5B8E7500261D9D /* TelegramUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TelegramUITests.swift; sourceTree = ""; }; D0FC408F1D5B8E7500261D9D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; D0FE4DE31F0AEBB900E8A0B3 /* SharedVideoContextManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedVideoContextManager.swift; sourceTree = ""; }; - D0FFF7F51F55B82500BEBC01 /* InstantPageAudioItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageAudioItem.swift; sourceTree = ""; }; - D0FFF7F71F55B83600BEBC01 /* InstantPageAudioNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageAudioNode.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -2146,6 +2033,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D0C9C6B92301D91800FAB518 /* LocationUI.framework in Frameworks */, + D0C9C67F2301D46300FAB518 /* MosaicLayout.framework in Frameworks */, + D0C9C6592301D31200FAB518 /* LiveLocationPositionNode.framework in Frameworks */, + D0C9C6292301D21D00FAB518 /* MusicAlbumArtResources.framework in Frameworks */, + D0C9C5892301D03800FAB518 /* InstantPageUI.framework in Frameworks */, + D0C9C55F2301CF5B00FAB518 /* Pdf.framework in Frameworks */, D0C9C52B2300EFA800FAB518 /* PasswordSetupUI.framework in Frameworks */, D0C9C4DC2300E67900FAB518 /* DateSelectionUI.framework in Frameworks */, D0C9C4C12300E5BB00FAB518 /* ImageCompression.framework in Frameworks */, @@ -2418,12 +2311,9 @@ 09E4A7FC223ADF300038140F /* Images */ = { isa = PBXGroup; children = ( - 09F664CD21EBB3A100AB7E26 /* ImageBlur.swift */, D000CABB21F158AD0011B15D /* PrepareSecretThumbnailData.swift */, - D0F69E931D6B8C9B0046BCD6 /* ProgressiveImage.swift */, D0E8B8B8204477B600605593 /* SecretChatKeyVisualization.swift */, - D0F69E941D6B8C9B0046BCD6 /* WebP.swift */, - 09FFBCDA22849CB500C33B4B /* PDF.swift */, + D0F69E941D6B8C9B0046BCD6 /* ConvertToWebP.swift */, ); name = Images; sourceTree = ""; @@ -2546,7 +2436,6 @@ D0104F261F471702004E4881 /* Instant Page Gallery */ = { isa = PBXGroup; children = ( - D0104F271F47171F004E4881 /* InstantPageGalleryController.swift */, ); name = "Instant Page Gallery"; sourceTree = ""; @@ -3018,8 +2907,6 @@ D023EBB11DDA800700BD496D /* LegacyMediaPickers.swift */, D0671F2C2145AB28000A8AE7 /* LegacyAvatarPicker.swift */, D00E15251DDBD4E700ACF65C /* LegacyCamera.swift */, - D0EFD8951DDE8249009E508A /* LegacyLocationPicker.swift */, - D04B4D651EEA993A00711AF6 /* LegacyLocationController.swift */, D06BB8811F58994B0084FC30 /* LegacyInstantVideoController.swift */, D0EB41F41F30D26A00838FE6 /* LegacySuggestionContext.swift */, D0D03B211DECB1AD00220C46 /* TGDataItem.h */, @@ -3040,55 +2927,6 @@ D07827CC1E03F32C00071108 /* Instant Page */ = { isa = PBXGroup; children = ( - D0215D371E040F53001A0B1E /* InstantPageNode.swift */, - D0215D391E041003001A0B1E /* InstantPageLayout.swift */, - 09B4EE5F21AD4A0E00847FA6 /* InstantPageContentNode.swift */, - D0215D3B1E041014001A0B1E /* InstantPageItem.swift */, - D0215D3D1E041048001A0B1E /* InstantPageMedia.swift */, - D0215D3F1E0410D9001A0B1E /* InstantPageLinkSelectionView.swift */, - D0215D411E0411DB001A0B1E /* InstantPageLayoutSpacings.swift */, - D0215D431E0413FB001A0B1E /* InstantPageTextStyleStack.swift */, - D0215D451E041851001A0B1E /* InstantPageTextItem.swift */, - D0215D471E041B90001A0B1E /* InstantPageAnchorItem.swift */, - D0215D491E041CAF001A0B1E /* InstantPageImageItem.swift */, - D0215D4B1E041D5E001A0B1E /* InstantPageImageNode.swift */, - D0C27B3A1F4B453700A4E170 /* InstantPagePlayableVideoItem.swift */, - D0C27B3C1F4B454800A4E170 /* InstantPagePlayableVideoNode.swift */, - D0AFCC781F4C8D2C000720C6 /* InstantPageSlideshowItem.swift */, - D0AFCC7A1F4C8D39000720C6 /* InstantPageSlideshowItemNode.swift */, - D05677501F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift */, - D05677521F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift */, - D0FFF7F51F55B82500BEBC01 /* InstantPageAudioItem.swift */, - D0FFF7F71F55B83600BEBC01 /* InstantPageAudioNode.swift */, - D0215D4F1E0422C7001A0B1E /* InstantPageWebEmbedItem.swift */, - D0215D4D1E042164001A0B1E /* InstantPageWebEmbedNode.swift */, - D0215D511E0423EE001A0B1E /* InstantPageShapeItem.swift */, - D0215D591E04310C001A0B1E /* InstantPageTile.swift */, - D0215D571E04302E001A0B1E /* InstantPageTileNode.swift */, - D0215D531E043018001A0B1E /* InstantPageController.swift */, - D0215D551E043020001A0B1E /* InstantPageControllerNode.swift */, - D01A21AE1F39EA2E00DDA104 /* InstantPageTheme.swift */, - D01A21B01F3A050E00DDA104 /* InstantPageNavigationBar.swift */, - D00FF2081F4E2414006FA332 /* InstantPageSettingsNode.swift */, - D01C99771F4F382C00DCFAF6 /* InstantPageSettingsItemTheme.swift */, - D048EA8E1F4F2A9C00188713 /* InstantPageSettingsItemNode.swift */, - D048EA841F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift */, - D048EA861F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift */, - D048EA881F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift */, - D048EA8A1F4F298A00188713 /* InstantPageSettingsThemeItemNode.swift */, - D048EA8C1F4F299A00188713 /* InstantPageSettingsSwitchItemNode.swift */, - 09797872210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift */, - 09134699218528D200846E49 /* InstantPageTableItem.swift */, - 091346952183496900846E49 /* InstantPageArticleItem.swift */, - 091346972183498A00846E49 /* InstantPageArticleNode.swift */, - 0913469B21883C3700846E49 /* InstantPageDetailsItem.swift */, - 0958FBBC218B03CA00E0CBD8 /* InstantPageDetailsNode.swift */, - 0958FBB8218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift */, - 0958FBBA218AD6BC00E0CBD8 /* InstantPageFeedbackNode.swift */, - 09619B8D21A34C0100493558 /* InstantPageScrollableNode.swift */, - 09619B9321A4ABF500493558 /* InstantPageReferenceController.swift */, - 09619B9421A4ABF600493558 /* InstantPageReferenceControllerNode.swift */, - 09B4EE6121AD791600847FA6 /* InstantPageStoredState.swift */, 09CE95032236C6B300A7D2C3 /* CachedInstantPages.swift */, ); name = "Instant Page"; @@ -3159,6 +2997,12 @@ D08D45281D5E340200A7428A /* Frameworks */ = { isa = PBXGroup; children = ( + D0C9C6B82301D91800FAB518 /* LocationUI.framework */, + D0C9C67E2301D46300FAB518 /* MosaicLayout.framework */, + D0C9C6582301D31200FAB518 /* LiveLocationPositionNode.framework */, + D0C9C6282301D21D00FAB518 /* MusicAlbumArtResources.framework */, + D0C9C5882301D03800FAB518 /* InstantPageUI.framework */, + D0C9C55E2301CF5B00FAB518 /* Pdf.framework */, D0C9C52A2300EFA800FAB518 /* PasswordSetupUI.framework */, D0C9C4DB2300E67900FAB518 /* DateSelectionUI.framework */, D0C9C4C02300E5BB00FAB518 /* ImageCompression.framework */, @@ -3298,7 +3142,6 @@ children = ( D09E637B1F0E7C28003444CD /* SharedMediaPlayer.swift */, D09E637E1F0E8C9F003444CD /* PeerMessagesMediaPlaylist.swift */, - D0D9DE0C20EFEA2E00F20B06 /* InstantPageMediaPlaylist.swift */, ); name = "Shared Media Player"; sourceTree = ""; @@ -3951,7 +3794,6 @@ D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */, D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */, D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */, - D080B27E1F4C7C6000AA3847 /* InstantPageManagedMediaId.swift */, D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */, D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */, D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */, @@ -4183,12 +4025,10 @@ D0C932371E09E0EA0074F044 /* ChatBotInfoItem.swift */, D02298361E0C34E900707F91 /* ChatMessageBackground.swift */, D091C7A31F8EBB1E00D7DE13 /* ChatPresentationData.swift */, - D01C06BD1FBCAF06001561AB /* ChatMessageBubbleMosaicLayout.swift */, D02F4AE81FCF370B004DFBAE /* ChatMessageInteractiveMediaBadge.swift */, D056CD751FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift */, D056CD771FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift */, D0AD02E91FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift */, - D0AD02EB20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift */, D0E8174B2011F8A300B82BBB /* ChatMessageEventLogPreviousMessageContentNode.swift */, D0E8174D2011FC3800B82BBB /* ChatMessageEventLogPreviousDescriptionContentNode.swift */, D0E8174F2012027900B82BBB /* ChatMessageEventLogPreviousLinkContentNode.swift */, @@ -4260,8 +4100,6 @@ isa = PBXGroup; children = ( D0575AFB1EA104A6006F2541 /* PeerAvatarImageGalleryItem.swift */, - D0104F291F471DA6004E4881 /* InstantImageGalleryItem.swift */, - D0104F2B1F471EEB004E4881 /* InstantPageGalleryFooterContentNode.swift */, 09F79A0221C8225600820234 /* WebSearchVideoGalleryItem.swift */, ); name = Items; @@ -4363,7 +4201,6 @@ D0F3A8B71E83125C00B4C64C /* MediaResources.swift */, D0F3A8B91E831E6300B4C64C /* FetchVideoMediaResource.swift */, D06E4AC31E84806300627D1D /* FetchPhotoLibraryImageResource.swift */, - D056CD731FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift */, D007019D2029EFDD006B9E34 /* ICloudResources.swift */, D01FB436217CEC62009C6134 /* FetchVideoThumbnail.swift */, 099529AB21CDBBB200805E13 /* QRCode.swift */, @@ -4740,7 +4577,6 @@ D0684A041F6C3AD50059F570 /* ChatListTypingNode.swift in Sources */, D0383EE6207D299600C45548 /* EmojisChatInputPanelItem.swift in Sources */, D00817E322B47A14008A895F /* TGPresentationAutoNightPreferences.m in Sources */, - 09B4EE6221AD791600847FA6 /* InstantPageStoredState.swift in Sources */, D0E1199E229809B6008CAE3A /* ChannelDiscussionGroupActionSheetItem.swift in Sources */, 09EDAD2A220DA6A40012A50B /* VolumeButtons.swift in Sources */, 09D968A9221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift in Sources */, @@ -4770,32 +4606,25 @@ D0CFBB911FD881A600B65C0D /* AudioRecordningToneData.swift in Sources */, D050A466229C06460044F11A /* ChannelDiscussionGroupSearchContainerNode.swift in Sources */, 09F799FA21C3542D00820234 /* LegacyWebSearchGallery.swift in Sources */, - D01C99781F4F382C00DCFAF6 /* InstantPageSettingsItemTheme.swift in Sources */, - D0EC6CC41EB9F58800EBF1C3 /* LegacyLocationPicker.swift in Sources */, D0EC6CC51EB9F58800EBF1C3 /* TGDataItem.m in Sources */, 092F36902157AB46001A9F49 /* ItemListCallListItem.swift in Sources */, D00817D522B47A14008A895F /* ApplicationShortcutItem.swift in Sources */, D077C5C122B59A800097D617 /* ApplicationContext.swift in Sources */, D0EC6CC71EB9F58800EBF1C3 /* PeerNotificationSoundStrings.swift in Sources */, - D0104F281F47171F004E4881 /* InstantPageGalleryController.swift in Sources */, D0AF798F22C2E26500CECCB8 /* compressed.cc in Sources */, - D0EC6CC81EB9F58800EBF1C3 /* ProgressiveImage.swift in Sources */, D081E108217F583F003CD921 /* LanguageLinkPreviewContentNode.swift in Sources */, - D0EC6CC91EB9F58800EBF1C3 /* WebP.swift in Sources */, + D0EC6CC91EB9F58800EBF1C3 /* ConvertToWebP.swift in Sources */, D09E637F1F0E8C9F003444CD /* PeerMessagesMediaPlaylist.swift in Sources */, D0EC6CCC1EB9F58800EBF1C3 /* ServiceSoundManager.swift in Sources */, D099E220229405BB00561B75 /* Weak.swift in Sources */, D0EC6CCD1EB9F58800EBF1C3 /* DeclareEncodables.swift in Sources */, - 0958FBBD218B03CA00E0CBD8 /* InstantPageDetailsNode.swift in Sources */, D0CFBB951FD8B05000B65C0D /* OverlayInstantVideoDecoration.swift in Sources */, D0EC6CCE1EB9F58800EBF1C3 /* AccountContext.swift in Sources */, D0471B5C1EFEB4F30074D609 /* BotPaymentFieldItemNode.swift in Sources */, - D0C27B3D1F4B454800A4E170 /* InstantPagePlayableVideoNode.swift in Sources */, D0EC6CD11EB9F58800EBF1C3 /* UrlHandling.swift in Sources */, 09B4EE4D21A7B73800847FA6 /* PermissionController.swift in Sources */, 09F85BA521E7821500D73170 /* ThemeGridSelectionPanelNode.swift in Sources */, D0E9BAD21F0573C000F079A4 /* STPToken.m in Sources */, - 0913469A218528D200846E49 /* InstantPageTableItem.swift in Sources */, D0192D46210F4F950005FA10 /* FixSearchableListNodeScrolling.swift in Sources */, D0EC6CD51EB9F58800EBF1C3 /* StoredMessageFromSearchPeer.swift in Sources */, 09CE950E2237E45E00A7D2C3 /* CachedFaqInstantPage.swift in Sources */, @@ -4819,12 +4648,9 @@ D02B198A21F1DA9E0094A764 /* SharedAccountContext.swift in Sources */, D0F67FF21EE6B915000E5906 /* ChannelMembersSearchControllerNode.swift in Sources */, D0E8B8BF20447A4600605593 /* SecretChatKeyControllerNode.swift in Sources */, - D0C27B3B1F4B453700A4E170 /* InstantPagePlayableVideoItem.swift in Sources */, D01BAA1E1ECC931D00295217 /* CallListNodeEntries.swift in Sources */, D02B2B9820810DA00062476B /* StickerPaneSearchStickerItem.swift in Sources */, D020A9DC1FEAE6E7008C66F7 /* OverlayPlayerControllerNode.swift in Sources */, - 09619B9621A4ABF600493558 /* InstantPageReferenceControllerNode.swift in Sources */, - 09FFBCDB22849CB500C33B4B /* PDF.swift in Sources */, 09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */, 090E778E22AA863A00CD99F5 /* PeersNearbyIconNode.swift in Sources */, D0EC6CF41EB9F58800EBF1C3 /* ManagedMediaId.swift in Sources */, @@ -4835,7 +4661,6 @@ D0EC6CF61EB9F58800EBF1C3 /* ChatContextResultManagedMediaId.swift in Sources */, 090E778622A9B95A00CD99F5 /* PeersNearbyController.swift in Sources */, D04ECD721FFBF22B00DE9029 /* OpenUrl.swift in Sources */, - D04B4D661EEA993A00711AF6 /* LegacyLocationController.swift in Sources */, D056CD7A1FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift in Sources */, D0EC6CF71EB9F58800EBF1C3 /* RecentGifManagedMediaId.swift in Sources */, D0E9BA611F055A4300F079A4 /* STPDelegateProxy.m in Sources */, @@ -4874,7 +4699,6 @@ D0EC6D0A1EB9F58800EBF1C3 /* internal.c in Sources */, D0EC6D0B1EB9F58800EBF1C3 /* opusfile.c in Sources */, D01847801FFBD12E00075256 /* ChatListPresentationData.swift in Sources */, - D0FFF7F61F55B82500BEBC01 /* InstantPageAudioItem.swift in Sources */, 09C500242142BA6400EF253E /* ItemListWebsiteItem.swift in Sources */, D0EC6D0C1EB9F58800EBF1C3 /* stream.c in Sources */, 09FFBCD72281BB2D00C33B4B /* ChatTextLinkEditController.swift in Sources */, @@ -4892,7 +4716,6 @@ D053DADC201AAAB100993D32 /* ChatTextInputMenu.swift in Sources */, 0962E66321B3513100245FD9 /* WebSearchControllerNode.swift in Sources */, D01C06AF1FBB461E001561AB /* JoinLinkPreviewController.swift in Sources */, - D0D9DE0D20EFEA2E00F20B06 /* InstantPageMediaPlaylist.swift in Sources */, D01C06B11FBB4643001561AB /* JoinLinkPreviewControllerNode.swift in Sources */, D0C0B59B1EE019E5000F4D2C /* ChatSearchNavigationContentNode.swift in Sources */, 09F664CC21EB552C00AB7E26 /* WallpaperSearchRecentQueries.swift in Sources */, @@ -4906,29 +4729,23 @@ D0B21B15220D85DD003F741D /* TabBarAccountSwitchController.swift in Sources */, D0ADF966212E05A300310BBC /* TonePlayer.swift in Sources */, D007019E2029EFDD006B9E34 /* ICloudResources.swift in Sources */, - D048EA871F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift in Sources */, D0F760DD222034980074F7E5 /* ChannelStatsControllerNode.swift in Sources */, - 09619B8E21A34C0100493558 /* InstantPageScrollableNode.swift in Sources */, D01590A622BD460C0017C33E /* MetalAnimationRenderer.swift in Sources */, D01BAA201ECC9A2500295217 /* CallListNodeLocation.swift in Sources */, D0EC6D251EB9F58800EBF1C3 /* FetchCachedRepresentations.swift in Sources */, D0EC6D261EB9F58800EBF1C3 /* TransformOutgoingMessageMedia.swift in Sources */, D0EC6D271EB9F58800EBF1C3 /* FetchResource.swift in Sources */, - D048EA8F1F4F2A9C00188713 /* InstantPageSettingsItemNode.swift in Sources */, - 0913469C21883C3700846E49 /* InstantPageDetailsItem.swift in Sources */, D09D88731F86D56B00BEB4C9 /* AuthorizationLayout.swift in Sources */, D0EC6D281EB9F58800EBF1C3 /* MediaResources.swift in Sources */, D0E9BA671F055B5500F079A4 /* BotCheckoutNativeCardEntryControllerNode.swift in Sources */, D01590C722BE61CB0017C33E /* TextureCompression.cpp in Sources */, D0EC6D291EB9F58800EBF1C3 /* FetchVideoMediaResource.swift in Sources */, 09EDAD2E221164440012A50B /* AutodownloadSizeLimitItem.swift in Sources */, - D0AFCC791F4C8D2C000720C6 /* InstantPageSlideshowItem.swift in Sources */, D008177E22B46B7E008A895F /* TGItemProviderSignals.m in Sources */, 099529B421D3E5D800805E13 /* CheckDiskSpace.swift in Sources */, D04281EF200E3D88009DDE36 /* GroupInfoSearchItem.swift in Sources */, D081E104217F57D2003CD921 /* LanguageLinkPreviewController.swift in Sources */, D0E9BAE21F0574D800F079A4 /* STPBankAccount.m in Sources */, - D0104F2A1F471DA6004E4881 /* InstantImageGalleryItem.swift in Sources */, D0F67FF41EE6C10F000E5906 /* ChannelMembersSearchContainerNode.swift in Sources */, D0E9BA471F0559A500F079A4 /* NSDictionary+Stripe.m in Sources */, D0EC6D2A1EB9F58800EBF1C3 /* FetchPhotoLibraryImageResource.swift in Sources */, @@ -4952,7 +4769,6 @@ D06F1EA41F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift in Sources */, D0EC6D3A1EB9F58800EBF1C3 /* AudioWaveformNode.swift in Sources */, D0EC6D3B1EB9F58800EBF1C3 /* EditableTokenListNode.swift in Sources */, - D0AD02EC20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift in Sources */, D0E2CE6C222930540084E3DD /* PrefetchManager.swift in Sources */, D0EB42011F30ED4F00838FE6 /* LegacyImageProcessors.m in Sources */, D01590C322BDAEBC0017C33E /* BMPImage.cpp in Sources */, @@ -5001,7 +4817,6 @@ D0EC6D5D1EB9F58800EBF1C3 /* ListMessageSnippetItemNode.swift in Sources */, D0EC6D5E1EB9F58800EBF1C3 /* ListMessageHoleItem.swift in Sources */, D0EC6D5F1EB9F58800EBF1C3 /* GridMessageItem.swift in Sources */, - D048EA851F4F295300188713 /* InstantPageSettingsBacklightItemNode.swift in Sources */, 09F21563225C776100AEDF6D /* ChatListBadgeNode.swift in Sources */, D00817CB22B47A14008A895F /* WatchBridge.swift in Sources */, D0EC6D601EB9F58800EBF1C3 /* GridHoleItem.swift in Sources */, @@ -5047,7 +4862,6 @@ D0EC6D761EB9F58800EBF1C3 /* ChatListController.swift in Sources */, D0EC6D771EB9F58800EBF1C3 /* ChatListControllerNode.swift in Sources */, D0EC6D781EB9F58800EBF1C3 /* ChatListTitleView.swift in Sources */, - D048EA8D1F4F299A00188713 /* InstantPageSettingsSwitchItemNode.swift in Sources */, D0E9B9F41F018A6700F079A4 /* BotCheckoutPaymentMethodSheet.swift in Sources */, D0F6800A1EE750EE000E5906 /* ChannelBannedMemberController.swift in Sources */, D0EC6D791EB9F58800EBF1C3 /* ChatListTitleLockView.swift in Sources */, @@ -5063,7 +4877,6 @@ D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */, D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */, D0EC6D811EB9F58800EBF1C3 /* ChatController.swift in Sources */, - D0FFF7F81F55B83600BEBC01 /* InstantPageAudioNode.swift in Sources */, D0B37C5E1F8D26A8004252DF /* ThemeSettingsChatPreviewItem.swift in Sources */, D01590A822BD462C0017C33E /* SoftwareAnimationRenderer.swift in Sources */, D01590BE22BDAEBC0017C33E /* Image.cpp in Sources */, @@ -5102,10 +4915,8 @@ D01C06B31FBB49A5001561AB /* JoinLinkPreviewPeerContentNode.swift in Sources */, D0EC6D931EB9F58900EBF1C3 /* ChatMessageFileBubbleContentNode.swift in Sources */, D0EC6D941EB9F58900EBF1C3 /* ChatMessageForwardInfoNode.swift in Sources */, - D0104F2C1F471EEB004E4881 /* InstantPageGalleryFooterContentNode.swift in Sources */, D04B4D131EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift in Sources */, D0EC6D951EB9F58900EBF1C3 /* ChatMessageInteractiveFileNode.swift in Sources */, - D01A21B11F3A050E00DDA104 /* InstantPageNavigationBar.swift in Sources */, D0383EE4207D292800C45548 /* EmojisChatInputContextPanelNode.swift in Sources */, D0EC6D961EB9F58900EBF1C3 /* ChatMessageInteractiveMediaNode.swift in Sources */, D0B2F7722052D0DD00D3BFB9 /* InviteContactsCountPanelNode.swift in Sources */, @@ -5134,11 +4945,9 @@ D0439B5B228EC4A00067E026 /* ChatMessagePhoneNumberRequestContentNode.swift in Sources */, 09F664D021EBCFB900AB7E26 /* WallpaperCropNode.swift in Sources */, D0EC6D9E1EB9F58900EBF1C3 /* ChatMessageWebpageBubbleContentNode.swift in Sources */, - 09797873210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift in Sources */, D0750C8722B2E76300BE5F6E /* ShareExtensionContext.swift in Sources */, D0EC6D9F1EB9F58900EBF1C3 /* ChatUnreadItem.swift in Sources */, D0E9B9E81EFEFB9500F079A4 /* BotPaymentDisclosureItemNode.swift in Sources */, - 091346962183496900846E49 /* InstantPageArticleItem.swift in Sources */, D0EC6DA01EB9F58900EBF1C3 /* ChatHoleItem.swift in Sources */, D0EC6DA11EB9F58900EBF1C3 /* ChatMessageSelectionNode.swift in Sources */, 09CE9502223272B700A7D2C3 /* GifPaneSearchContentNode.swift in Sources */, @@ -5152,7 +4961,6 @@ D08BDF661FA8CB10009D08E1 /* EditSettingsController.swift in Sources */, D0EC6DA91EB9F58900EBF1C3 /* ChatPresentationInterfaceState.swift in Sources */, D0EC6DAA1EB9F58900EBF1C3 /* ChatPanelInterfaceInteraction.swift in Sources */, - D00FF2091F4E2414006FA332 /* InstantPageSettingsNode.swift in Sources */, D0EC6DAB1EB9F58900EBF1C3 /* ChatInterfaceStateAccessoryPanels.swift in Sources */, D0EC6DAC1EB9F58900EBF1C3 /* ChatInterfaceStateInputPanels.swift in Sources */, D056CD761FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift in Sources */, @@ -5195,7 +5003,6 @@ D0EC6DC11EB9F58900EBF1C3 /* ChatMediaInputTrendingItem.swift in Sources */, D0BCC3D620404CD8008126C2 /* ChatMessageActionSheetControllerNode.swift in Sources */, D0EC6DC21EB9F58900EBF1C3 /* ChatMediaInputStickerPackItem.swift in Sources */, - 091346982183498A00846E49 /* InstantPageArticleNode.swift in Sources */, D0EC6DC31EB9F58900EBF1C3 /* ChatMediaInputStickerGridItem.swift in Sources */, 0947FCB0224055990086741C /* StringHash.swift in Sources */, D0E9BAE81F0574FF00F079A4 /* STPCustomer.m in Sources */, @@ -5283,7 +5090,6 @@ 09A218D9229EE1B600DE6898 /* HorizontalStickerGridItem.swift in Sources */, D07E413B208A432100FCA8F0 /* ChatListTitleProxyNode.swift in Sources */, 09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */, - D080B27F1F4C7C6000AA3847 /* InstantPageManagedMediaId.swift in Sources */, D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */, D0EC6DFB1EB9F58900EBF1C3 /* AvatarGalleryController.swift in Sources */, 09EC5CDC22CBD33D00292E42 /* NumberFormat.swift in Sources */, @@ -5293,8 +5099,6 @@ 090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */, 09D968A5221F801A00B1458A /* ChatPlayingActivityContentNode.swift in Sources */, D0E8B8BB2044780600605593 /* ItemListSecretChatKeyItem.swift in Sources */, - 09619B9521A4ABF600493558 /* InstantPageReferenceController.swift in Sources */, - D048EA8B1F4F298A00188713 /* InstantPageSettingsThemeItemNode.swift in Sources */, D06F31E62135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift in Sources */, D0E9BA0A1F0457DD00F079A4 /* BotCheckoutWebInteractionController.swift in Sources */, D01590BD22BDAEBC0017C33E /* DDSImage.cpp in Sources */, @@ -5307,54 +5111,32 @@ D0208AD61FA33D14001F0D5F /* RaiseToListenActivator.m in Sources */, D0AF798022C2E26500CECCB8 /* compress_block.cc in Sources */, D0AF798722C2E26500CECCB8 /* compress_texture.cc in Sources */, - D048EA891F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift in Sources */, 09DD88F321BF907C000766BC /* WebSearchRecentQueryItem.swift in Sources */, D04554A421B42982007A6DD9 /* ConfirmPhoneNumberController.swift in Sources */, D07ABBA5202A14BC003671DE /* LegacyImagePicker.swift in Sources */, D0E9BABD1F05735F00F079A4 /* STPPaymentConfiguration.m in Sources */, D0EC6E0E1EB9F58900EBF1C3 /* PeerAvatarImageGalleryItem.swift in Sources */, - D0AFCC7B1F4C8D39000720C6 /* InstantPageSlideshowItemNode.swift in Sources */, D0E9BA211F05577700F079A4 /* STPCardParams.m in Sources */, 09F215A822649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift in Sources */, - D0EC6E111EB9F58900EBF1C3 /* InstantPageNode.swift in Sources */, - D0EC6E121EB9F58900EBF1C3 /* InstantPageLayout.swift in Sources */, D0D4345C1F97CEAA00CC1806 /* ProxyServerSettingsController.swift in Sources */, D08BDF641FA37BEA009D08E1 /* ChatRecordingPreviewInputPanelNode.swift in Sources */, D0943B071FDEC529001522CC /* InstantVideoRadialStatusNode.swift in Sources */, - D0EC6E131EB9F58900EBF1C3 /* InstantPageItem.swift in Sources */, D0AD02EA1FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift in Sources */, - D0EC6E141EB9F58900EBF1C3 /* InstantPageMedia.swift in Sources */, - D0EC6E151EB9F58900EBF1C3 /* InstantPageLinkSelectionView.swift in Sources */, - D0EC6E161EB9F58900EBF1C3 /* InstantPageLayoutSpacings.swift in Sources */, - D0EC6E171EB9F58900EBF1C3 /* InstantPageTextStyleStack.swift in Sources */, - D0EC6E181EB9F58900EBF1C3 /* InstantPageTextItem.swift in Sources */, D01C06B51FBB7720001561AB /* ChatMediaInputSettingsItem.swift in Sources */, D091C7A61F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift in Sources */, - D0EC6E191EB9F58900EBF1C3 /* InstantPageAnchorItem.swift in Sources */, 090E63E62195880F00E3C035 /* ContactAddItem.swift in Sources */, - D05677531F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift in Sources */, D00817CC22B47A14008A895F /* WatchCommunicationManager.swift in Sources */, - D0EC6E1A1EB9F58900EBF1C3 /* InstantPageImageItem.swift in Sources */, - D0EC6E1B1EB9F58900EBF1C3 /* InstantPageImageNode.swift in Sources */, D0AE303522B1D3620058D3BC /* TGBridgeAudioEncoder.m in Sources */, - D0EC6E1C1EB9F58900EBF1C3 /* InstantPageWebEmbedItem.swift in Sources */, - D0EC6E1D1EB9F58900EBF1C3 /* InstantPageWebEmbedNode.swift in Sources */, D04281F1200E4084009DDE36 /* GroupInfoSearchNavigationContentNode.swift in Sources */, - D0EC6E1E1EB9F58900EBF1C3 /* InstantPageShapeItem.swift in Sources */, - D0EC6E1F1EB9F58900EBF1C3 /* InstantPageTile.swift in Sources */, - D0EC6E201EB9F58900EBF1C3 /* InstantPageTileNode.swift in Sources */, D0B2F7702052B5A800D3BFB9 /* InviteContactsControllerNode.swift in Sources */, - D0EC6E211EB9F58900EBF1C3 /* InstantPageController.swift in Sources */, D00817D922B47A14008A895F /* AppDelegate.swift in Sources */, D0E1199C229808B8008CAE3A /* ChannelDiscussionGroupSetupHeaderItem.swift in Sources */, 091417F221EF4E5D00C8325A /* WallpaperGalleryController.swift in Sources */, - D0EC6E221EB9F58900EBF1C3 /* InstantPageControllerNode.swift in Sources */, D0EC6E231EB9F58900EBF1C3 /* StickerPackPreviewController.swift in Sources */, D0EC6E241EB9F58900EBF1C3 /* StickerPackPreviewControllerNode.swift in Sources */, D0FC194D201F82A000FEDBB2 /* OpenResolvedUrl.swift in Sources */, D0EC6E251EB9F58900EBF1C3 /* StickerPackPreviewGridItem.swift in Sources */, D0EC6E261EB9F58900EBF1C3 /* StickerPreviewController.swift in Sources */, - 09B4EE6021AD4A0E00847FA6 /* InstantPageContentNode.swift in Sources */, D00817D422B47A14008A895F /* LegacyUserDataImport.swift in Sources */, D0EC6E271EB9F58900EBF1C3 /* StickerPreviewControllerNode.swift in Sources */, D0EC6E281EB9F58900EBF1C3 /* ContactsController.swift in Sources */, @@ -5371,7 +5153,6 @@ D0EC6E2D1EB9F58900EBF1C3 /* CounterContollerTitleView.swift in Sources */, D0AEAE292080FD660013176E /* StickerPaneSearchGlobaltem.swift in Sources */, D0F19F6220E5694D00EEC860 /* GroupStickerPackCurrentItem.swift in Sources */, - 0958FBBB218AD6BC00E0CBD8 /* InstantPageFeedbackNode.swift in Sources */, D0EC6E2E1EB9F58900EBF1C3 /* ContactMultiselectionController.swift in Sources */, D0EC6E2F1EB9F58900EBF1C3 /* ContactMultiselectionControllerNode.swift in Sources */, D0EC6E301EB9F58900EBF1C3 /* ContactSelectionController.swift in Sources */, @@ -5390,21 +5171,18 @@ D0CE8CE71F6F35A300AA2DB0 /* ChatTextInputPanelState.swift in Sources */, D0AF796E22C2E26500CECCB8 /* astc.cc in Sources */, D0CE6F70213EEE5000BCD44B /* CreatePasswordController.swift in Sources */, - 0958FBB9218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift in Sources */, 0940932622E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift in Sources */, D00817D022B47A14008A895F /* WakeupManager.swift in Sources */, D0AF798822C2E26500CECCB8 /* matrix.cc in Sources */, D0E8175920122FE100B82BBB /* ChatRecentActionsFilterController.swift in Sources */, D08557E722C5FEB90026D6D2 /* AnimatedStickerNode.swift in Sources */, D084023420E295F000065674 /* GroupStickerPackSetupController.swift in Sources */, - D01C06BE1FBCAF06001561AB /* ChatMessageBubbleMosaicLayout.swift in Sources */, 0900678D21ED5EA800530762 /* WallpaperColorPanelNode.swift in Sources */, 0957DE2522DE2909001B4D57 /* ThemePreviewControllerNode.swift in Sources */, 09A218DA229EE1B600DE6898 /* HorizontalStickersChatContextPanelNode.swift in Sources */, 091417F421EF4F5F00C8325A /* WallpaperGalleryItem.swift in Sources */, D02F4AE91FCF370B004DFBAE /* ChatMessageInteractiveMediaBadge.swift in Sources */, D00817CF22B47A14008A895F /* LegacyFileImport.swift in Sources */, - D01A21AF1F39EA2E00DDA104 /* InstantPageTheme.swift in Sources */, 09510B1322F96E5B0078CAB7 /* ChatScheduleTimeController.swift in Sources */, D00817DF22B47A14008A895F /* LegacyDataImportSplash.swift in Sources */, D0B37C5C1F8D22AE004252DF /* ThemeSettingsController.swift in Sources */, @@ -5477,7 +5255,6 @@ D0FAB13E22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift in Sources */, D0EC6E771EB9F58900EBF1C3 /* NotificationsAndSounds.swift in Sources */, D0EC6E781EB9F58900EBF1C3 /* NotificationSoundSelection.swift in Sources */, - D056CD741FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift in Sources */, D0EC6E7A1EB9F58900EBF1C3 /* DebugController.swift in Sources */, D07ABBAB202A1BD1003671DE /* LegacyWallpaperPicker.swift in Sources */, 09E2D9F1226F214000EA0AA4 /* EmojiResources.swift in Sources */, @@ -5508,8 +5285,6 @@ D093D80820654A2900BC3599 /* BotPaymentDateItemNode.swift in Sources */, D04281FE200E639A009DDE36 /* ChatRecentActionsTitleView.swift in Sources */, D0ACCB1C1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift in Sources */, - D05677511F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift in Sources */, - 09F664CE21EBB3A100AB7E26 /* ImageBlur.swift in Sources */, D0EC6E891EB9F58900EBF1C3 /* FrameworkBundle.swift in Sources */, D0FA08C8204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift in Sources */, D0E9BA181F05574500F079A4 /* STPPaymentCardTextFieldViewModel.m in Sources */, diff --git a/submodules/UrlEscaping/Sources/UrlEscaping.swift b/submodules/UrlEscaping/Sources/UrlEscaping.swift index 38f936e0bf..a312d0e5df 100644 --- a/submodules/UrlEscaping/Sources/UrlEscaping.swift +++ b/submodules/UrlEscaping/Sources/UrlEscaping.swift @@ -52,3 +52,13 @@ public func explicitUrl(_ url: String) -> String { } return url } + +public func urlEncodedStringFromString(_ string: String) -> String { + var nsString: NSString = string as NSString + if let value = nsString.replacingPercentEscapes(using: String.Encoding.utf8.rawValue) { + nsString = value as NSString + } + + let result = CFURLCreateStringByAddingPercentEscapes(nil, nsString as CFString, nil, "?!@#$^&%*+=,:;'\"`<>()[]{}/\\|~ " as CFString, CFStringConvertNSStringEncodingToEncoding(String.Encoding.utf8.rawValue))! + return result as String +}