Refactor InstantPageUI and related modules

This commit is contained in:
Peter 2019-08-12 21:15:45 +03:00
parent c0789dffda
commit f151d907d2
138 changed files with 4401 additions and 633 deletions

View File

@ -74,6 +74,12 @@
<FileRef
location = "group:submodules/GZip/GZip_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/Pdf/Pdf_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/MosaicLayout/MosaicLayout_Xcode.xcodeproj">
</FileRef>
<Group
location = "container:"
name = "Image Processing">
@ -138,6 +144,9 @@
<FileRef
location = "group:submodules/StickerResources/StickerResources_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/MusicAlbumArtResources/MusicAlbumArtResources_Xcode.xcodeproj">
</FileRef>
</Group>
</Group>
<Group
@ -172,6 +181,9 @@
<FileRef
location = "group:submodules/LiveLocationTimerNode/LiveLocationTimerNode_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/LiveLocationPositionNode/LiveLocationPositionNode_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/CheckNode/CheckNode_Xcode.xcodeproj">
</FileRef>
@ -325,6 +337,12 @@
<FileRef
location = "group:submodules/PasswordSetupUI/PasswordSetupUI_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/InstantPageUI/InstantPageUI_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/LocationUI/LocationUI_Xcode.xcodeproj">
</FileRef>
</Group>
<FileRef
location = "group:submodules/TelegramUI/TelegramUI_Xcode.xcodeproj">

View File

@ -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<MessageId>) -> Signal<ChatAvailableMessageActions, NoError>
func chatAvailableMessageActions(postbox: Postbox, accountPeerId: PeerId, messageIds: Set<MessageId>) -> Signal<ChatAvailableMessageActions, NoError>
func resolveUrl(account: Account, url: String) -> Signal<ResolvedUrl, NoError>
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<Bool> { get }

View File

@ -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 {
}

View File

