Skip to content

Commit cb0b8c0

Browse files
committed
Various improvements
1 parent 4aeab37 commit cb0b8c0

File tree

63 files changed

+2413
-553
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+2413
-553
lines changed

Telegram/Telegram-iOS/en.lproj/Localizable.strings

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13875,6 +13875,22 @@ Sorry for the inconvenience.";
1387513875

1387613876
"Chat.PanelCustomStatusShortInfo" = "%@ is a mark for [Premium subscribers >]()";
1387713877

13878+
"Chat.NonContactUser.Subtitle" = "Not a contact";
13879+
"Chat.NonContactUser.PhoneNumber" = "Phone Number";
13880+
"Chat.NonContactUser.Registration" = "Registration";
13881+
"Chat.NonContactUser.Groups" = "Shared Groups";
13882+
"Chat.NonContactUser.GroupsCount_1" = "%@ group";
13883+
"Chat.NonContactUser.GroupsCount_any" = "%@ groups";
13884+
"Chat.NonContactUser.GroupsNone" = "None";
13885+
"Chat.NonContactUser.Disclaimer" = "Not an official account";
13886+
"Chat.NonContactUser.AnonymousNumber" = "Anonymous";
13887+
13888+
"Chat.NonContactUser.UpdatedName" = "User updated name %2$@";
13889+
"Chat.NonContactUser.UpdatedPhoto" = "User updated photo %2$@";
13890+
"Chat.NonContactUser.UpdatedToday" = "today";
13891+
"Chat.NonContactUser.UpdatedDays_1" = "%@ day ago";
13892+
"Chat.NonContactUser.UpdatedDays_any" = "%@ days ago";
13893+
1387813894
"Chat.InputTextPaidMessagePlaceholder" = "Message for %@";
1387913895

1388013896
"Privacy.Messages.Stars_1" = "%@ Star";
@@ -13884,3 +13900,36 @@ Sorry for the inconvenience.";
1388413900
"Premium.PaidMessages" = "Paid Messages";
1388513901
"Premium.PaidMessagesInfo" = "Charge a fee for messages from non-contacts or new senders.";
1388613902
"Premium.PaidMessages.Proceed" = "About Telegram Premium";
13903+
13904+
"PeerInfo.Gifts.Reorder" = "Reorder";
13905+
"PeerInfo.Gifts.Context.Pin" = "Pin";
13906+
"PeerInfo.Gifts.Context.Unpin" = "Unpin";
13907+
"PeerInfo.Gifts.Context.Reorder" = "Reorder";
13908+
"PeerInfo.Gifts.Context.Wear" = "Wear";
13909+
"PeerInfo.Gifts.Context.CopyLink" = "Copy Link";
13910+
"PeerInfo.Gifts.Context.Share" = "Share";
13911+
"PeerInfo.Gifts.Context.Hide" = "Hide";
13912+
"PeerInfo.Gifts.Context.Show" = "Show";
13913+
"PeerInfo.Gifts.Context.Transfer" = "Transfer";
13914+
13915+
"Gift.Send.Premium.Confirmation.Title" = "Send a Gift";
13916+
"Gift.Send.Premium.Confirmation.Text" = "Are you sure you want to gift **Telegram Premium** to **%1$@** for **%2$@**?";
13917+
"Gift.Send.Premium.Confirmation.Text.Stars_1" = "%@ Star";
13918+
"Gift.Send.Premium.Confirmation.Text.Stars_any" = "%@ Stars";
13919+
"Gift.Send.Premium.Confirmation.Confirm" = "Confirm";
13920+
13921+
"StarsBalance.YourBalance" = "Your balance is %@";
13922+
"StarsBalance.GetMoreStars" = "Get More Stars >";
13923+
13924+
"Stars.Intro.BuyShort" = "Top Up";
13925+
"Stars.Intro.Withdraw" = "Withdraw";
13926+
13927+
"Group.Info.Settings" = "Group Settings";
13928+
13929+
"Monetization.Balance.StarsInfoGroup" = "You can collect rewards for Stars using Fragment. You cannot withdraw less than 1000 stars. [Learn More >]()";
13930+
13931+
"PeerInfo.Gifts.ToastPinLimit.Text_1" = "You can't pin more than %@ gift.";
13932+
"PeerInfo.Gifts.ToastPinLimit.Text_any" = "You can't pin more than %@ gifts.";
13933+
"PeerInfo.Gifts.ToastUnpinned.Text" = "Gift Unpinned.";
13934+
"PeerInfo.Gifts.ToastPinned.Title" = "Gift Pinned";
13935+
"PeerInfo.Gifts.ToastPinned.Text" = "Now it will always be shown on the top.";

submodules/AccountContext/Sources/AccountContext.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,7 @@ public enum PeerInfoControllerMode {
593593
case myProfile
594594
case gifts
595595
case myProfileGifts
596+
case groupsInCommon
596597
}
597598

