Fix user suggest changes

This commit is contained in:
Isaac 2025-07-01 16:10:32 +02:00
parent c5f2953e90
commit 7b18685825
2 changed files with 56 additions and 19 deletions

View File

@ -14623,7 +14623,7 @@ Sorry for the inconvenience.";
"VoiceOver.SuggestPost" = "Suggest Post";
"Chat.ContextMenu.SuggestedPost.EditMessage" = "Edit Message";
"Chat.ContextMenu.SuggestedPost.EditPrice" = "Edit Prive";
"Chat.ContextMenu.SuggestedPost.EditPrice" = "Edit Price";
"Chat.ContextMenu.SuggestedPost.EditTime" = "Edit Time";
"Chat.ContextMenu.SuggestedPost.Create" = "Suggest Post";

View File

@ -989,27 +989,64 @@ extension ChatControllerImpl {
let subject: StarsWithdrawalScreenSubject
if postSuggestionState.editingOriginalMessageId != nil {
subject = .postSuggestionModification(current: postSuggestionState.price ?? CurrencyAmount(amount: .zero, currency: .stars), timestamp: postSuggestionState.timestamp, completion: { [weak self] price, timestamp in
guard let self else {
return
var isFromAdmin = false
if let channel = self.presentationInterfaceState.renderedPeer?.peer as? TelegramChannel, channel.isMonoForum {
if let linkedMonoforumId = channel.linkedMonoforumId, let mainChannel = self.presentationInterfaceState.renderedPeer?.peers[linkedMonoforumId] as? TelegramChannel, mainChannel.hasPermission(.manageDirect) {
isFromAdmin = true
}
let price: CurrencyAmount? = price.amount == .zero ? nil : price
self.updateChatPresentationInterfaceState(interactive: true, { state in
var state = state
state = state.updatedInterfaceState { interfaceState in
var interfaceState = interfaceState
interfaceState = interfaceState.withUpdatedPostSuggestionState(ChatInterfaceState.PostSuggestionState(
editingOriginalMessageId: interfaceState.postSuggestionState?.editingOriginalMessageId,
price: price,
timestamp: timestamp
))
return interfaceState
}
if isFromAdmin {
subject = .postSuggestionModification(current: postSuggestionState.price ?? CurrencyAmount(amount: .zero, currency: .stars), timestamp: postSuggestionState.timestamp, completion: { [weak self] price, timestamp in
guard let self else {
return
}
return state
let price: CurrencyAmount? = price.amount == .zero ? nil : price
self.updateChatPresentationInterfaceState(interactive: true, { state in
var state = state
state = state.updatedInterfaceState { interfaceState in
var interfaceState = interfaceState
interfaceState = interfaceState.withUpdatedPostSuggestionState(ChatInterfaceState.PostSuggestionState(
editingOriginalMessageId: interfaceState.postSuggestionState?.editingOriginalMessageId,
price: price,
timestamp: timestamp
))
return interfaceState
}
return state
})
})
})
} else {
subject = .postSuggestion(
channel: .channel(channel),
isFromAdmin: false,
current: postSuggestionState.price ?? CurrencyAmount(amount: .zero, currency: .stars),
timestamp: postSuggestionState.timestamp,
completion: { [weak self] price, timestamp in
guard let self else {
return
}
let price: CurrencyAmount? = price.amount == .zero ? nil : price
self.updateChatPresentationInterfaceState(interactive: true, { state in
var state = state
state = state.updatedInterfaceState { interfaceState in
var interfaceState = interfaceState
interfaceState = interfaceState.withUpdatedPostSuggestionState(ChatInterfaceState.PostSuggestionState(
editingOriginalMessageId: interfaceState.postSuggestionState?.editingOriginalMessageId,
price: price,
timestamp: timestamp
))
return interfaceState
}
return state
})
}
)
}
} else {
var isFromAdmin = false
if let channel = self.presentationInterfaceState.renderedPeer?.peer as? TelegramChannel, channel.isMonoForum {