@ -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 = "<group>"; };
D0879E2322F8860300C4D6B3 /* FastBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastBlur.h; sourceTree = "<group>"; };
D0C9C5392301CE4D00FAB518 /* ImageBlur.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageBlur.swift; sourceTree = "<group>"; };
/* 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;

View File

@ -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
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -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 = "<group>"; };
D0C9C56E2301CFA600FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
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 = "<group>"; };
D0C9C58B2301D03E00FAB518 /* InstantPageFeedbackNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageFeedbackNode.swift; sourceTree = "<group>"; };
D0C9C58C2301D03E00FAB518 /* InstantPageSettingsItemTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsItemTheme.swift; sourceTree = "<group>"; };
D0C9C58D2301D03E00FAB518 /* InstantPageAudioNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageAudioNode.swift; sourceTree = "<group>"; };
D0C9C58E2301D03E00FAB518 /* InstantPageArticleNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageArticleNode.swift; sourceTree = "<group>"; };
D0C9C58F2301D03E00FAB518 /* InstantPageAudioItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageAudioItem.swift; sourceTree = "<group>"; };
D0C9C5902301D03F00FAB518 /* InstantPageFeedbackItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageFeedbackItem.swift; sourceTree = "<group>"; };
D0C9C5912301D03F00FAB518 /* InstantPageGalleryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageGalleryController.swift; sourceTree = "<group>"; };
D0C9C5922301D03F00FAB518 /* InstantPageTableItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTableItem.swift; sourceTree = "<group>"; };
D0C9C5932301D03F00FAB518 /* InstantPageTextStyleStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTextStyleStack.swift; sourceTree = "<group>"; };
D0C9C5942301D03F00FAB518 /* InstantPageMediaPlaylist.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageMediaPlaylist.swift; sourceTree = "<group>"; };
D0C9C5952301D03F00FAB518 /* InstantPageWebEmbedItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageWebEmbedItem.swift; sourceTree = "<group>"; };
D0C9C5962301D03F00FAB518 /* InstantPageSettingsItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsItemNode.swift; sourceTree = "<group>"; };
D0C9C5972301D03F00FAB518 /* InstantPageContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageContentNode.swift; sourceTree = "<group>"; };
D0C9C5982301D04000FAB518 /* InstantPageSettingsThemeItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsThemeItemNode.swift; sourceTree = "<group>"; };
D0C9C5992301D04000FAB518 /* InstantPageSettingsFontFamilyItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsFontFamilyItemNode.swift; sourceTree = "<group>"; };
D0C9C59A2301D04000FAB518 /* InstantImageGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantImageGalleryItem.swift; sourceTree = "<group>"; };
D0C9C59B2301D04000FAB518 /* InstantPageScrollableNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageScrollableNode.swift; sourceTree = "<group>"; };
D0C9C59C2301D04000FAB518 /* InstantPageSettingsBacklightItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsBacklightItemNode.swift; sourceTree = "<group>"; };
D0C9C59D2301D04000FAB518 /* InstantPageLayoutSpacings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLayoutSpacings.swift; sourceTree = "<group>"; };
D0C9C59E2301D04000FAB518 /* InstantPageArticleItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageArticleItem.swift; sourceTree = "<group>"; };
D0C9C59F2301D04000FAB518 /* InstantPageSettingsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsNode.swift; sourceTree = "<group>"; };
D0C9C5A02301D04000FAB518 /* InstantPageAnchorItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageAnchorItem.swift; sourceTree = "<group>"; };
D0C9C5A12301D04100FAB518 /* InstantPageImageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageImageNode.swift; sourceTree = "<group>"; };
D0C9C5A22301D04100FAB518 /* InstantPageSettingsButtonItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsButtonItemNode.swift; sourceTree = "<group>"; };
D0C9C5A32301D04100FAB518 /* InstantPageShapeItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageShapeItem.swift; sourceTree = "<group>"; };
D0C9C5A42301D04100FAB518 /* InstantPageImageItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageImageItem.swift; sourceTree = "<group>"; };
D0C9C5A52301D04100FAB518 /* InstantPageSlideshowItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSlideshowItemNode.swift; sourceTree = "<group>"; };
D0C9C5A62301D04100FAB518 /* InstantPageReferenceControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageReferenceControllerNode.swift; sourceTree = "<group>"; };
D0C9C5A72301D04100FAB518 /* InstantPageLinkSelectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLinkSelectionView.swift; sourceTree = "<group>"; };
D0C9C5A82301D04200FAB518 /* InstantPageGalleryFooterContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageGalleryFooterContentNode.swift; sourceTree = "<group>"; };
D0C9C5A92301D04200FAB518 /* InstantPagePlayableVideoItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePlayableVideoItem.swift; sourceTree = "<group>"; };
D0C9C5AA2301D04200FAB518 /* InstantPageWebEmbedNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageWebEmbedNode.swift; sourceTree = "<group>"; };
D0C9C5AB2301D04200FAB518 /* InstantPagePeerReferenceItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceItem.swift; sourceTree = "<group>"; };
D0C9C5AC2301D04200FAB518 /* InstantPageTileNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTileNode.swift; sourceTree = "<group>"; };
D0C9C5AD2301D04200FAB518 /* InstantPageSlideshowItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSlideshowItem.swift; sourceTree = "<group>"; };
D0C9C5AE2301D04200FAB518 /* InstantPageTile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTile.swift; sourceTree = "<group>"; };
D0C9C5AF2301D04300FAB518 /* InstantPageSettingsSwitchItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsSwitchItemNode.swift; sourceTree = "<group>"; };
D0C9C5B02301D04300FAB518 /* InstantPageStoredState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageStoredState.swift; sourceTree = "<group>"; };
D0C9C5B12301D04300FAB518 /* InstantPagePeerReferenceNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceNode.swift; sourceTree = "<group>"; };
D0C9C5B22301D04300FAB518 /* InstantPageDetailsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageDetailsNode.swift; sourceTree = "<group>"; };
D0C9C5B32301D04300FAB518 /* InstantPageTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTheme.swift; sourceTree = "<group>"; };
D0C9C5B42301D04300FAB518 /* InstantPageSettingsFontSizeItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsFontSizeItemNode.swift; sourceTree = "<group>"; };
D0C9C5B52301D04300FAB518 /* InstantPageNavigationBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageNavigationBar.swift; sourceTree = "<group>"; };
D0C9C5B62301D04400FAB518 /* InstantPageMedia.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageMedia.swift; sourceTree = "<group>"; };
D0C9C5B72301D04500FAB518 /* InstantPageDetailsItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageDetailsItem.swift; sourceTree = "<group>"; };
D0C9C5B82301D04500FAB518 /* InstantPageTextItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageTextItem.swift; sourceTree = "<group>"; };
D0C9C5B92301D04500FAB518 /* InstantPageLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageLayout.swift; sourceTree = "<group>"; };
D0C9C5BA2301D04500FAB518 /* InstantPageItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageItem.swift; sourceTree = "<group>"; };
D0C9C5BB2301D04500FAB518 /* InstantPageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageNode.swift; sourceTree = "<group>"; };
D0C9C5BC2301D04600FAB518 /* InstantPageReferenceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageReferenceController.swift; sourceTree = "<group>"; };
D0C9C5BD2301D04600FAB518 /* InstantPagePlayableVideoNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPagePlayableVideoNode.swift; sourceTree = "<group>"; };
D0C9C5BE2301D04600FAB518 /* InstantPageControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageControllerNode.swift; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>";
};
D0C9C56B2301CFA600FAB518 /* Products */ = {
isa = PBXGroup;
children = (
D0C9C56A2301CFA600FAB518 /* InstantPageUI.framework */,
);
name = Products;
sourceTree = "<group>";
};
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 = "<group>";
};
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 = "<group>";
};
/* 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 */;
}

