@@ -1565,7 +1565,7 @@ private func monetizationEntries(
15651565 presentationData: PresentationData ,
15661566 state: ChannelStatsControllerState ,
15671567 peer: EnginePeer ? ,
1568- data: RevenueStats ,
1568+ data: RevenueStats ? ,
15691569 boostData: ChannelBoostStatus ? ,
15701570 transactionsInfo: RevenueStatsTransactionsContext . State ,
15711571 starsData: StarsRevenueStats ? ,
@@ -1584,7 +1584,7 @@ private func monetizationEntries(
15841584 isBot = true
15851585 }
15861586
1587- if canViewRevenue {
1587+ if canViewRevenue, let data {
15881588 entries. append ( . adsHeader( presentationData. theme, isBot ? presentationData. strings. Monetization_Bot_Header : presentationData. strings. Monetization_Header) )
15891589
15901590 if !data. topHoursGraph. isEmpty {
@@ -1608,7 +1608,7 @@ private func monetizationEntries(
16081608 entries. append ( . adsProceedsTitle( presentationData. theme, presentationData. strings. Monetization_StarsProceeds_Title) )
16091609 entries. append ( . adsProceedsOverview( presentationData. theme, canViewRevenue ? data : nil , canViewStarsRevenue ? starsData : nil ) )
16101610
1611- let hasTonBalance = data. balances. overallRevenue > 0
1611+ let hasTonBalance = ( data? . balances. overallRevenue ?? 0 ) > 0
16121612 let hasStarsBalance = ( starsData? . balances. overallRevenue ?? StarsAmount . zero) > StarsAmount . zero
16131613
16141614 let proceedsInfo : String
@@ -1622,11 +1622,15 @@ private func monetizationEntries(
16221622 entries. append ( . adsProceedsInfo( presentationData. theme, proceedsInfo) )
16231623
16241624 var isCreator = false
1625+ var isGroup = false
16251626 if let peer, case let . channel( channel) = peer, channel. flags. contains ( . isCreator) {
16261627 isCreator = true
1628+ if case . group = channel. info {
1629+ isGroup = true
1630+ }
16271631 }
16281632
1629- if canViewRevenue {
1633+ if canViewRevenue, let data {
16301634 entries. append ( . adsTonBalanceTitle( presentationData. theme, isBot ? presentationData. strings. Monetization_Bot_BalanceTitle : presentationData. strings. Monetization_TonBalanceTitle) )
16311635 entries. append ( . adsTonBalance( presentationData. theme, data, ( isCreator || isBot) && data. balances. availableBalance > 0 , data. balances. withdrawEnabled) )
16321636
@@ -1643,12 +1647,14 @@ private func monetizationEntries(
16431647 }
16441648 }
16451649
1646- if canViewStarsRevenue {
1647- if let starsData, starsData. balances. overallRevenue > StarsAmount . zero {
1648- entries. append ( . adsStarsBalanceTitle( presentationData. theme, presentationData. strings. Monetization_StarsBalanceTitle) )
1649- entries. append ( . adsStarsBalance( presentationData. theme, starsData, isCreator && starsData. balances. availableBalance > StarsAmount . zero, starsData. balances. withdrawEnabled, starsData. balances. nextWithdrawalTimestamp) )
1650- entries. append ( . adsStarsBalanceInfo( presentationData. theme, presentationData. strings. Monetization_Balance_StarsInfo) )
1651- }
1650+ if canViewStarsRevenue, let starsData, starsData. balances. overallRevenue > StarsAmount . zero {
1651+ entries. append ( . adsStarsBalanceTitle( presentationData. theme, presentationData. strings. Monetization_StarsBalanceTitle) )
1652+ entries. append ( . adsStarsBalance( presentationData. theme, starsData, isCreator && starsData. balances. availableBalance > StarsAmount . zero, starsData. balances. withdrawEnabled, starsData. balances. nextWithdrawalTimestamp) )
1653+ entries. append ( . adsStarsBalanceInfo( presentationData. theme, isGroup ? presentationData. strings. Monetization_Balance_StarsInfoGroup : presentationData. strings. Monetization_Balance_StarsInfo) )
1654+ }
1655+
1656+ if canJoinRefPrograms && !isGroup {
1657+ entries. append ( . earnStarsInfo)
16521658 }
16531659
16541660 var addedTransactionsTabs = false
@@ -1666,7 +1672,7 @@ private func monetizationEntries(
16661672 if canViewStarsRevenue && !starsTransactionsInfo. transactions. isEmpty && ( transactionsInfo. transactions. isEmpty || state. starsSelected) {
16671673 displayStarsTransactions = true
16681674 }
1669-
1675+
16701676 if displayTonTransactions {
16711677 if !addedTransactionsTabs {
16721678 entries. append ( . adsTransactionsTitle( presentationData. theme, isBot ? presentationData. strings. Monetization_TransactionsTitle. uppercased ( ) : presentationData. strings. Monetization_TonTransactions. uppercased ( ) ) )
@@ -1700,11 +1706,7 @@ private func monetizationEntries(
17001706
17011707 if displayStarsTransactions {
17021708 if !addedTransactionsTabs {
1703- if canJoinRefPrograms {
1704- entries. append ( . earnStarsInfo)
1705- }
1706-
1707- entries. append ( . adsTransactionsTitle( presentationData. theme, presentationData. strings. Monetization_StarsTransactions. uppercased ( ) ) )
1709+ entries. append ( . adsTransactionsTitle( presentationData. theme, isGroup ? presentationData. strings. Monetization_TransactionsTitle. uppercased ( ) : presentationData. strings. Monetization_StarsTransactions. uppercased ( ) ) )
17081710 }
17091711
17101712 var transactions = starsTransactionsInfo. transactions
@@ -1733,7 +1735,7 @@ private func monetizationEntries(
17331735 }
17341736 }
17351737
1736- if isCreator && canViewRevenue {
1738+ if isCreator && canViewRevenue && !isGroup {
17371739 var switchOffAdds : Bool ? = nil
17381740 if let boostData, boostData. level >= premiumConfiguration. minChannelRestrictAdsLevel {
17391741 switchOffAdds = adsRestricted
@@ -1797,7 +1799,7 @@ private func channelStatsControllerEntries(
17971799 )
17981800 }
17991801 case . monetization:
1800- if let revenueState {
1802+ if revenueState != nil || starsState != nil {
18011803 return monetizationEntries (
18021804 presentationData: presentationData,
18031805 state: state,
@@ -1825,6 +1827,7 @@ public func channelStatsController(
18251827 peerId: PeerId ,
18261828 section: ChannelStatsSection = . stats,
18271829 existingRevenueContext: RevenueStatsContext ? = nil ,
1830+ existingStarsRevenueContext: StarsRevenueStatsContext ? = nil ,
18281831 boostStatus: ChannelBoostStatus ? = nil ,
18291832 boostStatusUpdated: ( ( ChannelBoostStatus ) -> Void ) ? = nil
18301833) -> ViewController {
@@ -1888,7 +1891,7 @@ public func channelStatsController(
18881891 let revenueState = Promise < RevenueStatsContextState ? > ( )
18891892 revenueState. set ( . single( nil ) |> then ( revenueContext. state |> map ( Optional . init) ) )
18901893
1891- let starsContext = context. engine. payments. peerStarsRevenueContext ( peerId: peerId)
1894+ let starsContext = existingStarsRevenueContext ?? context. engine. payments. peerStarsRevenueContext ( peerId: peerId)
18921895 let starsState = Promise < StarsRevenueStatsContextState ? > ( )
18931896 starsState. set ( . single( nil ) |> then ( starsContext. state |> map ( Optional . init) ) )
18941897
@@ -2157,8 +2160,9 @@ public func channelStatsController(
21572160 )
21582161 |> deliverOnMainQueue
21592162 |> map { presentationData, state, peer, data, messageView, stories, boostData, boostersState, giftsState, revenueState, revenueTransactions, starsState, starsTransactions, peerData, longLoading -> ( ItemListControllerState , ( ItemListNodeState , Any ) ) in
2160- let ( canViewStats, adsRestricted, _, canViewStarsRevenue ) = peerData
2163+ let ( canViewStats, adsRestricted, _, _ ) = peerData
21612164 var canViewRevenue = peerData. 2
2165+ var canViewStarsRevenue = peerData. 3
21622166
21632167 var canJoinRefPrograms = false
21642168 if let data = context. currentAppConfiguration. with ( { $0 } ) . data, let value = data [ " starref_connect_allowed " ] {
@@ -2192,7 +2196,7 @@ public func channelStatsController(
21922196 emptyStateItem = ItemListLoadingIndicatorEmptyStateItem ( theme: presentationData. theme)
21932197 }
21942198 case . monetization:
2195- if revenueState? . stats == nil {
2199+ if revenueState? . stats == nil && starsState ? . stats == nil {
21962200 emptyStateItem = ItemListLoadingIndicatorEmptyStateItem ( theme: presentationData. theme)
21972201 }
21982202 }
@@ -2222,7 +2226,10 @@ public func channelStatsController(
22222226 var headerItem : BoostHeaderItem ?
22232227 var leftNavigationButton : ItemListNavigationButton ?
22242228 var boostsOnly = false
2225- if existingRevenueContext != nil {
2229+ if existingStarsRevenueContext != nil {
2230+ title = . text( presentationData. strings. Stats_Monetization)
2231+ canViewStarsRevenue = true
2232+ } else if existingRevenueContext != nil {
22262233 title = . text( presentationData. strings. Stats_TonBotRevenue_Title)
22272234 canViewRevenue = true
22282235 } else if section == . boosts {
0 commit comments