mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Fix forcehidenames on multiforward
This commit is contained in:
parent
1d5795ed93
commit
f21ebab517
@ -47,6 +47,7 @@ public enum ChatListDisabledPeerReason {
|
|||||||
|
|
||||||
public final class PeerSelectionControllerParams {
|
public final class PeerSelectionControllerParams {
|
||||||
public let context: AccountContext
|
public let context: AccountContext
|
||||||
|
public let forceHideNames: Bool
|
||||||
public let updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)?
|
public let updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)?
|
||||||
public let filter: ChatListNodePeersFilter
|
public let filter: ChatListNodePeersFilter
|
||||||
public let requestPeerType: [ReplyMarkupButtonRequestPeerType]?
|
public let requestPeerType: [ReplyMarkupButtonRequestPeerType]?
|
||||||
@ -69,6 +70,7 @@ public final class PeerSelectionControllerParams {
|
|||||||
|
|
||||||
public init(
|
public init(
|
||||||
context: AccountContext,
|
context: AccountContext,
|
||||||
|
forceHideNames: Bool = false,
|
||||||
updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)? = nil,
|
updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)? = nil,
|
||||||
filter: ChatListNodePeersFilter = [.onlyWriteable],
|
filter: ChatListNodePeersFilter = [.onlyWriteable],
|
||||||
requestPeerType: [ReplyMarkupButtonRequestPeerType]? = nil,
|
requestPeerType: [ReplyMarkupButtonRequestPeerType]? = nil,
|
||||||
@ -90,6 +92,7 @@ public final class PeerSelectionControllerParams {
|
|||||||
immediatelyActivateMultipleSelection: Bool = false
|
immediatelyActivateMultipleSelection: Bool = false
|
||||||
) {
|
) {
|
||||||
self.context = context
|
self.context = context
|
||||||
|
self.forceHideNames = forceHideNames
|
||||||
self.updatedPresentationData = updatedPresentationData
|
self.updatedPresentationData = updatedPresentationData
|
||||||
self.filter = filter
|
self.filter = filter
|
||||||
self.requestPeerType = requestPeerType
|
self.requestPeerType = requestPeerType
|
||||||
|
@ -13,6 +13,7 @@ import CounterControllerTitleView
|
|||||||
|
|
||||||
public final class PeerSelectionControllerImpl: ViewController, PeerSelectionController {
|
public final class PeerSelectionControllerImpl: ViewController, PeerSelectionController {
|
||||||
private let context: AccountContext
|
private let context: AccountContext
|
||||||
|
private let forceHideNames: Bool
|
||||||
|
|
||||||
private var presentationData: PresentationData
|
private var presentationData: PresentationData
|
||||||
private var presentationDataDisposable: Disposable?
|
private var presentationDataDisposable: Disposable?
|
||||||
@ -94,6 +95,7 @@ public final class PeerSelectionControllerImpl: ViewController, PeerSelectionCon
|
|||||||
|
|
||||||
public init(_ params: PeerSelectionControllerParams) {
|
public init(_ params: PeerSelectionControllerParams) {
|
||||||
self.context = params.context
|
self.context = params.context
|
||||||
|
self.forceHideNames = params.forceHideNames
|
||||||
self.filter = params.filter
|
self.filter = params.filter
|
||||||
self.forumPeerId = params.forumPeerId
|
self.forumPeerId = params.forumPeerId
|
||||||
self.hasFilters = params.hasFilters
|
self.hasFilters = params.hasFilters
|
||||||
@ -252,7 +254,7 @@ public final class PeerSelectionControllerImpl: ViewController, PeerSelectionCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
override public func loadDisplayNode() {
|
override public func loadDisplayNode() {
|
||||||
self.displayNode = PeerSelectionControllerNode(context: self.context, controller: self, presentationData: self.presentationData, filter: self.filter, forumPeerId: self.forumPeerId, hasFilters: self.hasFilters, hasChatListSelector: self.hasChatListSelector, hasContactSelector: self.hasContactSelector, hasGlobalSearch: self.hasGlobalSearch, forwardedMessageIds: self.forwardedMessageIds, hasTypeHeaders: self.hasTypeHeaders, requestPeerType: self.requestPeerType, hasCreation: self.hasCreation, createNewGroup: self.createNewGroup, present: { [weak self] c, a in
|
self.displayNode = PeerSelectionControllerNode(context: self.context, forceHideNames: self.forceHideNames, controller: self, presentationData: self.presentationData, filter: self.filter, forumPeerId: self.forumPeerId, hasFilters: self.hasFilters, hasChatListSelector: self.hasChatListSelector, hasContactSelector: self.hasContactSelector, hasGlobalSearch: self.hasGlobalSearch, forwardedMessageIds: self.forwardedMessageIds, hasTypeHeaders: self.hasTypeHeaders, requestPeerType: self.requestPeerType, hasCreation: self.hasCreation, createNewGroup: self.createNewGroup, present: { [weak self] c, a in
|
||||||
self?.present(c, in: .window(.root), with: a)
|
self?.present(c, in: .window(.root), with: a)
|
||||||
}, presentInGlobalOverlay: { [weak self] c, a in
|
}, presentInGlobalOverlay: { [weak self] c, a in
|
||||||
self?.presentInGlobalOverlay(c, with: a)
|
self?.presentInGlobalOverlay(c, with: a)
|
||||||
|
@ -109,7 +109,7 @@ final class PeerSelectionControllerNode: ASDisplayNode {
|
|||||||
return (self.presentationData, self.presentationDataPromise.get())
|
return (self.presentationData, self.presentationDataPromise.get())
|
||||||
}
|
}
|
||||||
|
|
||||||
init(context: AccountContext, controller: PeerSelectionControllerImpl, presentationData: PresentationData, filter: ChatListNodePeersFilter, forumPeerId: EnginePeer.Id?, hasFilters: Bool, hasChatListSelector: Bool, hasContactSelector: Bool, hasGlobalSearch: Bool, forwardedMessageIds: [EngineMessage.Id], hasTypeHeaders: Bool, requestPeerType: [ReplyMarkupButtonRequestPeerType]?, hasCreation: Bool, createNewGroup: (() -> Void)?, present: @escaping (ViewController, Any?) -> Void, presentInGlobalOverlay: @escaping (ViewController, Any?) -> Void, dismiss: @escaping () -> Void) {
|
init(context: AccountContext, forceHideNames: Bool = false, controller: PeerSelectionControllerImpl, presentationData: PresentationData, filter: ChatListNodePeersFilter, forumPeerId: EnginePeer.Id?, hasFilters: Bool, hasChatListSelector: Bool, hasContactSelector: Bool, hasGlobalSearch: Bool, forwardedMessageIds: [EngineMessage.Id], hasTypeHeaders: Bool, requestPeerType: [ReplyMarkupButtonRequestPeerType]?, hasCreation: Bool, createNewGroup: (() -> Void)?, present: @escaping (ViewController, Any?) -> Void, presentInGlobalOverlay: @escaping (ViewController, Any?) -> Void, dismiss: @escaping () -> Void) {
|
||||||
self.context = context
|
self.context = context
|
||||||
self.controller = controller
|
self.controller = controller
|
||||||
self.present = present
|
self.present = present
|
||||||
@ -130,6 +130,11 @@ final class PeerSelectionControllerNode: ASDisplayNode {
|
|||||||
self.presentationInterfaceState = ChatPresentationInterfaceState(chatWallpaper: .builtin(WallpaperSettings()), theme: self.presentationData.theme, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, limitsConfiguration: self.context.currentLimitsConfiguration.with { $0 }, fontSize: self.presentationData.chatFontSize, bubbleCorners: self.presentationData.chatBubbleCorners, accountPeerId: self.context.account.peerId, mode: .standard(.default), chatLocation: .peer(id: PeerId(0)), subject: nil, peerNearbyData: nil, greetingData: nil, pendingUnpinnedAllMessages: false, activeGroupCallInfo: nil, hasActiveGroupCall: false, importState: nil, threadData: nil, isGeneralThreadClosed: nil, replyMessage: nil, accountPeerColor: nil, businessIntro: nil, starGiftsAvailable: false)
|
self.presentationInterfaceState = ChatPresentationInterfaceState(chatWallpaper: .builtin(WallpaperSettings()), theme: self.presentationData.theme, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, limitsConfiguration: self.context.currentLimitsConfiguration.with { $0 }, fontSize: self.presentationData.chatFontSize, bubbleCorners: self.presentationData.chatBubbleCorners, accountPeerId: self.context.account.peerId, mode: .standard(.default), chatLocation: .peer(id: PeerId(0)), subject: nil, peerNearbyData: nil, greetingData: nil, pendingUnpinnedAllMessages: false, activeGroupCallInfo: nil, hasActiveGroupCall: false, importState: nil, threadData: nil, isGeneralThreadClosed: nil, replyMessage: nil, accountPeerColor: nil, businessIntro: nil, starGiftsAvailable: false)
|
||||||
|
|
||||||
self.presentationInterfaceState = self.presentationInterfaceState.updatedInterfaceState { $0.withUpdatedForwardMessageIds(forwardedMessageIds) }
|
self.presentationInterfaceState = self.presentationInterfaceState.updatedInterfaceState { $0.withUpdatedForwardMessageIds(forwardedMessageIds) }
|
||||||
|
// MARK: Swiftgram
|
||||||
|
if forceHideNames {
|
||||||
|
self.presentationInterfaceState = self.presentationInterfaceState.updatedInterfaceState { $0.withUpdatedForwardOptionsState(ChatInterfaceForwardOptionsState(hideNames: true, hideCaptions: false, unhideNamesOnCaptionChange: false))
|
||||||
|
}
|
||||||
|
}
|
||||||
self.presentationInterfaceStatePromise.set(self.presentationInterfaceState)
|
self.presentationInterfaceStatePromise.set(self.presentationInterfaceState)
|
||||||
|
|
||||||
if let _ = self.requestPeerType {
|
if let _ = self.requestPeerType {
|
||||||
@ -461,7 +466,7 @@ final class PeerSelectionControllerNode: ASDisplayNode {
|
|||||||
}, action: { [weak self] _, f in
|
}, action: { [weak self] _, f in
|
||||||
self?.interfaceInteraction?.updateForwardOptionsState({ current in
|
self?.interfaceInteraction?.updateForwardOptionsState({ current in
|
||||||
var updated = current
|
var updated = current
|
||||||
updated.hideNames = false
|
updated.hideNames = false || forceHideNames
|
||||||
updated.hideCaptions = false
|
updated.hideCaptions = false
|
||||||
updated.unhideNamesOnCaptionChange = false
|
updated.unhideNamesOnCaptionChange = false
|
||||||
return updated
|
return updated
|
||||||
|
@ -49,7 +49,7 @@ extension ChatControllerImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
var attemptSelectionImpl: ((EnginePeer, ChatListDisabledPeerReason) -> Void)?
|
var attemptSelectionImpl: ((EnginePeer, ChatListDisabledPeerReason) -> Void)?
|
||||||
let controller = self.context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: self.context, updatedPresentationData: self.updatedPresentationData, filter: filter, hasFilters: true, title: forceHideNames ? self.updatedPresentationData.0.strings.Conversation_ForwardOptions_HideSendersNames : nil, attemptSelection: { peer, _, reason in
|
let controller = self.context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: self.context, forceHideNames: forceHideNames, updatedPresentationData: self.updatedPresentationData, filter: filter, hasFilters: true, title: forceHideNames ? self.updatedPresentationData.0.strings.Conversation_ForwardOptions_HideSendersNames : nil, attemptSelection: { peer, _, reason in
|
||||||
attemptSelectionImpl?(peer, reason)
|
attemptSelectionImpl?(peer, reason)
|
||||||
}, multipleSelection: true, forwardedMessageIds: messages.map { $0.id }, selectForumThreads: true))
|
}, multipleSelection: true, forwardedMessageIds: messages.map { $0.id }, selectForumThreads: true))
|
||||||
let context = self.context
|
let context = self.context
|
||||||
|
Loading…
x
Reference in New Issue
Block a user