View File

@ -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)
}
}

View File

@ -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<Bool>()
override var ready: Promise<Bool> {
override public var ready: Promise<Bool> {
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() {

View File

@ -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)

View File

@ -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<Bool>()
override var ready: Promise<Bool> {
override public var ready: Promise<Bool> {
return self._ready
}
private var didSetReady = false
@ -159,7 +173,7 @@ class InstantPageGalleryController: ViewController {
private let centralItemAttributesDisposable = DisposableSet();
private let _hiddenMedia = Promise<InstantPageGalleryEntry?>(nil)
var hiddenMedia: Signal<InstantPageGalleryEntry?, NoError> {
public var hiddenMedia: Signal<InstantPageGalleryEntry?, NoError> {
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<Bool>?) -> 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<Bool>?) -> 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)

View File

@ -10,6 +10,7 @@ import AccountContext
import RadialStatusNode
import PhotoResources
import MediaResources
import LiveLocationPositionNode
private struct FetchControls {
let fetch: (Bool) -> Void

View File

@ -6,6 +6,7 @@ import Display
import TelegramPresentationData
import TelegramUIPreferences
import TelegramStringFormatting
import MosaicLayout
final class InstantPageLayout {
let origin: CGPoint

View File

@ -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
}
}

View File

@ -5,6 +5,7 @@ import Postbox
import TelegramCore
import TelegramUIPreferences
import AccountContext
import MusicAlbumArtResources
struct InstantPageMediaPlaylistItemId: SharedMediaPlaylistItemId {
let index: Int

View File

@ -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<InstantPageStoredState?, NoError> {
public func instantPageStoredState(postbox: Postbox, webPage: TelegramMediaWebpage) -> Signal<InstantPageStoredState?, NoError> {
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<Void, NoError> {
public func updateInstantPageStoredStateInteractively(postbox: Postbox, webPage: TelegramMediaWebpage, state: InstantPageStoredState?) -> Signal<Void, NoError> {
return postbox.transaction { transaction -> Void in
let key = ValueBoxKey(length: 8)
key.setInt64(0, value: webPage.webpageId.id)

View File

@ -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
}

View File

@ -0,0 +1,19 @@
//
// InstantPageUI.h
// InstantPageUI
//
// Created by Peter on 8/12/19.
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
//
#import <UIKit/UIKit.h>
//! 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 <InstantPageUI/PublicHeader.h>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -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 = "<group>"; };
D0C9C6382301D25D00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D0C9C6432301D2BC00FAB518 /* ChatMessageLiveLocationPositionNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageLiveLocationPositionNode.swift; sourceTree = "<group>"; };
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 = "<group>"; };
/* 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 = "<group>";
};
D0C9C6352301D25D00FAB518 /* Products */ = {
isa = PBXGroup;
children = (
D0C9C6342301D25D00FAB518 /* LiveLocationPositionNode.framework */,
);
name = Products;
sourceTree = "<group>";
};
D0C9C6362301D25D00FAB518 /* Sources */ = {
isa = PBXGroup;
children = (
D0C9C6432301D2BC00FAB518 /* ChatMessageLiveLocationPositionNode.swift */,
D0C9C65A2301D34000FAB518 /* FrameworkBundle.swift */,
D0C9C6372301D25D00FAB518 /* LiveLocationPositionNode.h */,
);
path = Sources;
sourceTree = "<group>";
};
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 = "<group>";
};
/* 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 */;
}

View File

@ -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)

View File

@ -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)
}
}

View File

@ -0,0 +1,19 @@
//
// LiveLocationPositionNode.h
// LiveLocationPositionNode
//
// Created by Peter on 8/12/19.
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
//
#import <UIKit/UIKit.h>
//! 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 <LiveLocationPositionNode/PublicHeader.h>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -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 = "<group>"; };
D0C9C68E2301D83500FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
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 = "<group>"; };
D0C9C6A92301D8CB00FAB518 /* LegacyLocationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyLocationController.swift; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>";
};
D0C9C68B2301D83500FAB518 /* Products */ = {
isa = PBXGroup;
children = (
D0C9C68A2301D83500FAB518 /* LocationUI.framework */,
);
name = Products;
sourceTree = "<group>";
};
D0C9C68C2301D83500FAB518 /* Sources */ = {
isa = PBXGroup;
children = (
D0C9C6A92301D8CB00FAB518 /* LegacyLocationController.swift */,
D0C9C6A82301D8CB00FAB518 /* LegacyLocationPicker.swift */,
D0C9C6B62301D8FE00FAB518 /* FrameworkBundle.swift */,
D0C9C68D2301D83500FAB518 /* LocationUI.h */,
);
path = Sources;
sourceTree = "<group>";
};
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 = "<group>";
};
/* 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 */;
}

