Skip to content

Commit 2f9d5c4

Browse files
author
Isaac
committed
Merge commit 'bd1cbdae5ab641d9b946edafd59e92e21d94f3f9'
2 parents 2e39b1c + bd1cbda commit 2f9d5c4

File tree

41 files changed

+1284
-408
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1284
-408
lines changed

Telegram/Telegram-iOS/en.lproj/Localizable.strings

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13138,7 +13138,7 @@ Sorry for the inconvenience.";
1313813138
"AttachmentMenu.AddDocument" = "Add Document";
1313913139

1314013140
"Chat.BotAd.Title" = "Ad";
13141-
"Chat.BotAd.Remove" = "remove";
13141+
"Chat.BotAd.WhatIsThis" = "what's this?";
1314213142

1314313143
"ChatList.Search.TopAppsInfo" = "Which apps are included here? [Learn >]()";
1314413144

submodules/AccountContext/Sources/AccountContext.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ public protocol SharedAccountContext: AnyObject {
974974
func chatAvailableMessageActions(engine: TelegramEngine, accountPeerId: EnginePeer.Id, messageIds: Set<EngineMessage.Id>, messages: [EngineMessage.Id: EngineMessage], peers: [EnginePeer.Id: EnginePeer]) -> Signal<ChatAvailableMessageActions, NoError>
975975
func resolveUrl(context: AccountContext, peerId: PeerId?, url: String, skipUrlAuth: Bool) -> Signal<ResolvedUrl, NoError>
976976
func resolveUrlWithProgress(context: AccountContext, peerId: PeerId?, url: String, skipUrlAuth: Bool) -> Signal<ResolveUrlResult, NoError>
977-
func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlContext: OpenURLContext, navigationController: NavigationController?, forceExternal: Bool, openPeer: @escaping (EnginePeer, ChatControllerInteractionNavigateToPeer) -> Void, sendFile: ((FileMediaReference) -> Void)?, sendSticker: ((FileMediaReference, UIView, CGRect) -> Bool)?, sendEmoji: ((String, ChatTextInputTextCustomEmojiAttribute) -> Void)?, requestMessageActionUrlAuth: ((MessageActionUrlSubject) -> Void)?, joinVoiceChat: ((PeerId, String?, CachedChannelData.ActiveCall) -> Void)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void, contentContext: Any?, progress: Promise<Bool>?, completion: (() -> Void)?)
977+
func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlContext: OpenURLContext, navigationController: NavigationController?, forceExternal: Bool, forceUpdate: Bool, openPeer: @escaping (EnginePeer, ChatControllerInteractionNavigateToPeer) -> Void, sendFile: ((FileMediaReference) -> Void)?, sendSticker: ((FileMediaReference, UIView, CGRect) -> Bool)?, sendEmoji: ((String, ChatTextInputTextCustomEmojiAttribute) -> Void)?, requestMessageActionUrlAuth: ((MessageActionUrlSubject) -> Void)?, joinVoiceChat: ((PeerId, String?, CachedChannelData.ActiveCall) -> Void)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void, contentContext: Any?, progress: Promise<Bool>?, completion: (() -> Void)?)
978978
func openAddContact(context: AccountContext, firstName: String, lastName: String, phoneNumber: String, label: String, present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void)
979979
func openAddPersonContact(context: AccountContext, peerId: PeerId, pushController: @escaping (ViewController) -> Void, present: @escaping (ViewController, Any?) -> Void)
980980
func presentContactsWarningSuppression(context: AccountContext, present: (ViewController, Any?) -> Void)

