mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Add premium restore suggestion
This commit is contained in:
parent
c796128196
commit
79ca49b499
@ -9345,3 +9345,6 @@ Sorry for the inconvenience.";
|
|||||||
"Notification.LockScreenReactionPlaceholder" = "Reaction";
|
"Notification.LockScreenReactionPlaceholder" = "Reaction";
|
||||||
|
|
||||||
"UserInfo.BotNamePlaceholder" = "Bot Name";
|
"UserInfo.BotNamePlaceholder" = "Bot Name";
|
||||||
|
|
||||||
|
"ChatList.PremiumRestoreDiscountTitle" = "Get Premium back with up to %@ off";
|
||||||
|
"ChatList.PremiumRestoreDiscountText" = "Your Telegram Premium has recently expired. Tap here to extend it.";
|
||||||
|
@ -663,7 +663,7 @@ private func mappedInsertEntries(context: AccountContext, nodeInteraction: ChatL
|
|||||||
nodeInteraction?.openStorageManagement()
|
nodeInteraction?.openStorageManagement()
|
||||||
case .setupPassword:
|
case .setupPassword:
|
||||||
nodeInteraction?.openPasswordSetup()
|
nodeInteraction?.openPasswordSetup()
|
||||||
case .premiumUpgrade, .premiumAnnualDiscount:
|
case .premiumUpgrade, .premiumAnnualDiscount, .premiumRestore:
|
||||||
nodeInteraction?.openPremiumIntro()
|
nodeInteraction?.openPremiumIntro()
|
||||||
case .chatFolderUpdates:
|
case .chatFolderUpdates:
|
||||||
nodeInteraction?.openChatFolderUpdates()
|
nodeInteraction?.openChatFolderUpdates()
|
||||||
@ -964,7 +964,7 @@ private func mappedUpdateEntries(context: AccountContext, nodeInteraction: ChatL
|
|||||||
nodeInteraction?.openStorageManagement()
|
nodeInteraction?.openStorageManagement()
|
||||||
case .setupPassword:
|
case .setupPassword:
|
||||||
nodeInteraction?.openPasswordSetup()
|
nodeInteraction?.openPasswordSetup()
|
||||||
case .premiumUpgrade, .premiumAnnualDiscount:
|
case .premiumUpgrade, .premiumAnnualDiscount, .premiumRestore:
|
||||||
nodeInteraction?.openPremiumIntro()
|
nodeInteraction?.openPremiumIntro()
|
||||||
case .chatFolderUpdates:
|
case .chatFolderUpdates:
|
||||||
nodeInteraction?.openChatFolderUpdates()
|
nodeInteraction?.openChatFolderUpdates()
|
||||||
@ -1492,6 +1492,7 @@ public final class ChatListNode: ListView {
|
|||||||
if let self {
|
if let self {
|
||||||
let _ = dismissServerProvidedSuggestion(account: self.context.account, suggestion: .annualPremium).start()
|
let _ = dismissServerProvidedSuggestion(account: self.context.account, suggestion: .annualPremium).start()
|
||||||
let _ = dismissServerProvidedSuggestion(account: self.context.account, suggestion: .upgradePremium).start()
|
let _ = dismissServerProvidedSuggestion(account: self.context.account, suggestion: .upgradePremium).start()
|
||||||
|
let _ = dismissServerProvidedSuggestion(account: self.context.account, suggestion: .restorePremium).start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let controller = self.context.sharedContext.makePremiumIntroController(context: self.context, source: .ads)
|
let controller = self.context.sharedContext.makePremiumIntroController(context: self.context, source: .ads)
|
||||||
@ -1612,7 +1613,7 @@ public final class ChatListNode: ListView {
|
|||||||
return .single(.setupPassword)
|
return .single(.setupPassword)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if suggestions.contains(.annualPremium) || suggestions.contains(.upgradePremium), let inAppPurchaseManager = context.inAppPurchaseManager {
|
if suggestions.contains(.annualPremium) || suggestions.contains(.upgradePremium) || suggestions.contains(.restorePremium), let inAppPurchaseManager = context.inAppPurchaseManager {
|
||||||
return inAppPurchaseManager.availableProducts
|
return inAppPurchaseManager.availableProducts
|
||||||
|> map { products -> ChatListNotice? in
|
|> map { products -> ChatListNotice? in
|
||||||
if products.count > 1 {
|
if products.count > 1 {
|
||||||
@ -1627,7 +1628,9 @@ public final class ChatListNode: ListView {
|
|||||||
let fraction = Float(product.priceCurrencyAndAmount.amount) / Float(12) / Float(shortestOptionPrice.0)
|
let fraction = Float(product.priceCurrencyAndAmount.amount) / Float(12) / Float(shortestOptionPrice.0)
|
||||||
let discount = Int32(round((1.0 - fraction) * 20.0) * 5.0)
|
let discount = Int32(round((1.0 - fraction) * 20.0) * 5.0)
|
||||||
if discount > 0 {
|
if discount > 0 {
|
||||||
if suggestions.contains(.annualPremium) {
|
if suggestions.contains(.restorePremium) {
|
||||||
|
return .premiumRestore(discount: discount)
|
||||||
|
} else if suggestions.contains(.annualPremium) {
|
||||||
return .premiumAnnualDiscount(discount: discount)
|
return .premiumAnnualDiscount(discount: discount)
|
||||||
} else if suggestions.contains(.upgradePremium) {
|
} else if suggestions.contains(.upgradePremium) {
|
||||||
return .premiumUpgrade(discount: discount)
|
return .premiumUpgrade(discount: discount)
|
||||||
|
@ -84,6 +84,7 @@ enum ChatListNotice: Equatable {
|
|||||||
case setupPassword
|
case setupPassword
|
||||||
case premiumUpgrade(discount: Int32)
|
case premiumUpgrade(discount: Int32)
|
||||||
case premiumAnnualDiscount(discount: Int32)
|
case premiumAnnualDiscount(discount: Int32)
|
||||||
|
case premiumRestore(discount: Int32)
|
||||||
case chatFolderUpdates(count: Int)
|
case chatFolderUpdates(count: Int)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,6 +172,16 @@ class ChatListStorageInfoItemNode: ItemListRevealOptionsItemNode {
|
|||||||
titleString = titleStringValue
|
titleString = titleStringValue
|
||||||
|
|
||||||
textString = NSAttributedString(string: item.strings.ChatList_PremiumAnnualDiscountText, font: textFont, textColor: item.theme.rootController.navigationBar.secondaryTextColor)
|
textString = NSAttributedString(string: item.strings.ChatList_PremiumAnnualDiscountText, font: textFont, textColor: item.theme.rootController.navigationBar.secondaryTextColor)
|
||||||
|
case let .premiumRestore(discount):
|
||||||
|
let discountString = "\(discount)%"
|
||||||
|
let rawTitleString = item.strings.ChatList_PremiumRestoreDiscountTitle(discountString)
|
||||||
|
let titleStringValue = NSMutableAttributedString(attributedString: NSAttributedString(string: rawTitleString.string, font: titleFont, textColor: item.theme.rootController.navigationBar.primaryTextColor))
|
||||||
|
if let range = rawTitleString.ranges.first {
|
||||||
|
titleStringValue.addAttribute(.foregroundColor, value: item.theme.rootController.navigationBar.accentTextColor, range: range.range)
|
||||||
|
}
|
||||||
|
titleString = titleStringValue
|
||||||
|
|
||||||
|
textString = NSAttributedString(string: item.strings.ChatList_PremiumRestoreDiscountText, font: textFont, textColor: item.theme.rootController.navigationBar.secondaryTextColor)
|
||||||
case let .chatFolderUpdates(count):
|
case let .chatFolderUpdates(count):
|
||||||
let rawTitleString = item.strings.ChatList_ChatFolderUpdateHintTitle(item.strings.ChatList_ChatFolderUpdateCount(Int32(count)))
|
let rawTitleString = item.strings.ChatList_ChatFolderUpdateHintTitle(item.strings.ChatList_ChatFolderUpdateCount(Int32(count)))
|
||||||
let titleStringValue = NSMutableAttributedString(attributedString: NSAttributedString(string: rawTitleString.string, font: titleFont, textColor: item.theme.rootController.navigationBar.primaryTextColor))
|
let titleStringValue = NSMutableAttributedString(attributedString: NSAttributedString(string: rawTitleString.string, font: titleFont, textColor: item.theme.rootController.navigationBar.primaryTextColor))
|
||||||
|
@ -11,6 +11,7 @@ public enum ServerProvidedSuggestion: String {
|
|||||||
case setupPassword = "SETUP_PASSWORD"
|
case setupPassword = "SETUP_PASSWORD"
|
||||||
case upgradePremium = "PREMIUM_UPGRADE"
|
case upgradePremium = "PREMIUM_UPGRADE"
|
||||||
case annualPremium = "PREMIUM_ANNUAL"
|
case annualPremium = "PREMIUM_ANNUAL"
|
||||||
|
case restorePremium = "PREMIUM_RESTORE"
|
||||||
}
|
}
|
||||||
|
|
||||||
private var dismissedSuggestionsPromise = ValuePromise<[AccountRecordId: Set<ServerProvidedSuggestion>]>([:])
|
private var dismissedSuggestionsPromise = ValuePromise<[AccountRecordId: Set<ServerProvidedSuggestion>]>([:])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user