View File

@ -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)
}
}

View File

@ -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

View File

@ -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()

View File

@ -0,0 +1,19 @@
//
// LocationUI.h
// LocationUI
//
// Created by Peter on 8/12/19.
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
//
#import <UIKit/UIKit.h>
//! 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 <LocationUI/PublicHeader.h>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -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 = "<group>"; };
D0C9C66A2301D39A00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D0C9C6752301D42A00FAB518 /* ChatMessageBubbleMosaicLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageBubbleMosaicLayout.swift; sourceTree = "<group>"; };
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 = "<group>";
};
D0C9C6672301D39A00FAB518 /* Products */ = {
isa = PBXGroup;
children = (
D0C9C6662301D39A00FAB518 /* MosaicLayout.framework */,
);
name = Products;
sourceTree = "<group>";
};
D0C9C6682301D39A00FAB518 /* Sources */ = {
isa = PBXGroup;
children = (
D0C9C6752301D42A00FAB518 /* ChatMessageBubbleMosaicLayout.swift */,
D0C9C6692301D39A00FAB518 /* MosaicLayout.h */,
);
path = Sources;
sourceTree = "<group>";
};
D0C9C6772301D44D00FAB518 /* Frameworks */ = {
isa = PBXGroup;
children = (
D0C9C67A2301D45100FAB518 /* UIKit.framework */,
D0C9C6782301D44E00FAB518 /* Foundation.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* 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 */;
}

View File

@ -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

View File

@ -0,0 +1,19 @@
//
// MosaicLayout.h
// MosaicLayout
//
// Created by Peter on 8/12/19.
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
//
#import <UIKit/UIKit.h>
//! 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 <MosaicLayout/PublicHeader.h>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -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 = "<group>"; };
D0C9C60C2301D13D00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D0C9C6172301D19100FAB518 /* ExternalMusicAlbumArtResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExternalMusicAlbumArtResources.swift; sourceTree = "<group>"; };
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 = "<group>";
};
D0C9C6092301D13D00FAB518 /* Products */ = {
isa = PBXGroup;
children = (
D0C9C6082301D13D00FAB518 /* MusicAlbumArtResources.framework */,
);
name = Products;
sourceTree = "<group>";
};
D0C9C60A2301D13D00FAB518 /* Sources */ = {
isa = PBXGroup;
children = (
D0C9C6172301D19100FAB518 /* ExternalMusicAlbumArtResources.swift */,
D0C9C60B2301D13D00FAB518 /* MusicAlbumArtResources.h */,
);
path = Sources;
sourceTree = "<group>";
};
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 = "<group>";
};
/* 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 */;
}

