Skip to content

Commit 251e1ec

Browse files
author
Isaac
committed
Merge commit '79f621390eeea2e1f15792627bd4d499d20292a9' into beta
2 parents 8dd98a0 + 79f6213 commit 251e1ec

File tree

4 files changed

+44
-12
lines changed

4 files changed

+44
-12
lines changed

‎submodules/TelegramCore/Sources/PendingMessages/EnqueueMessage.swift

+21-1
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,19 @@ public func resendMessages(account: Account, messageIds: [MessageId]) -> Signal<
404404
return account.postbox.transaction { transaction -> Void in
405405
var removeMessageIds: [MessageId] = []
406406
for (peerId, ids) in messagesIdsGroupedByPeerId(messageIds) {
407+
var sendPaidMessageStars: StarsAmount?
408+
let peer = transaction.getPeer(peerId)
409+
if let user = peer as? TelegramUser, user.flags.contains(.requireStars) {
410+
if let cachedUserData = transaction.getPeerCachedData(peerId: user.id) as? CachedUserData {
411+
sendPaidMessageStars = cachedUserData.sendPaidMessageStars
412+
}
413+
} else if let channel = peer as? TelegramChannel {
414+
if channel.flags.contains(.isCreator) || channel.adminRights != nil {
415+
} else {
416+
sendPaidMessageStars = channel.sendPaidMessageStars
417+
}
418+
}
419+
407420
var messages: [EnqueueMessage] = []
408421
for id in ids {
409422
if let message = transaction.getMessage(id), !message.flags.contains(.Incoming) {
@@ -425,9 +438,16 @@ public func resendMessages(account: Account, messageIds: [MessageId]) -> Signal<
425438
} else if let attribute = attribute as? ForwardSourceInfoAttribute {
426439
forwardSource = attribute.messageId
427440
} else {
428-
filteredAttributes.append(attribute)
441+
if attribute is PaidStarsMessageAttribute {
442+
} else {
443+
filteredAttributes.append(attribute)
444+
}
429445
}
430446
}
447+
448+
if let sendPaidMessageStars {
449+
filteredAttributes.append(PaidStarsMessageAttribute(stars: sendPaidMessageStars, postponeSending: false))
450+
}
431451

432452
if let forwardSource = forwardSource {
433453
messages.append(.forward(source: forwardSource, threadId: nil, grouping: .auto, attributes: filteredAttributes, correlationId: nil))

‎submodules/TelegramUI/Components/Chat/ChatUserInfoItem/Sources/ChatUserInfoItem.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,10 @@ public final class ChatUserInfoItemNode: ListViewItemNode, ASGestureRecognizerDe
311311
} else {
312312
var countryName = ""
313313
let countriesConfiguration = item.context.currentCountriesConfiguration.with { $0 }
314-
if let country = countriesConfiguration.countries.first(where: { $0.id == phoneCountry }) {
315-
countryName = country.localizedName ?? country.name
316-
} else if phoneCountry == "FT" {
314+
if phoneCountry == "FT" {
317315
countryName = item.presentationData.strings.Chat_NonContactUser_AnonymousNumber
316+
} else if let country = countriesConfiguration.countries.first(where: { $0.id == phoneCountry }) {
317+
countryName = country.localizedName ?? country.name
318318
} else if phoneCountry == "TS" {
319319
countryName = "Test"
320320
}

‎submodules/TelegramUI/Sources/Chat/ChatControllerPaidMessage.swift

+4-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import TelegramPresentationData
1515
import TelegramNotices
1616

1717
extension ChatControllerImpl {
18-
func presentPaidMessageAlertIfNeeded(count: Int32 = 1, forceDark: Bool = false, completion: @escaping (Bool) -> Void) {
18+
func presentPaidMessageAlertIfNeeded(count: Int32 = 1, forceDark: Bool = false, alwaysAsk: Bool = false, completion: @escaping (Bool) -> Void) {
1919
guard let peer = self.presentationInterfaceState.renderedPeer?.peer.flatMap(EnginePeer.init) else {
2020
completion(false)
2121
return
@@ -24,11 +24,12 @@ extension ChatControllerImpl {
2424
let totalAmount = sendPaidMessageStars.value * Int64(count)
2525

2626
let _ = (ApplicationSpecificNotice.dismissedPaidMessageWarningNamespace(accountManager: self.context.sharedContext.accountManager, peerId: peer.id)
27+
|> take(1)
2728
|> deliverOnMainQueue).start(next: { [weak self] dismissedAmount in
2829
guard let self, let starsContext = self.context.starsContext else {
2930
return
3031
}
31-
if let dismissedAmount, dismissedAmount == sendPaidMessageStars.value, let currentState = starsContext.currentState, currentState.balance.value > totalAmount {
32+
if !alwaysAsk, let dismissedAmount, dismissedAmount == sendPaidMessageStars.value, let currentState = starsContext.currentState, currentState.balance.value > totalAmount {
3233
if count < 3 && totalAmount < 100 {
3334
completion(false)
3435
} else {
@@ -52,6 +53,7 @@ extension ChatControllerImpl {
5253
count: count,
5354
amount: sendPaidMessageStars,
5455
totalAmount: nil,
56+
hasCheck: !alwaysAsk,
5557
navigationController: self.navigationController as? NavigationController,
5658
completion: { [weak self] dontAskAgain in
5759
guard let self else {

‎submodules/TelegramUI/Sources/ChatController.swift

+16-6
Original file line numberDiff line numberDiff line change
@@ -3140,19 +3140,29 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
31403140
actions.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.Conversation_MessageDialogRetry, icon: { theme in
31413141
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Resend"), color: theme.actionSheet.primaryTextColor)
31423142
}, action: { [weak self] _, f in
3143-
if let strongSelf = self {
3144-
let _ = resendMessages(account: strongSelf.context.account, messageIds: selectedGroup.map({ $0.id })).startStandalone()
3143+
if let self {
3144+
self.presentPaidMessageAlertIfNeeded(count: Int32(selectedGroup.count), alwaysAsk: true, completion: { [weak self] _ in
3145+
guard let self else {
3146+
return
3147+
}
3148+
let _ = resendMessages(account: self.context.account, messageIds: selectedGroup.map({ $0.id })).startStandalone()
3149+
})
3150+
f(self.presentationInterfaceState.sendPaidMessageStars == nil ? .dismissWithoutContent : .default)
31453151
}
3146-
f(.dismissWithoutContent)
31473152
})))
31483153
if totalGroupCount != 1 {
31493154
actions.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.Conversation_MessageDialogRetryAll(totalGroupCount).string, icon: { theme in
31503155
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Resend"), color: theme.actionSheet.primaryTextColor)
31513156
}, action: { [weak self] _, f in
3152-
if let strongSelf = self {
3153-
let _ = resendMessages(account: strongSelf.context.account, messageIds: messages.map({ $0.id })).startStandalone()
3157+
if let self {
3158+
self.presentPaidMessageAlertIfNeeded(count: Int32(messages.count), alwaysAsk: true, completion: { [weak self] _ in
3159+
guard let self else {
3160+
return
3161+
}
3162+
let _ = resendMessages(account: self.context.account, messageIds: messages.map({ $0.id })).startStandalone()
3163+
})
3164+
f(self.presentationInterfaceState.sendPaidMessageStars == nil ? .dismissWithoutContent : .default)
31543165
}
3155-
f(.dismissWithoutContent)
31563166
})))
31573167
}
31583168
actions.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.Conversation_ContextMenuDelete, textColor: .destructive, icon: { theme in

0 commit comments

Comments
 (0)