mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Invite Links Fixes
This commit is contained in:
parent
415164748f
commit
e739cd91ff
@ -1252,6 +1252,8 @@ private final class TimePickerNode: ASDisplayNode {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.update()
|
||||||
}
|
}
|
||||||
|
|
||||||
override func didLoad() {
|
override func didLoad() {
|
||||||
|
@ -16,7 +16,7 @@ public final class TextFieldNodeView: UITextField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override public func placeholderRect(forBounds bounds: CGRect) -> CGRect {
|
override public func placeholderRect(forBounds bounds: CGRect) -> CGRect {
|
||||||
return self.editingRect(forBounds: bounds.offsetBy(dx: 0.0, dy: -1.0))
|
return self.editingRect(forBounds: bounds.offsetBy(dx: 0.0, dy: 0.0))
|
||||||
}
|
}
|
||||||
|
|
||||||
override public func deleteBackward() {
|
override public func deleteBackward() {
|
||||||
|
@ -422,6 +422,10 @@ public func inviteLinkListController(context: AccountContext, peerId: PeerId, ad
|
|||||||
|
|
||||||
let arguments = InviteLinkListControllerArguments(context: context, shareMainLink: { invite in
|
let arguments = InviteLinkListControllerArguments(context: context, shareMainLink: { invite in
|
||||||
let shareController = ShareController(context: context, subject: .url(invite.link))
|
let shareController = ShareController(context: context, subject: .url(invite.link))
|
||||||
|
shareController.actionCompleted = {
|
||||||
|
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.InviteLink_InviteLinkCopiedText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
|
||||||
|
}
|
||||||
presentControllerImpl?(shareController, nil)
|
presentControllerImpl?(shareController, nil)
|
||||||
}, openMainLink: { invite in
|
}, openMainLink: { invite in
|
||||||
let controller = InviteLinkViewController(context: context, peerId: peerId, invite: invite, invitationsContext: nil, revokedInvitationsContext: revokedInvitesContext, importersContext: nil)
|
let controller = InviteLinkViewController(context: context, peerId: peerId, invite: invite, invitationsContext: nil, revokedInvitationsContext: revokedInvitesContext, importersContext: nil)
|
||||||
@ -580,6 +584,10 @@ public func inviteLinkListController(context: AccountContext, peerId: PeerId, ad
|
|||||||
f(.default)
|
f(.default)
|
||||||
|
|
||||||
let shareController = ShareController(context: context, subject: .url(invite.link))
|
let shareController = ShareController(context: context, subject: .url(invite.link))
|
||||||
|
shareController.actionCompleted = {
|
||||||
|
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.InviteLink_InviteLinkCopiedText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
|
||||||
|
}
|
||||||
presentControllerImpl?(shareController, nil)
|
presentControllerImpl?(shareController, nil)
|
||||||
})))
|
})))
|
||||||
|
|
||||||
|
@ -435,6 +435,10 @@ public final class InviteLinkViewController: ViewController {
|
|||||||
self?.controller?.present(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.InviteLink_InviteLinkCopiedText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), in: .window(.root))
|
self?.controller?.present(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.InviteLink_InviteLinkCopiedText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), in: .window(.root))
|
||||||
}, shareLink: { [weak self] invite in
|
}, shareLink: { [weak self] invite in
|
||||||
let shareController = ShareController(context: context, subject: .url(invite.link))
|
let shareController = ShareController(context: context, subject: .url(invite.link))
|
||||||
|
shareController.actionCompleted = { [weak self] in
|
||||||
|
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
self?.controller?.present(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.InviteLink_InviteLinkCopiedText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), in: .window(.root))
|
||||||
|
}
|
||||||
self?.controller?.present(shareController, in: .window(.root))
|
self?.controller?.present(shareController, in: .window(.root))
|
||||||
}, editLink: { [weak self] invite in
|
}, editLink: { [weak self] invite in
|
||||||
self?.editButtonPressed()
|
self?.editButtonPressed()
|
||||||
|
@ -918,6 +918,10 @@ public func channelVisibilityController(context: AccountContext, peerId: PeerId,
|
|||||||
presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.InviteLink_InviteLinkCopiedText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
|
presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.InviteLink_InviteLinkCopiedText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
|
||||||
}, shareLink: { invite in
|
}, shareLink: { invite in
|
||||||
let shareController = ShareController(context: context, subject: .url(invite.link))
|
let shareController = ShareController(context: context, subject: .url(invite.link))
|
||||||
|
shareController.actionCompleted = {
|
||||||
|
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.InviteLink_InviteLinkCopiedText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
|
||||||
|
}
|
||||||
presentControllerImpl?(shareController, nil)
|
presentControllerImpl?(shareController, nil)
|
||||||
}, linkContextAction: { node in
|
}, linkContextAction: { node in
|
||||||
guard let node = node as? ContextExtractedContentContainingNode, let controller = getControllerImpl?() else {
|
guard let node = node as? ContextExtractedContentContainingNode, let controller = getControllerImpl?() else {
|
||||||
|
@ -304,6 +304,7 @@ public final class ShareController: ViewController {
|
|||||||
|
|
||||||
private var defaultAction: ShareControllerAction?
|
private var defaultAction: ShareControllerAction?
|
||||||
|
|
||||||
|
public var actionCompleted: (() -> Void)?
|
||||||
public var dismissed: ((Bool) -> Void)?
|
public var dismissed: ((Bool) -> Void)?
|
||||||
public var completed: (([PeerId]) -> Void)? {
|
public var completed: (([PeerId]) -> Void)? {
|
||||||
didSet {
|
didSet {
|
||||||
@ -346,6 +347,8 @@ public final class ShareController: ViewController {
|
|||||||
self.defaultAction = ShareControllerAction(title: forcedActionTitle ?? self.presentationData.strings.ShareMenu_CopyShareLink, action: { [weak self] in
|
self.defaultAction = ShareControllerAction(title: forcedActionTitle ?? self.presentationData.strings.ShareMenu_CopyShareLink, action: { [weak self] in
|
||||||
UIPasteboard.general.string = text
|
UIPasteboard.general.string = text
|
||||||
self?.controllerNode.cancel?()
|
self?.controllerNode.cancel?()
|
||||||
|
|
||||||
|
self?.actionCompleted?()
|
||||||
})
|
})
|
||||||
case .text:
|
case .text:
|
||||||
break
|
break
|
||||||
@ -355,6 +358,8 @@ public final class ShareController: ViewController {
|
|||||||
let url = "https://maps.apple.com/maps?ll=\(latLong)&q=\(latLong)&t=m"
|
let url = "https://maps.apple.com/maps?ll=\(latLong)&q=\(latLong)&t=m"
|
||||||
UIPasteboard.general.string = url
|
UIPasteboard.general.string = url
|
||||||
self?.controllerNode.cancel?()
|
self?.controllerNode.cancel?()
|
||||||
|
|
||||||
|
self?.actionCompleted?()
|
||||||
})
|
})
|
||||||
break
|
break
|
||||||
case .quote:
|
case .quote:
|
||||||
@ -363,6 +368,7 @@ public final class ShareController: ViewController {
|
|||||||
if case .saveToCameraRoll = preferredAction {
|
if case .saveToCameraRoll = preferredAction {
|
||||||
self.defaultAction = ShareControllerAction(title: self.presentationData.strings.Preview_SaveToCameraRoll, action: { [weak self] in
|
self.defaultAction = ShareControllerAction(title: self.presentationData.strings.Preview_SaveToCameraRoll, action: { [weak self] in
|
||||||
self?.saveToCameraRoll(representations: representations)
|
self?.saveToCameraRoll(representations: representations)
|
||||||
|
self?.actionCompleted?()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
case let .media(mediaReference):
|
case let .media(mediaReference):
|
||||||
@ -375,12 +381,14 @@ public final class ShareController: ViewController {
|
|||||||
if case .saveToCameraRoll = preferredAction, canSave {
|
if case .saveToCameraRoll = preferredAction, canSave {
|
||||||
self.defaultAction = ShareControllerAction(title: self.presentationData.strings.Preview_SaveToCameraRoll, action: { [weak self] in
|
self.defaultAction = ShareControllerAction(title: self.presentationData.strings.Preview_SaveToCameraRoll, action: { [weak self] in
|
||||||
self?.saveToCameraRoll(mediaReference: mediaReference)
|
self?.saveToCameraRoll(mediaReference: mediaReference)
|
||||||
|
self?.actionCompleted?()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
case let .messages(messages):
|
case let .messages(messages):
|
||||||
if case .saveToCameraRoll = preferredAction {
|
if case .saveToCameraRoll = preferredAction {
|
||||||
self.defaultAction = ShareControllerAction(title: self.presentationData.strings.Preview_SaveToCameraRoll, action: { [weak self] in
|
self.defaultAction = ShareControllerAction(title: self.presentationData.strings.Preview_SaveToCameraRoll, action: { [weak self] in
|
||||||
self?.saveToCameraRoll(messages: messages)
|
self?.saveToCameraRoll(messages: messages)
|
||||||
|
self?.actionCompleted?()
|
||||||
})
|
})
|
||||||
} else if let message = messages.first {
|
} else if let message = messages.first {
|
||||||
let groupingKey: Int64? = message.groupingKey
|
let groupingKey: Int64? = message.groupingKey
|
||||||
@ -397,6 +405,7 @@ public final class ShareController: ViewController {
|
|||||||
self.defaultAction = ShareControllerAction(title: self.presentationData.strings.SharedMedia_ViewInChat, action: { [weak self] in
|
self.defaultAction = ShareControllerAction(title: self.presentationData.strings.SharedMedia_ViewInChat, action: { [weak self] in
|
||||||
self?.controllerNode.cancel?()
|
self?.controllerNode.cancel?()
|
||||||
showInChat(message)
|
showInChat(message)
|
||||||
|
self?.actionCompleted?()
|
||||||
})
|
})
|
||||||
} else if let chatPeer = message.peers[message.id.peerId] as? TelegramChannel, messages.count == 1 || sameGroupingKey {
|
} else if let chatPeer = message.peers[message.id.peerId] as? TelegramChannel, messages.count == 1 || sameGroupingKey {
|
||||||
if message.id.namespace == Namespaces.Message.Cloud {
|
if message.id.namespace == Namespaces.Message.Cloud {
|
||||||
@ -414,6 +423,7 @@ public final class ShareController: ViewController {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
strongSelf.controllerNode.cancel?()
|
strongSelf.controllerNode.cancel?()
|
||||||
|
strongSelf.actionCompleted?()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -426,6 +436,7 @@ public final class ShareController: ViewController {
|
|||||||
self.defaultAction = ShareControllerAction(title: action.title, action: { [weak self] in
|
self.defaultAction = ShareControllerAction(title: action.title, action: { [weak self] in
|
||||||
self?.controllerNode.cancel?()
|
self?.controllerNode.cancel?()
|
||||||
action.action()
|
action.action()
|
||||||
|
self?.actionCompleted?()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -599,6 +599,7 @@ public final class VoiceChatController: ViewController {
|
|||||||
private var didSetContentsReady: Bool = false
|
private var didSetContentsReady: Bool = false
|
||||||
private var didSetDataReady: Bool = false
|
private var didSetDataReady: Bool = false
|
||||||
|
|
||||||
|
private var peer: Peer?
|
||||||
private var currentTitle: String = ""
|
private var currentTitle: String = ""
|
||||||
private var currentSubtitle: String = ""
|
private var currentSubtitle: String = ""
|
||||||
private var currentCallMembers: ([GroupCallParticipantsContext.Participant], String?)?
|
private var currentCallMembers: ([GroupCallParticipantsContext.Participant], String?)?
|
||||||
@ -1298,6 +1299,7 @@ public final class VoiceChatController: ViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let peer = peerViewMainPeer(view) {
|
if let peer = peerViewMainPeer(view) {
|
||||||
|
strongSelf.peer = peer
|
||||||
strongSelf.currentTitle = peer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder)
|
strongSelf.currentTitle = peer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder)
|
||||||
}
|
}
|
||||||
if !strongSelf.didSetDataReady {
|
if !strongSelf.didSetDataReady {
|
||||||
@ -2466,8 +2468,17 @@ public final class VoiceChatController: ViewController {
|
|||||||
|
|
||||||
var processedPeerIds = Set<PeerId>()
|
var processedPeerIds = Set<PeerId>()
|
||||||
|
|
||||||
entries.append(.invite(self.presentationData.theme, self.presentationData.strings, self.presentationData.strings.VoiceChat_InviteMember))
|
var canInvite = true
|
||||||
|
if let peer = self.peer as? TelegramChannel, peer.flags.contains(.isGigagroup) {
|
||||||
|
if peer.flags.contains(.isCreator) || peer.adminRights != nil {
|
||||||
|
} else {
|
||||||
|
canInvite = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if canInvite {
|
||||||
|
entries.append(.invite(self.presentationData.theme, self.presentationData.strings, self.presentationData.strings.VoiceChat_InviteMember))
|
||||||
|
}
|
||||||
|
|
||||||
for member in callMembers.0 {
|
for member in callMembers.0 {
|
||||||
if processedPeerIds.contains(member.peer.id) {
|
if processedPeerIds.contains(member.peer.id) {
|
||||||
continue
|
continue
|
||||||
|
@ -55,6 +55,13 @@ private func canEditMessage(accountPeerId: PeerId, limitsConfiguration: LimitsCo
|
|||||||
} else if let author = message.author, author.id == accountPeerId, let peer = message.peers[message.id.peerId] {
|
} else if let author = message.author, author.id == accountPeerId, let peer = message.peers[message.id.peerId] {
|
||||||
hasEditRights = true
|
hasEditRights = true
|
||||||
if let peer = peer as? TelegramChannel {
|
if let peer = peer as? TelegramChannel {
|
||||||
|
if peer.flags.contains(.isGigagroup) {
|
||||||
|
if peer.flags.contains(.isCreator) || peer.adminRights != nil {
|
||||||
|
hasEditRights = true
|
||||||
|
} else {
|
||||||
|
hasEditRights = false
|
||||||
|
}
|
||||||
|
}
|
||||||
switch peer.info {
|
switch peer.info {
|
||||||
case .broadcast:
|
case .broadcast:
|
||||||
if peer.hasPermission(.editAllMessages) || !message.flags.contains(.Incoming) {
|
if peer.hasPermission(.editAllMessages) || !message.flags.contains(.Incoming) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user