598599
public enum ContactListActionItemInlineIconPosition {
@@ -1100,6 +1101,7 @@ public protocol SharedAccountContext: AnyObject {
11001101
func makeStarsStatisticsScreen(context: AccountContext, peerId: EnginePeer.Id, revenueContext: StarsRevenueStatsContext) -> ViewController
11011102
func makeStarsAmountScreen(context: AccountContext, initialValue: Int64?, completion: @escaping (Int64) -> Void) -> ViewController
11021103
func makeStarsWithdrawalScreen(context: AccountContext, stats: StarsRevenueStats, completion: @escaping (Int64) -> Void) -> ViewController
1104+
func makeStarsWithdrawalScreen(context: AccountContext, completion: @escaping (Int64) -> Void) -> ViewController
11031105
func makeStarsGiftScreen(context: AccountContext, message: EngineMessage) -> ViewController
11041106
func makeStarsGiveawayBoostScreen(context: AccountContext, peerId: EnginePeer.Id, boost: ChannelBoostersContext.State.Boost) -> ViewController
11051107
func makeStarsIntroScreen(context: AccountContext) -> ViewController

submodules/AccountContext/Sources/ChatController.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,12 @@ public struct ChatControllerInitialBotAppStart {
314314
public enum ChatControllerInteractionNavigateToPeer {
315315
public struct InfoParams {
316316
public let switchToRecommendedChannels: Bool
317+
public let switchToGroupsInCommon: Bool
317318
public let ignoreInSavedMessages: Bool
318319

319-
public init(switchToRecommendedChannels: Bool = false, ignoreInSavedMessages: Bool = false) {
320+
public init(switchToRecommendedChannels: Bool = false, switchToGroupsInCommon: Bool = false, ignoreInSavedMessages: Bool = false) {
320321
self.switchToRecommendedChannels = switchToRecommendedChannels
322+
self.switchToGroupsInCommon = switchToGroupsInCommon
321323
self.ignoreInSavedMessages = ignoreInSavedMessages
322324
}
323325
}

submodules/CountrySelectionUI/Sources/CountryList.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public func emojiFlagForISOCountryCode(_ countryCode: String) -> String {
1313
return "🛰️"
1414
} else if countryCode == "XV" {
1515
return "🌍"
16+
} else if countryCode == "TS" {
17+
return "🏳️"
1618
}
1719

1820
if ["YL"].contains(countryCode) {

submodules/MediaPickerUI/Sources/MediaPickerScreen.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2376,7 +2376,6 @@ public final class MediaPickerScreenImpl: ViewController, MediaPickerScreen, Att
23762376
transition.updateTransformScale(node: self.moreButtonNode.iconNode, scale: moreIsVisible ? 1.0 : 0.1)
23772377

23782378
//if self. {
2379-
//TODO:localize
23802379
//self.mainButtonStatePromise.set(.single(AttachmentMainButtonState(text: "Add", badge: "\(count)", font: .bold, background: .color(self.presentationData.theme.actionSheet.controlAccentColor), textColor: self.presentationData.theme.list.itemCheckColors.foregroundColor, isVisible: count > 0, progress: .none, isEnabled: true, hasShimmer: false)))
23812380
//}
23822381
}

submodules/PremiumUI/Sources/PremiumDemoScreen.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1302,7 +1302,6 @@ private final class DemoSheetContent: CombinedComponent {
13021302
buttonAnimationName = "premium_unlock"
13031303
case .paidMessages:
13041304
buttonText = strings.Premium_PaidMessages_Proceed
1305-
buttonAnimationName = "premium_unlock"
13061305
default:
13071306
buttonText = strings.Common_OK
13081307
}

submodules/StatisticsUI/Sources/ChannelStatsController.swift

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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 {

submodules/StatisticsUI/Sources/StarsTransactionItem.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,10 @@ final class StarsTransactionItemNode: ListViewItemNode, ItemListItemNode {
231231
var itemDate: String
232232
switch item.transaction.peer {
233233
case let .peer(peer):
234-
if !item.transaction.media.isEmpty {
234+
if item.transaction.flags.contains(.isPaidMessage) {
235+
itemTitle = peer.displayTitle(strings: item.presentationData.strings, displayOrder: .firstLast)
236+
itemSubtitle = item.presentationData.strings.Stars_Intro_Transaction_PaidMessage(item.transaction.paidMessageCount ?? 1)
237+
} else if !item.transaction.media.isEmpty {
235238
itemTitle = item.presentationData.strings.Stars_Intro_Transaction_MediaPurchase
236239
itemSubtitle = peer.displayTitle(strings: item.presentationData.strings, displayOrder: .firstLast)
237240
} else if let title = item.transaction.title {

submodules/TelegramApi/Sources/Api0.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
734734
dict[-901375139] = { return Api.PeerLocated.parse_peerLocated($0) }
735735
dict[-118740917] = { return Api.PeerLocated.parse_peerSelfLocated($0) }
736736
dict[-1721619444] = { return Api.PeerNotifySettings.parse_peerNotifySettings($0) }
737-
dict[227293676] = { return Api.PeerSettings.parse_peerSettings($0) }
737+
dict[-193510921] = { return Api.PeerSettings.parse_peerSettings($0) }
738738
dict[-1707742823] = { return Api.PeerStories.parse_peerStories($0) }
739739
dict[1000707084] = { return Api.PhoneCall.parse_phoneCall($0) }
740740
dict[587035009] = { return Api.PhoneCall.parse_phoneCallAccepted($0) }
@@ -1390,7 +1390,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
13901390
dict[1314881805] = { return Api.payments.PaymentResult.parse_paymentResult($0) }
13911391
dict[-666824391] = { return Api.payments.PaymentResult.parse_paymentVerificationNeeded($0) }
13921392
dict[-74456004] = { return Api.payments.SavedInfo.parse_savedInfo($0) }
1393-
dict[-418915641] = { return Api.payments.SavedStarGifts.parse_savedStarGifts($0) }
1393+
dict[-1779201615] = { return Api.payments.SavedStarGifts.parse_savedStarGifts($0) }
13941394
dict[377215243] = { return Api.payments.StarGiftUpgradePreview.parse_starGiftUpgradePreview($0) }
13951395
dict[-2069218660] = { return Api.payments.StarGiftWithdrawalUrl.parse_starGiftWithdrawalUrl($0) }
13961396
dict[-1877571094] = { return Api.payments.StarGifts.parse_starGifts($0) }

0 commit comments

Comments
 (0)