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 = "