Add invite link revoke toast

This commit is contained in:
Ilya Laktyushin 2021-02-17 16:12:09 +04:00
parent e739cd91ff
commit b738beaf55
10 changed files with 3572 additions and 3536 deletions

View File

@ -5933,6 +5933,8 @@ Sorry for the inconvenience.";
"InviteLink.InviteLinks_many" = "%@ invite links";
"InviteLink.InviteLinks_any" = "%@ invite links";
"InviteLink.InviteLinkRevoked" = "The invite link has been revoked.";
"Conversation.ChecksTooltip.Delivered" = "Delivered";
"Conversation.ChecksTooltip.Read" = "Read";

View File

@ -17,6 +17,7 @@ import PresentationDataUtils
import AppBundle
import ContextUI
import TelegramStringFormatting
import UndoUI
private final class InviteLinkEditControllerArguments {
let context: AccountContext
@ -397,6 +398,9 @@ public func inviteLinkEditController(context: AccountContext, peerId: PeerId, in
case let .replace(_, invitation):
completion?(invitation)
}
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .linkRevoked(text: presentationData.strings.InviteLink_InviteLinkRevoked), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
}, error: { _ in
updateState { state in
var updatedState = state

View File

@ -396,6 +396,9 @@ public final class InviteLinkInviteController: ViewController {
mainInvitePromise.set(invite)
}
})
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
self?.controller?.present(UndoOverlayController(presentationData: presentationData, content: .linkRevoked(text: presentationData.strings.InviteLink_InviteLinkRevoked), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), in: .window(.root))
}
})
]),

View File

@ -529,6 +529,9 @@ public func inviteLinkListController(context: AccountContext, peerId: PeerId, ad
invitesContext.add(newInvite)
}
}
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .linkRevoked(text: presentationData.strings.InviteLink_InviteLinkRevoked), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
}))
}
})
@ -688,6 +691,9 @@ public func inviteLinkListController(context: AccountContext, peerId: PeerId, ad
invitesContext.remove(invite)
revokedInvitesContext.add(invite.withUpdated(isRevoked: true))
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .linkRevoked(text: presentationData.strings.InviteLink_InviteLinkRevoked), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
})
]),
ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })])

View File

@ -541,6 +541,9 @@ public final class InviteLinkViewController: ViewController {
self?.controller?.invitationsContext?.remove(invite)
let revokedInvite = invite.withUpdated(isRevoked: true)
self?.controller?.revokedInvitationsContext?.add(revokedInvite)
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
self?.controller?.present(UndoOverlayController(presentationData: presentationData, content: .linkRevoked(text: presentationData.strings.InviteLink_InviteLinkRevoked), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), in: .window(.root))
})
]),
ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })])

File diff suppressed because one or more lines are too long

View File

@ -31,6 +31,7 @@ public enum UndoOverlayContent {
case forward(savedMessages: Bool, text: String)
case autoDelete(isOn: Bool, title: String?, text: String)
case gigagroupConversion(text: String)
case linkRevoked(text: String)
}
public enum UndoOverlayAction {

View File

@ -534,6 +534,21 @@ final class UndoOverlayControllerNode: ViewControllerTracingNode {
self.textNode.attributedText = attributedText
self.textNode.maximumNumberOfLines = 2
displayUndo = false
self.originalRemainingSeconds = 3
case let .linkRevoked(text):
self.avatarNode = nil
self.iconNode = nil
self.iconCheckNode = nil
self.animationNode = AnimationNode(animation: "anim_linkrevoked", colors: [:], scale: 0.066)
self.animatedStickerNode = nil
let body = MarkdownAttributeSet(font: Font.regular(14.0), textColor: .white)
let bold = MarkdownAttributeSet(font: Font.semibold(14.0), textColor: .white)
let attributedText = parseMarkdownIntoAttributedString(text, attributes: MarkdownAttributes(body: body, bold: bold, link: body, linkAttribute: { _ in return nil }), textAlignment: .natural)
self.textNode.attributedText = attributedText
self.textNode.maximumNumberOfLines = 2
displayUndo = false
self.originalRemainingSeconds = 3
}
@ -564,7 +579,7 @@ final class UndoOverlayControllerNode: ViewControllerTracingNode {
switch content {
case .removedChat:
self.panelWrapperNode.addSubnode(self.timerTextNode)
case .archivedChat, .hidArchive, .revealedArchive, .autoDelete, .succeed, .emoji, .swipeToReply, .actionSucceeded, .stickersModified, .chatAddedToFolder, .chatRemovedFromFolder, .messagesUnpinned, .setProximityAlert, .invitedToVoiceChat, .linkCopied, .banned, .importedMessage, .audioRate, .forward, .gigagroupConversion:
case .archivedChat, .hidArchive, .revealedArchive, .autoDelete, .succeed, .emoji, .swipeToReply, .actionSucceeded, .stickersModified, .chatAddedToFolder, .chatRemovedFromFolder, .messagesUnpinned, .setProximityAlert, .invitedToVoiceChat, .linkCopied, .banned, .importedMessage, .audioRate, .forward, .gigagroupConversion, .linkRevoked:
break
case .dice:
self.panelWrapperNode.clipsToBounds = true