From 5278c5272996970faddc117294069d8708b665f9 Mon Sep 17 00:00:00 2001
From: Peter <>
Date: Tue, 13 Aug 2019 13:00:38 +0300
Subject: [PATCH] Refactor ChatListUI
---
.../contents.xcworkspacedata | 15 +
.../project.pbxproj | 4 +
.../Sources/AccountContext.swift | 6 +
.../Sources/ChatController.swift | 28 +
.../StoredMessageFromSearchPeer.swift | 6 +-
.../project.pbxproj | 747 ++++++++++++++++++
submodules/ChatListUI/Info.plist | 22 +
.../Sources}/ChatListController.swift | 40 +-
.../Sources}/ChatListControllerNode.swift | 0
.../Sources}/ChatListEmptyNode.swift | 0
.../ChatListRecentPeersListItem.swift | 0
.../ChatListSearchContainerNode.swift | 51 +-
.../Sources}/ChatListSelection.swift | 0
.../Sources}/ChatListTitleLockView.swift | 0
.../Sources}/ChatListTitleProxyNode.swift | 0
.../Sources}/ChatListTitleView.swift | 0
submodules/ChatListUI/Sources/ChatListUI.h | 19 +
.../ChatListUI/Sources/FrameworkBundle.swift | 13 +
.../Node}/ChatListArchiveInfoItem.swift | 0
.../Sources/Node}/ChatListBadgeNode.swift | 0
.../Sources/Node}/ChatListHoleItem.swift | 0
.../Sources/Node}/ChatListItem.swift | 40 +-
.../Sources/Node}/ChatListItemStrings.swift | 0
.../Sources/Node}/ChatListNode.swift | 111 +--
.../Sources/Node}/ChatListNodeEntries.swift | 0
.../Sources/Node}/ChatListNodeLocation.swift | 0
.../Node/ChatListPresentationData.swift | 22 +
.../Sources/Node}/ChatListStatusNode.swift | 0
.../Sources/Node}/ChatListTypingNode.swift | 1 +
.../Node}/ChatListViewTransition.swift | 0
.../project.pbxproj | 583 ++++++++++++++
submodules/ChatTitleActivityNode/Info.plist | 22 +
.../ChatPlayingActivityContentNode.swift | 0
...hatRecordingVideoActivityContentNode.swift | 0
...hatRecordingVoiceActivityContentNode.swift | 0
.../ChatTitleActivityContentNode.swift | 28 +-
.../Sources/ChatTitleActivityNode.h | 19 +
.../Sources}/ChatTitleActivityNode.swift | 10 +-
.../ChatTypingActivityContentNode.swift | 0
.../ChatUploadingActivityContentNode.swift | 0
.../project.pbxproj | 571 +++++++++++++
.../DeleteChatPeerActionSheetItem/Info.plist | 22 +
.../Sources/DeleteChatPeerActionSheetItem.h | 19 +
.../DeleteChatPeerActionSheetItem.swift | 10 +-
submodules/LanguageSuggestionUI/Info.plist | 22 +
.../project.pbxproj | 575 ++++++++++++++
.../LanguageSuggestionController.swift | 370 +++++++++
.../Sources/LanguageSuggestionUI.h | 19 +
.../Sources/StickerResources.swift | 7 +-
.../TelegramUI/ChannelInfoController.swift | 1 +
.../TelegramUI/ChatController.swift | 5 +-
.../TelegramUI/ChatInterfaceState.swift | 28 -
.../TelegramUI/ChatListPresentationData.swift | 22 -
.../TelegramUI/ChatMessageItemView.swift | 1 +
.../TelegramUI/TelegramUI/ChatTitleView.swift | 1 +
.../TelegramUI/DeclareEncodables.swift | 1 +
.../TelegramUI/GroupInfoController.swift | 1 +
.../TelegramUI/HashtagSearchController.swift | 1 +
.../HashtagSearchControllerNode.swift | 1 +
.../TelegramUI/NavigateToChatController.swift | 1 +
.../NotificationExceptionControllerNode.swift | 1 +
.../TelegramUI/OpenAddContact.swift | 2 +-
.../TelegramUI/PeerSelectionController.swift | 1 +
.../PeerSelectionControllerNode.swift | 1 +
.../TelegramUI/SettingsController.swift | 10 +-
.../TelegramUI/SharedAccountContext.swift | 17 +
.../TelegramUI/TelegramRootController.swift | 3 +-
.../ThemePreviewControllerNode.swift | 1 +
.../project.pbxproj | 190 +----
.../TextSelectionNode/Info.plist | 22 +
.../TextSelectionNode/TextSelectionNode.h | 19 +
.../project.pbxproj | 520 ++++++++++++
72 files changed, 3867 insertions(+), 385 deletions(-)
rename submodules/{TelegramUI/TelegramUI => AccountContext/Sources}/StoredMessageFromSearchPeer.swift (89%)
create mode 100644 submodules/ChatListUI/ChatListUI_Xcode.xcodeproj/project.pbxproj
create mode 100644 submodules/ChatListUI/Info.plist
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListController.swift (98%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListControllerNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListEmptyNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListRecentPeersListItem.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListSearchContainerNode.swift (96%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListSelection.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListTitleLockView.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListTitleProxyNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources}/ChatListTitleView.swift (100%)
create mode 100644 submodules/ChatListUI/Sources/ChatListUI.h
create mode 100644 submodules/ChatListUI/Sources/FrameworkBundle.swift
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListArchiveInfoItem.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListBadgeNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListHoleItem.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListItem.swift (97%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListItemStrings.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListNode.swift (93%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListNodeEntries.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListNodeLocation.swift (100%)
create mode 100644 submodules/ChatListUI/Sources/Node/ChatListPresentationData.swift
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListStatusNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListTypingNode.swift (99%)
rename submodules/{TelegramUI/TelegramUI => ChatListUI/Sources/Node}/ChatListViewTransition.swift (100%)
create mode 100644 submodules/ChatTitleActivityNode/ChatTitleActivityNode_Xcode.xcodeproj/project.pbxproj
create mode 100644 submodules/ChatTitleActivityNode/Info.plist
rename submodules/{TelegramUI/TelegramUI => ChatTitleActivityNode/Sources}/ChatPlayingActivityContentNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatTitleActivityNode/Sources}/ChatRecordingVideoActivityContentNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatTitleActivityNode/Sources}/ChatRecordingVoiceActivityContentNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatTitleActivityNode/Sources}/ChatTitleActivityContentNode.swift (79%)
create mode 100644 submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.h
rename submodules/{TelegramUI/TelegramUI => ChatTitleActivityNode/Sources}/ChatTitleActivityNode.swift (95%)
rename submodules/{TelegramUI/TelegramUI => ChatTitleActivityNode/Sources}/ChatTypingActivityContentNode.swift (100%)
rename submodules/{TelegramUI/TelegramUI => ChatTitleActivityNode/Sources}/ChatUploadingActivityContentNode.swift (100%)
create mode 100644 submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem_Xcode.xcodeproj/project.pbxproj
create mode 100644 submodules/DeleteChatPeerActionSheetItem/Info.plist
create mode 100644 submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.h
rename submodules/{TelegramUI/TelegramUI => DeleteChatPeerActionSheetItem/Sources}/DeleteChatPeerActionSheetItem.swift (92%)
create mode 100644 submodules/LanguageSuggestionUI/Info.plist
create mode 100644 submodules/LanguageSuggestionUI/LanguageSuggestionUI_Xcode.xcodeproj/project.pbxproj
create mode 100644 submodules/LanguageSuggestionUI/Sources/LanguageSuggestionController.swift
create mode 100644 submodules/LanguageSuggestionUI/Sources/LanguageSuggestionUI.h
delete mode 100644 submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift
create mode 100644 submodules/TextSelectionNode/TextSelectionNode/Info.plist
create mode 100644 submodules/TextSelectionNode/TextSelectionNode/TextSelectionNode.h
create mode 100644 submodules/TextSelectionNode/TextSelectionNode_Xcode.xcodeproj/project.pbxproj
diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
index 8eb96be7d5..5a635e9d0e 100644
--- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata
+++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
@@ -217,6 +217,12 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/submodules/AccountContext/AccountContext_Xcode.xcodeproj/project.pbxproj b/submodules/AccountContext/AccountContext_Xcode.xcodeproj/project.pbxproj
index e4a5d654e9..b265aed4b3 100644
--- a/submodules/AccountContext/AccountContext_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/AccountContext/AccountContext_Xcode.xcodeproj/project.pbxproj
@@ -36,6 +36,7 @@
D0C9C3D72300CC2500FAB518 /* FetchMediaUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3D62300CC2400FAB518 /* FetchMediaUtils.swift */; };
D0C9C3D92300CC6000FAB518 /* IsMediaStreamable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3D82300CC6000FAB518 /* IsMediaStreamable.swift */; };
D0C9CA8A2302314400FAB518 /* ContactSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA892302314400FAB518 /* ContactSelectionController.swift */; };
+ D0C9CB842302B4B900FAB518 /* StoredMessageFromSearchPeer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB832302B4B900FAB518 /* StoredMessageFromSearchPeer.swift */; };
D0D3285422F329A900D07EE2 /* AccountContext.h in Headers */ = {isa = PBXBuildFile; fileRef = D0D3285222F329A900D07EE2 /* AccountContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0D3285F22F335B000D07EE2 /* AccountContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D3285E22F335B000D07EE2 /* AccountContext.swift */; };
D0D3289D22F3461700D07EE2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0D3289C22F3461700D07EE2 /* Foundation.framework */; };
@@ -75,6 +76,7 @@
D0C9C3D62300CC2400FAB518 /* FetchMediaUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchMediaUtils.swift; sourceTree = ""; };
D0C9C3D82300CC6000FAB518 /* IsMediaStreamable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IsMediaStreamable.swift; sourceTree = ""; };
D0C9CA892302314400FAB518 /* ContactSelectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactSelectionController.swift; sourceTree = ""; };
+ D0C9CB832302B4B900FAB518 /* StoredMessageFromSearchPeer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoredMessageFromSearchPeer.swift; sourceTree = ""; };
D0D3284F22F329A900D07EE2 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0D3285222F329A900D07EE2 /* AccountContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccountContext.h; sourceTree = ""; };
D0D3285322F329A900D07EE2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
@@ -152,6 +154,7 @@
D0C9C3D62300CC2400FAB518 /* FetchMediaUtils.swift */,
D0C9C3D82300CC6000FAB518 /* IsMediaStreamable.swift */,
D0C9CA892302314400FAB518 /* ContactSelectionController.swift */,
+ D0C9CB832302B4B900FAB518 /* StoredMessageFromSearchPeer.swift */,
);
path = Sources;
sourceTree = "";
@@ -255,6 +258,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ D0C9CB842302B4B900FAB518 /* StoredMessageFromSearchPeer.swift in Sources */,
D0879B6122F7A7A600C4D6B3 /* UniversalVideoNode.swift in Sources */,
D0879A4E22F65B2A00C4D6B3 /* MediaManager.swift in Sources */,
D0879A4A22F6584B00C4D6B3 /* SharedMediaPlayer.swift in Sources */,
diff --git a/submodules/AccountContext/Sources/AccountContext.swift b/submodules/AccountContext/Sources/AccountContext.swift
index 7b8e3df112..40d7dc4f6c 100644
--- a/submodules/AccountContext/Sources/AccountContext.swift
+++ b/submodules/AccountContext/Sources/AccountContext.swift
@@ -367,6 +367,8 @@ public final class ContactSelectionControllerParams {
}
}
+public let defaultContactLabel: String = "_$!!$_"
+
public protocol SharedAccountContext: class {
var basePath: String { get }
var mainWindow: Window1? { get }
@@ -405,13 +407,17 @@ public protocol SharedAccountContext: class {
func makePeerInfoController(context: AccountContext, peer: Peer, mode: PeerInfoControllerMode) -> ViewController?
func makeDeviceContactInfoController(context: AccountContext, subject: DeviceContactInfoSubject, completed: (() -> Void)?, cancelled: (() -> Void)?) -> ViewController
func makePeersNearbyController(context: AccountContext) -> ViewController
+ func makeComposeController(context: AccountContext) -> ViewController
func makeChatController(context: AccountContext, chatLocation: ChatLocation, subject: ChatControllerSubject?, botStart: ChatControllerInitialBotStart?, mode: ChatControllerPresentationMode) -> ChatController
func makeContactSelectionController(_ params: ContactSelectionControllerParams) -> ContactSelectionController
+ func makeProxySettingsController(context: AccountContext) -> ViewController
+ func makeLocalizationListController(context: AccountContext) -> ViewController
func navigateToChatController(_ params: NavigateToChatControllerParams)
func openExternalUrl(context: AccountContext, urlContext: OpenURLContext, url: String, forceExternal: Bool, presentationData: PresentationData, navigationController: NavigationController?, dismissInput: @escaping () -> Void)
func chatAvailableMessageActions(postbox: Postbox, accountPeerId: PeerId, messageIds: Set) -> Signal
func resolveUrl(account: Account, url: String) -> Signal
func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlContext: OpenURLContext, navigationController: NavigationController?, openPeer: @escaping (PeerId, ChatControllerInteractionNavigateToPeer) -> Void, sendFile: ((FileMediaReference) -> Void)?, sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void)
+ func openAddContact(context: AccountContext, firstName: String, lastName: String, phoneNumber: String, label: String, present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void)
func presentContactsWarningSuppression(context: AccountContext, present: (ViewController, Any?) -> Void)
func navigateToCurrentCall()
diff --git a/submodules/AccountContext/Sources/ChatController.swift b/submodules/AccountContext/Sources/ChatController.swift
index 00f8172a2f..598493f70c 100644
--- a/submodules/AccountContext/Sources/ChatController.swift
+++ b/submodules/AccountContext/Sources/ChatController.swift
@@ -246,6 +246,34 @@ public enum ChatControllerPresentationMode: Equatable {
case inline
}
+public final class ChatEmbeddedInterfaceState: PeerChatListEmbeddedInterfaceState {
+ public let timestamp: Int32
+ public let text: NSAttributedString
+
+ public init(timestamp: Int32, text: NSAttributedString) {
+ self.timestamp = timestamp
+ self.text = text
+ }
+
+ public init(decoder: PostboxDecoder) {
+ self.timestamp = decoder.decodeInt32ForKey("d", orElse: 0)
+ self.text = ((decoder.decodeObjectForKey("at", decoder: { ChatTextInputStateText(decoder: $0) }) as? ChatTextInputStateText) ?? ChatTextInputStateText()).attributedText()
+ }
+
+ public func encode(_ encoder: PostboxEncoder) {
+ encoder.encodeInt32(self.timestamp, forKey: "d")
+ encoder.encodeObject(ChatTextInputStateText(attributedText: self.text), forKey: "at")
+ }
+
+ public func isEqual(to: PeerChatListEmbeddedInterfaceState) -> Bool {
+ if let to = to as? ChatEmbeddedInterfaceState {
+ return self.timestamp == to.timestamp && self.text.isEqual(to: to.text)
+ } else {
+ return false
+ }
+ }
+}
+
public protocol ChatController: ViewController {
var chatLocation: ChatLocation { get }
var canReadHistory: ValuePromise { get }
diff --git a/submodules/TelegramUI/TelegramUI/StoredMessageFromSearchPeer.swift b/submodules/AccountContext/Sources/StoredMessageFromSearchPeer.swift
similarity index 89%
rename from submodules/TelegramUI/TelegramUI/StoredMessageFromSearchPeer.swift
rename to submodules/AccountContext/Sources/StoredMessageFromSearchPeer.swift
index f094ef2417..01deab5599 100644
--- a/submodules/TelegramUI/TelegramUI/StoredMessageFromSearchPeer.swift
+++ b/submodules/AccountContext/Sources/StoredMessageFromSearchPeer.swift
@@ -3,7 +3,7 @@ import Postbox
import TelegramCore
import SwiftSignalKit
-func storedMessageFromSearchPeer(account: Account, peer: Peer) -> Signal {
+public func storedMessageFromSearchPeer(account: Account, peer: Peer) -> Signal {
return account.postbox.transaction { transaction -> PeerId in
if transaction.getPeer(peer.id) == nil {
updatePeers(transaction: transaction, peers: [peer], update: { previousPeer, updatedPeer in
@@ -17,7 +17,7 @@ func storedMessageFromSearchPeer(account: Account, peer: Peer) -> Signal Signal {
+public func storedMessageFromSearch(account: Account, message: Message) -> Signal {
return account.postbox.transaction { transaction -> Void in
if transaction.getMessage(message.id) == nil {
for (_, peer) in message.peers {
@@ -35,7 +35,7 @@ func storedMessageFromSearch(account: Account, message: Message) -> Signal
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ChatListController.swift b/submodules/ChatListUI/Sources/ChatListController.swift
similarity index 98%
rename from submodules/TelegramUI/TelegramUI/ChatListController.swift
rename to submodules/ChatListUI/Sources/ChatListController.swift
index ceaf9dddbb..d7d29afae8 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListController.swift
+++ b/submodules/ChatListUI/Sources/ChatListController.swift
@@ -13,6 +13,8 @@ import AlertUI
import UndoUI
import TelegramNotices
import SearchUI
+import DeleteChatPeerActionSheetItem
+import LanguageSuggestionUI
public func useSpecialTabBarIcons() -> Bool {
return (Date(timeIntervalSince1970: 1545642000)...Date(timeIntervalSince1970: 1546387200)).contains(Date())
@@ -65,7 +67,7 @@ private func fixListNodeScrolling(_ listNode: ListView, searchNode: NavigationBa
public class ChatListController: TelegramBaseController, UIViewControllerPreviewingDelegate {
private var validLayout: ContainerViewLayout?
- let context: AccountContext
+ public let context: AccountContext
private let controlsHistoryPreload: Bool
private let hideNetworkActivityStatus: Bool
@@ -109,7 +111,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- public init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, hideNetworkActivityStatus: Bool = false) {
+ public init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, hideNetworkActivityStatus: Bool = false, enableDebugActions: Bool) {
self.context = context
self.controlsHistoryPreload = controlsHistoryPreload
self.hideNetworkActivityStatus = hideNetworkActivityStatus
@@ -324,7 +326,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
self.titleView.openProxySettings = { [weak self] in
if let strongSelf = self {
- (strongSelf.navigationController as? NavigationController)?.pushViewController(proxySettingsController(context: context))
+ (strongSelf.navigationController as? NavigationController)?.pushViewController(context.sharedContext.makeProxySettingsController(context: context))
}
}
@@ -349,7 +351,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
self.searchContentNode?.updateExpansionProgress(0.0)
self.navigationBar?.setContentNode(self.searchContentNode, animated: false)
- if !GlobalExperimentalSettings.isAppStoreBuild {
+ if enableDebugActions {
self.tabBarItemDebugTapAction = {
preconditionFailure("debug tap")
}
@@ -709,7 +711,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
self.chatListDisplayNode.chatListNode.groupSelected = { [weak self] groupId in
if let strongSelf = self {
if let navigationController = strongSelf.navigationController as? NavigationController {
- let chatListController = ChatListController(context: strongSelf.context, groupId: groupId, controlsHistoryPreload: false)
+ let chatListController = ChatListController(context: strongSelf.context, groupId: groupId, controlsHistoryPreload: false, enableDebugActions: false)
navigationController.pushViewController(chatListController)
strongSelf.chatListDisplayNode.chatListNode.clearHighlightAnimated(true)
}
@@ -815,7 +817,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
self.chatListDisplayNode.requestAddContact = { [weak self] phoneNumber in
if let strongSelf = self {
strongSelf.view.endEditing(true)
- openAddContact(context: strongSelf.context, phoneNumber: phoneNumber, present: { [weak self] controller, arguments in
+ strongSelf.context.sharedContext.openAddContact(context: strongSelf.context, firstName: "", lastName: "", phoneNumber: phoneNumber, label: defaultContactLabel, present: { [weak self] controller, arguments in
self?.present(controller, in: .window(.root), with: arguments)
}, pushController: { [weak self] controller in
(self?.navigationController as? NavigationController)?.pushViewController(controller)
@@ -1042,7 +1044,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
if let controller = languageSuggestionController(context: strongSelf.context, suggestedLocalization: suggestedLocalization, currentLanguageCode: currentLanguageCode, openSelection: { [weak self] in
if let strongSelf = self {
- let controller = LocalizationListController(context: strongSelf.context)
+ let controller = strongSelf.context.sharedContext.makeLocalizationListController(context: strongSelf.context)
(strongSelf.navigationController as? NavigationController)?.pushViewController(controller)
}
}) {
@@ -1114,7 +1116,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
super.navigationStackConfigurationUpdated(next: next)
}
- @objc func editPressed() {
+ @objc private func editPressed() {
let editItem = UIBarButtonItem(title: self.presentationData.strings.Common_Done, style: .done, target: self, action: #selector(self.donePressed))
editItem.accessibilityLabel = self.presentationData.strings.Common_Done
if case .root = self.groupId {
@@ -1134,7 +1136,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- @objc func donePressed() {
+ @objc private func donePressed() {
let editItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed))
editItem.accessibilityLabel = self.presentationData.strings.Common_Edit
if case .root = self.groupId {
@@ -1153,7 +1155,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- func activateSearch() {
+ public func activateSearch() {
if self.displayNavigationBar {
let _ = (self.chatListDisplayNode.chatListNode.ready
|> take(1)
@@ -1172,7 +1174,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- func deactivateSearch(animated: Bool) {
+ public func deactivateSearch(animated: Bool) {
if !self.displayNavigationBar {
self.setDisplayNavigationBar(true, transition: animated ? .animated(duration: 0.5, curve: .spring) : .immediate)
if let searchContentNode = self.searchContentNode {
@@ -1181,8 +1183,8 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- @objc func composePressed() {
- (self.navigationController as? NavigationController)?.replaceAllButRootController(ComposeController(context: self.context), animated: true)
+ @objc public func composePressed() {
+ (self.navigationController as? NavigationController)?.replaceAllButRootController(self.context.sharedContext.makeComposeController(context: self.context), animated: true)
}
public func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
@@ -1218,7 +1220,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 = ChatControllerImpl(context: self.context, chatLocation: .peer(peerId), mode: .standard(previewing: true))
+ let chatController = self.context.sharedContext.makeChatController(context: self.context, chatLocation: .peer(peerId), subject: nil, botStart: nil, 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)
@@ -1227,7 +1229,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 = ChatControllerImpl(context: self.context, chatLocation: .peer(messageId.peerId), subject: .message(messageId), mode: .standard(previewing: true))
+ let chatController = self.context.sharedContext.makeChatController(context: self.context, chatLocation: .peer(messageId.peerId), subject: .message(messageId), botStart: nil, 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)
@@ -1250,7 +1252,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
switch item.content {
case let .peer(_, peer, _, _, _, _, _, _, _, _):
if peer.peerId.namespace != Namespaces.Peer.SecretChat {
- let chatController = ChatControllerImpl(context: self.context, chatLocation: .peer(peer.peerId), mode: .standard(previewing: true))
+ let chatController = self.context.sharedContext.makeChatController(context: self.context, chatLocation: .peer(peer.peerId), subject: nil, botStart: nil, 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)
@@ -1258,7 +1260,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
return nil
}
case let .groupReference(groupId, _, _, _, _):
- let chatListController = ChatListController(context: self.context, groupId: groupId, controlsHistoryPreload: false)
+ let chatListController = ChatListController(context: self.context, groupId: groupId, controlsHistoryPreload: false, enableDebugActions: false)
chatListController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate)
return (chatListController, sourceRect)
}
@@ -1273,7 +1275,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
func previewingCommit(_ viewControllerToCommit: UIViewController) {
if let viewControllerToCommit = viewControllerToCommit as? ViewController {
- if let chatController = viewControllerToCommit as? ChatControllerImpl {
+ if let chatController = viewControllerToCommit as? ChatController {
chatController.canReadHistory.set(true)
chatController.updatePresentationMode(.standard(previewing: false))
if let navigationController = self.navigationController as? NavigationController {
@@ -1446,7 +1448,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- func maybeAskForPeerChatRemoval(peer: RenderedPeer, deleteGloballyIfPossible: Bool = false, completion: @escaping (Bool) -> Void, removed: @escaping () -> Void) {
+ public func maybeAskForPeerChatRemoval(peer: RenderedPeer, deleteGloballyIfPossible: Bool = false, completion: @escaping (Bool) -> Void, removed: @escaping () -> Void) {
guard let chatPeer = peer.peers[peer.peerId], let mainPeer = peer.chatMainPeer else {
completion(false)
return
diff --git a/submodules/TelegramUI/TelegramUI/ChatListControllerNode.swift b/submodules/ChatListUI/Sources/ChatListControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListControllerNode.swift
rename to submodules/ChatListUI/Sources/ChatListControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListEmptyNode.swift b/submodules/ChatListUI/Sources/ChatListEmptyNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListEmptyNode.swift
rename to submodules/ChatListUI/Sources/ChatListEmptyNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListRecentPeersListItem.swift b/submodules/ChatListUI/Sources/ChatListRecentPeersListItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListRecentPeersListItem.swift
rename to submodules/ChatListUI/Sources/ChatListRecentPeersListItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift b/submodules/ChatListUI/Sources/ChatListSearchContainerNode.swift
similarity index 96%
rename from submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift
rename to submodules/ChatListUI/Sources/ChatListSearchContainerNode.swift
index e9586d9321..31b9d455d2 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift
+++ b/submodules/ChatListUI/Sources/ChatListSearchContainerNode.swift
@@ -178,13 +178,13 @@ private enum ChatListRecentEntry: Comparable, Identifiable {
}
}
-enum ChatListSearchEntryStableId: Hashable {
+public enum ChatListSearchEntryStableId: Hashable {
case localPeerId(PeerId)
case globalPeerId(PeerId)
case messageId(MessageId)
case addContact
- static func ==(lhs: ChatListSearchEntryStableId, rhs: ChatListSearchEntryStableId) -> Bool {
+ public static func ==(lhs: ChatListSearchEntryStableId, rhs: ChatListSearchEntryStableId) -> Bool {
switch lhs {
case let .localPeerId(peerId):
if case .localPeerId(peerId) = rhs {
@@ -214,13 +214,13 @@ enum ChatListSearchEntryStableId: Hashable {
}
}
-enum ChatListSearchEntry: Comparable, Identifiable {
+public enum ChatListSearchEntry: Comparable, Identifiable {
case localPeer(Peer, Peer?, (Int32, Bool)?, Int, PresentationTheme, PresentationStrings, PresentationPersonNameOrder, PresentationPersonNameOrder)
case globalPeer(FoundPeer, (Int32, Bool)?, Int, PresentationTheme, PresentationStrings, PresentationPersonNameOrder, PresentationPersonNameOrder)
case message(Message, RenderedPeer, CombinedPeerReadState?, ChatListPresentationData)
case addContact(String, PresentationTheme, PresentationStrings)
- var stableId: ChatListSearchEntryStableId {
+ public var stableId: ChatListSearchEntryStableId {
switch self {
case let .localPeer(peer, _, _, _, _, _, _, _):
return .localPeerId(peer.id)
@@ -233,7 +233,7 @@ enum ChatListSearchEntry: Comparable, Identifiable {
}
}
- static func ==(lhs: ChatListSearchEntry, rhs: ChatListSearchEntry) -> Bool {
+ public static func ==(lhs: ChatListSearchEntry, rhs: ChatListSearchEntry) -> Bool {
switch lhs {
case let .localPeer(lhsPeer, lhsAssociatedPeer, lhsUnreadBadge, lhsIndex, lhsTheme, lhsStrings, lhsSortOrder, lhsDisplayOrder):
if case let .localPeer(rhsPeer, rhsAssociatedPeer, rhsUnreadBadge, rhsIndex, rhsTheme, rhsStrings, rhsSortOrder, rhsDisplayOrder) = rhs, lhsPeer.isEqual(rhsPeer) && arePeersEqual(lhsAssociatedPeer, rhsAssociatedPeer) && lhsIndex == rhsIndex && lhsTheme === rhsTheme && lhsStrings === rhsStrings && lhsSortOrder == rhsSortOrder && lhsDisplayOrder == rhsDisplayOrder && lhsUnreadBadge?.0 == rhsUnreadBadge?.0 && lhsUnreadBadge?.1 == rhsUnreadBadge?.1 {
@@ -286,7 +286,7 @@ enum ChatListSearchEntry: Comparable, Identifiable {
}
}
- static func <(lhs: ChatListSearchEntry, rhs: ChatListSearchEntry) -> Bool {
+ public static func <(lhs: ChatListSearchEntry, rhs: ChatListSearchEntry) -> Bool {
switch lhs {
case let .localPeer(_, _, _, lhsIndex, _, _, _, _):
if case let .localPeer(_, _, _, rhsIndex, _, _, _, _) = rhs {
@@ -316,7 +316,7 @@ enum ChatListSearchEntry: Comparable, Identifiable {
}
}
- func item(context: AccountContext, enableHeaders: Bool, filter: ChatListNodePeersFilter, interaction: ChatListNodeInteraction) -> ListViewItem {
+ public func item(context: AccountContext, enableHeaders: Bool, filter: ChatListNodePeersFilter, interaction: ChatListNodeInteraction) -> ListViewItem {
switch self {
case let .localPeer(peer, associatedPeer, unreadBadge, _, theme, strings, nameSortOrder, nameDisplayOrder):
let primaryPeer: Peer
@@ -433,11 +433,18 @@ private struct ChatListSearchContainerRecentTransition {
let updates: [ListViewUpdateItem]
}
-struct ChatListSearchContainerTransition {
- let deletions: [ListViewDeleteItem]
- let insertions: [ListViewInsertItem]
- let updates: [ListViewUpdateItem]
- let displayingResults: Bool
+public struct ChatListSearchContainerTransition {
+ public let deletions: [ListViewDeleteItem]
+ public let insertions: [ListViewInsertItem]
+ public let updates: [ListViewUpdateItem]
+ public let displayingResults: Bool
+
+ public init(deletions: [ListViewDeleteItem], insertions: [ListViewInsertItem], updates: [ListViewUpdateItem], displayingResults: Bool) {
+ self.deletions = deletions
+ self.insertions = insertions
+ self.updates = updates
+ self.displayingResults = displayingResults
+ }
}
private func chatListSearchContainerPreparedRecentTransition(from fromEntries: [ChatListRecentEntry], to toEntries: [ChatListRecentEntry], context: AccountContext, filter: ChatListNodePeersFilter, peerSelected: @escaping (Peer) -> Void, peerLongTapped: @escaping (Peer) -> Void, clearRecentlySearchedPeers: @escaping () -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, deletePeer: @escaping (PeerId) -> Void) -> ChatListSearchContainerRecentTransition {
@@ -450,7 +457,7 @@ private func chatListSearchContainerPreparedRecentTransition(from fromEntries: [
return ChatListSearchContainerRecentTransition(deletions: deletions, insertions: insertions, updates: updates)
}
-func chatListSearchContainerPreparedTransition(from fromEntries: [ChatListSearchEntry], to toEntries: [ChatListSearchEntry], displayingResults: Bool, context: AccountContext, enableHeaders: Bool, filter: ChatListNodePeersFilter, interaction: ChatListNodeInteraction) -> ChatListSearchContainerTransition {
+public func chatListSearchContainerPreparedTransition(from fromEntries: [ChatListSearchEntry], to toEntries: [ChatListSearchEntry], displayingResults: Bool, context: AccountContext, enableHeaders: Bool, filter: ChatListNodePeersFilter, interaction: ChatListNodeInteraction) -> ChatListSearchContainerTransition {
let (deleteIndices, indicesAndItems, updateIndices) = mergeListsStableWithUpdates(leftList: fromEntries, rightList: toEntries)
let deletions = deleteIndices.map { ListViewDeleteItem(index: $0, directionHint: nil) }
@@ -510,7 +517,7 @@ private struct ChatListSearchMessagesContext {
let loadMoreIndex: MessageIndex?
}
-final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
+public final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
private let context: AccountContext
private let recentListNode: ListView
@@ -534,13 +541,13 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
private let statePromise: ValuePromise
private let _isSearching = ValuePromise(false, ignoreRepeated: true)
- override var isSearching: Signal {
+ override public var isSearching: Signal {
return self._isSearching.get()
}
private let filter: ChatListNodePeersFilter
- init(context: AccountContext, filter: ChatListNodePeersFilter, groupId: PeerGroupId, openPeer: @escaping (Peer, Bool) -> Void, openRecentPeerOptions: @escaping (Peer) -> Void, openMessage: @escaping (Peer, MessageId) -> Void, addContact: ((String) -> Void)?) {
+ public init(context: AccountContext, filter: ChatListNodePeersFilter, groupId: PeerGroupId, openPeer: @escaping (Peer, Bool) -> Void, openRecentPeerOptions: @escaping (Peer) -> Void, openMessage: @escaping (Peer, MessageId) -> Void, addContact: ((String) -> Void)?) {
self.context = context
self.filter = filter
self.dimNode = ASDisplayNode()
@@ -974,12 +981,12 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
}
}
- override func didLoad() {
+ override public func didLoad() {
super.didLoad()
self.dimNode.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dimTapGesture(_:))))
}
- @objc func dimTapGesture(_ recognizer: UITapGestureRecognizer) {
+ @objc private func dimTapGesture(_ recognizer: UITapGestureRecognizer) {
if case .ended = recognizer.state {
self.cancel?()
}
@@ -1007,7 +1014,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
}
}
- override func searchTextUpdated(text: String) {
+ override public func searchTextUpdated(text: String) {
if text.isEmpty {
self.searchQuery.set(.single(nil))
} else {
@@ -1072,7 +1079,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
}
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
+ override public func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: transition)
let hadValidLayout = self.validLayout != nil
@@ -1120,7 +1127,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
}
}
- override func previewViewAndActionAtLocation(_ location: CGPoint) -> (UIView, CGRect, Any)? {
+ override public func previewViewAndActionAtLocation(_ location: CGPoint) -> (UIView, CGRect, Any)? {
var selectedItemNode: ASDisplayNode?
var bounds: CGRect
if !self.recentListNode.isHidden {
@@ -1170,7 +1177,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
|> deliverOnMainQueue).start()
}
- override func scrollToTop() {
+ override public func scrollToTop() {
if !self.listNode.isHidden {
self.listNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: ListViewScrollToItem(index: 0, position: .top(0.0), animated: true, curve: .Default(duration: nil), directionHint: .Up), updateSizeAndInsets: nil, stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in })
} else {
diff --git a/submodules/TelegramUI/TelegramUI/ChatListSelection.swift b/submodules/ChatListUI/Sources/ChatListSelection.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListSelection.swift
rename to submodules/ChatListUI/Sources/ChatListSelection.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleLockView.swift b/submodules/ChatListUI/Sources/ChatListTitleLockView.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListTitleLockView.swift
rename to submodules/ChatListUI/Sources/ChatListTitleLockView.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleProxyNode.swift b/submodules/ChatListUI/Sources/ChatListTitleProxyNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListTitleProxyNode.swift
rename to submodules/ChatListUI/Sources/ChatListTitleProxyNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleView.swift b/submodules/ChatListUI/Sources/ChatListTitleView.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListTitleView.swift
rename to submodules/ChatListUI/Sources/ChatListTitleView.swift
diff --git a/submodules/ChatListUI/Sources/ChatListUI.h b/submodules/ChatListUI/Sources/ChatListUI.h
new file mode 100644
index 0000000000..4a3e46fa3c
--- /dev/null
+++ b/submodules/ChatListUI/Sources/ChatListUI.h
@@ -0,0 +1,19 @@
+//
+// ChatListUI.h
+// ChatListUI
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for ChatListUI.
+FOUNDATION_EXPORT double ChatListUIVersionNumber;
+
+//! Project version string for ChatListUI.
+FOUNDATION_EXPORT const unsigned char ChatListUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/ChatListUI/Sources/FrameworkBundle.swift b/submodules/ChatListUI/Sources/FrameworkBundle.swift
new file mode 100644
index 0000000000..8ca13d7d92
--- /dev/null
+++ b/submodules/ChatListUI/Sources/FrameworkBundle.swift
@@ -0,0 +1,13 @@
+import Foundation
+import UIKit
+
+private class FrameworkBundleClass: NSObject {
+}
+
+let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self)
+
+extension UIImage {
+ convenience init?(bundleImageName: String) {
+ self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil)
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/ChatListArchiveInfoItem.swift b/submodules/ChatListUI/Sources/Node/ChatListArchiveInfoItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListArchiveInfoItem.swift
rename to submodules/ChatListUI/Sources/Node/ChatListArchiveInfoItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListBadgeNode.swift b/submodules/ChatListUI/Sources/Node/ChatListBadgeNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListBadgeNode.swift
rename to submodules/ChatListUI/Sources/Node/ChatListBadgeNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListHoleItem.swift b/submodules/ChatListUI/Sources/Node/ChatListHoleItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListHoleItem.swift
rename to submodules/ChatListUI/Sources/Node/ChatListHoleItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListItem.swift b/submodules/ChatListUI/Sources/Node/ChatListItem.swift
similarity index 97%
rename from submodules/TelegramUI/TelegramUI/ChatListItem.swift
rename to submodules/ChatListUI/Sources/Node/ChatListItem.swift
index b59ee9be88..db31b444de 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListItem.swift
+++ b/submodules/ChatListUI/Sources/Node/ChatListItem.swift
@@ -16,11 +16,11 @@ import PeerPresenceStatusManager
import PhotoResources
import ChatListSearchItemNode
-enum ChatListItemContent {
+public enum ChatListItemContent {
case peer(message: Message?, peer: RenderedPeer, combinedReadState: CombinedPeerReadState?, notificationSettings: PeerNotificationSettings?, presence: PeerPresence?, summaryInfo: ChatListMessageTagSummaryInfo, embeddedState: PeerChatListEmbeddedInterfaceState?, inputActivities: [(Peer, PeerInputActivity)]?, isAd: Bool, ignoreUnreadBadge: Bool)
case groupReference(groupId: PeerGroupId, peers: [ChatListGroupReferencePeer], message: Message?, unreadState: PeerGroupUnreadCountersCombinedSummary, hiddenByDefault: Bool)
- var chatLocation: ChatLocation? {
+ public var chatLocation: ChatLocation? {
switch self {
case let .peer(_, peer, _, _, _, _, _, _, _, _):
return .peer(peer.peerId)
@@ -30,7 +30,7 @@ enum ChatListItemContent {
}
}
-class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
+public class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
let presentationData: ChatListPresentationData
let context: AccountContext
let peerGroupId: PeerGroupId
@@ -43,19 +43,19 @@ class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
let hiddenOffset: Bool
let interaction: ChatListNodeInteraction
- let selectable: Bool = true
+ public let selectable: Bool = true
- var approximateHeight: CGFloat {
+ public var approximateHeight: CGFloat {
return self.hiddenOffset ? 0.0 : 44.0
}
let header: ListViewItemHeader?
- var isPinned: Bool {
+ public var isPinned: Bool {
return self.index.pinningIndex != nil
}
- init(presentationData: ChatListPresentationData, context: AccountContext, peerGroupId: PeerGroupId, index: ChatListIndex, content: ChatListItemContent, editing: Bool, hasActiveRevealControls: Bool, selected: Bool, header: ListViewItemHeader?, enableContextActions: Bool, hiddenOffset: Bool, interaction: ChatListNodeInteraction) {
+ public init(presentationData: ChatListPresentationData, context: AccountContext, peerGroupId: PeerGroupId, index: ChatListIndex, content: ChatListItemContent, editing: Bool, hasActiveRevealControls: Bool, selected: Bool, header: ListViewItemHeader?, enableContextActions: Bool, hiddenOffset: Bool, interaction: ChatListNodeInteraction) {
self.presentationData = presentationData
self.peerGroupId = peerGroupId
self.context = context
@@ -70,7 +70,7 @@ class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
self.interaction = interaction
}
- func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal?, (ListViewItemApply) -> Void)) -> Void) {
+ public func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal?, (ListViewItemApply) -> Void)) -> Void) {
async {
let node = ChatListItemNode()
let (first, last, firstWithHeader, nextIsPinned) = ChatListItem.mergeType(item: self, previousItem: previousItem, nextItem: nextItem)
@@ -93,7 +93,7 @@ class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
}
}
- func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
+ public func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
Queue.mainQueue().async {
assert(node() is ChatListItemNode)
if let nodeValue = node() as? ChatListItemNode {
@@ -117,7 +117,7 @@ class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
}
}
- func selected(listView: ListView) {
+ public func selected(listView: ListView) {
switch self.content {
case let .peer(message, peer, _, _, _, _, _, _, isAd, _):
if let message = message, let peer = peer.peer {
@@ -295,7 +295,6 @@ class ChatListItemNode: ItemListRevealOptionsItemNode {
private let highlightedBackgroundNode: ASDisplayNode
let avatarNode: AvatarNode
- var multipleAvatarsNode: MultipleAvatarsNode?
let titleNode: TextNode
let authorNode: TextNode
let textNode: TextNode
@@ -1238,22 +1237,6 @@ class ChatListItemNode: ItemListRevealOptionsItemNode {
}
strongSelf.onlineNode.setImage(onlineIcon)
- /*if let multipleAvatarsApply = multipleAvatarsApply {
- strongSelf.avatarNode.isHidden = true
- let multipleAvatarsNode = multipleAvatarsApply(animated && strongSelf.multipleAvatarsNode != nil)
- if strongSelf.multipleAvatarsNode != multipleAvatarsNode {
- strongSelf.multipleAvatarsNode?.removeFromSupernode()
- strongSelf.multipleAvatarsNode = multipleAvatarsNode
- strongSelf.addSubnode(multipleAvatarsNode)
- multipleAvatarsNode.frame = avatarFrame
- } else {
- transition.updateFrame(node: multipleAvatarsNode, frame: avatarFrame)
- }
- } else if let multipleAvatarsNode = strongSelf.multipleAvatarsNode {
- multipleAvatarsNode.removeFromSupernode()
- strongSelf.avatarNode.isHidden = false
- }*/
-
let _ = dateApply()
let _ = textApply()
let _ = authorApply()
@@ -1544,9 +1527,6 @@ class ChatListItemNode: ItemListRevealOptionsItemNode {
var avatarFrame = self.avatarNode.frame
avatarFrame.origin.x = leftInset - 78.0 + editingOffset + 10.0 + offset
transition.updateFrame(node: self.avatarNode, frame: avatarFrame)
- if let multipleAvatarsNode = self.multipleAvatarsNode {
- transition.updateFrame(node: multipleAvatarsNode, frame: avatarFrame)
- }
var onlineFrame = self.onlineNode.frame
onlineFrame.origin.x = avatarFrame.maxX - onlineFrame.width - 2.0
diff --git a/submodules/TelegramUI/TelegramUI/ChatListItemStrings.swift b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListItemStrings.swift
rename to submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListNode.swift b/submodules/ChatListUI/Sources/Node/ChatListNode.swift
similarity index 93%
rename from submodules/TelegramUI/TelegramUI/ChatListNode.swift
rename to submodules/ChatListUI/Sources/Node/ChatListNode.swift
index bd9ffa68d6..99761c57a7 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListNode.swift
+++ b/submodules/ChatListUI/Sources/Node/ChatListNode.swift
@@ -35,7 +35,7 @@ public struct ChatListNodePeersFilter: OptionSet {
public static let includeSavedMessages = ChatListNodePeersFilter(rawValue: 1 << 11)
}
-enum ChatListNodeMode {
+public enum ChatListNodeMode {
case chatList
case peers(filter: ChatListNodePeersFilter)
}
@@ -64,7 +64,7 @@ final class ChatListHighlightedLocation {
}
}
-final class ChatListNodeInteraction {
+public final class ChatListNodeInteraction {
let activateSearch: () -> Void
let peerSelected: (Peer) -> Void
let togglePeerSelected: (PeerId) -> Void
@@ -81,7 +81,7 @@ final class ChatListNodeInteraction {
var highlightedChatLocation: ChatListHighlightedLocation?
- init(activateSearch: @escaping () -> Void, peerSelected: @escaping (Peer) -> Void, togglePeerSelected: @escaping (PeerId) -> Void, messageSelected: @escaping (Peer, Message, Bool) -> Void, groupSelected: @escaping (PeerGroupId) -> Void, addContact: @escaping (String) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, setItemPinned: @escaping (PinnedItemId, Bool) -> Void, setPeerMuted: @escaping (PeerId, Bool) -> Void, deletePeer: @escaping (PeerId) -> Void, updatePeerGrouping: @escaping (PeerId, Bool) -> Void, togglePeerMarkedUnread: @escaping (PeerId, Bool) -> Void, toggleArchivedFolderHiddenByDefault: @escaping () -> Void) {
+ public init(activateSearch: @escaping () -> Void, peerSelected: @escaping (Peer) -> Void, togglePeerSelected: @escaping (PeerId) -> Void, messageSelected: @escaping (Peer, Message, Bool) -> Void, groupSelected: @escaping (PeerGroupId) -> Void, addContact: @escaping (String) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, setItemPinned: @escaping (PinnedItemId, Bool) -> Void, setPeerMuted: @escaping (PeerId, Bool) -> Void, deletePeer: @escaping (PeerId) -> Void, updatePeerGrouping: @escaping (PeerId, Bool) -> Void, togglePeerMarkedUnread: @escaping (PeerId, Bool) -> Void, toggleArchivedFolderHiddenByDefault: @escaping () -> Void) {
self.activateSearch = activateSearch
self.peerSelected = peerSelected
self.togglePeerSelected = togglePeerSelected
@@ -98,25 +98,36 @@ final class ChatListNodeInteraction {
}
}
-final class ChatListNodePeerInputActivities {
- let activities: [PeerId: [(Peer, PeerInputActivity)]]
+public final class ChatListNodePeerInputActivities {
+ public let activities: [PeerId: [(Peer, PeerInputActivity)]]
- init(activities: [PeerId: [(Peer, PeerInputActivity)]]) {
+ public init(activities: [PeerId: [(Peer, PeerInputActivity)]]) {
self.activities = activities
}
}
-struct ChatListNodeState: Equatable {
- var presentationData: ChatListPresentationData
- var editing: Bool
- var peerIdWithRevealedOptions: PeerId?
- var selectedPeerIds: Set
- var peerInputActivities: ChatListNodePeerInputActivities?
- var pendingRemovalPeerIds: Set
- var pendingClearHistoryPeerIds: Set
- var archiveShouldBeTemporaryRevealed: Bool
+public struct ChatListNodeState: Equatable {
+ public var presentationData: ChatListPresentationData
+ public var editing: Bool
+ public var peerIdWithRevealedOptions: PeerId?
+ public var selectedPeerIds: Set
+ public var peerInputActivities: ChatListNodePeerInputActivities?
+ public var pendingRemovalPeerIds: Set
+ public var pendingClearHistoryPeerIds: Set
+ public var archiveShouldBeTemporaryRevealed: Bool
- static func ==(lhs: ChatListNodeState, rhs: ChatListNodeState) -> Bool {
+ public init(presentationData: ChatListPresentationData, editing: Bool, peerIdWithRevealedOptions: PeerId?, selectedPeerIds: Set, peerInputActivities: ChatListNodePeerInputActivities?, pendingRemovalPeerIds: Set, pendingClearHistoryPeerIds: Set, archiveShouldBeTemporaryRevealed: Bool) {
+ self.presentationData = presentationData
+ self.editing = editing
+ self.peerIdWithRevealedOptions = peerIdWithRevealedOptions
+ self.selectedPeerIds = selectedPeerIds
+ self.peerInputActivities = peerInputActivities
+ self.pendingRemovalPeerIds = pendingRemovalPeerIds
+ self.pendingClearHistoryPeerIds = pendingClearHistoryPeerIds
+ self.archiveShouldBeTemporaryRevealed = archiveShouldBeTemporaryRevealed
+ }
+
+ public static func ==(lhs: ChatListNodeState, rhs: ChatListNodeState) -> Bool {
if lhs.presentationData !== rhs.presentationData {
return false
}
@@ -277,14 +288,14 @@ private final class ChatListOpaqueTransactionState {
}
}
-enum ChatListSelectionOption {
+public enum ChatListSelectionOption {
case previous(unread: Bool)
case next(unread: Bool)
case peerId(PeerId)
case index(Int)
}
-enum ChatListGlobalScrollOption {
+public enum ChatListGlobalScrollOption {
case none
case top
case unread
@@ -295,18 +306,18 @@ private struct ChatListVisibleUnreadCounts: Equatable {
var filtered: Int32 = 0
}
-enum ChatListNodeScrollPosition {
+public enum ChatListNodeScrollPosition {
case auto
case autoUp
case top
}
-enum ChatListNodeEmptyState: Equatable {
+public enum ChatListNodeEmptyState: Equatable {
case notEmpty(containsChats: Bool)
case empty(isLoading: Bool)
}
-final class ChatListNode: ListView {
+public final class ChatListNode: ListView {
private let controlsHistoryPreload: Bool
private let context: AccountContext
private let groupId: PeerGroupId
@@ -314,18 +325,18 @@ final class ChatListNode: ListView {
private let _ready = ValuePromise()
private var didSetReady = false
- var ready: Signal {
+ public var ready: Signal {
return _ready.get()
}
- var peerSelected: ((PeerId, Bool, Bool) -> Void)?
- var groupSelected: ((PeerGroupId) -> Void)?
- var addContact: ((String) -> Void)?
- var activateSearch: (() -> Void)?
- var deletePeerChat: ((PeerId) -> Void)?
- var updatePeerGrouping: ((PeerId, Bool) -> Void)?
- var presentAlert: ((String) -> Void)?
- var toggleArchivedFolderHiddenByDefault: (() -> Void)?
+ public var peerSelected: ((PeerId, Bool, Bool) -> Void)?
+ public var groupSelected: ((PeerGroupId) -> Void)?
+ public var addContact: ((String) -> Void)?
+ public var activateSearch: (() -> Void)?
+ public var deletePeerChat: ((PeerId) -> Void)?
+ public var updatePeerGrouping: ((PeerId, Bool) -> Void)?
+ public var presentAlert: ((String) -> Void)?
+ public var toggleArchivedFolderHiddenByDefault: (() -> Void)?
private var theme: PresentationTheme
@@ -338,7 +349,7 @@ final class ChatListNode: ListView {
private(set) var currentState: ChatListNodeState
private let statePromise: ValuePromise
- var state: Signal {
+ public var state: Signal {
return self.statePromise.get()
}
@@ -348,7 +359,7 @@ final class ChatListNode: ListView {
private var activityStatusesDisposable: Disposable?
private let scrollToTopOptionPromise = Promise(.none)
- var scrollToTopOption: Signal {
+ public var scrollToTopOption: Signal {
return self.scrollToTopOptionPromise.get()
}
@@ -361,8 +372,8 @@ final class ChatListNode: ListView {
}
}
- var contentOffsetChanged: ((ListViewVisibleContentOffset) -> Void)?
- var contentScrollingEnded: ((ListView) -> Bool)?
+ public var contentOffsetChanged: ((ListViewVisibleContentOffset) -> Void)?
+ public var contentScrollingEnded: ((ListView) -> Bool)?
private let visibleUnreadCounts = ValuePromise(ChatListVisibleUnreadCounts())
private var visibleUnreadCountsValue = ChatListVisibleUnreadCounts() {
@@ -373,19 +384,19 @@ final class ChatListNode: ListView {
}
}
- var isEmptyUpdated: ((ChatListNodeEmptyState) -> Void)?
+ public var isEmptyUpdated: ((ChatListNodeEmptyState) -> Void)?
private var currentIsEmptyState: ChatListNodeEmptyState?
- var addedVisibleChatsWithPeerIds: (([PeerId]) -> Void)?
+ public var addedVisibleChatsWithPeerIds: (([PeerId]) -> Void)?
private let currentRemovingPeerId = Atomic(value: nil)
- func setCurrentRemovingPeerId(_ peerId: PeerId?) {
+ public func setCurrentRemovingPeerId(_ peerId: PeerId?) {
let _ = self.currentRemovingPeerId.swap(peerId)
}
private var hapticFeedback: HapticFeedback?
- init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, mode: ChatListNodeMode, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
+ public init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, mode: ChatListNodeMode, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
self.context = context
self.groupId = groupId
self.controlsHistoryPreload = controlsHistoryPreload
@@ -1068,7 +1079,7 @@ final class ChatListNode: ListView {
self.activityStatusesDisposable?.dispose()
}
- func updateThemeAndStrings(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
+ public func updateThemeAndStrings(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
if theme !== self.currentState.presentationData.theme || strings !== self.currentState.presentationData.strings || dateTimeFormat != self.currentState.presentationData.dateTimeFormat || disableAnimations != self.currentState.presentationData.disableAnimations {
self.theme = theme
if self.keepTopItemOverscrollBackground != nil {
@@ -1084,7 +1095,7 @@ final class ChatListNode: ListView {
}
}
- func updateState(_ f: (ChatListNodeState) -> ChatListNodeState) {
+ public func updateState(_ f: (ChatListNodeState) -> ChatListNodeState) {
let state = f(self.currentState)
if state != self.currentState {
self.currentState = state
@@ -1222,7 +1233,7 @@ final class ChatListNode: ListView {
}
}
- func updateLayout(transition: ContainedViewLayoutTransition, updateSizeAndInsets: ListViewUpdateSizeAndInsets) {
+ public func updateLayout(transition: ContainedViewLayoutTransition, updateSizeAndInsets: ListViewUpdateSizeAndInsets) {
self.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: nil, updateSizeAndInsets: updateSizeAndInsets, stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in })
if !self.dequeuedInitialTransitionOnLayout {
@@ -1231,7 +1242,7 @@ final class ChatListNode: ListView {
}
}
- func scrollToPosition(_ position: ChatListNodeScrollPosition) {
+ public func scrollToPosition(_ position: ChatListNodeScrollPosition) {
if let view = self.chatListView?.originalView {
if case .auto = position {
switch self.visibleContentOffset() {
@@ -1295,7 +1306,7 @@ final class ChatListNode: ListView {
|> switchToLatest
}
- func scrollToEarliestUnread(earlierThan: ChatListIndex?) {
+ public func scrollToEarliestUnread(earlierThan: ChatListIndex?) {
let _ = (relativeUnreadChatListIndex(position: .earlier(than: earlierThan)) |> deliverOnMainQueue).start(next: { [weak self] index in
guard let strongSelf = self else {
return
@@ -1313,7 +1324,7 @@ final class ChatListNode: ListView {
})
}
- func selectChat(_ option: ChatListSelectionOption) {
+ public func selectChat(_ option: ChatListSelectionOption) {
guard let interaction = self.interaction else {
return
}
@@ -1326,15 +1337,6 @@ final class ChatListNode: ListView {
return
}
-// if interaction.highlightedChatLocation == nil {
-// let location: ChatListNodeLocation = .scroll(index: ChatListIndex.absoluteUpperBound, sourceIndex: ChatListIndex.absoluteLowerBound
-// , scrollPosition: .top(0.0), animated: true)
-// self.currentLocation = location
-// self.chatListLocation.set(location)
-// //interaction.highlightedChatLocation = ChatListHighlightedLocation(location: .peer(0), progress: 1.0)
-// return
-// }
-
let entryCount = chatListView.filteredEntries.count
var current: (ChatListIndex, PeerId, Int)? = nil
var previous: (ChatListIndex, PeerId)? = nil
@@ -1421,10 +1423,9 @@ final class ChatListNode: ListView {
}
private func enqueueHistoryPreloadUpdate() {
-
}
- func updateSelectedChatLocation(_ chatLocation: ChatLocation?, progress: CGFloat, transition: ContainedViewLayoutTransition) {
+ public func updateSelectedChatLocation(_ chatLocation: ChatLocation?, progress: CGFloat, transition: ContainedViewLayoutTransition) {
guard let interaction = self.interaction else {
return
}
diff --git a/submodules/TelegramUI/TelegramUI/ChatListNodeEntries.swift b/submodules/ChatListUI/Sources/Node/ChatListNodeEntries.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListNodeEntries.swift
rename to submodules/ChatListUI/Sources/Node/ChatListNodeEntries.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListNodeLocation.swift b/submodules/ChatListUI/Sources/Node/ChatListNodeLocation.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListNodeLocation.swift
rename to submodules/ChatListUI/Sources/Node/ChatListNodeLocation.swift
diff --git a/submodules/ChatListUI/Sources/Node/ChatListPresentationData.swift b/submodules/ChatListUI/Sources/Node/ChatListPresentationData.swift
new file mode 100644
index 0000000000..da0d405e97
--- /dev/null
+++ b/submodules/ChatListUI/Sources/Node/ChatListPresentationData.swift
@@ -0,0 +1,22 @@
+import Foundation
+import UIKit
+import TelegramPresentationData
+import TelegramUIPreferences
+
+public final class ChatListPresentationData {
+ public let theme: PresentationTheme
+ public let strings: PresentationStrings
+ public let dateTimeFormat: PresentationDateTimeFormat
+ public let nameSortOrder: PresentationPersonNameOrder
+ public let nameDisplayOrder: PresentationPersonNameOrder
+ public let disableAnimations: Bool
+
+ public init(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
+ self.theme = theme
+ self.strings = strings
+ self.dateTimeFormat = dateTimeFormat
+ self.nameSortOrder = nameSortOrder
+ self.nameDisplayOrder = nameDisplayOrder
+ self.disableAnimations = disableAnimations
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/ChatListStatusNode.swift b/submodules/ChatListUI/Sources/Node/ChatListStatusNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListStatusNode.swift
rename to submodules/ChatListUI/Sources/Node/ChatListStatusNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift b/submodules/ChatListUI/Sources/Node/ChatListTypingNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift
rename to submodules/ChatListUI/Sources/Node/ChatListTypingNode.swift
index 0b1603b462..5eeed83f05 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift
+++ b/submodules/ChatListUI/Sources/Node/ChatListTypingNode.swift
@@ -6,6 +6,7 @@ import TelegramCore
import Display
import SwiftSignalKit
import TelegramPresentationData
+import ChatTitleActivityNode
private let textFont = Font.regular(15.0)
diff --git a/submodules/TelegramUI/TelegramUI/ChatListViewTransition.swift b/submodules/ChatListUI/Sources/Node/ChatListViewTransition.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListViewTransition.swift
rename to submodules/ChatListUI/Sources/Node/ChatListViewTransition.swift
diff --git a/submodules/ChatTitleActivityNode/ChatTitleActivityNode_Xcode.xcodeproj/project.pbxproj b/submodules/ChatTitleActivityNode/ChatTitleActivityNode_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..8b694c308c
--- /dev/null
+++ b/submodules/ChatTitleActivityNode/ChatTitleActivityNode_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,583 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9CB2C2302B02E00FAB518 /* ChatTitleActivityNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9CB2A2302B02E00FAB518 /* ChatTitleActivityNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9CB372302B0C400FAB518 /* ChatTitleActivityNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB362302B0C400FAB518 /* ChatTitleActivityNode.swift */; };
+ D0C9CB3A2302B0D800FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB392302B0D800FAB518 /* UIKit.framework */; };
+ D0C9CB3C2302B0DD00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB3B2302B0DD00FAB518 /* Foundation.framework */; };
+ D0C9CB3E2302B0DE00FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB3D2302B0DE00FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9CB402302B0E300FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB3F2302B0E300FAB518 /* Display.framework */; };
+ D0C9CB462302B19A00FAB518 /* ChatTitleActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB452302B19A00FAB518 /* ChatTitleActivityContentNode.swift */; };
+ D0C9CB482302B1A600FAB518 /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB472302B1A600FAB518 /* LegacyComponents.framework */; };
+ D0C9CB4E2302B22800FAB518 /* ChatTypingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB492302B22700FAB518 /* ChatTypingActivityContentNode.swift */; };
+ D0C9CB4F2302B22800FAB518 /* ChatPlayingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB4A2302B22700FAB518 /* ChatPlayingActivityContentNode.swift */; };
+ D0C9CB502302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB4B2302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift */; };
+ D0C9CB512302B22800FAB518 /* ChatUploadingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB4C2302B22800FAB518 /* ChatUploadingActivityContentNode.swift */; };
+ D0C9CB522302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB4D2302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9CB272302B02E00FAB518 /* ChatTitleActivityNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ChatTitleActivityNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB2A2302B02E00FAB518 /* ChatTitleActivityNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChatTitleActivityNode.h; sourceTree = ""; };
+ D0C9CB2B2302B02E00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9CB362302B0C400FAB518 /* ChatTitleActivityNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTitleActivityNode.swift; sourceTree = ""; };
+ D0C9CB392302B0D800FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9CB3B2302B0DD00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9CB3D2302B0DE00FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB3F2302B0E300FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB452302B19A00FAB518 /* ChatTitleActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTitleActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB472302B1A600FAB518 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB492302B22700FAB518 /* ChatTypingActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTypingActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB4A2302B22700FAB518 /* ChatPlayingActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatPlayingActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB4B2302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatRecordingVideoActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB4C2302B22800FAB518 /* ChatUploadingActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatUploadingActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB4D2302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatRecordingVoiceActivityContentNode.swift; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9CB242302B02E00FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB482302B1A600FAB518 /* LegacyComponents.framework in Frameworks */,
+ D0C9CB402302B0E300FAB518 /* Display.framework in Frameworks */,
+ D0C9CB3E2302B0DE00FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9CB3C2302B0DD00FAB518 /* Foundation.framework in Frameworks */,
+ D0C9CB3A2302B0D800FAB518 /* UIKit.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9CB1D2302B02E00FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB2B2302B02E00FAB518 /* Info.plist */,
+ D0C9CB292302B02E00FAB518 /* Sources */,
+ D0C9CB282302B02E00FAB518 /* Products */,
+ D0C9CB382302B0D500FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9CB282302B02E00FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB272302B02E00FAB518 /* ChatTitleActivityNode.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9CB292302B02E00FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB4A2302B22700FAB518 /* ChatPlayingActivityContentNode.swift */,
+ D0C9CB4B2302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift */,
+ D0C9CB4D2302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift */,
+ D0C9CB492302B22700FAB518 /* ChatTypingActivityContentNode.swift */,
+ D0C9CB4C2302B22800FAB518 /* ChatUploadingActivityContentNode.swift */,
+ D0C9CB452302B19A00FAB518 /* ChatTitleActivityContentNode.swift */,
+ D0C9CB362302B0C400FAB518 /* ChatTitleActivityNode.swift */,
+ D0C9CB2A2302B02E00FAB518 /* ChatTitleActivityNode.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9CB382302B0D500FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB472302B1A600FAB518 /* LegacyComponents.framework */,
+ D0C9CB3F2302B0E300FAB518 /* Display.framework */,
+ D0C9CB3D2302B0DE00FAB518 /* AsyncDisplayKit.framework */,
+ D0C9CB3B2302B0DD00FAB518 /* Foundation.framework */,
+ D0C9CB392302B0D800FAB518 /* UIKit.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9CB222302B02E00FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB2C2302B02E00FAB518 /* ChatTitleActivityNode.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9CB262302B02E00FAB518 /* ChatTitleActivityNode */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9CB2F2302B02E00FAB518 /* Build configuration list for PBXNativeTarget "ChatTitleActivityNode" */;
+ buildPhases = (
+ D0C9CB222302B02E00FAB518 /* Headers */,
+ D0C9CB232302B02E00FAB518 /* Sources */,
+ D0C9CB242302B02E00FAB518 /* Frameworks */,
+ D0C9CB252302B02E00FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ChatTitleActivityNode;
+ productName = ChatTitleActivityNode;
+ productReference = D0C9CB272302B02E00FAB518 /* ChatTitleActivityNode.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9CB1E2302B02E00FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9CB262302B02E00FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9CB212302B02E00FAB518 /* Build configuration list for PBXProject "ChatTitleActivityNode_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9CB1D2302B02E00FAB518;
+ productRefGroup = D0C9CB282302B02E00FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9CB262302B02E00FAB518 /* ChatTitleActivityNode */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9CB252302B02E00FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9CB232302B02E00FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB372302B0C400FAB518 /* ChatTitleActivityNode.swift in Sources */,
+ D0C9CB4F2302B22800FAB518 /* ChatPlayingActivityContentNode.swift in Sources */,
+ D0C9CB522302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift in Sources */,
+ D0C9CB4E2302B22800FAB518 /* ChatTypingActivityContentNode.swift in Sources */,
+ D0C9CB462302B19A00FAB518 /* ChatTitleActivityContentNode.swift in Sources */,
+ D0C9CB512302B22800FAB518 /* ChatUploadingActivityContentNode.swift in Sources */,
+ D0C9CB502302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9CB2D2302B02E00FAB518 /* 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;
+ };
+ D0C9CB2E2302B02E00FAB518 /* 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;
+ };
+ D0C9CB302302B02E00FAB518 /* 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.ChatTitleActivityNode;
+ 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;
+ };
+ D0C9CB312302B02E00FAB518 /* 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.ChatTitleActivityNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB322302B05800FAB518 /* 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;
+ };
+ D0C9CB332302B05800FAB518 /* 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.ChatTitleActivityNode;
+ 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;
+ };
+ D0C9CB342302B06400FAB518 /* 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;
+ };
+ D0C9CB352302B06400FAB518 /* 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.ChatTitleActivityNode;
+ 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 */
+ D0C9CB212302B02E00FAB518 /* Build configuration list for PBXProject "ChatTitleActivityNode_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB2D2302B02E00FAB518 /* DebugAppStoreLLC */,
+ D0C9CB322302B05800FAB518 /* DebugHockeyapp */,
+ D0C9CB2E2302B02E00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB342302B06400FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9CB2F2302B02E00FAB518 /* Build configuration list for PBXNativeTarget "ChatTitleActivityNode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB302302B02E00FAB518 /* DebugAppStoreLLC */,
+ D0C9CB332302B05800FAB518 /* DebugHockeyapp */,
+ D0C9CB312302B02E00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB352302B06400FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9CB1E2302B02E00FAB518 /* Project object */;
+}
diff --git a/submodules/ChatTitleActivityNode/Info.plist b/submodules/ChatTitleActivityNode/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/ChatTitleActivityNode/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ChatPlayingActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatPlayingActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatPlayingActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatPlayingActivityContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatRecordingVideoActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatRecordingVideoActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatRecordingVideoActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatRecordingVideoActivityContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatRecordingVoiceActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatRecordingVoiceActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatRecordingVoiceActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatRecordingVoiceActivityContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatTitleActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityContentNode.swift
similarity index 79%
rename from submodules/TelegramUI/TelegramUI/ChatTitleActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatTitleActivityContentNode.swift
index dd4a4b4275..27c2014190 100644
--- a/submodules/TelegramUI/TelegramUI/ChatTitleActivityContentNode.swift
+++ b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityContentNode.swift
@@ -7,28 +7,28 @@ import LegacyComponents
private let transitionDuration = 0.2
private let animationKey = "animation"
-class ChatTitleActivityIndicatorNode: ASDisplayNode {
- var duration: CFTimeInterval {
+public class ChatTitleActivityIndicatorNode: ASDisplayNode {
+ public var duration: CFTimeInterval {
return 0.0
}
- var timingFunction: CAMediaTimingFunction {
+ public var timingFunction: CAMediaTimingFunction {
return CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
}
- var color: UIColor? {
+ public var color: UIColor? {
didSet {
self.setNeedsDisplay()
}
}
- var progress: CGFloat = 0.0 {
+ public var progress: CGFloat = 0.0 {
didSet {
self.setNeedsDisplay()
}
}
- init(color: UIColor) {
+ public init(color: UIColor) {
self.color = color
super.init()
@@ -68,21 +68,21 @@ class ChatTitleActivityIndicatorNode: ASDisplayNode {
self.pop_removeAnimation(forKey: animationKey)
}
- override func didEnterHierarchy() {
+ override public func didEnterHierarchy() {
super.didEnterHierarchy()
self.startAnimation()
}
- override func didExitHierarchy() {
+ override public func didExitHierarchy() {
super.didExitHierarchy()
self.stopAnimation()
}
}
-class ChatTitleActivityContentNode: ASDisplayNode {
- let textNode: ImmediateTextNode
+public class ChatTitleActivityContentNode: ASDisplayNode {
+ public let textNode: ImmediateTextNode
- init(text: NSAttributedString) {
+ public init(text: NSAttributedString) {
self.textNode = ImmediateTextNode()
self.textNode.displaysAsynchronously = false
self.textNode.maximumNumberOfLines = 1
@@ -95,7 +95,7 @@ class ChatTitleActivityContentNode: ASDisplayNode {
self.textNode.attributedText = text
}
- func animateOut(to: ChatTitleActivityNodeState, style: ChatTitleActivityAnimationStyle, completion: @escaping () -> Void) {
+ public func animateOut(to: ChatTitleActivityNodeState, style: ChatTitleActivityAnimationStyle, completion: @escaping () -> Void) {
self.layer.animateAlpha(from: 1.0, to: 0.0, duration: transitionDuration, removeOnCompletion: false, completion: { _ in
completion()
})
@@ -105,7 +105,7 @@ class ChatTitleActivityContentNode: ASDisplayNode {
}
}
- func animateIn(from: ChatTitleActivityNodeState, style: ChatTitleActivityAnimationStyle) {
+ public func animateIn(from: ChatTitleActivityNodeState, style: ChatTitleActivityAnimationStyle) {
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: transitionDuration)
if case .slide = style {
@@ -113,7 +113,7 @@ class ChatTitleActivityContentNode: ASDisplayNode {
}
}
- func updateLayout(_ constrainedSize: CGSize, alignment: NSTextAlignment) -> CGSize {
+ public func updateLayout(_ constrainedSize: CGSize, alignment: NSTextAlignment) -> CGSize {
let size = self.textNode.updateLayout(constrainedSize)
self.textNode.bounds = CGRect(origin: CGPoint(), size: size)
if case .center = alignment {
diff --git a/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.h b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.h
new file mode 100644
index 0000000000..0d41a1270b
--- /dev/null
+++ b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.h
@@ -0,0 +1,19 @@
+//
+// ChatTitleActivityNode.h
+// ChatTitleActivityNode
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for ChatTitleActivityNode.
+FOUNDATION_EXPORT double ChatTitleActivityNodeVersionNumber;
+
+//! Project version string for ChatTitleActivityNode.
+FOUNDATION_EXPORT const unsigned char ChatTitleActivityNodeVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ChatTitleActivityNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.swift
similarity index 95%
rename from submodules/TelegramUI/TelegramUI/ChatTitleActivityNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.swift
index 5d41598b84..c345f428bb 100644
--- a/submodules/TelegramUI/TelegramUI/ChatTitleActivityNode.swift
+++ b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.swift
@@ -43,7 +43,7 @@ public enum ChatTitleActivityNodeState: Equatable {
}
}
- var string: String? {
+ public var string: String? {
if case let .info(text, _) = self {
return text.string
}
@@ -51,12 +51,16 @@ public enum ChatTitleActivityNodeState: Equatable {
}
}
-class ChatTitleActivityNode: ASDisplayNode {
- private(set) var state: ChatTitleActivityNodeState = .none
+public class ChatTitleActivityNode: ASDisplayNode {
+ public private(set) var state: ChatTitleActivityNodeState = .none
private var contentNode: ChatTitleActivityContentNode?
private var nextContentNode: ChatTitleActivityContentNode?
+ override public init() {
+ super.init()
+ }
+
public func transitionToState(_ state: ChatTitleActivityNodeState, animation: ChatTitleActivityAnimationStyle = .crossfade, completion: @escaping () -> Void = {}) -> Bool {
if self.state != state {
let currentState = self.state
diff --git a/submodules/TelegramUI/TelegramUI/ChatTypingActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatTypingActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatTypingActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatTypingActivityContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatUploadingActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatUploadingActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatUploadingActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatUploadingActivityContentNode.swift
diff --git a/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem_Xcode.xcodeproj/project.pbxproj b/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..718308169e
--- /dev/null
+++ b/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,571 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9CB622302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9CB602302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9CB6D2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB6C2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift */; };
+ D0C9CB702302B33600FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB6F2302B33600FAB518 /* Foundation.framework */; };
+ D0C9CB722302B33B00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB712302B33B00FAB518 /* UIKit.framework */; };
+ D0C9CB742302B33E00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB732302B33E00FAB518 /* Display.framework */; };
+ D0C9CB762302B34200FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB752302B34200FAB518 /* Postbox.framework */; };
+ D0C9CB782302B34A00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB772302B34A00FAB518 /* TelegramCore.framework */; };
+ D0C9CB7A2302B35100FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB792302B35100FAB518 /* TelegramPresentationData.framework */; };
+ D0C9CB7C2302B35600FAB518 /* AvatarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB7B2302B35600FAB518 /* AvatarNode.framework */; };
+ D0C9CB7E2302B35D00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB7D2302B35D00FAB518 /* AccountContext.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9CB5D2302B28D00FAB518 /* DeleteChatPeerActionSheetItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DeleteChatPeerActionSheetItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB602302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeleteChatPeerActionSheetItem.h; sourceTree = ""; };
+ D0C9CB612302B28D00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9CB6C2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeleteChatPeerActionSheetItem.swift; sourceTree = ""; };
+ D0C9CB6F2302B33600FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9CB712302B33B00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9CB732302B33E00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB752302B34200FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB772302B34A00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB792302B35100FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB7B2302B35600FAB518 /* AvatarNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AvatarNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB7D2302B35D00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9CB5A2302B28D00FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB7E2302B35D00FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9CB7C2302B35600FAB518 /* AvatarNode.framework in Frameworks */,
+ D0C9CB7A2302B35100FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9CB782302B34A00FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9CB762302B34200FAB518 /* Postbox.framework in Frameworks */,
+ D0C9CB742302B33E00FAB518 /* Display.framework in Frameworks */,
+ D0C9CB722302B33B00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9CB702302B33600FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9CB532302B28D00FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB612302B28D00FAB518 /* Info.plist */,
+ D0C9CB5F2302B28D00FAB518 /* Sources */,
+ D0C9CB5E2302B28D00FAB518 /* Products */,
+ D0C9CB6E2302B33400FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9CB5E2302B28D00FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB5D2302B28D00FAB518 /* DeleteChatPeerActionSheetItem.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9CB5F2302B28D00FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB6C2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift */,
+ D0C9CB602302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9CB6E2302B33400FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB7D2302B35D00FAB518 /* AccountContext.framework */,
+ D0C9CB7B2302B35600FAB518 /* AvatarNode.framework */,
+ D0C9CB792302B35100FAB518 /* TelegramPresentationData.framework */,
+ D0C9CB772302B34A00FAB518 /* TelegramCore.framework */,
+ D0C9CB752302B34200FAB518 /* Postbox.framework */,
+ D0C9CB732302B33E00FAB518 /* Display.framework */,
+ D0C9CB712302B33B00FAB518 /* UIKit.framework */,
+ D0C9CB6F2302B33600FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9CB582302B28D00FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB622302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9CB5C2302B28D00FAB518 /* DeleteChatPeerActionSheetItem */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9CB652302B28D00FAB518 /* Build configuration list for PBXNativeTarget "DeleteChatPeerActionSheetItem" */;
+ buildPhases = (
+ D0C9CB582302B28D00FAB518 /* Headers */,
+ D0C9CB592302B28D00FAB518 /* Sources */,
+ D0C9CB5A2302B28D00FAB518 /* Frameworks */,
+ D0C9CB5B2302B28D00FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = DeleteChatPeerActionSheetItem;
+ productName = DeleteChatPeerActionSheetItem;
+ productReference = D0C9CB5D2302B28D00FAB518 /* DeleteChatPeerActionSheetItem.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9CB542302B28D00FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9CB5C2302B28D00FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9CB572302B28D00FAB518 /* Build configuration list for PBXProject "DeleteChatPeerActionSheetItem_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9CB532302B28D00FAB518;
+ productRefGroup = D0C9CB5E2302B28D00FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9CB5C2302B28D00FAB518 /* DeleteChatPeerActionSheetItem */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9CB5B2302B28D00FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9CB592302B28D00FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB6D2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9CB632302B28D00FAB518 /* 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;
+ };
+ D0C9CB642302B28D00FAB518 /* 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;
+ };
+ D0C9CB662302B28D00FAB518 /* 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.DeleteChatPeerActionSheetItem;
+ 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;
+ };
+ D0C9CB672302B28D00FAB518 /* 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.DeleteChatPeerActionSheetItem;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB682302B2C800FAB518 /* 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;
+ };
+ D0C9CB692302B2C800FAB518 /* 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.DeleteChatPeerActionSheetItem;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+ D0C9CB6A2302B2CC00FAB518 /* 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;
+ };
+ D0C9CB6B2302B2CC00FAB518 /* 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.DeleteChatPeerActionSheetItem;
+ 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;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9CB572302B28D00FAB518 /* Build configuration list for PBXProject "DeleteChatPeerActionSheetItem_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB632302B28D00FAB518 /* DebugAppStoreLLC */,
+ D0C9CB6A2302B2CC00FAB518 /* DebugHockeyapp */,
+ D0C9CB642302B28D00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB682302B2C800FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9CB652302B28D00FAB518 /* Build configuration list for PBXNativeTarget "DeleteChatPeerActionSheetItem" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB662302B28D00FAB518 /* DebugAppStoreLLC */,
+ D0C9CB6B2302B2CC00FAB518 /* DebugHockeyapp */,
+ D0C9CB672302B28D00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB692302B2C800FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9CB542302B28D00FAB518 /* Project object */;
+}
diff --git a/submodules/DeleteChatPeerActionSheetItem/Info.plist b/submodules/DeleteChatPeerActionSheetItem/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/DeleteChatPeerActionSheetItem/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.h b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.h
new file mode 100644
index 0000000000..eff87f3b1f
--- /dev/null
+++ b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.h
@@ -0,0 +1,19 @@
+//
+// DeleteChatPeerActionSheetItem.h
+// DeleteChatPeerActionSheetItem
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for DeleteChatPeerActionSheetItem.
+FOUNDATION_EXPORT double DeleteChatPeerActionSheetItemVersionNumber;
+
+//! Project version string for DeleteChatPeerActionSheetItem.
+FOUNDATION_EXPORT const unsigned char DeleteChatPeerActionSheetItemVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift
similarity index 92%
rename from submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift
rename to submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift
index 41fea3f083..415c3881a5 100644
--- a/submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift
+++ b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift
@@ -7,19 +7,19 @@ import TelegramPresentationData
import AvatarNode
import AccountContext
-enum DeleteChatPeerAction {
+public enum DeleteChatPeerAction {
case delete
case clearHistory
}
-final class DeleteChatPeerActionSheetItem: ActionSheetItem {
+public final class DeleteChatPeerActionSheetItem: ActionSheetItem {
let context: AccountContext
let peer: Peer
let chatPeer: Peer
let action: DeleteChatPeerAction
let strings: PresentationStrings
- init(context: AccountContext, peer: Peer, chatPeer: Peer, action: DeleteChatPeerAction, strings: PresentationStrings) {
+ public init(context: AccountContext, peer: Peer, chatPeer: Peer, action: DeleteChatPeerAction, strings: PresentationStrings) {
self.context = context
self.peer = peer
self.chatPeer = chatPeer
@@ -27,11 +27,11 @@ final class DeleteChatPeerActionSheetItem: ActionSheetItem {
self.strings = strings
}
- func node(theme: ActionSheetControllerTheme) -> ActionSheetItemNode {
+ public func node(theme: ActionSheetControllerTheme) -> ActionSheetItemNode {
return DeleteChatPeerActionSheetItemNode(theme: theme, strings: self.strings, context: self.context, peer: self.peer, chatPeer: self.chatPeer, action: self.action)
}
- func updateNode(_ node: ActionSheetItemNode) {
+ public func updateNode(_ node: ActionSheetItemNode) {
}
}
diff --git a/submodules/LanguageSuggestionUI/Info.plist b/submodules/LanguageSuggestionUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/LanguageSuggestionUI/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/LanguageSuggestionUI/LanguageSuggestionUI_Xcode.xcodeproj/project.pbxproj b/submodules/LanguageSuggestionUI/LanguageSuggestionUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..7112528dec
--- /dev/null
+++ b/submodules/LanguageSuggestionUI/LanguageSuggestionUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,575 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9CB942302B55400FAB518 /* LanguageSuggestionUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9CB922302B55400FAB518 /* LanguageSuggestionUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9CB9F2302B5CF00FAB518 /* LanguageSuggestionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB9E2302B5CF00FAB518 /* LanguageSuggestionController.swift */; };
+ D0C9CBA22302B60B00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA12302B60A00FAB518 /* Foundation.framework */; };
+ D0C9CBA42302B61000FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA32302B61000FAB518 /* UIKit.framework */; };
+ D0C9CBA62302B61100FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA52302B61100FAB518 /* SwiftSignalKit.framework */; };
+ D0C9CBA82302B61600FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA72302B61600FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9CBAA2302B61B00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA92302B61B00FAB518 /* Display.framework */; };
+ D0C9CBAC2302B62300FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBAB2302B62300FAB518 /* TelegramCore.framework */; };
+ D0C9CBAE2302B62900FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBAD2302B62900FAB518 /* TelegramPresentationData.framework */; };
+ D0C9CBB02302B62E00FAB518 /* ActivityIndicator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBAF2302B62E00FAB518 /* ActivityIndicator.framework */; };
+ D0C9CBB22302B63500FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBB12302B63500FAB518 /* AccountContext.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9CB8F2302B55400FAB518 /* LanguageSuggestionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LanguageSuggestionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB922302B55400FAB518 /* LanguageSuggestionUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LanguageSuggestionUI.h; sourceTree = ""; };
+ D0C9CB932302B55400FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9CB9E2302B5CF00FAB518 /* LanguageSuggestionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LanguageSuggestionController.swift; sourceTree = ""; };
+ D0C9CBA12302B60A00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9CBA32302B61000FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9CBA52302B61100FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBA72302B61600FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBA92302B61B00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBAB2302B62300FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBAD2302B62900FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBAF2302B62E00FAB518 /* ActivityIndicator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ActivityIndicator.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBB12302B63500FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9CB8C2302B55400FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CBB22302B63500FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9CBB02302B62E00FAB518 /* ActivityIndicator.framework in Frameworks */,
+ D0C9CBAE2302B62900FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9CBAC2302B62300FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9CBAA2302B61B00FAB518 /* Display.framework in Frameworks */,
+ D0C9CBA82302B61600FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9CBA62302B61100FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9CBA42302B61000FAB518 /* UIKit.framework in Frameworks */,
+ D0C9CBA22302B60B00FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9CB852302B55400FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB932302B55400FAB518 /* Info.plist */,
+ D0C9CB912302B55400FAB518 /* Sources */,
+ D0C9CB902302B55400FAB518 /* Products */,
+ D0C9CBA02302B60900FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9CB902302B55400FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB8F2302B55400FAB518 /* LanguageSuggestionUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9CB912302B55400FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB9E2302B5CF00FAB518 /* LanguageSuggestionController.swift */,
+ D0C9CB922302B55400FAB518 /* LanguageSuggestionUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9CBA02302B60900FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBB12302B63500FAB518 /* AccountContext.framework */,
+ D0C9CBAF2302B62E00FAB518 /* ActivityIndicator.framework */,
+ D0C9CBAD2302B62900FAB518 /* TelegramPresentationData.framework */,
+ D0C9CBAB2302B62300FAB518 /* TelegramCore.framework */,
+ D0C9CBA92302B61B00FAB518 /* Display.framework */,
+ D0C9CBA72302B61600FAB518 /* AsyncDisplayKit.framework */,
+ D0C9CBA52302B61100FAB518 /* SwiftSignalKit.framework */,
+ D0C9CBA32302B61000FAB518 /* UIKit.framework */,
+ D0C9CBA12302B60A00FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9CB8A2302B55400FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB942302B55400FAB518 /* LanguageSuggestionUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9CB8E2302B55400FAB518 /* LanguageSuggestionUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9CB972302B55400FAB518 /* Build configuration list for PBXNativeTarget "LanguageSuggestionUI" */;
+ buildPhases = (
+ D0C9CB8A2302B55400FAB518 /* Headers */,
+ D0C9CB8B2302B55400FAB518 /* Sources */,
+ D0C9CB8C2302B55400FAB518 /* Frameworks */,
+ D0C9CB8D2302B55400FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = LanguageSuggestionUI;
+ productName = LanguageSuggestionUI;
+ productReference = D0C9CB8F2302B55400FAB518 /* LanguageSuggestionUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9CB862302B55400FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9CB8E2302B55400FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9CB892302B55400FAB518 /* Build configuration list for PBXProject "LanguageSuggestionUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9CB852302B55400FAB518;
+ productRefGroup = D0C9CB902302B55400FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9CB8E2302B55400FAB518 /* LanguageSuggestionUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9CB8D2302B55400FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9CB8B2302B55400FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB9F2302B5CF00FAB518 /* LanguageSuggestionController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9CB952302B55400FAB518 /* 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;
+ };
+ D0C9CB962302B55400FAB518 /* 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;
+ };
+ D0C9CB982302B55400FAB518 /* 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.LanguageSuggestionUI;
+ 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;
+ };
+ D0C9CB992302B55400FAB518 /* 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.LanguageSuggestionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB9A2302B59500FAB518 /* 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;
+ };
+ D0C9CB9B2302B59500FAB518 /* 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.LanguageSuggestionUI;
+ 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;
+ };
+ D0C9CB9C2302B5A000FAB518 /* 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;
+ };
+ D0C9CB9D2302B5A000FAB518 /* 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.LanguageSuggestionUI;
+ 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 */
+ D0C9CB892302B55400FAB518 /* Build configuration list for PBXProject "LanguageSuggestionUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB952302B55400FAB518 /* DebugAppStoreLLC */,
+ D0C9CB9A2302B59500FAB518 /* DebugHockeyapp */,
+ D0C9CB962302B55400FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB9C2302B5A000FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9CB972302B55400FAB518 /* Build configuration list for PBXNativeTarget "LanguageSuggestionUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB982302B55400FAB518 /* DebugAppStoreLLC */,
+ D0C9CB9B2302B59500FAB518 /* DebugHockeyapp */,
+ D0C9CB992302B55400FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB9D2302B5A000FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9CB862302B55400FAB518 /* Project object */;
+}
diff --git a/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionController.swift b/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionController.swift
new file mode 100644
index 0000000000..f063030898
--- /dev/null
+++ b/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionController.swift
@@ -0,0 +1,370 @@
+import Foundation
+import UIKit
+import SwiftSignalKit
+import AsyncDisplayKit
+import Display
+import TelegramCore
+import TelegramPresentationData
+import ActivityIndicator
+import AccountContext
+
+public struct LanguageSuggestionControllerStrings {
+ let ChooseLanguage: String
+ let Other: String
+ let English: String
+
+ public init(localization: SuggestedLocalizationInfo) {
+ var chooseLanguage = "Choose Your Language"
+ var other = "Other"
+ var english = "English"
+
+ for entry in localization.extractedEntries {
+ switch entry {
+ case let .string(key, value):
+ switch key {
+ case "Localization.ChooseLanguage":
+ chooseLanguage = value
+ case "Localization.LanguageOther":
+ other = value
+ case "Localization.EnglishLanguageName":
+ english = value
+ default:
+ break
+ }
+ default:
+ break
+ }
+ }
+
+ self.ChooseLanguage = chooseLanguage
+ self.Other = other
+ self.English = english
+ }
+
+ public init(bundle: Bundle?) {
+ var chooseLanguage = "Choose Your Language"
+ var other = "Other"
+ var english = "English"
+
+ if let bundle = bundle {
+ for key in LanguageSuggestionControllerStrings.keys {
+ let value = bundle.localizedString(forKey: key, value: nil, table: nil)
+ if value != key {
+ switch key {
+ case "Localization.ChooseLanguage":
+ chooseLanguage = value
+ case "Localization.LanguageOther":
+ other = value
+ case "Localization.EnglishLanguageName":
+ english = value
+ default:
+ break
+ }
+ }
+ }
+ }
+
+ self.ChooseLanguage = chooseLanguage
+ self.Other = other
+ self.English = english
+ }
+
+ public static let keys: [String] = [
+ "Localization.ChooseLanguage",
+ "Localization.LanguageOther",
+ "Localization.EnglishLanguageName"
+ ]
+}
+
+private enum LanguageSuggestionItemType {
+ case localization(String)
+ case disclosure
+ case action
+}
+
+private struct LanguageSuggestionItem {
+ public let type: LanguageSuggestionItemType
+ public let title: String
+ public let subtitle: String?
+ public let action: () -> Void
+
+ public init(type: LanguageSuggestionItemType, title: String, subtitle: String?, action: @escaping () -> Void) {
+ self.type = type
+ self.title = title
+ self.subtitle = subtitle
+ self.action = action
+ }
+}
+
+private final class LanguageSuggestionItemNode: HighlightableButtonNode {
+ private let backgroundNode: ASDisplayNode
+ private let separatorNode: ASDisplayNode
+ private let subtitleNode: ASTextNode
+ private let iconNode: ASImageNode
+
+ let item: LanguageSuggestionItem
+
+ override var isSelected: Bool {
+ didSet {
+ if case .localization = self.item.type {
+ self.iconNode.isHidden = !self.isSelected
+ }
+ }
+ }
+
+ init(theme: PresentationTheme, item: LanguageSuggestionItem) {
+ self.item = item
+
+ self.backgroundNode = ASDisplayNode()
+ self.backgroundNode.isLayerBacked = true
+ self.backgroundNode.backgroundColor = theme.actionSheet.opaqueItemHighlightedBackgroundColor
+ self.backgroundNode.alpha = 0.0
+
+ self.separatorNode = ASDisplayNode()
+ self.separatorNode.backgroundColor = theme.actionSheet.opaqueItemSeparatorColor
+
+ self.subtitleNode = ASTextNode()
+
+ self.iconNode = ASImageNode()
+
+ super.init()
+
+ self.addSubnode(self.subtitleNode)
+ self.addSubnode(self.separatorNode)
+ self.addSubnode(self.iconNode)
+
+ var color: UIColor = theme.actionSheet.primaryTextColor
+ var alignment: ASHorizontalAlignment = .left
+ var inset: CGFloat = 19.0
+ var icon: UIImage?
+ switch item.type {
+ case .action:
+ alignment = .middle
+ color = theme.actionSheet.controlAccentColor
+ inset = 0.0
+ case .disclosure:
+ icon = PresentationResourcesItemList.disclosureArrowImage(theme)
+ case .localization:
+ icon = PresentationResourcesItemList.checkIconImage(theme)
+ }
+
+ self.iconNode.image = icon
+ self.contentHorizontalAlignment = alignment
+ self.setTitle(item.title, with: Font.regular(17.0), with: color, for: [])
+
+ var titleVerticalOffset: CGFloat = 0.0
+ if let subtitle = item.subtitle {
+ self.subtitleNode.attributedText = NSAttributedString(string: subtitle, font: Font.regular(14.0), textColor: theme.actionSheet.secondaryTextColor)
+ titleVerticalOffset = 20.0
+ }
+ self.contentEdgeInsets = UIEdgeInsets(top: 0.0, left: inset, bottom: titleVerticalOffset, right: 0.0)
+
+ self.highligthedChanged = { [weak self] value in
+ if let strongSelf = self {
+ if value {
+ if strongSelf.backgroundNode.supernode == nil {
+ strongSelf.insertSubnode(strongSelf.backgroundNode, at: 0)
+ }
+ strongSelf.backgroundNode.layer.removeAnimation(forKey: "opacity")
+ strongSelf.backgroundNode.alpha = 1.0
+ } else if !strongSelf.backgroundNode.alpha.isZero {
+ strongSelf.backgroundNode.alpha = 0.0
+ strongSelf.backgroundNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.25)
+ }
+ }
+ }
+ }
+
+ override func didLoad() {
+ super.didLoad()
+
+ self.addTarget(self, action: #selector(self.pressed), forControlEvents: .touchUpInside)
+ }
+
+ @objc func pressed() {
+ self.item.action()
+ }
+
+ public func updateLayout(_ constrainedSize: CGSize) -> CGSize {
+ let bounds = CGRect(origin: CGPoint(), size: CGSize(width: constrainedSize.width, height: self.item.subtitle != nil ? 58.0 : 44.0))
+ self.backgroundNode.frame = bounds
+
+ let subtitleSize = self.subtitleNode.measure(bounds.size)
+ self.subtitleNode.frame = CGRect(origin: CGPoint(x: 19.0, y: 31.0), size: subtitleSize)
+ self.separatorNode.frame = CGRect(x: 0.0, y: bounds.height - UIScreenPixel, width: bounds.width, height: UIScreenPixel)
+ if let icon = self.iconNode.image {
+ self.iconNode.frame = CGRect(origin: CGPoint(x: bounds.width - icon.size.width - 19.0, y: floorToScreenPixels((bounds.height - icon.size.height) / 2.0)), size: icon.size)
+ }
+ return bounds.size
+ }
+}
+
+private final class LanguageSuggestionAlertContentNode: AlertContentNode {
+ private var validLayout: CGSize?
+
+ private let titleNode: ASTextNode
+ private let subtitleNode: ASTextNode
+ private let titleSeparatorNode: ASDisplayNode
+ private let activityIndicator: ActivityIndicator
+
+ private var nodes: [LanguageSuggestionItemNode]
+
+ private let disposable = MetaDisposable()
+
+ override var dismissOnOutsideTap: Bool {
+ return self.isUserInteractionEnabled
+ }
+
+ init(theme: PresentationTheme, strings: LanguageSuggestionControllerStrings, englishStrings: LanguageSuggestionControllerStrings, suggestedLocalization: LocalizationInfo, openSelection: @escaping () -> Void, applyLocalization: @escaping (String, () -> Void) -> Void, dismiss: @escaping () -> Void) {
+ let selectedLocalization = ValuePromise(suggestedLocalization.languageCode, ignoreRepeated: true)
+
+ self.titleNode = ASTextNode()
+ self.titleNode.attributedText = NSAttributedString(string: strings.ChooseLanguage, font: Font.bold(17.0), textColor: theme.actionSheet.primaryTextColor, paragraphAlignment: .center)
+ self.titleNode.maximumNumberOfLines = 2
+
+ self.subtitleNode = ASTextNode()
+ self.subtitleNode.attributedText = NSAttributedString(string: englishStrings.ChooseLanguage, font: Font.regular(14.0), textColor: theme.actionSheet.secondaryTextColor, paragraphAlignment: .center)
+ self.subtitleNode.maximumNumberOfLines = 2
+
+ self.titleSeparatorNode = ASDisplayNode()
+ self.titleSeparatorNode.backgroundColor = theme.actionSheet.opaqueItemSeparatorColor
+
+ self.activityIndicator = ActivityIndicator(type: .custom(theme.actionSheet.controlAccentColor, 22.0, 1.0, false))
+ self.activityIndicator.isHidden = true
+
+ var items: [LanguageSuggestionItem] = []
+ items.append(LanguageSuggestionItem(type: .localization(suggestedLocalization.languageCode), title: suggestedLocalization.localizedTitle, subtitle: suggestedLocalization.title, action: {
+ selectedLocalization.set(suggestedLocalization.languageCode)
+ }))
+ items.append(LanguageSuggestionItem(type: .localization("en"), title: strings.English, subtitle: englishStrings.English, action: {
+ selectedLocalization.set("en")
+ }))
+ items.append(LanguageSuggestionItem(type: .disclosure, title: strings.Other, subtitle: englishStrings.Other != strings.Other ? englishStrings.Other : nil, action: {
+ openSelection()
+ }))
+
+ var applyImpl: (() -> Void)?
+ items.append(LanguageSuggestionItem(type: .action, title: "OK", subtitle: nil, action: {
+ applyImpl?()
+ }))
+
+ self.nodes = items.map { LanguageSuggestionItemNode(theme: theme, item: $0) }
+
+ super.init()
+
+ self.addSubnode(self.titleNode)
+ self.addSubnode(self.subtitleNode)
+ self.addSubnode(self.titleSeparatorNode)
+ self.addSubnode(self.activityIndicator)
+ for node in self.nodes {
+ self.addSubnode(node)
+ }
+
+ self.disposable.set(selectedLocalization.get().start(next: { [weak self] selectedCode in
+ if let strongSelf = self {
+ for node in strongSelf.nodes {
+ if case let .localization(code) = node.item.type {
+ node.isSelected = code == selectedCode
+ }
+ }
+ }
+ }))
+
+ applyImpl = { [weak self] in
+ if let strongSelf = self {
+ strongSelf.isUserInteractionEnabled = false
+
+ _ = (selectedLocalization.get()
+ |> take(1)).start(next: { selectedCode in
+ applyLocalization(selectedCode, { [weak self] in
+ if let strongSelf = self {
+ strongSelf.activityIndicator.isHidden = false
+ if let lastNode = strongSelf.nodes.last {
+ lastNode.isHidden = true
+ }
+ }
+ })
+ })
+ }
+ }
+ }
+
+ deinit {
+ self.disposable.dispose()
+ }
+
+ override func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize {
+ var size = size
+ size.width = min(size.width, 270.0)
+
+ self.validLayout = size
+
+ var origin: CGPoint = CGPoint(x: 0.0, y: 17.0)
+
+ let titleSize = self.titleNode.measure(size)
+ transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - titleSize.width) / 2.0), y: origin.y), size: titleSize))
+ origin.y += titleSize.height + 3.0
+
+ let subtitleSize = self.subtitleNode.measure(size)
+ transition.updateFrame(node: self.subtitleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - subtitleSize.width) / 2.0), y: origin.y), size: subtitleSize))
+ origin.y += subtitleSize.height + 17.0
+ transition.updateFrame(node: self.titleSeparatorNode, frame: CGRect(x: 0.0, y: origin.y - UIScreenPixel, width: size.width, height: UIScreenPixel))
+
+ var lastNodeSize: CGSize?
+ for node in self.nodes {
+ let size = node.updateLayout(size)
+ transition.updateFrame(node: node, frame: CGRect(origin: origin, size: size))
+ origin.y += size.height
+ lastNodeSize = size
+ }
+
+ if let lastSize = lastNodeSize {
+ let indicatorSize = self.activityIndicator.measure(CGSize(width: 100.0, height: 100.0))
+ transition.updateFrame(node: self.activityIndicator, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - indicatorSize.width) / 2.0), y: origin.y - lastSize.height + floorToScreenPixels((lastSize.height - indicatorSize.height) / 2.0)), size: indicatorSize))
+ }
+
+ return CGSize(width: size.width, height: origin.y - UIScreenPixel)
+ }
+}
+
+public func languageSuggestionController(context: AccountContext, suggestedLocalization: SuggestedLocalizationInfo, currentLanguageCode: String, openSelection: @escaping () -> Void) -> AlertController? {
+ guard let localization = suggestedLocalization.availableLocalizations.filter({ $0.languageCode == suggestedLocalization.languageCode }).first else {
+ return nil
+ }
+
+ let theme = context.sharedContext.currentPresentationData.with { $0 }.theme
+ let strings = LanguageSuggestionControllerStrings(localization: suggestedLocalization)
+ guard let mainPath = Bundle.main.path(forResource: "en", ofType: "lproj") else {
+ return nil
+ }
+ let englishStrings = LanguageSuggestionControllerStrings(bundle: Bundle(path: mainPath))
+
+ let disposable = MetaDisposable()
+
+ var dismissImpl: ((Bool) -> Void)?
+ let contentNode = LanguageSuggestionAlertContentNode(theme: theme, strings: strings, englishStrings: englishStrings, suggestedLocalization: localization, openSelection: {
+ dismissImpl?(true)
+ openSelection()
+ }, applyLocalization: { languageCode, startActivity in
+ if languageCode == currentLanguageCode {
+ dismissImpl?(true)
+ } else {
+ startActivity()
+ disposable.set((downloadAndApplyLocalization(accountManager: context.sharedContext.accountManager, postbox: context.account.postbox, network: context.account.network, languageCode: languageCode)
+ |> deliverOnMainQueue).start(completed: {
+ dismissImpl?(true)
+ }))
+ }
+ }, dismiss: {
+ dismissImpl?(true)
+ })
+ let controller = AlertController(theme: AlertControllerTheme(presentationTheme: theme), contentNode: contentNode)
+ dismissImpl = { [weak controller] animated in
+ if animated {
+ controller?.dismissAnimated()
+ } else {
+ controller?.dismiss()
+ }
+ }
+ return controller
+}
diff --git a/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionUI.h b/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionUI.h
new file mode 100644
index 0000000000..60b73de811
--- /dev/null
+++ b/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionUI.h
@@ -0,0 +1,19 @@
+//
+// LanguageSuggestionUI.h
+// LanguageSuggestionUI
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for LanguageSuggestionUI.
+FOUNDATION_EXPORT double LanguageSuggestionUIVersionNumber;
+
+//! Project version string for LanguageSuggestionUI.
+FOUNDATION_EXPORT const unsigned char LanguageSuggestionUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/StickerResources/Sources/StickerResources.swift b/submodules/StickerResources/Sources/StickerResources.swift
index d2e98f69d0..497fb6c292 100644
--- a/submodules/StickerResources/Sources/StickerResources.swift
+++ b/submodules/StickerResources/Sources/StickerResources.swift
@@ -9,14 +9,14 @@ import Tuples
import ImageBlur
private func imageFromAJpeg(data: Data) -> (UIImage, UIImage)? {
- if let (colorData, alphaData) = data.withUnsafeBytes({ (bytes: UnsafePointer) -> (Data, Data)? in
+ if let (colorData, alphaData) = data.withUnsafeBytes({ bytes -> (Data, Data)? in
var colorSize: Int32 = 0
- memcpy(&colorSize, bytes, 4)
+ memcpy(&colorSize, bytes.baseAddress, 4)
if colorSize < 0 || Int(colorSize) > data.count - 8 {
return nil
}
var alphaSize: Int32 = 0
- memcpy(&alphaSize, bytes.advanced(by: 4 + Int(colorSize)), 4)
+ memcpy(&alphaSize, bytes.baseAddress?.advanced(by: 4 + Int(colorSize)), 4)
if alphaSize < 0 || Int(alphaSize) > data.count - Int(colorSize) - 8 {
return nil
}
@@ -265,7 +265,6 @@ public func chatMessageAnimatedStickerBackingData(postbox: Postbox, fileReferenc
public func chatMessageLegacySticker(account: Account, file: TelegramMediaFile, small: Bool, fitSize: CGSize, fetched: Bool = false, onlyFullSize: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
let signal = chatMessageStickerDatas(postbox: account.postbox, file: file, small: small, fetched: fetched, onlyFullSize: onlyFullSize, synchronousLoad: false)
return signal |> map { value in
- let thumbnailData = value._0
let fullSizeData = value._1
let fullSizeComplete = value._2
return { preArguments in
diff --git a/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift b/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift
index 4f5c3f7f14..7f14099b91 100644
--- a/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift
+++ b/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift
@@ -16,6 +16,7 @@ import ShareController
import AlertUI
import GalleryUI
import LegacyUI
+import ChatListUI
private final class ChannelInfoControllerArguments {
let account: Account
diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift
index 19038b69c0..c1f049d375 100644
--- a/submodules/TelegramUI/TelegramUI/ChatController.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatController.swift
@@ -34,6 +34,7 @@ import LegacyUI
import InstantPageUI
import LocationUI
import BotPaymentsUI
+import DeleteChatPeerActionSheetItem
public enum ChatControllerPeekActions {
case standard
@@ -1320,13 +1321,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
})
}, addContact: { [weak self] phoneNumber in
if let strongSelf = self {
- openAddContact(context: strongSelf.context, phoneNumber: phoneNumber, present: { [weak self] controller, arguments in
+ strongSelf.context.sharedContext.openAddContact(context: strongSelf.context, firstName: "", lastName: "", phoneNumber: phoneNumber, label: defaultContactLabel, present: { [weak self] controller, arguments in
self?.present(controller, in: .window(.root), with: arguments)
}, pushController: { [weak self] controller in
if let strongSelf = self {
(strongSelf.navigationController as? NavigationController)?.pushViewController(controller)
}
- })
+ }, completed: {})
}
}, rateCall: { [weak self] message, callId in
if let strongSelf = self {
diff --git a/submodules/TelegramUI/TelegramUI/ChatInterfaceState.swift b/submodules/TelegramUI/TelegramUI/ChatInterfaceState.swift
index e39f318c37..b788ea5bc3 100644
--- a/submodules/TelegramUI/TelegramUI/ChatInterfaceState.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatInterfaceState.swift
@@ -77,34 +77,6 @@ struct ChatEditMessageState: PostboxCoding, Equatable {
}
}
-final class ChatEmbeddedInterfaceState: PeerChatListEmbeddedInterfaceState {
- let timestamp: Int32
- let text: NSAttributedString
-
- init(timestamp: Int32, text: NSAttributedString) {
- self.timestamp = timestamp
- self.text = text
- }
-
- init(decoder: PostboxDecoder) {
- self.timestamp = decoder.decodeInt32ForKey("d", orElse: 0)
- self.text = ((decoder.decodeObjectForKey("at", decoder: { ChatTextInputStateText(decoder: $0) }) as? ChatTextInputStateText) ?? ChatTextInputStateText()).attributedText()
- }
-
- func encode(_ encoder: PostboxEncoder) {
- encoder.encodeInt32(self.timestamp, forKey: "d")
- encoder.encodeObject(ChatTextInputStateText(attributedText: self.text), forKey: "at")
- }
-
- public func isEqual(to: PeerChatListEmbeddedInterfaceState) -> Bool {
- if let to = to as? ChatEmbeddedInterfaceState {
- return self.timestamp == to.timestamp && self.text.isEqual(to: to.text)
- } else {
- return false
- }
- }
-}
-
struct ChatInterfaceMessageActionsState: PostboxCoding, Equatable {
var closedButtonKeyboardMessageId: MessageId?
var processedSetupReplyMessageId: MessageId?
diff --git a/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift b/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift
deleted file mode 100644
index b333bc0027..0000000000
--- a/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift
+++ /dev/null
@@ -1,22 +0,0 @@
-import Foundation
-import UIKit
-import TelegramPresentationData
-import TelegramUIPreferences
-
-final class ChatListPresentationData {
- let theme: PresentationTheme
- let strings: PresentationStrings
- let dateTimeFormat: PresentationDateTimeFormat
- let nameSortOrder: PresentationPersonNameOrder
- let nameDisplayOrder: PresentationPersonNameOrder
- let disableAnimations: Bool
-
- init(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
- self.theme = theme
- self.strings = strings
- self.dateTimeFormat = dateTimeFormat
- self.nameSortOrder = nameSortOrder
- self.nameDisplayOrder = nameDisplayOrder
- self.disableAnimations = disableAnimations
- }
-}
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift b/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift
index b4643abeec..d61b357811 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift
@@ -7,6 +7,7 @@ import TelegramCore
import AccountContext
import LocalizedPeerData
import ContextUI
+import ChatListUI
struct ChatMessageItemWidthFill {
let compactInset: CGFloat
diff --git a/submodules/TelegramUI/TelegramUI/ChatTitleView.swift b/submodules/TelegramUI/TelegramUI/ChatTitleView.swift
index a06916499e..cd1ab18e93 100644
--- a/submodules/TelegramUI/TelegramUI/ChatTitleView.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatTitleView.swift
@@ -11,6 +11,7 @@ import TelegramUIPreferences
import ActivityIndicator
import TelegramStringFormatting
import PeerPresenceStatusManager
+import ChatTitleActivityNode
enum ChatTitleContent {
case peer(peerView: PeerView, onlineMemberCount: Int32?, isScheduledMessages: Bool)
diff --git a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
index 9bca752963..cd74bdc14a 100644
--- a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
+++ b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
@@ -3,6 +3,7 @@ import TemporaryCachedPeerDataManager
import TelegramUIPreferences
import TelegramNotices
import InstantPageUI
+import AccountContext
private var telegramUIDeclaredEncodables: Void = {
declareEncodable(InAppNotificationSettings.self, f: { InAppNotificationSettings(decoder: $0) })
diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift
index aa2171b736..77da42fb97 100644
--- a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift
+++ b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift
@@ -23,6 +23,7 @@ import LegacyUI
import LocationUI
import ItemListPeerItem
import ContactListUI
+import ChatListUI
private final class GroupInfoArguments {
let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift b/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift
index ce2caf5d2b..46acae68f3 100644
--- a/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift
+++ b/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift
@@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramPresentationData
import TelegramBaseController
import AccountContext
+import ChatListUI
final class HashtagSearchController: TelegramBaseController {
private let queue = Queue()
diff --git a/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift b/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift
index a9b7cf2313..7fa785a382 100644
--- a/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift
@@ -5,6 +5,7 @@ import Postbox
import TelegramCore
import TelegramPresentationData
import AccountContext
+import ChatListUI
final class HashtagSearchControllerNode: ASDisplayNode {
private let toolbarBackgroundNode: ASDisplayNode
diff --git a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
index 965d436ebd..6f4615c083 100644
--- a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
+++ b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
@@ -6,6 +6,7 @@ import Postbox
import AccountContext
import GalleryUI
import InstantPageUI
+import ChatListUI
public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParams) {
var found = false
diff --git a/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift b/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift
index 3c566623b4..de32a97c3a 100644
--- a/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift
@@ -15,6 +15,7 @@ import SearchUI
import ItemListPeerItem
import ContactsPeerItem
import ChatListSearchItemHeader
+import ChatListUI
private final class NotificationExceptionState : Equatable {
let mode:NotificationExceptionMode
diff --git a/submodules/TelegramUI/TelegramUI/OpenAddContact.swift b/submodules/TelegramUI/TelegramUI/OpenAddContact.swift
index c3dbe4f197..22a56ed5a9 100644
--- a/submodules/TelegramUI/TelegramUI/OpenAddContact.swift
+++ b/submodules/TelegramUI/TelegramUI/OpenAddContact.swift
@@ -6,7 +6,7 @@ import DeviceAccess
import AccountContext
import AlertUI
-func openAddContact(context: AccountContext, firstName: String = "", lastName: String = "", phoneNumber: String, label: String = "_$!!$_", present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void = {}) {
+func openAddContactImpl(context: AccountContext, firstName: String = "", lastName: String = "", phoneNumber: String, label: String = "_$!!$_", present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void = {}) {
let _ = (DeviceAccess.authorizationStatus(subject: .contacts)
|> take(1)
|> deliverOnMainQueue).start(next: { value in
diff --git a/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift b/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
index cd97dfd1cf..75b41c4ef3 100644
--- a/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
+++ b/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
@@ -8,6 +8,7 @@ import TelegramPresentationData
import ProgressNavigationButtonNode
import AccountContext
import SearchUI
+import ChatListUI
public final class PeerSelectionController: ViewController {
private let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift b/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift
index 54a5addd0b..48c6e23346 100644
--- a/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift
@@ -10,6 +10,7 @@ import AccountContext
import SearchBarNode
import SearchUI
import ContactListUI
+import ChatListUI
final class PeerSelectionControllerNode: ASDisplayNode {
private let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/SettingsController.swift b/submodules/TelegramUI/TelegramUI/SettingsController.swift
index 9bd97cc6ac..1e9ffb4884 100644
--- a/submodules/TelegramUI/TelegramUI/SettingsController.swift
+++ b/submodules/TelegramUI/TelegramUI/SettingsController.swift
@@ -26,6 +26,7 @@ import PassportUI
import SearchUI
import ItemListPeerItem
import CallListUI
+import ChatListUI
private let maximumNumberOfAccounts = 3
@@ -1178,12 +1179,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM
actionsDisposable.dispose()
}
- let icon: UIImage?
- if (useSpecialTabBarIcons()) {
- icon = UIImage(bundleImageName: "Chat List/Tabs/NY/IconSettings")
- } else {
- icon = UIImage(bundleImageName: "Chat List/Tabs/IconSettings")
- }
+ let icon = UIImage(bundleImageName: "Chat List/Tabs/IconSettings")
let notificationsFromAllAccounts = accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.inAppNotificationSettings])
|> map { sharedData -> Bool in
@@ -1388,7 +1384,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM
})
if let selectedAccount = selectedAccount, let sharedContext = sharedContext {
let accountContext = sharedContext.makeTempAccountContext(account: selectedAccount)
- let chatListController = ChatListController(context: accountContext, groupId: .root, controlsHistoryPreload: false, hideNetworkActivityStatus: true)
+ let chatListController = ChatListController(context: accountContext, groupId: .root, controlsHistoryPreload: false, hideNetworkActivityStatus: true, enableDebugActions: !GlobalExperimentalSettings.isAppStoreBuild)
return chatListController
}
}
diff --git a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
index 074767f9f6..48722fff9b 100644
--- a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
+++ b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
@@ -9,6 +9,7 @@ import TelegramUIPreferences
import AccountContext
import DeviceLocationManager
import LegacyUI
+import ChatListUI
private enum CallStatusText: Equatable {
case none
@@ -979,4 +980,20 @@ public final class SharedAccountContextImpl: SharedAccountContext {
public func makeContactSelectionController(_ params: ContactSelectionControllerParams) -> ContactSelectionController {
return ContactSelectionControllerImpl(params)
}
+
+ public func makeComposeController(context: AccountContext) -> ViewController {
+ return ComposeController(context: context)
+ }
+
+ public func makeProxySettingsController(context: AccountContext) -> ViewController {
+ return proxySettingsController(context: context)
+ }
+
+ public func makeLocalizationListController(context: AccountContext) -> ViewController {
+ return LocalizationListController(context: context)
+ }
+
+ public func openAddContact(context: AccountContext, firstName: String, lastName: String, phoneNumber: String, label: String, present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void) {
+ openAddContactImpl(context: context, firstName: firstName, lastName: lastName, phoneNumber: phoneNumber, label: label, present: present, pushController: pushController, completed: completed)
+ }
}
diff --git a/submodules/TelegramUI/TelegramUI/TelegramRootController.swift b/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
index 66eea1b12d..6e66991fa2 100644
--- a/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
+++ b/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
@@ -9,6 +9,7 @@ import TelegramUIPrivateModule
import AccountContext
import ContactListUI
import CallListUI
+import ChatListUI
public final class TelegramRootController: NavigationController {
private let context: AccountContext
@@ -83,7 +84,7 @@ public final class TelegramRootController: NavigationController {
public func addRootControllers(showCallsTab: Bool) {
let tabBarController = TabBarController(navigationBarPresentationData: NavigationBarPresentationData(presentationData: self.presentationData), theme: TabBarControllerTheme(rootControllerTheme: self.presentationData.theme))
- let chatListController = ChatListController(context: self.context, groupId: .root, controlsHistoryPreload: true)
+ let chatListController = ChatListController(context: self.context, groupId: .root, controlsHistoryPreload: true, enableDebugActions: !GlobalExperimentalSettings.isAppStoreBuild)
if let sharedContext = self.context.sharedContext as? SharedAccountContextImpl {
chatListController.tabBarItem.badgeValue = sharedContext.switchingData.chatListBadge
}
diff --git a/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift
index c41669e930..9b9628c012 100644
--- a/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift
@@ -8,6 +8,7 @@ import TelegramCore
import TelegramPresentationData
import TelegramUIPreferences
import AccountContext
+import ChatListUI
class ThemePreviewControllerNode: ASDisplayNode, UIScrollViewDelegate {
private let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
index 9da046b6ac..b3605721bd 100644
--- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
@@ -90,13 +90,6 @@
09D304152173C0E900C00567 /* WatchManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D304142173C0E900C00567 /* WatchManager.swift */; };
09D304182173C15700C00567 /* WatchSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D304172173C15700C00567 /* WatchSettingsController.swift */; };
09D96899221DE92600B1458A /* ID3ArtworkReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D96898221DE92600B1458A /* ID3ArtworkReader.swift */; };
- 09D9689D221F74F000B1458A /* ChatTitleActivityNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D9689C221F74F000B1458A /* ChatTitleActivityNode.swift */; };
- 09D9689F221F760900B1458A /* ChatTitleActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D9689E221F760900B1458A /* ChatTitleActivityContentNode.swift */; };
- 09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A0221F7FF100B1458A /* ChatTypingActivityContentNode.swift */; };
- 09D968A3221F800A00B1458A /* ChatUploadingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A2221F800A00B1458A /* ChatUploadingActivityContentNode.swift */; };
- 09D968A5221F801A00B1458A /* ChatPlayingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A4221F801A00B1458A /* ChatPlayingActivityContentNode.swift */; };
- 09D968A7221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A6221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift */; };
- 09D968A9221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A8221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift */; };
09DD5D5021ECC3C400D7007A /* SuppressContactsWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD5D4F21ECC3C400D7007A /* SuppressContactsWarning.swift */; };
09DD5D5221ED175300D7007A /* WallpaperColorPickerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD5D5121ED175300D7007A /* WallpaperColorPickerNode.swift */; };
09DD88E921BAF65E000766BC /* ItemListAddressItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88E821BAF65E000766BC /* ItemListAddressItem.swift */; };
@@ -117,8 +110,6 @@
09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */; };
09EDAD2E221164440012A50B /* AutodownloadSizeLimitItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2D221164440012A50B /* AutodownloadSizeLimitItem.swift */; };
09EDAD30221164530012A50B /* AutodownloadDataUsagePickerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2F221164530012A50B /* AutodownloadDataUsagePickerItem.swift */; };
- 09F21563225C776100AEDF6D /* ChatListBadgeNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */; };
- 09F21565225C83E100AEDF6D /* ChatListStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */; };
09F2158D225CF5BC00AEDF6D /* Pasteboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */; };
09F664C021EAAFAF00AB7E26 /* ThemeColorsGridController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664BF21EAAFAF00AB7E26 /* ThemeColorsGridController.swift */; };
09F664C221EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C121EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift */; };
@@ -142,7 +133,6 @@
9F06830B21A404C4001D8EDB /* NotificationExceptionSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830A21A404C4001D8EDB /* NotificationExceptionSettingsController.swift */; };
D000CABA21EE130D0011B15D /* MapResourceToAvatarSizes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000CAB921EE130D0011B15D /* MapResourceToAvatarSizes.swift */; };
D000CABC21F158AD0011B15D /* PrepareSecretThumbnailData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000CABB21F158AD0011B15D /* PrepareSecretThumbnailData.swift */; };
- D00580B321E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */; };
D0068FA821760FA300D1B315 /* StoreDownloadedMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */; };
D007019C2029E8F2006B9E34 /* LegacyICloudFileController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D007019B2029E8F2006B9E34 /* LegacyICloudFileController.swift */; };
D007019E2029EFDD006B9E34 /* ICloudResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D007019D2029EFDD006B9E34 /* ICloudResources.swift */; };
@@ -207,7 +197,6 @@
D015E04F225D2E5900CB9E8A /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D015E04E225D2E5900CB9E8A /* WebP.framework */; };
D017734C22049BF800DA06A7 /* UpgradedAccounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = D017734B22049BF800DA06A7 /* UpgradedAccounts.swift */; };
D01776BE1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01776BD1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift */; };
- D01847801FFBD12E00075256 /* ChatListPresentationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D018477F1FFBD12E00075256 /* ChatListPresentationData.swift */; };
D01848E821A03BDA00B6DEBD /* ChatSearchState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01848E721A03BDA00B6DEBD /* ChatSearchState.swift */; };
D0185E882089ED5F005E1A6C /* ProxyListSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0185E872089ED5F005E1A6C /* ProxyListSettingsController.swift */; };
D0185E8A208A01AF005E1A6C /* ProxySettingsActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0185E89208A01AF005E1A6C /* ProxySettingsActionItem.swift */; };
@@ -284,11 +273,9 @@
D06350AE2229A7F800FA2B32 /* InChatPrefetchManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06350AD2229A7F800FA2B32 /* InChatPrefetchManager.swift */; };
D0642EFC1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0642EFB1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift */; };
D0671F2D2145AB28000A8AE7 /* LegacyAvatarPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0671F2C2145AB28000A8AE7 /* LegacyAvatarPicker.swift */; };
- D0684A041F6C3AD50059F570 /* ChatListTypingNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0684A031F6C3AD50059F570 /* ChatListTypingNode.swift */; };
D069F5D0212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D069F5CF212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift */; };
D06BB8821F58994B0084FC30 /* LegacyInstantVideoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06BB8811F58994B0084FC30 /* LegacyInstantVideoController.swift */; };
D06E0F8E1F79ABFB003CF3DD /* ChatLoadingNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E0F8D1F79ABFB003CF3DD /* ChatLoadingNode.swift */; };
- D06E4C312134910400088087 /* ChatListEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C302134910400088087 /* ChatListEmptyNode.swift */; };
D06E4C332134A59700088087 /* ThemeAccentColorActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C322134A59700088087 /* ThemeAccentColorActionSheet.swift */; };
D06E4C352134AE3C00088087 /* ThemeAutoNightSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C342134AE3C00088087 /* ThemeAutoNightSettingsController.swift */; };
D06F1EA41F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06F1EA31F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift */; };
@@ -309,7 +296,6 @@
D07ABBA5202A14BC003671DE /* LegacyImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07ABBA4202A14BC003671DE /* LegacyImagePicker.swift */; };
D07ABBAB202A1BD1003671DE /* LegacyWallpaperPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07ABBAA202A1BD1003671DE /* LegacyWallpaperPicker.swift */; };
D07BCBFE1F2B792300ED97AA /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D07BCBFD1F2B792300ED97AA /* LegacyComponents.framework */; };
- D07E413B208A432100FCA8F0 /* ChatListTitleProxyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07E413A208A432100FCA8F0 /* ChatListTitleProxyNode.swift */; };
D07E413D208A494D00FCA8F0 /* ProxyServerActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07E413C208A494D00FCA8F0 /* ProxyServerActionSheetController.swift */; };
D081A9A922EB26AE0069C449 /* PhoneLabelController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081A9A822EB26AE0069C449 /* PhoneLabelController.swift */; };
D081E104217F57D2003CD921 /* LanguageLinkPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081E103217F57D2003CD921 /* LanguageLinkPreviewController.swift */; };
@@ -371,7 +357,6 @@
D09E77AB22FA5CEA00B9CCA7 /* Tuples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E77AA22FA5CEA00B9CCA7 /* Tuples.framework */; };
D09E77AD22FA5CEA00B9CCA7 /* UrlEscaping.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E77AC22FA5CEA00B9CCA7 /* UrlEscaping.framework */; };
D0A8998D217A294100759EE6 /* SaveIncomingMediaController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A8998C217A294100759EE6 /* SaveIncomingMediaController.swift */; };
- D0AA29AE1F72770D00C050AC /* ChatListItemStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA29AD1F72770D00C050AC /* ChatListItemStrings.swift */; };
D0AA840C1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA840B1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift */; };
D0AB262921C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */; };
D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */; };
@@ -458,7 +443,6 @@
D0C12EB01F9A8D1300600BB2 /* ListMessageDateHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C12EAF1F9A8D1300600BB2 /* ListMessageDateHeader.swift */; };
D0C26D571FDF2388004ABF18 /* OpenChatMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C26D561FDF2388004ABF18 /* OpenChatMessage.swift */; };
D0C45E9F213FFAFD00988156 /* Lottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C45E9E213FFAFD00988156 /* Lottie.framework */; };
- D0C683FC21AD797F00A6CAD5 /* ChatListSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */; };
D0C9BFAD22FE316E00FAB518 /* ComposePollUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFAC22FE316E00FAB518 /* ComposePollUI.framework */; };
D0C9BFDF22FE349C00FAB518 /* AlertUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFDE22FE349C00FAB518 /* AlertUI.framework */; };
D0C9C00322FE37A500FAB518 /* TouchDownGesture.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C00222FE37A500FAB518 /* TouchDownGesture.framework */; };
@@ -505,6 +489,11 @@
D0C9C9DE2302267200FAB518 /* SolidRoundedButtonNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */; };
D0C9CA192302297C00FAB518 /* PasscodeUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA182302297C00FAB518 /* PasscodeUI.framework */; };
D0C9CA8223022E3900FAB518 /* CallListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA8123022E3900FAB518 /* CallListUI.framework */; };
+ D0C9CAFD2302370900FAB518 /* ChatListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CAFC2302370900FAB518 /* ChatListUI.framework */; };
+ D0C9CB422302B15500FAB518 /* ChatTitleActivityNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB412302B15500FAB518 /* ChatTitleActivityNode.framework */; };
+ D0C9CB822302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB812302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework */; };
+ D0C9CBB62302B65600FAB518 /* LanguageSuggestionUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBB52302B65600FAB518 /* LanguageSuggestionUI.framework */; };
+ D0C9CBD72302C09000FAB518 /* TextSelectionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBD62302C09000FAB518 /* TextSelectionNode.framework */; };
D0CAD90120AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */; };
D0CB27CF20C17A4A001ACF93 /* TermsOfServiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */; };
D0CB27D220C17A7F001ACF93 /* TermsOfServiceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */; };
@@ -590,7 +579,6 @@
D0EC6CCD1EB9F58800EBF1C3 /* DeclareEncodables.swift in Sources */ = {isa = PBXBuildFile; fileRef = D073CE701DCBF23F007511FD /* DeclareEncodables.swift */; };
D0EC6CCE1EB9F58800EBF1C3 /* AccountContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05811931DD5F9380057C769 /* AccountContext.swift */; };
D0EC6CD11EB9F58800EBF1C3 /* UrlHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = D023836F1DDF0462004018B6 /* UrlHandling.swift */; };
- D0EC6CD51EB9F58800EBF1C3 /* StoredMessageFromSearchPeer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749541E1082770057C89A /* StoredMessageFromSearchPeer.swift */; };
D0EC6CD71EB9F58800EBF1C3 /* EmojiUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01D6BFB1E42AB3C006151C6 /* EmojiUtils.swift */; };
D0EC6CD91EB9F58800EBF1C3 /* ValidateAddressNameInteractive.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E305A41E5B2BFB00D7A3A2 /* ValidateAddressNameInteractive.swift */; };
D0EC6CDC1EB9F58800EBF1C3 /* TelegramAccountAuxiliaryMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */; };
@@ -621,12 +609,6 @@
D0EC6D311EB9F58800EBF1C3 /* RadialTimeoutNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00C7CE51E378FD00080C3D5 /* RadialTimeoutNode.swift */; };
D0EC6D3A1EB9F58800EBF1C3 /* AudioWaveformNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0568AAC1DF198130022E7DA /* AudioWaveformNode.swift */; };
D0EC6D3B1EB9F58800EBF1C3 /* EditableTokenListNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BC38621E3F9EFA0044D6FE /* EditableTokenListNode.swift */; };
- D0EC6D4B1EB9F58800EBF1C3 /* ChatListNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF781DCA226F00761F81 /* ChatListNode.swift */; };
- D0EC6D4D1EB9F58800EBF1C3 /* ChatListHoleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DFB1D6B8A880046BCD6 /* ChatListHoleItem.swift */; };
- D0EC6D4E1EB9F58800EBF1C3 /* ChatListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DFC1D6B8A880046BCD6 /* ChatListItem.swift */; };
- D0EC6D501EB9F58800EBF1C3 /* ChatListNodeEntries.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF7A1DCA24BF00761F81 /* ChatListNodeEntries.swift */; };
- D0EC6D511EB9F58800EBF1C3 /* ChatListViewTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF7C1DCA273400761F81 /* ChatListViewTransition.swift */; };
- D0EC6D521EB9F58800EBF1C3 /* ChatListNodeLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF7E1DCA308500761F81 /* ChatListNodeLocation.swift */; };
D0EC6D531EB9F58800EBF1C3 /* ChatHistoryViewForLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E7A1BE1D8C24B900C37A6F /* ChatHistoryViewForLocation.swift */; };
D0EC6D541EB9F58800EBF1C3 /* ChatHistoryEntriesForView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E7A1C01D8C258D00C37A6F /* ChatHistoryEntriesForView.swift */; };
D0EC6D551EB9F58800EBF1C3 /* PreparedChatHistoryViewTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E7A1C21D8C25D600C37A6F /* PreparedChatHistoryViewTransition.swift */; };
@@ -654,12 +636,6 @@
D0EC6D731EB9F58800EBF1C3 /* AuthorizationSequenceSignUpController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F53BF61E79593500117362 /* AuthorizationSequenceSignUpController.swift */; };
D0EC6D741EB9F58800EBF1C3 /* AuthorizationSequenceSignUpControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F53BF81E79593F00117362 /* AuthorizationSequenceSignUpControllerNode.swift */; };
D0EC6D751EB9F58800EBF1C3 /* TelegramRootController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174C21EAE583800A1BF36 /* TelegramRootController.swift */; };
- D0EC6D761EB9F58800EBF1C3 /* ChatListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DF81D6B8A880046BCD6 /* ChatListController.swift */; };
- D0EC6D771EB9F58800EBF1C3 /* ChatListControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DF91D6B8A880046BCD6 /* ChatListControllerNode.swift */; };
- D0EC6D781EB9F58800EBF1C3 /* ChatListTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749611E11DB240057C89A /* ChatListTitleView.swift */; };
- D0EC6D791EB9F58800EBF1C3 /* ChatListTitleLockView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0575AEA1E9FD579006F2541 /* ChatListTitleLockView.swift */; };
- D0EC6D7A1EB9F58800EBF1C3 /* ChatListSearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E071D6B8A9C0046BCD6 /* ChatListSearchContainerNode.swift */; };
- D0EC6D7B1EB9F58800EBF1C3 /* ChatListRecentPeersListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D049EAED1E44BB3200A2CD3A /* ChatListRecentPeersListItem.swift */; };
D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749501E1067E40057C89A /* HashtagSearchController.swift */; };
D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749521E1068820057C89A /* HashtagSearchControllerNode.swift */; };
D0EC6D811EB9F58800EBF1C3 /* ChatController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E0E1D6B8ACF0046BCD6 /* ChatController.swift */; };
@@ -866,7 +842,6 @@
D0FA08C8204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08C7204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift */; };
D0FA08CA2049BEAC00DD23FC /* ChatEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08C92049BEAC00DD23FC /* ChatEmptyNode.swift */; };
D0FAB13E22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FAB13D22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift */; };
- D0FBE84F2273395C00B33B52 /* ChatListArchiveInfoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FBE84E2273395C00B33B52 /* ChatListArchiveInfoItem.swift */; };
D0FC194D201F82A000FEDBB2 /* OpenResolvedUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FC194C201F82A000FEDBB2 /* OpenResolvedUrl.swift */; };
D0FC408E1D5B8E7500261D9D /* TelegramUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FC408D1D5B8E7500261D9D /* TelegramUITests.swift */; };
D0FE4DE41F0AEBB900E8A0B3 /* SharedVideoContextManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FE4DE31F0AEBB900E8A0B3 /* SharedVideoContextManager.swift */; };
@@ -955,13 +930,6 @@
09D304142173C0E900C00567 /* WatchManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchManager.swift; sourceTree = ""; };
09D304172173C15700C00567 /* WatchSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchSettingsController.swift; sourceTree = ""; };
09D96898221DE92600B1458A /* ID3ArtworkReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ID3ArtworkReader.swift; sourceTree = ""; };
- 09D9689C221F74F000B1458A /* ChatTitleActivityNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTitleActivityNode.swift; sourceTree = ""; };
- 09D9689E221F760900B1458A /* ChatTitleActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTitleActivityContentNode.swift; sourceTree = ""; };
- 09D968A0221F7FF100B1458A /* ChatTypingActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTypingActivityContentNode.swift; sourceTree = ""; };
- 09D968A2221F800A00B1458A /* ChatUploadingActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatUploadingActivityContentNode.swift; sourceTree = ""; };
- 09D968A4221F801A00B1458A /* ChatPlayingActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatPlayingActivityContentNode.swift; sourceTree = ""; };
- 09D968A6221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRecordingVoiceActivityContentNode.swift; sourceTree = ""; };
- 09D968A8221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRecordingVideoActivityContentNode.swift; sourceTree = ""; };
09DD5D4F21ECC3C400D7007A /* SuppressContactsWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuppressContactsWarning.swift; sourceTree = ""; };
09DD5D5121ED175300D7007A /* WallpaperColorPickerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperColorPickerNode.swift; sourceTree = ""; };
09DD88E821BAF65E000766BC /* ItemListAddressItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListAddressItem.swift; sourceTree = ""; };
@@ -982,8 +950,6 @@
09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadMediaCategoryController.swift; sourceTree = ""; };
09EDAD2D221164440012A50B /* AutodownloadSizeLimitItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadSizeLimitItem.swift; sourceTree = ""; };
09EDAD2F221164530012A50B /* AutodownloadDataUsagePickerItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadDataUsagePickerItem.swift; sourceTree = ""; };
- 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListBadgeNode.swift; sourceTree = ""; };
- 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListStatusNode.swift; sourceTree = ""; };
09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pasteboard.swift; sourceTree = ""; };
09F664BF21EAAFAF00AB7E26 /* ThemeColorsGridController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridController.swift; sourceTree = ""; };
09F664C121EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridControllerNode.swift; sourceTree = ""; };
@@ -1014,7 +980,6 @@
D002A0DA1E9C190700A81812 /* SoftwareVideoThumbnailLayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SoftwareVideoThumbnailLayer.swift; sourceTree = ""; };
D002A0DC1E9CD52A00A81812 /* ChatMediaInputRecentGifsItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputRecentGifsItem.swift; sourceTree = ""; };
D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListAvatarAndNameItem.swift; sourceTree = ""; };
- D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteChatPeerActionSheetItem.swift; sourceTree = ""; };
D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreDownloadedMedia.swift; sourceTree = ""; };
D007019B2029E8F2006B9E34 /* LegacyICloudFileController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyICloudFileController.swift; sourceTree = ""; };
D007019D2029EFDD006B9E34 /* ICloudResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICloudResources.swift; sourceTree = ""; };
@@ -1088,13 +1053,10 @@
D015E04E225D2E5900CB9E8A /* WebP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WebP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D01749501E1067E40057C89A /* HashtagSearchController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HashtagSearchController.swift; sourceTree = ""; };
D01749521E1068820057C89A /* HashtagSearchControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HashtagSearchControllerNode.swift; sourceTree = ""; };
- D01749541E1082770057C89A /* StoredMessageFromSearchPeer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoredMessageFromSearchPeer.swift; sourceTree = ""; };
D01749561E1087CC0057C89A /* ChatBotStartInputPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatBotStartInputPanelNode.swift; sourceTree = ""; };
- D01749611E11DB240057C89A /* ChatListTitleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListTitleView.swift; sourceTree = ""; };
D017734B22049BF800DA06A7 /* UpgradedAccounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradedAccounts.swift; sourceTree = ""; };
D01776BD1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMediaCollectionSectionsNode.swift; sourceTree = ""; };
D0177B831DFB095000A5083A /* FileMediaResourceStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileMediaResourceStatus.swift; sourceTree = ""; };
- D018477F1FFBD12E00075256 /* ChatListPresentationData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListPresentationData.swift; sourceTree = ""; };
D01848E721A03BDA00B6DEBD /* ChatSearchState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSearchState.swift; sourceTree = ""; };
D0185E872089ED5F005E1A6C /* ProxyListSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyListSettingsController.swift; sourceTree = ""; };
D0185E89208A01AF005E1A6C /* ProxySettingsActionItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxySettingsActionItem.swift; sourceTree = ""; };
@@ -1194,7 +1156,6 @@
D048B338203C532800038D05 /* ChatMediaInputPane.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPane.swift; sourceTree = ""; };
D049EAE11E447AD500A2CD3A /* StickersChatInputContextPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickersChatInputContextPanelNode.swift; sourceTree = ""; };
D049EAE51E44AD5600A2CD3A /* ChatMediaInputMetaSectionItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputMetaSectionItemNode.swift; sourceTree = ""; };
- D049EAED1E44BB3200A2CD3A /* ChatListRecentPeersListItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListRecentPeersListItem.swift; sourceTree = ""; };
D049EAF21E44DE2500A2CD3A /* AuthorizationSequenceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceController.swift; sourceTree = ""; };
D04B4D121EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageMapBubbleContentNode.swift; sourceTree = ""; };
D04BB2B21E44E56200650E93 /* AuthorizationSequenceSplashController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceSplashController.swift; sourceTree = ""; };
@@ -1223,7 +1184,6 @@
D056CD751FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSwipeToReplyRecognizer.swift; sourceTree = ""; };
D056CD771FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageSwipeToReplyNode.swift; sourceTree = ""; };
D056CD791FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListMessagePlaybackOverlayNode.swift; sourceTree = ""; };
- D0575AEA1E9FD579006F2541 /* ChatListTitleLockView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListTitleLockView.swift; sourceTree = ""; };
D0575AEC1E9FF1AD006F2541 /* ChatMediaInputTrendingPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputTrendingPane.swift; sourceTree = ""; };
D0575AEE1E9FF881006F2541 /* ChatMediaInputTrendingItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputTrendingItem.swift; sourceTree = ""; };
D0575AF61EA0ED4F006F2541 /* ChatMessageInstantVideoItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageInstantVideoItemNode.swift; sourceTree = ""; };
@@ -1251,13 +1211,11 @@
D06350AD2229A7F800FA2B32 /* InChatPrefetchManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InChatPrefetchManager.swift; sourceTree = ""; };
D0642EFB1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatHistoryNavigationButtons.swift; sourceTree = ""; };
D0671F2C2145AB28000A8AE7 /* LegacyAvatarPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyAvatarPicker.swift; sourceTree = ""; };
- D0684A031F6C3AD50059F570 /* ChatListTypingNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListTypingNode.swift; sourceTree = ""; };
D06879561DB8F22200424BBD /* FetchCachedRepresentations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchCachedRepresentations.swift; sourceTree = ""; };
D069F5CF212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerPanePeerSpecificSetupGridItem.swift; sourceTree = ""; };
D06BB8811F58994B0084FC30 /* LegacyInstantVideoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyInstantVideoController.swift; sourceTree = ""; };
D06E0F8D1F79ABFB003CF3DD /* ChatLoadingNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatLoadingNode.swift; sourceTree = ""; };
D06E4AC31E84806300627D1D /* FetchPhotoLibraryImageResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchPhotoLibraryImageResource.swift; sourceTree = ""; };
- D06E4C302134910400088087 /* ChatListEmptyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListEmptyNode.swift; sourceTree = ""; };
D06E4C322134A59700088087 /* ThemeAccentColorActionSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeAccentColorActionSheet.swift; sourceTree = ""; };
D06E4C342134AE3C00088087 /* ThemeAutoNightSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeAutoNightSettingsController.swift; sourceTree = ""; };
D06F1EA31F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatHistorySearchContainerNode.swift; sourceTree = ""; };
@@ -1290,12 +1248,7 @@
D07BCBFD1F2B792300ED97AA /* LegacyComponents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LegacyComponents.framework; path = "../LegacyComponents/build/Debug-iphoneos/LegacyComponents.framework"; sourceTree = ""; };
D07CFF731DCA207200761F81 /* PeerSelectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerSelectionController.swift; sourceTree = ""; };
D07CFF751DCA224100761F81 /* PeerSelectionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerSelectionControllerNode.swift; sourceTree = ""; };
- D07CFF781DCA226F00761F81 /* ChatListNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListNode.swift; sourceTree = ""; };
- D07CFF7A1DCA24BF00761F81 /* ChatListNodeEntries.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListNodeEntries.swift; sourceTree = ""; };
- D07CFF7C1DCA273400761F81 /* ChatListViewTransition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListViewTransition.swift; sourceTree = ""; };
- D07CFF7E1DCA308500761F81 /* ChatListNodeLocation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListNodeLocation.swift; sourceTree = ""; };
D07CFF861DCAAE5E00761F81 /* ForwardAccessoryPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForwardAccessoryPanelNode.swift; sourceTree = ""; };
- D07E413A208A432100FCA8F0 /* ChatListTitleProxyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListTitleProxyNode.swift; sourceTree = ""; };
D07E413C208A494D00FCA8F0 /* ProxyServerActionSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyServerActionSheetController.swift; sourceTree = ""; };
D081A9A822EB26AE0069C449 /* PhoneLabelController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneLabelController.swift; sourceTree = ""; };
D081E103217F57D2003CD921 /* LanguageLinkPreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageLinkPreviewController.swift; sourceTree = ""; };
@@ -1377,7 +1330,6 @@
D0A11BFD1E7840A50081CE03 /* ChangePhoneNumberControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberControllerNode.swift; sourceTree = ""; };
D0A749961E3AA25200AD786E /* NotificationSoundSelection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationSoundSelection.swift; sourceTree = ""; };
D0A8998C217A294100759EE6 /* SaveIncomingMediaController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SaveIncomingMediaController.swift; sourceTree = ""; };
- D0AA29AD1F72770D00C050AC /* ChatListItemStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListItemStrings.swift; sourceTree = ""; };
D0AA840B1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayPlayerControlsNode.swift; sourceTree = ""; };
D0AB0BB01D6718DA002C78E7 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
D0AB0BB21D6718EB002C78E7 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
@@ -1492,7 +1444,6 @@
D0C50E3D1E93D09200F62E39 /* NotificationItemContainerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationItemContainerNode.swift; sourceTree = ""; };
D0C50E3F1E93D3B000F62E39 /* ChatMessageNotificationItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageNotificationItem.swift; sourceTree = ""; };
D0C50E431E93FCD200F62E39 /* notification.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = notification.caf; path = TelegramUI/Sounds/notification.caf; sourceTree = ""; };
- D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListSelection.swift; sourceTree = ""; };
D0C932351E0988C60074F044 /* ChatButtonKeyboardInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatButtonKeyboardInputNode.swift; sourceTree = ""; };
D0C932371E09E0EA0074F044 /* ChatBotInfoItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatBotInfoItem.swift; sourceTree = ""; };
D0C9323B1E0B4AE90074F044 /* DataAndStorageSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataAndStorageSettingsController.swift; sourceTree = ""; };
@@ -1543,6 +1494,11 @@
D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SolidRoundedButtonNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9CA182302297C00FAB518 /* PasscodeUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PasscodeUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9CA8123022E3900FAB518 /* CallListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CallListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CAFC2302370900FAB518 /* ChatListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ChatListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB412302B15500FAB518 /* ChatTitleActivityNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ChatTitleActivityNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB812302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeleteChatPeerActionSheetItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBB52302B65600FAB518 /* LanguageSuggestionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LanguageSuggestionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBD62302C09000FAB518 /* TextSelectionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TextSelectionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEditInterfaceMessageState.swift; sourceTree = ""; };
D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceController.swift; sourceTree = ""; };
D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceControllerNode.swift; sourceTree = ""; };
@@ -1717,11 +1673,6 @@
D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaManager.swift; sourceTree = ""; };
D0F69DB91D6B88190046BCD6 /* TelegramUI.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TelegramUI.xcconfig; path = TelegramUI/Config/TelegramUI.xcconfig; sourceTree = ""; };
D0F69DC41D6B89E10046BCD6 /* RadialProgressNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadialProgressNode.swift; sourceTree = ""; };
- D0F69DF81D6B8A880046BCD6 /* ChatListController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListController.swift; sourceTree = ""; };
- D0F69DF91D6B8A880046BCD6 /* ChatListControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListControllerNode.swift; sourceTree = ""; };
- D0F69DFB1D6B8A880046BCD6 /* ChatListHoleItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListHoleItem.swift; sourceTree = ""; };
- D0F69DFC1D6B8A880046BCD6 /* ChatListItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListItem.swift; sourceTree = ""; };
- D0F69E071D6B8A9C0046BCD6 /* ChatListSearchContainerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListSearchContainerNode.swift; sourceTree = ""; };
D0F69E0E1D6B8ACF0046BCD6 /* ChatController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatController.swift; sourceTree = ""; };
D0F69E0F1D6B8ACF0046BCD6 /* ChatControllerInteraction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatControllerInteraction.swift; sourceTree = ""; };
D0F69E101D6B8ACF0046BCD6 /* ChatControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatControllerNode.swift; sourceTree = ""; };
@@ -1765,7 +1716,6 @@
D0FA0AC41E77431A005BB9B7 /* InstalledStickerPacksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstalledStickerPacksController.swift; sourceTree = ""; };
D0FA35001EA6127000E56FFA /* StorageUsageController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageUsageController.swift; sourceTree = ""; };
D0FAB13D22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageBubbleBackdrop.swift; sourceTree = ""; };
- D0FBE84E2273395C00B33B52 /* ChatListArchiveInfoItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListArchiveInfoItem.swift; sourceTree = ""; };
D0FC194C201F82A000FEDBB2 /* OpenResolvedUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenResolvedUrl.swift; sourceTree = ""; };
D0FC40821D5B8E7400261D9D /* TelegramUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramUI.h; sourceTree = ""; };
D0FC40831D5B8E7400261D9D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
@@ -1780,6 +1730,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D0C9CBD72302C09000FAB518 /* TextSelectionNode.framework in Frameworks */,
+ D0C9CBB62302B65600FAB518 /* LanguageSuggestionUI.framework in Frameworks */,
+ D0C9CB822302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework in Frameworks */,
+ D0C9CB422302B15500FAB518 /* ChatTitleActivityNode.framework in Frameworks */,
+ D0C9CAFD2302370900FAB518 /* ChatListUI.framework in Frameworks */,
D0C9CA8223022E3900FAB518 /* CallListUI.framework in Frameworks */,
D0C9CA192302297C00FAB518 /* PasscodeUI.framework in Frameworks */,
D0C9C9DE2302267200FAB518 /* SolidRoundedButtonNode.framework in Frameworks */,
@@ -2045,13 +2000,6 @@
09D9689B221F74AA00B1458A /* Title Activity Indicator */ = {
isa = PBXGroup;
children = (
- 09D9689C221F74F000B1458A /* ChatTitleActivityNode.swift */,
- 09D9689E221F760900B1458A /* ChatTitleActivityContentNode.swift */,
- 09D968A0221F7FF100B1458A /* ChatTypingActivityContentNode.swift */,
- 09D968A2221F800A00B1458A /* ChatUploadingActivityContentNode.swift */,
- 09D968A6221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift */,
- 09D968A8221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift */,
- 09D968A4221F801A00B1458A /* ChatPlayingActivityContentNode.swift */,
);
name = "Title Activity Indicator";
sourceTree = "";
@@ -2083,7 +2031,6 @@
isa = PBXGroup;
children = (
D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */,
- D01749541E1082770057C89A /* StoredMessageFromSearchPeer.swift */,
D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */,
D0EC55A2210231D600D1992C /* SearchPeerMembers.swift */,
09CE950D2237E45E00A7D2C3 /* CachedFaqInstantPage.swift */,
@@ -2156,13 +2103,6 @@
name = Share;
sourceTree = "";
};
- D0104F261F471702004E4881 /* Instant Page Gallery */ = {
- isa = PBXGroup;
- children = (
- );
- name = "Instant Page Gallery";
- sourceTree = "";
- };
D01590A922BD46690017C33E /* Animation */ = {
isa = PBXGroup;
children = (
@@ -2608,25 +2548,6 @@
name = "Instant Page";
sourceTree = "";
};
- D07CFF771DCA226200761F81 /* Chat List Node */ = {
- isa = PBXGroup;
- children = (
- D07CFF781DCA226F00761F81 /* ChatListNode.swift */,
- D0F69DFB1D6B8A880046BCD6 /* ChatListHoleItem.swift */,
- D0F69DFC1D6B8A880046BCD6 /* ChatListItem.swift */,
- D0FBE84E2273395C00B33B52 /* ChatListArchiveInfoItem.swift */,
- D0AA29AD1F72770D00C050AC /* ChatListItemStrings.swift */,
- D07CFF7A1DCA24BF00761F81 /* ChatListNodeEntries.swift */,
- D07CFF7C1DCA273400761F81 /* ChatListViewTransition.swift */,
- D07CFF7E1DCA308500761F81 /* ChatListNodeLocation.swift */,
- D0684A031F6C3AD50059F570 /* ChatListTypingNode.swift */,
- D018477F1FFBD12E00075256 /* ChatListPresentationData.swift */,
- 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */,
- 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */,
- );
- name = "Chat List Node";
- sourceTree = "";
- };
D081E102217F57B2003CD921 /* Language Link Preview */ = {
isa = PBXGroup;
children = (
@@ -2659,6 +2580,11 @@
D08D45281D5E340200A7428A /* Frameworks */ = {
isa = PBXGroup;
children = (
+ D0C9CBD62302C09000FAB518 /* TextSelectionNode.framework */,
+ D0C9CBB52302B65600FAB518 /* LanguageSuggestionUI.framework */,
+ D0C9CB812302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework */,
+ D0C9CB412302B15500FAB518 /* ChatTitleActivityNode.framework */,
+ D0C9CAFC2302370900FAB518 /* ChatListUI.framework */,
D0C9CA8123022E3900FAB518 /* CallListUI.framework */,
D0C9CA182302297C00FAB518 /* PasscodeUI.framework */,
D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */,
@@ -2798,13 +2724,6 @@
name = Frameworks;
sourceTree = "";
};
- D093D81E20699A6000BC3599 /* Form */ = {
- isa = PBXGroup;
- children = (
- );
- name = Form;
- sourceTree = "";
- };
D099EA1D1DE744EE001AF5A8 /* Horizontal List */ = {
isa = PBXGroup;
children = (
@@ -3415,7 +3334,6 @@
children = (
D0F69DBF1D6B89AE0046BCD6 /* Nodes */,
D0F69DD31D6B8A160046BCD6 /* Controllers */,
- D07CFF771DCA226200761F81 /* Chat List Node */,
D0E7A1BB1D8C17EB00C37A6F /* Chat History Node */,
);
name = Components;
@@ -3435,7 +3353,6 @@
D0B2F76B2052A7D600D3BFB9 /* SinglePhoneInputNode.swift */,
D056CD6F1FF147B000880D28 /* IconButtonNode.swift */,
09F85BA621E7DA5F00D73170 /* BlurredImageNode.swift */,
- D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */,
09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */,
);
name = Nodes;
@@ -3452,7 +3369,6 @@
isa = PBXGroup;
children = (
D01B27931E38F3920022A4C0 /* Item List */,
- D093D81E20699A6000BC3599 /* Form */,
);
name = Controllers;
sourceTree = "";
@@ -3462,7 +3378,7 @@
children = (
D0F69DE71D6B8A590046BCD6 /* Authorization */,
D05174C11EAE582A00A1BF36 /* Root */,
- D0F69DF61D6B8A720046BCD6 /* Chat List */,
+ D017494F1E1067C00057C89A /* Hashtag Search */,
D0F69E0D1D6B8AB90046BCD6 /* Chat */,
D04281F2200E5A70009DDE36 /* Chat Recent Actions */,
D00DE6961E8E8E21003F0D76 /* Share */,
@@ -3495,39 +3411,6 @@
name = Authorization;
sourceTree = "";
};
- D0F69DF61D6B8A720046BCD6 /* Chat List */ = {
- isa = PBXGroup;
- children = (
- D0F69DF81D6B8A880046BCD6 /* ChatListController.swift */,
- D0F69DF91D6B8A880046BCD6 /* ChatListControllerNode.swift */,
- D01749611E11DB240057C89A /* ChatListTitleView.swift */,
- D0575AEA1E9FD579006F2541 /* ChatListTitleLockView.swift */,
- D07E413A208A432100FCA8F0 /* ChatListTitleProxyNode.swift */,
- D06E4C302134910400088087 /* ChatListEmptyNode.swift */,
- D017494F1E1067C00057C89A /* Hashtag Search */,
- D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */,
- D0F69E051D6B8A8B0046BCD6 /* Search */,
- );
- name = "Chat List";
- sourceTree = "";
- };
- D0F69E051D6B8A8B0046BCD6 /* Search */ = {
- isa = PBXGroup;
- children = (
- D0F69E071D6B8A9C0046BCD6 /* ChatListSearchContainerNode.swift */,
- D0F69E061D6B8A930046BCD6 /* Recent Peers */,
- );
- name = Search;
- sourceTree = "";
- };
- D0F69E061D6B8A930046BCD6 /* Recent Peers */ = {
- isa = PBXGroup;
- children = (
- D049EAED1E44BB3200A2CD3A /* ChatListRecentPeersListItem.swift */,
- );
- name = "Recent Peers";
- sourceTree = "";
- };
D0F69E0D1D6B8AB90046BCD6 /* Chat */ = {
isa = PBXGroup;
children = (
@@ -3662,7 +3545,6 @@
D0F69E4F1D6B8BC40046BCD6 /* Gallery */,
D0575AF81EA0FD94006F2541 /* Avatar Gallery */,
D0EEE99F2165583B001292A6 /* Document */,
- D0104F261F471702004E4881 /* Instant Page Gallery */,
D07827CC1E03F32C00071108 /* Instant Page */,
D0D748041E7AF62000F4B1F6 /* Stickers */,
D020A9D81FEAE611008C66F7 /* Player */,
@@ -4114,12 +3996,10 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D0684A041F6C3AD50059F570 /* ChatListTypingNode.swift in Sources */,
D0383EE6207D299600C45548 /* EmojisChatInputPanelItem.swift in Sources */,
D00817E322B47A14008A895F /* TGPresentationAutoNightPreferences.m in Sources */,
D0E1199E229809B6008CAE3A /* ChannelDiscussionGroupActionSheetItem.swift in Sources */,
09EDAD2A220DA6A40012A50B /* VolumeButtons.swift in Sources */,
- 09D968A9221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift in Sources */,
D0E1199A2297F9C6008CAE3A /* ChannelDiscussionGroupSetupController.swift in Sources */,
D083491C209361DC008CFD52 /* AvatarGalleryItemFooterContentNode.swift in Sources */,
090E778A22A9F23C00CD99F5 /* ChannelOwnershipTransferController.swift in Sources */,
@@ -4159,7 +4039,6 @@
D0EC6CCE1EB9F58800EBF1C3 /* AccountContext.swift in Sources */,
D0EC6CD11EB9F58800EBF1C3 /* UrlHandling.swift in Sources */,
09F85BA521E7821500D73170 /* ThemeGridSelectionPanelNode.swift in Sources */,
- D0EC6CD51EB9F58800EBF1C3 /* StoredMessageFromSearchPeer.swift in Sources */,
09CE950E2237E45E00A7D2C3 /* CachedFaqInstantPage.swift in Sources */,
D0EC6CD71EB9F58800EBF1C3 /* EmojiUtils.swift in Sources */,
D0EC6CD91EB9F58800EBF1C3 /* ValidateAddressNameInteractive.swift in Sources */,
@@ -4178,8 +4057,6 @@
D0E8B8BF20447A4600605593 /* SecretChatKeyControllerNode.swift in Sources */,
D02B2B9820810DA00062476B /* StickerPaneSearchStickerItem.swift in Sources */,
D020A9DC1FEAE6E7008C66F7 /* OverlayPlayerControllerNode.swift in Sources */,
- 09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */,
- 09D968A3221F800A00B1458A /* ChatUploadingActivityContentNode.swift in Sources */,
090E778622A9B95A00CD99F5 /* PeersNearbyController.swift in Sources */,
D04ECD721FFBF22B00DE9029 /* OpenUrl.swift in Sources */,
D056CD7A1FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift in Sources */,
@@ -4215,7 +4092,6 @@
D0EC6D091EB9F58800EBF1C3 /* info.c in Sources */,
D0EC6D0A1EB9F58800EBF1C3 /* internal.c in Sources */,
D0EC6D0B1EB9F58800EBF1C3 /* opusfile.c in Sources */,
- D01847801FFBD12E00075256 /* ChatListPresentationData.swift in Sources */,
09C500242142BA6400EF253E /* ItemListWebsiteItem.swift in Sources */,
D0EC6D0C1EB9F58800EBF1C3 /* stream.c in Sources */,
09FFBCD72281BB2D00C33B4B /* ChatTextLinkEditController.swift in Sources */,
@@ -4223,7 +4099,6 @@
D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */,
D0B69C3920EBB397003632C7 /* ChatMessageInteractiveInstantVideoNode.swift in Sources */,
09F79A0D21C88E8900820234 /* LegacyWebSearchEditor.swift in Sources */,
- 09F21565225C83E100AEDF6D /* ChatListStatusNode.swift in Sources */,
D056CD701FF147B000880D28 /* IconButtonNode.swift in Sources */,
D0F760DB222034910074F7E5 /* ChannelStatsController.swift in Sources */,
D0FA08CA2049BEAC00DD23FC /* ChatEmptyNode.swift in Sources */,
@@ -4239,7 +4114,6 @@
D0CE67941F7DB45100FFB557 /* ChatMessageContactBubbleContentNode.swift in Sources */,
09749BCD21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift in Sources */,
09EDAD26220D30980012A50B /* AutodownloadConnectionTypeController.swift in Sources */,
- 09D968A7221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift in Sources */,
D05D8B3A2192FC460064586F /* LocalizationListController.swift in Sources */,
D0943AFE1FDAE454001522CC /* ChatMultipleAvatarsNavigationNode.swift in Sources */,
D0B21B15220D85DD003F741D /* TabBarAccountSwitchController.swift in Sources */,
@@ -4283,15 +4157,9 @@
D0CE8CE51F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift in Sources */,
D097C26820DD0A1D007BB4B8 /* PeerReportController.swift in Sources */,
09F664C621EB400A00AB7E26 /* ThemeGridSearchContentNode.swift in Sources */,
- D0EC6D4B1EB9F58800EBF1C3 /* ChatListNode.swift in Sources */,
- D0EC6D4D1EB9F58800EBF1C3 /* ChatListHoleItem.swift in Sources */,
0962E67921B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift in Sources */,
- D0EC6D4E1EB9F58800EBF1C3 /* ChatListItem.swift in Sources */,
D0B2F76A2052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift in Sources */,
D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */,
- D0EC6D501EB9F58800EBF1C3 /* ChatListNodeEntries.swift in Sources */,
- D0EC6D511EB9F58800EBF1C3 /* ChatListViewTransition.swift in Sources */,
- D0EC6D521EB9F58800EBF1C3 /* ChatListNodeLocation.swift in Sources */,
D0EC6D531EB9F58800EBF1C3 /* ChatHistoryViewForLocation.swift in Sources */,
D06BB8821F58994B0084FC30 /* LegacyInstantVideoController.swift in Sources */,
D0EC6D541EB9F58800EBF1C3 /* ChatHistoryEntriesForView.swift in Sources */,
@@ -4316,7 +4184,6 @@
D0EC6D5D1EB9F58800EBF1C3 /* ListMessageSnippetItemNode.swift in Sources */,
D0EC6D5E1EB9F58800EBF1C3 /* ListMessageHoleItem.swift in Sources */,
D0EC6D5F1EB9F58800EBF1C3 /* GridMessageItem.swift in Sources */,
- 09F21563225C776100AEDF6D /* ChatListBadgeNode.swift in Sources */,
D00817CB22B47A14008A895F /* WatchBridge.swift in Sources */,
D0EC6D601EB9F58800EBF1C3 /* GridHoleItem.swift in Sources */,
D0EC6D611EB9F58800EBF1C3 /* GridMessageSelectionNode.swift in Sources */,
@@ -4333,7 +4200,6 @@
D0EC6D691EB9F58800EBF1C3 /* AuthorizationSequenceSplashController.swift in Sources */,
09E4A805223D4A5A0038140F /* OpenSettings.swift in Sources */,
D0EC6D6A1EB9F58800EBF1C3 /* AuthorizationSequenceSplashControllerNode.swift in Sources */,
- D0C683FC21AD797F00A6CAD5 /* ChatListSelection.swift in Sources */,
D0EC6D6D1EB9F58800EBF1C3 /* AuthorizationSequencePhoneEntryController.swift in Sources */,
D0EC6D6E1EB9F58800EBF1C3 /* AuthorizationSequencePhoneEntryControllerNode.swift in Sources */,
D0B85C211FF70BEC00E795B4 /* AuthorizationSequenceAwaitingAccountResetControllerNode.swift in Sources */,
@@ -4349,15 +4215,9 @@
091954792294754E00E11046 /* AnimatedStickerUtils.swift in Sources */,
D0EC6D741EB9F58800EBF1C3 /* AuthorizationSequenceSignUpControllerNode.swift in Sources */,
D0EC6D751EB9F58800EBF1C3 /* TelegramRootController.swift in Sources */,
- D0EC6D761EB9F58800EBF1C3 /* ChatListController.swift in Sources */,
- D0EC6D771EB9F58800EBF1C3 /* ChatListControllerNode.swift in Sources */,
- D0EC6D781EB9F58800EBF1C3 /* ChatListTitleView.swift in Sources */,
D0F6800A1EE750EE000E5906 /* ChannelBannedMemberController.swift in Sources */,
- D0EC6D791EB9F58800EBF1C3 /* ChatListTitleLockView.swift in Sources */,
D03AA4DF202DBF6F0056C405 /* ChatContextResultPeekContentNode.swift in Sources */,
D00817D622B47A14008A895F /* TGProxyItem.m in Sources */,
- D0EC6D7A1EB9F58800EBF1C3 /* ChatListSearchContainerNode.swift in Sources */,
- D0EC6D7B1EB9F58800EBF1C3 /* ChatListRecentPeersListItem.swift in Sources */,
0910B0ED21FA178C00F8F87D /* WallpaperPreviewMedia.swift in Sources */,
D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */,
D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */,
@@ -4410,7 +4270,6 @@
09D304152173C0E900C00567 /* WatchManager.swift in Sources */,
9F06830921A404AB001D8EDB /* NotificationExceptionControllerNode.swift in Sources */,
D035734B22B5CCCA00F0920D /* LegacyBuffer.swift in Sources */,
- 09D9689D221F74F000B1458A /* ChatTitleActivityNode.swift in Sources */,
D0EC6D991EB9F58900EBF1C3 /* ChatMessageMediaBubbleContentNode.swift in Sources */,
D0EC6D9A1EB9F58900EBF1C3 /* ChatMessageReplyInfoNode.swift in Sources */,
D0FE4DE41F0AEBB900E8A0B3 /* SharedVideoContextManager.swift in Sources */,
@@ -4420,7 +4279,6 @@
D0750C8222B2E4EE00BE5F6E /* SharedWakeupManager.swift in Sources */,
D0EC6D9D1EB9F58900EBF1C3 /* ChatMessageTextBubbleContentNode.swift in Sources */,
D00817DE22B47A14008A895F /* TGBridgeServer.m in Sources */,
- D0FBE84F2273395C00B33B52 /* ChatListArchiveInfoItem.swift in Sources */,
09F664D021EBCFB900AB7E26 /* WallpaperCropNode.swift in Sources */,
D0EC6D9E1EB9F58900EBF1C3 /* ChatMessageWebpageBubbleContentNode.swift in Sources */,
D0750C8722B2E76300BE5F6E /* ShareExtensionContext.swift in Sources */,
@@ -4440,7 +4298,6 @@
D0EC6DAB1EB9F58900EBF1C3 /* ChatInterfaceStateAccessoryPanels.swift in Sources */,
D0EC6DAC1EB9F58900EBF1C3 /* ChatInterfaceStateInputPanels.swift in Sources */,
D056CD761FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift in Sources */,
- D00580B321E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift in Sources */,
D091C7A41F8EBB1E00D7DE13 /* ChatPresentationData.swift in Sources */,
09A218F522A15F1400DE6898 /* ThemeSettingsAppIconItem.swift in Sources */,
D0EC6DAD1EB9F58900EBF1C3 /* ChatInterfaceStateNavigationButtons.swift in Sources */,
@@ -4458,7 +4315,6 @@
D0EC6DB51EB9F58900EBF1C3 /* ReplyAccessoryPanelNode.swift in Sources */,
D0EC6DB61EB9F58900EBF1C3 /* ForwardAccessoryPanelNode.swift in Sources */,
D0EC6DB71EB9F58900EBF1C3 /* EditAccessoryPanelNode.swift in Sources */,
- D06E4C312134910400088087 /* ChatListEmptyNode.swift in Sources */,
D0EC6DB81EB9F58900EBF1C3 /* WebpagePreviewAccessoryPanelNode.swift in Sources */,
D0EC6DB91EB9F58900EBF1C3 /* ChatInputNode.swift in Sources */,
099529AC21CDBBB200805E13 /* QRCode.swift in Sources */,
@@ -4551,14 +4407,12 @@
D0EC6DF91EB9F58900EBF1C3 /* PeerMediaCollectionInterfaceStateButtons.swift in Sources */,
09F664C821EB4A2600AB7E26 /* ThemeGridSearchItem.swift in Sources */,
09A218D9229EE1B600DE6898 /* HorizontalStickerGridItem.swift in Sources */,
- D07E413B208A432100FCA8F0 /* ChatListTitleProxyNode.swift in Sources */,
09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */,
D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */,
D0EC6DFB1EB9F58900EBF1C3 /* AvatarGalleryController.swift in Sources */,
D00817DB22B47A14008A895F /* LegacyChatImport.swift in Sources */,
09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */,
090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */,
- 09D968A5221F801A00B1458A /* ChatPlayingActivityContentNode.swift in Sources */,
D0E8B8BB2044780600605593 /* ItemListSecretChatKeyItem.swift in Sources */,
D06F31E62135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift in Sources */,
D01590BD22BDAEBC0017C33E /* DDSImage.cpp in Sources */,
@@ -4611,7 +4465,6 @@
D0EC6E321EB9F58900EBF1C3 /* CreateGroupController.swift in Sources */,
D0EC55A3210231D600D1992C /* SearchPeerMembers.swift in Sources */,
D0EC6E331EB9F58900EBF1C3 /* CreateChannelController.swift in Sources */,
- D0AA29AE1F72770D00C050AC /* ChatListItemStrings.swift in Sources */,
D0EC6E351EB9F58900EBF1C3 /* ItemListAvatarAndNameItem.swift in Sources */,
D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */,
D04203152037162700490EA5 /* MediaInputPaneTrendingItem.swift in Sources */,
@@ -4730,7 +4583,6 @@
09F664C221EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift in Sources */,
D0BCC3D420404CC7008126C2 /* ChatMessageActionSheetController.swift in Sources */,
0957DE2322DE28FB001B4D57 /* ThemePreviewController.swift in Sources */,
- 09D9689F221F760900B1458A /* ChatTitleActivityContentNode.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/submodules/TextSelectionNode/TextSelectionNode/Info.plist b/submodules/TextSelectionNode/TextSelectionNode/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/TextSelectionNode/TextSelectionNode/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/TextSelectionNode/TextSelectionNode/TextSelectionNode.h b/submodules/TextSelectionNode/TextSelectionNode/TextSelectionNode.h
new file mode 100644
index 0000000000..4f7466a61b
--- /dev/null
+++ b/submodules/TextSelectionNode/TextSelectionNode/TextSelectionNode.h
@@ -0,0 +1,19 @@
+//
+// TextSelectionNode.h
+// TextSelectionNode
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for TextSelectionNode.
+FOUNDATION_EXPORT double TextSelectionNodeVersionNumber;
+
+//! Project version string for TextSelectionNode.
+FOUNDATION_EXPORT const unsigned char TextSelectionNodeVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TextSelectionNode/TextSelectionNode_Xcode.xcodeproj/project.pbxproj b/submodules/TextSelectionNode/TextSelectionNode_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..b9dcb875f4
--- /dev/null
+++ b/submodules/TextSelectionNode/TextSelectionNode_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,520 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9CBCC2302C00600FAB518 /* TextSelectionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9CBCA2302C00600FAB518 /* TextSelectionNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9CBC72302C00600FAB518 /* TextSelectionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TextSelectionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBCA2302C00600FAB518 /* TextSelectionNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextSelectionNode.h; sourceTree = ""; };
+ D0C9CBCB2302C00600FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9CBC42302C00600FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9CBBD2302C00600FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBC92302C00600FAB518 /* TextSelectionNode */,
+ D0C9CBC82302C00600FAB518 /* Products */,
+ );
+ sourceTree = "";
+ };
+ D0C9CBC82302C00600FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBC72302C00600FAB518 /* TextSelectionNode.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9CBC92302C00600FAB518 /* TextSelectionNode */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBCA2302C00600FAB518 /* TextSelectionNode.h */,
+ D0C9CBCB2302C00600FAB518 /* Info.plist */,
+ );
+ path = TextSelectionNode;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9CBC22302C00600FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CBCC2302C00600FAB518 /* TextSelectionNode.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9CBC62302C00600FAB518 /* TextSelectionNode */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9CBCF2302C00600FAB518 /* Build configuration list for PBXNativeTarget "TextSelectionNode" */;
+ buildPhases = (
+ D0C9CBC22302C00600FAB518 /* Headers */,
+ D0C9CBC32302C00600FAB518 /* Sources */,
+ D0C9CBC42302C00600FAB518 /* Frameworks */,
+ D0C9CBC52302C00600FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = TextSelectionNode;
+ productName = TextSelectionNode;
+ productReference = D0C9CBC72302C00600FAB518 /* TextSelectionNode.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9CBBE2302C00600FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9CBC62302C00600FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ };
+ };
+ };
+ buildConfigurationList = D0C9CBC12302C00600FAB518 /* Build configuration list for PBXProject "TextSelectionNode_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9CBBD2302C00600FAB518;
+ productRefGroup = D0C9CBC82302C00600FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9CBC62302C00600FAB518 /* TextSelectionNode */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9CBC52302C00600FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9CBC32302C00600FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9CBCD2302C00600FAB518 /* 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;
+ };
+ D0C9CBCE2302C00600FAB518 /* 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;
+ };
+ D0C9CBD02302C00600FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ 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.TextSelectionNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CBD12302C00600FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ 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.TextSelectionNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CBD22302C06100FAB518 /* 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;
+ };
+ D0C9CBD32302C06100FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ 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.TextSelectionNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CBD42302C06E00FAB518 /* 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;
+ };
+ D0C9CBD52302C06E00FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ 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.TextSelectionNode;
+ 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 */
+ D0C9CBC12302C00600FAB518 /* Build configuration list for PBXProject "TextSelectionNode_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CBCD2302C00600FAB518 /* DebugAppStoreLLC */,
+ D0C9CBD22302C06100FAB518 /* DebugHockeyapp */,
+ D0C9CBCE2302C00600FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CBD42302C06E00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9CBCF2302C00600FAB518 /* Build configuration list for PBXNativeTarget "TextSelectionNode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CBD02302C00600FAB518 /* DebugAppStoreLLC */,
+ D0C9CBD32302C06100FAB518 /* DebugHockeyapp */,
+ D0C9CBD12302C00600FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CBD52302C06E00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9CBBE2302C00600FAB518 /* Project object */;
+}