Update Ghostgram features

This commit is contained in:
ichmagmaus 812
2026-03-07 18:15:32 +01:00
parent 1a3303b059
commit 24a7ec39d9
902 changed files with 148302 additions and 62355 deletions
@@ -68,6 +68,7 @@ public final class GlobalControlPanelsContext {
public enum ChatListNotice: Equatable {
case clearStorage(sizeFraction: Double)
case sgUrl(id: String, title: String, text: String?, url: String, needAuth: Bool, permanent: Bool)
case setupPassword
case premiumUpgrade(discount: Int32)
case premiumAnnualDiscount(discount: Int32)
@@ -329,6 +330,7 @@ public final class GlobalControlPanelsContext {
let starsSubscriptionsContextPromise = Promise<StarsSubscriptionsContext?>(nil)
let suggestedChatListNoticeSignal: Signal<ChatListNotice?, NoError> = combineLatest(
getSGProvidedSuggestions(account: context.account),
context.engine.notices.getServerProvidedSuggestions(),
context.engine.notices.getServerDismissedSuggestions(),
twoStepData,
@@ -341,9 +343,18 @@ public final class GlobalControlPanelsContext {
starsSubscriptionsContextPromise.get(),
accountFreezeConfiguration
)
|> mapToSignal { suggestions, dismissedSuggestions, configuration, newSessionReviews, data, birthdays, starsSubscriptionsContext, accountFreezeConfiguration -> Signal<ChatListNotice?, NoError> in
|> mapToSignal { sgSuggestionsData, suggestions, dismissedSuggestions, configuration, newSessionReviews, data, birthdays, starsSubscriptionsContext, accountFreezeConfiguration -> Signal<ChatListNotice?, NoError> in
let (accountPeer, birthday) = data
// MARK: Swiftgram
if let sgSuggestionsData = sgSuggestionsData, let dictionary = try? JSONSerialization.jsonObject(with: sgSuggestionsData, options: []), let sgSuggestions = dictionary as? [[String: Any]], let sgSuggestion = sgSuggestions.first, let sgSuggestionId = sgSuggestion["id"] as? String {
if let sgSuggestionType = sgSuggestion["type"] as? String, sgSuggestionType == "SG_URL", let sgSuggestionTitle = sgSuggestion["title"] as? String, let sgSuggestionUrl = sgSuggestion["url"] as? String {
return .single(.sgUrl(id: sgSuggestionId, title: sgSuggestionTitle, text: sgSuggestion["text"] as? String, url: sgSuggestionUrl, needAuth: sgSuggestion["need_auth"] as? Bool ?? false, permanent: sgSuggestion["permanent"] as? Bool ?? false))
}
}
//
if let newSessionReview = newSessionReviews.first {
return .single(.reviewLogin(newSessionReview: newSessionReview, totalCount: newSessionReviews.count))
}
@@ -401,8 +412,12 @@ public final class GlobalControlPanelsContext {
} else if suggestions.contains(.gracePremium) {
return .single(.premiumGrace)
} else if suggestions.contains(.xmasPremiumGift) {
// MARK: Swiftgram
if ({ return true }()) { return .single(nil) }
return .single(.xmasPremiumGift)
} else if suggestions.contains(.annualPremium) || suggestions.contains(.upgradePremium) || suggestions.contains(.restorePremium), let inAppPurchaseManager = context.inAppPurchaseManager {
// MARK: Swiftgram
if ({ return true }()) { return .single(nil) }
return inAppPurchaseManager.availableProducts
|> map { products -> ChatListNotice? in
if products.count > 1 {
@@ -475,6 +490,7 @@ public final class GlobalControlPanelsContext {
self.notifyStateUpdated()
}
})
}
if let callManager = context.sharedContext.callManager, let peerId = groupCalls {