mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various Fixes
This commit is contained in:
parent
307ac7319e
commit
8d90c90568
@ -5982,6 +5982,10 @@ Sorry for the inconvenience.";
|
|||||||
|
|
||||||
"Conversation.ForwardTooltip.Chat.One" = "Message forwarded to **%@**";
|
"Conversation.ForwardTooltip.Chat.One" = "Message forwarded to **%@**";
|
||||||
"Conversation.ForwardTooltip.Chat.Many" = "Messages forwarded to **%@**";
|
"Conversation.ForwardTooltip.Chat.Many" = "Messages forwarded to **%@**";
|
||||||
|
"Conversation.ForwardTooltip.TwoChats.One" = "Message forwarded to **%@** and **%@**";
|
||||||
|
"Conversation.ForwardTooltip.TwoChats.Many" = "Messages forwarded to **%@** and **%@**";
|
||||||
|
"Conversation.ForwardTooltip.ManyChats.One" = "Message forwarded to **%@** and %@ others";
|
||||||
|
"Conversation.ForwardTooltip.ManyChats.Many" = "Messages forwarded to **%@** and %@ others";
|
||||||
|
|
||||||
"Conversation.ForwardTooltip.SavedMessages.One" = "Message forwarded to **Saved Messages**";
|
"Conversation.ForwardTooltip.SavedMessages.One" = "Message forwarded to **Saved Messages**";
|
||||||
"Conversation.ForwardTooltip.SavedMessages.Many" = "Messages forwarded to **Saved Messages**";
|
"Conversation.ForwardTooltip.SavedMessages.Many" = "Messages forwarded to **Saved Messages**";
|
||||||
|
@ -221,6 +221,15 @@ public final class InviteLinkInviteController: ViewController {
|
|||||||
|
|
||||||
override public func loadView() {
|
override public func loadView() {
|
||||||
super.loadView()
|
super.loadView()
|
||||||
|
|
||||||
|
let context = self.context
|
||||||
|
let peerId = self.peerId
|
||||||
|
let _ = (self.context.account.viewTracker.peerView(peerId) |> filter { $0.cachedData != nil } |> take(1) |> mapToSignal { view -> Signal<String?, NoError> in
|
||||||
|
return ensuredExistingPeerExportedInvitation(account: context.account, peerId: peerId)
|
||||||
|
|> mapToSignal { _ -> Signal<String?, NoError> in
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
}).start()
|
||||||
}
|
}
|
||||||
|
|
||||||
private var didAppearOnce: Bool = false
|
private var didAppearOnce: Bool = false
|
||||||
|
@ -851,6 +851,13 @@ public func channelVisibilityController(context: AccountContext, peerId: PeerId,
|
|||||||
let revokeLinkDisposable = MetaDisposable()
|
let revokeLinkDisposable = MetaDisposable()
|
||||||
actionsDisposable.add(revokeLinkDisposable)
|
actionsDisposable.add(revokeLinkDisposable)
|
||||||
|
|
||||||
|
actionsDisposable.add((context.account.viewTracker.peerView(peerId) |> filter { $0.cachedData != nil } |> take(1) |> mapToSignal { view -> Signal<String?, NoError> in
|
||||||
|
return ensuredExistingPeerExportedInvitation(account: context.account, peerId: peerId)
|
||||||
|
|> mapToSignal { _ -> Signal<String?, NoError> in
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
}).start())
|
||||||
|
|
||||||
let arguments = ChannelVisibilityControllerArguments(context: context, updateCurrentType: { type in
|
let arguments = ChannelVisibilityControllerArguments(context: context, updateCurrentType: { type in
|
||||||
updateState { state in
|
updateState { state in
|
||||||
return state.withUpdatedSelectedType(type)
|
return state.withUpdatedSelectedType(type)
|
||||||
|
@ -305,6 +305,13 @@ public final class ShareController: ViewController {
|
|||||||
private var defaultAction: ShareControllerAction?
|
private var defaultAction: ShareControllerAction?
|
||||||
|
|
||||||
public var dismissed: ((Bool) -> Void)?
|
public var dismissed: ((Bool) -> Void)?
|
||||||
|
public var completed: (([PeerId]) -> Void)? {
|
||||||
|
didSet {
|
||||||
|
if self.isNodeLoaded {
|
||||||
|
self.controllerNode.completed = completed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public convenience init(context: AccountContext, subject: ShareControllerSubject, presetText: String? = nil, preferredAction: ShareControllerPreferredAction = .default, showInChat: ((Message) -> Void)? = nil, openStats: (() -> Void)? = nil, fromForeignApp: Bool = false, shares: Int? = nil, externalShare: Bool = true, immediateExternalShare: Bool = false, switchableAccounts: [AccountWithInfo] = [], immediatePeerId: PeerId? = nil, forcedTheme: PresentationTheme? = nil, forcedActionTitle: String? = nil) {
|
public convenience init(context: AccountContext, subject: ShareControllerSubject, presetText: String? = nil, preferredAction: ShareControllerPreferredAction = .default, showInChat: ((Message) -> Void)? = nil, openStats: (() -> Void)? = nil, fromForeignApp: Bool = false, shares: Int? = nil, externalShare: Bool = true, immediateExternalShare: Bool = false, switchableAccounts: [AccountWithInfo] = [], immediatePeerId: PeerId? = nil, forcedTheme: PresentationTheme? = nil, forcedActionTitle: String? = nil) {
|
||||||
self.init(sharedContext: context.sharedContext, currentContext: context, subject: subject, presetText: presetText, preferredAction: preferredAction, showInChat: showInChat, openStats: openStats, fromForeignApp: fromForeignApp, shares: shares, externalShare: externalShare, immediateExternalShare: immediateExternalShare, switchableAccounts: switchableAccounts, immediatePeerId: immediatePeerId, forcedTheme: forcedTheme, forcedActionTitle: forcedActionTitle)
|
self.init(sharedContext: context.sharedContext, currentContext: context, subject: subject, presetText: presetText, preferredAction: preferredAction, showInChat: showInChat, openStats: openStats, fromForeignApp: fromForeignApp, shares: shares, externalShare: externalShare, immediateExternalShare: immediateExternalShare, switchableAccounts: switchableAccounts, immediatePeerId: immediatePeerId, forcedTheme: forcedTheme, forcedActionTitle: forcedActionTitle)
|
||||||
@ -451,6 +458,7 @@ public final class ShareController: ViewController {
|
|||||||
}
|
}
|
||||||
strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: strongSelf.presentationData), title: title, text: text, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root))
|
strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: strongSelf.presentationData), title: title, text: text, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root))
|
||||||
}, externalShare: self.externalShare, immediateExternalShare: self.immediateExternalShare, immediatePeerId: self.immediatePeerId, shares: self.shares, fromForeignApp: self.fromForeignApp, forcedTheme: self.forcedTheme)
|
}, externalShare: self.externalShare, immediateExternalShare: self.immediateExternalShare, immediatePeerId: self.immediatePeerId, shares: self.shares, fromForeignApp: self.fromForeignApp, forcedTheme: self.forcedTheme)
|
||||||
|
self.controllerNode.completed = completed
|
||||||
self.controllerNode.dismiss = { [weak self] shared in
|
self.controllerNode.dismiss = { [weak self] shared in
|
||||||
self?.presentingViewController?.dismiss(animated: false, completion: nil)
|
self?.presentingViewController?.dismiss(animated: false, completion: nil)
|
||||||
self?.dismissed?(shared)
|
self?.dismissed?(shared)
|
||||||
@ -466,6 +474,7 @@ public final class ShareController: ViewController {
|
|||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return .complete()
|
return .complete()
|
||||||
}
|
}
|
||||||
|
|
||||||
var shareSignals: [Signal<[MessageId?], NoError>] = []
|
var shareSignals: [Signal<[MessageId?], NoError>] = []
|
||||||
switch strongSelf.subject {
|
switch strongSelf.subject {
|
||||||
case let .url(url):
|
case let .url(url):
|
||||||
|
@ -65,6 +65,7 @@ final class ShareControllerNode: ViewControllerTracingNode, UIScrollViewDelegate
|
|||||||
var shareExternal: (() -> Signal<ShareExternalState, NoError>)?
|
var shareExternal: (() -> Signal<ShareExternalState, NoError>)?
|
||||||
var switchToAnotherAccount: (() -> Void)?
|
var switchToAnotherAccount: (() -> Void)?
|
||||||
var openStats: (() -> Void)?
|
var openStats: (() -> Void)?
|
||||||
|
var completed: (([PeerId]) -> Void)?
|
||||||
|
|
||||||
let ready = Promise<Bool>()
|
let ready = Promise<Bool>()
|
||||||
private var didSetReady = false
|
private var didSetReady = false
|
||||||
@ -585,6 +586,7 @@ final class ShareControllerNode: ViewControllerTracingNode, UIScrollViewDelegate
|
|||||||
Queue.mainQueue().after(delay, {
|
Queue.mainQueue().after(delay, {
|
||||||
self?.animateOut(shared: true, completion: {
|
self?.animateOut(shared: true, completion: {
|
||||||
self?.dismiss?(true)
|
self?.dismiss?(true)
|
||||||
|
self?.completed?(peerIds)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -1063,6 +1063,24 @@ public final class VoiceChatController: ViewController {
|
|||||||
strongSelf.accountPeer = accountPeer
|
strongSelf.accountPeer = accountPeer
|
||||||
strongSelf.updateMembers(muteState: strongSelf.effectiveMuteState, callMembers: strongSelf.currentCallMembers ?? ([], nil), invitedPeers: strongSelf.currentInvitedPeers ?? [], speakingPeers: strongSelf.currentSpeakingPeers ?? Set())
|
strongSelf.updateMembers(muteState: strongSelf.effectiveMuteState, callMembers: strongSelf.currentCallMembers ?? ([], nil), invitedPeers: strongSelf.currentInvitedPeers ?? [], speakingPeers: strongSelf.currentSpeakingPeers ?? Set())
|
||||||
|
|
||||||
|
if let peer = peerViewMainPeer(view) {
|
||||||
|
if let channel = peer as? TelegramChannel {
|
||||||
|
let addressName = channel.addressName ?? ""
|
||||||
|
if channel.flags.contains(.isCreator) || channel.hasPermission(.inviteMembers) {
|
||||||
|
if addressName.isEmpty {
|
||||||
|
let _ = ensuredExistingPeerExportedInvitation(account: strongSelf.context.account, peerId: call.peerId).start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if let group = peer as? TelegramGroup {
|
||||||
|
switch group.role {
|
||||||
|
case .creator, .admin:
|
||||||
|
let _ = ensuredExistingPeerExportedInvitation(account: strongSelf.context.account, peerId: call.peerId).start()
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
strongSelf.didSetDataReady = true
|
strongSelf.didSetDataReady = true
|
||||||
strongSelf.controller?.dataReady.set(true)
|
strongSelf.controller?.dataReady.set(true)
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1413,11 +1413,51 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
}, openMessageShareMenu: { [weak self] id in
|
}, openMessageShareMenu: { [weak self] id in
|
||||||
if let strongSelf = self, let messages = strongSelf.chatDisplayNode.historyNode.messageGroupInCurrentHistoryView(id), let _ = messages.first {
|
if let strongSelf = self, let messages = strongSelf.chatDisplayNode.historyNode.messageGroupInCurrentHistoryView(id), let _ = messages.first {
|
||||||
let shareController = ShareController(context: strongSelf.context, subject: .messages(messages))
|
let shareController = ShareController(context: strongSelf.context, subject: .messages(messages))
|
||||||
shareController.dismissed = { shared in
|
shareController.dismissed = { [weak self] shared in
|
||||||
if shared {
|
if shared {
|
||||||
self?.commitPurposefulAction()
|
self?.commitPurposefulAction()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
shareController.completed = { [weak self] peerIds in
|
||||||
|
if let strongSelf = self {
|
||||||
|
let _ = (strongSelf.context.account.postbox.transaction { transaction -> [Peer] in
|
||||||
|
var peers: [Peer] = []
|
||||||
|
for peerId in peerIds {
|
||||||
|
if let peer = transaction.getPeer(peerId) {
|
||||||
|
peers.append(peer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return peers
|
||||||
|
} |> deliverOnMainQueue).start(next: { [weak self] peers in
|
||||||
|
if let strongSelf = self {
|
||||||
|
let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
|
||||||
|
let text: String
|
||||||
|
var savedMessages = false
|
||||||
|
if peerIds.count == 1, let peerId = peerIds.first, peerId == strongSelf.context.account.peerId {
|
||||||
|
text = messages.count == 1 ? presentationData.strings.Conversation_ForwardTooltip_SavedMessages_One : presentationData.strings.Conversation_ForwardTooltip_SavedMessages_Many
|
||||||
|
savedMessages = true
|
||||||
|
} else {
|
||||||
|
if peers.count == 1, let peer = peers.first {
|
||||||
|
let peerName = peer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
|
text = messages.count == 1 ? presentationData.strings.Conversation_ForwardTooltip_Chat_One(peerName).0 : presentationData.strings.Conversation_ForwardTooltip_Chat_Many(peerName).0
|
||||||
|
} else if peers.count == 2, let firstPeer = peers.first, let secondPeer = peers.last {
|
||||||
|
let firstPeerName = firstPeer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : firstPeer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
|
let secondPeerName = secondPeer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : secondPeer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
|
text = messages.count == 1 ? presentationData.strings.Conversation_ForwardTooltip_TwoChats_One(firstPeerName, secondPeerName).0 : presentationData.strings.Conversation_ForwardTooltip_TwoChats_Many(firstPeerName, secondPeerName).0
|
||||||
|
} else if let peer = peers.first {
|
||||||
|
let peerName = peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
|
text = messages.count == 1 ? presentationData.strings.Conversation_ForwardTooltip_ManyChats_One(peerName, "\(peers.count - 1)").0 : presentationData.strings.Conversation_ForwardTooltip_ManyChats_Many(peerName, "\(peers.count - 1)").0
|
||||||
|
} else {
|
||||||
|
text = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strongSelf.present(UndoOverlayController(presentationData: presentationData, content: .forward(savedMessages: savedMessages, text: text), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), in: .window(.root))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
strongSelf.chatDisplayNode.dismissInput()
|
strongSelf.chatDisplayNode.dismissInput()
|
||||||
strongSelf.present(shareController, in: .window(.root), blockInteraction: true)
|
strongSelf.present(shareController, in: .window(.root), blockInteraction: true)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user