View File

@ -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<MediaResourceDataFetchResult, MediaResourceDataFetchError> {
public func fetchExternalMusicAlbumArtResource(account: Account, resource: ExternalMusicAlbumArtResource) -> Signal<MediaResourceDataFetchResult, MediaResourceDataFetchError> {
return Signal { subscriber in
subscriber.putNext(.reset)

View File

@ -0,0 +1,19 @@
//
// MusicAlbumArtResources.h
// MusicAlbumArtResources
//
// Created by Peter on 8/12/19.
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
//
#import <UIKit/UIKit.h>
//! 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 <MusicAlbumArtResources/PublicHeader.h>

22
submodules/Pdf/Info.plist Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -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 = "<group>"; };
D0C9C54A2301CEBD00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D0C9C5552301CF1600FAB518 /* PDF.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PDF.swift; sourceTree = "<group>"; };
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 = "<group>";
};
D0C9C5472301CEBD00FAB518 /* Products */ = {
isa = PBXGroup;
children = (
D0C9C5462301CEBD00FAB518 /* Pdf.framework */,
);
name = Products;
sourceTree = "<group>";
};
D0C9C5482301CEBD00FAB518 /* Sources */ = {
isa = PBXGroup;
children = (
D0C9C5552301CF1600FAB518 /* PDF.swift */,
D0C9C5492301CEBD00FAB518 /* Pdf.h */,
);
path = Sources;
sourceTree = "<group>";
};
D0C9C5572301CF2600FAB518 /* Frameworks */ = {
isa = PBXGroup;
children = (
D0C9C55C2301CF3500FAB518 /* Display.framework */,
D0C9C55A2301CF2A00FAB518 /* UIKit.framework */,
D0C9C5582301CF2700FAB518 /* Foundation.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* 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 */;
}

View File

@ -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 }

View File

@ -0,0 +1,19 @@
//
// Pdf.h
// Pdf
//
// Created by Peter on 8/12/19.
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
//
#import <UIKit/UIKit.h>
//! 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 <Pdf/PublicHeader.h>

View File

@ -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)
}

View File

@ -3,6 +3,7 @@ import UIKit
import SwiftSignalKit
import AsyncDisplayKit
import Accelerate
import ImageBlur
private class BlurLayer: CALayer {
private static let blurRadiusKey = "blurRadius"

View File

@ -3,6 +3,7 @@ import SwiftSignalKit
import Postbox
import TelegramCore
import AccountContext
import InstantPageUI
private func extractAnchor(string: String) -> (String, String?) {
var anchorValue: String?

View File

@ -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 {

View File

@ -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
}

View File

@ -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

View File

@ -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)
}
}
}

View File

@ -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

View File

@ -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, *) {

View File

@ -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

View File

@ -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 {

View File

@ -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)] = []

View File

@ -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)

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import TextFormat
import AccountContext
import WebsiteType
import InstantPageUI
enum InstantPageType {
case generic

View File

@ -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)

Some files were not shown because too many files have changed in this diff Show More