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"; "VoiceOver.SuggestPost" = "Suggest Post";
"Chat.ContextMenu.SuggestedPost.EditMessage" = "Edit Message"; "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.EditTime" = "Edit Time";
"Chat.ContextMenu.SuggestedPost.Create" = "Suggest Post"; "Chat.ContextMenu.SuggestedPost.Create" = "Suggest Post";

View File

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