submodules/BrowserUI/Sources/BrowserBookmarksScreen.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ public final class BrowserBookmarksScreen: ViewController {
149149
}, openWebView: { _, _, _, _ in
150150
}, activateAdAction: { _, _, _, _ in
151151
}, adContextAction: { _, _, _ in
152+
}, removeAd: { _ in
152153
}, openRequestedPeerSelection: { _, _, _, _ in
153154
}, saveMediaToFiles: { _ in
154155
}, openNoAdsDemo: {

submodules/BrowserUI/Sources/BrowserInstantPageContent.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -965,7 +965,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
965965
default:
966966
strongSelf.loadProgress.set(1.0)
967967
strongSelf.minimize()
968-
strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.getNavigationController(), forceExternal: false, openPeer: { peer, navigation in
968+
strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.getNavigationController(), forceExternal: false, forceUpdate: false, openPeer: { peer, navigation in
969969
switch navigation {
970970
case let .chat(_, subject, peekData):
971971
if let navigationController = strongSelf.getNavigationController() {

submodules/ChatListUI/Sources/ChatListSearchContainerNode.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
203203
let _ = openUserGeneratedUrl(context: context, peerId: nil, url: url, concealed: false, present: { c in
204204
present(c, nil)
205205
}, openResolved: { [weak self] resolved in
206-
context.sharedContext.openResolvedUrl(resolved, context: context, urlContext: .generic, navigationController: navigationController, forceExternal: false, openPeer: { peerId, navigation in
206+
context.sharedContext.openResolvedUrl(resolved, context: context, urlContext: .generic, navigationController: navigationController, forceExternal: false, forceUpdate: false, openPeer: { peerId, navigation in
207207

208208
},
209209
sendFile: nil,
@@ -634,6 +634,11 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
634634

635635
override public func searchTextUpdated(text: String) {
636636
let searchQuery: String? = !text.isEmpty ? text : nil
637+
638+
if !text.hasPrefix("#") && self.paneContainerNode.currentPaneKey == .publicPosts {
639+
self.paneContainerNode.requestSelectPane(.chats)
640+
}
641+
637642
self.searchQuery.set(.single(searchQuery))
638643
self.searchQueryValue = searchQuery
639644

submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,6 +1340,8 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
13401340
private var searchQueryValue: String?
13411341
private var searchOptionsValue: ChatListSearchOptions?
13421342

1343+
var isCurrent: Bool = false
1344+
13431345
private let _isSearching = ValuePromise<Bool>(false, ignoreRepeated: true)
13441346
public var isSearching: Signal<Bool, NoError> {
13451347
return self._isSearching.get()
@@ -2188,12 +2190,53 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
21882190

21892191
let foundPublicMessages: Signal<([FoundRemoteMessages], Bool), NoError>
21902192
if key == .chats || key == .publicPosts, let query, query.hasPrefix("#") {
2191-
let searchSignal = context.engine.messages.searchHashtagPosts(hashtag: finalQuery, state: nil, limit: 50)
2193+
let searchSignal = context.engine.messages.searchHashtagPosts(hashtag: finalQuery, state: nil, limit: 10)
21922194

2195+
let loadMore: Signal<([FoundRemoteMessages], Bool), NoError>
2196+
if key == .publicPosts {
2197+
loadMore = searchContexts.get()
2198+
|> mapToSignal { searchContexts -> Signal<([FoundRemoteMessages], Bool), NoError> in
2199+
let i = 0
2200+
if let searchContext = searchContexts[i], searchContext.result.hasMore {
2201+
if let _ = searchContext.loadMoreIndex {
2202+
return context.engine.messages.searchHashtagPosts(hashtag: finalQuery, state: searchContext.result.state, limit: 80)
2203+
|> map { result, updatedState -> ChatListSearchMessagesResult in
2204+
return ChatListSearchMessagesResult(query: finalQuery, messages: result.messages.map({ EngineMessage($0) }).sorted(by: { $0.index > $1.index }), readStates: result.readStates.mapValues { EnginePeerReadCounters(state: $0, isMuted: false) }, threadInfo: result.threadInfo, hasMore: !result.completed, totalCount: result.totalCount, state: updatedState)
2205+
}
2206+
|> mapToSignal { foundMessages -> Signal<([FoundRemoteMessages], Bool), NoError> in
2207+
updateSearchContexts { previous in
2208+
let updated = ChatListSearchMessagesContext(result: foundMessages, loadMoreIndex: nil)
2209+
var previous = previous
2210+
previous[i] = updated
2211+
return (previous, true)
2212+
}
2213+
return .complete()
2214+
}
2215+
} else {
2216+
var currentResults: [FoundRemoteMessages] = []
2217+
if let currentContext = searchContexts[i] {
2218+
currentResults.append(FoundRemoteMessages(messages: currentContext.result.messages, readCounters: currentContext.result.readStates, threadsData: currentContext.result.threadInfo, totalCount: currentContext.result.totalCount))
2219+
}
2220+
return .single((currentResults, false))
2221+
}
2222+
}
2223+
2224+
return .complete()
2225+
}
2226+
} else {
2227+
loadMore = .complete()
2228+
}
2229+
21932230
foundPublicMessages = .single(([FoundRemoteMessages(messages: [], readCounters: [:], threadsData: [:], totalCount: 0)], true))
21942231
|> then(
21952232
searchSignal
21962233
|> map { result -> ([FoundRemoteMessages], Bool) in
2234+
updateSearchContexts { _ in
2235+
var resultContexts: [Int: ChatListSearchMessagesContext] = [:]
2236+
resultContexts[0] = ChatListSearchMessagesContext(result: ChatListSearchMessagesResult(query: finalQuery, messages: result.0.messages.map({ EngineMessage($0) }).sorted(by: { $0.index > $1.index }), readStates: result.0.readStates.mapValues { EnginePeerReadCounters(state: $0, isMuted: false) }, threadInfo: result.0.threadInfo, hasMore: !result.0.completed, totalCount: result.0.totalCount, state: result.1), loadMoreIndex: nil)
2237+
return (resultContexts, true)
2238+
}
2239+
21972240
let foundMessages = result.0
21982241
let messages: [EngineMessage]
21992242
if key == .chats {
@@ -2204,6 +2247,7 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
22042247
return ([FoundRemoteMessages(messages: messages, readCounters: foundMessages.readStates.mapValues { EnginePeerReadCounters(state: $0, isMuted: false) }, threadsData: foundMessages.threadInfo, totalCount: foundMessages.totalCount)], false)
22052248
}
22062249
|> delay(0.2, queue: Queue.concurrentDefaultQueue())
2250+
|> then(loadMore)
22072251
)
22082252
} else {
22092253
foundPublicMessages = .single(([FoundRemoteMessages(messages: [], readCounters: [:], threadsData: [:], totalCount: 0)], false))
@@ -2380,7 +2424,7 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
23802424
foundThreads
23812425
)
23822426
|> map { accountPeer, foundLocalPeers, foundRemotePeers, foundRemoteMessages, foundPublicMessages, presentationData, searchState, selectionState, resolvedMessage, recentPeers, allAndFoundThreads -> ([ChatListSearchEntry], Bool)? in
2383-
let isSearching = foundRemotePeers.2 || foundRemoteMessages.1
2427+
let isSearching = foundRemotePeers.2 || foundRemoteMessages.1 || foundPublicMessages.1
23842428
var entries: [ChatListSearchEntry] = []
23852429
var index = 0
23862430

submodules/ChatListUI/Sources/ChatListSearchPaneContainerNode.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import MultiAnimationRenderer
1212

1313
protocol ChatListSearchPaneNode: ASDisplayNode {
1414
var isReady: Signal<Bool, NoError> { get }
15+
var isCurrent: Bool { get set }
1516

1617
func update(size: CGSize, sideInset: CGFloat, bottomInset: CGFloat, visibleHeight: CGFloat, presentationData: PresentationData, synchronous: Bool, transition: ContainedViewLayoutTransition)
1718
func scrollToTop() -> Bool
@@ -568,6 +569,7 @@ final class ChatListSearchPaneContainerNode: ASDisplayNode, ASGestureRecognizerD
568569
})
569570
}
570571
pane.update(size: paneFrame.size, sideInset: sideInset, bottomInset: bottomInset, visibleHeight: visibleHeight, presentationData: presentationData, synchronous: paneWasAdded, transition: paneTransition)
572+
pane.node.isCurrent = key == self.currentPaneKey
571573
if paneWasAdded && key == self.currentPaneKey {
572574
pane.node.didBecomeFocused()
573575
}

submodules/DebugSettingsUI/Sources/DebugController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
285285
} else {
286286
UIPasteboard.general.setData(data, forPasteboardType: dataType)
287287
}
288-
context.sharedContext.openResolvedUrl(.importStickers, context: context, urlContext: .generic, navigationController: arguments.getNavigationController(), forceExternal: false, openPeer: { _, _ in }, sendFile: nil, sendSticker: nil, sendEmoji: nil, requestMessageActionUrlAuth: nil, joinVoiceChat: nil, present: { c, a in arguments.presentController(c, a as? ViewControllerPresentationArguments) }, dismissInput: {}, contentContext: nil, progress: nil, completion: nil)
288+
context.sharedContext.openResolvedUrl(.importStickers, context: context, urlContext: .generic, navigationController: arguments.getNavigationController(), forceExternal: false, forceUpdate: false, openPeer: { _, _ in }, sendFile: nil, sendSticker: nil, sendEmoji: nil, requestMessageActionUrlAuth: nil, joinVoiceChat: nil, present: { c, a in arguments.presentController(c, a as? ViewControllerPresentationArguments) }, dismissInput: {}, contentContext: nil, progress: nil, completion: nil)
289289
}
290290
})
291291
case .sendLogs:

submodules/InstantPageUI/Sources/InstantPageControllerNode.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,7 @@ final class InstantPageControllerNode: ASDisplayNode, ASScrollViewDelegate {
13451345
}
13461346
default:
13471347
strongSelf.loadProgress.set(1.0)
1348-
strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.getNavigationController(), forceExternal: false, openPeer: { peer, navigation in
1348+
strongSelf.context.sharedContext.openResolvedUrl(result, context: strongSelf.context, urlContext: .generic, navigationController: strongSelf.getNavigationController(), forceExternal: false, forceUpdate: false, openPeer: { peer, navigation in
13491349
switch navigation {
13501350
case let .chat(_, subject, peekData):
13511351
if let navigationController = strongSelf.getNavigationController() {

submodules/PremiumUI/Sources/PremiumGiftScreen.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ private final class PremiumGiftScreenContentComponent: CombinedComponent {
625625
if let signal = signal {
626626
let _ = (signal
627627
|> deliverOnMainQueue).start(next: { resolvedUrl in
628-
context.sharedContext.openResolvedUrl(resolvedUrl, context: context, urlContext: .generic, navigationController: navigationController, forceExternal: false, openPeer: { peer, navigation in
628+
context.sharedContext.openResolvedUrl(resolvedUrl, context: context, urlContext: .generic, navigationController: navigationController, forceExternal: false, forceUpdate: false, openPeer: { peer, navigation in
629629
}, sendFile: nil, sendSticker: nil, sendEmoji: nil, requestMessageActionUrlAuth: nil, joinVoiceChat: nil, present: { [weak controller] c, arguments in
630630
controller?.push(c)
631631
}, dismissInput: {}, contentContext: nil, progress: nil, completion: nil)

0 commit comments

Comments
 (0)