diff --git a/submodules/PremiumUI/Sources/PremiumBoostLevelsScreen.swift b/submodules/PremiumUI/Sources/PremiumBoostLevelsScreen.swift index 9102055055..82569555ae 100644 --- a/submodules/PremiumUI/Sources/PremiumBoostLevelsScreen.swift +++ b/submodules/PremiumUI/Sources/PremiumBoostLevelsScreen.swift @@ -2234,12 +2234,12 @@ public class PremiumBoostLevelsScreen: ViewController { self.myBoostCount += 1 let _ = (context.engine.peers.applyChannelBoost(peerId: peerId, slots: [availableBoost.slot]) - |> deliverOnMainQueue).startStandalone(completed: { [weak self] in + |> deliverOnMainQueue).startStandalone(next: { [weak self] myBoostStatus in self?.updatedState.set(context.engine.peers.getChannelBoostStatus(peerId: peerId) - |> beforeNext { [weak self] status in - if let self, let status { + |> beforeNext { [weak self] boostStatus in + if let self, let boostStatus, let myBoostStatus { Queue.mainQueue().async { - self.controller?.boostStatusUpdated(status) + self.controller?.boostStatusUpdated(boostStatus, myBoostStatus) } } } @@ -2293,8 +2293,8 @@ public class PremiumBoostLevelsScreen: ViewController { ).startStandalone(next: { boostStatus, myBoostStatus in dismissReplaceImpl?() - if let boostStatus { - boostStatusUpdated(boostStatus) + if let boostStatus, let myBoostStatus { + boostStatusUpdated(boostStatus, myBoostStatus) } let levelsController = PremiumBoostLevelsScreen( @@ -2466,7 +2466,7 @@ public class PremiumBoostLevelsScreen: ViewController { private var currentLayout: ContainerViewLayout? - public var boostStatusUpdated: (ChannelBoostStatus) -> Void = { _ in } + public var boostStatusUpdated: (ChannelBoostStatus, MyBoostStatus) -> Void = { _, _ in } public var disposed: () -> Void = {} public init( diff --git a/submodules/StatisticsUI/Sources/ChannelStatsController.swift b/submodules/StatisticsUI/Sources/ChannelStatsController.swift index 2c8c6cd556..1e28116b26 100644 --- a/submodules/StatisticsUI/Sources/ChannelStatsController.swift +++ b/submodules/StatisticsUI/Sources/ChannelStatsController.swift @@ -1525,7 +1525,7 @@ public func channelStatsController(context: AccountContext, updatedPresentationD controller?.push(giveawayController) } ) - boostController.boostStatusUpdated = { boostStatus in + boostController.boostStatusUpdated = { boostStatus, _ in boostDataPromise.set(.single(boostStatus)) } controller?.push(boostController) diff --git a/submodules/TelegramUI/Components/Settings/PeerNameColorScreen/Sources/ChannelAppearanceScreen.swift b/submodules/TelegramUI/Components/Settings/PeerNameColorScreen/Sources/ChannelAppearanceScreen.swift index 44bf0809e3..5be45a1482 100644 --- a/submodules/TelegramUI/Components/Settings/PeerNameColorScreen/Sources/ChannelAppearanceScreen.swift +++ b/submodules/TelegramUI/Components/Settings/PeerNameColorScreen/Sources/ChannelAppearanceScreen.swift @@ -304,6 +304,7 @@ final class ChannelAppearanceScreenComponent: Component { private var premiumConfiguration: PremiumConfiguration? private var boostLevel: Int? private var boostStatus: ChannelBoostStatus? + private var myBoostStatus: MyBoostStatus? private var boostStatusDisposable: Disposable? private var isApplyingSettings: Bool = false @@ -656,6 +657,7 @@ final class ChannelAppearanceScreenComponent: Component { peerId: component.peerId, mode: .owner(subject: subject), status: status, + myBoostStatus: myBoostStatus, openStats: { [weak self] in guard let self else { return @@ -670,6 +672,14 @@ final class ChannelAppearanceScreenComponent: Component { self.environment?.controller()?.push(controller) } ) + controller.boostStatusUpdated = { [weak self] boostStatus, myBoostStatus in + if let self { + self.boostStatus = boostStatus + self.boostLevel = boostStatus.level + self.myBoostStatus = myBoostStatus + self.state?.updated(transition: .immediate) + } + } self.environment?.controller()?.push(controller) HapticFeedback().impact(.light) @@ -924,13 +934,16 @@ final class ChannelAppearanceScreenComponent: Component { }) } if self.boostStatusDisposable == nil { - self.boostStatusDisposable = (component.context.engine.peers.getChannelBoostStatus(peerId: component.peerId) - |> deliverOnMainQueue).start(next: { [weak self] boostStatus in + self.boostStatusDisposable = combineLatest(queue: Queue.mainQueue(), + component.context.engine.peers.getChannelBoostStatus(peerId: component.peerId), + component.context.engine.peers.getMyBoostStatus() + ).start(next: { [weak self] boostStatus, myBoostStatus in guard let self else { return } self.boostLevel = boostStatus?.level self.boostStatus = boostStatus + self.myBoostStatus = myBoostStatus if !self.isUpdating { self.state?.updated(transition: .immediate)