From f8b606cb48724bdd17dd8191ff25b108db3461c3 Mon Sep 17 00:00:00 2001 From: Thomas Ricouard Date: Tue, 18 Jun 2024 09:05:38 +0200 Subject: [PATCH] Fix flow --- .../PremiumAcccountSubsciptionSheetView.swift | 3 +- Packages/Models/Sources/Models/Account.swift | 45 +++++++++++++------ 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/Packages/Account/Sources/Account/Tip/PremiumAcccountSubsciptionSheetView.swift b/Packages/Account/Sources/Account/Tip/PremiumAcccountSubsciptionSheetView.swift index 27c68a09..66baa4ac 100644 --- a/Packages/Account/Sources/Account/Tip/PremiumAcccountSubsciptionSheetView.swift +++ b/Packages/Account/Sources/Account/Tip/PremiumAcccountSubsciptionSheetView.swift @@ -122,7 +122,8 @@ struct PremiumAcccountSubsciptionSheetView: View { .onAppear { DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { if let accountName = appAccount.currentAccount.accountName, - let url = URL(string: "https://\(AppInfo.premiumInstance)/subscribe/to/\(account.username)?callback=icecubesapp://socialproxy&id=@\(accountName)&amount=\(500)¤cy=USD") { + let premiumUsername = account.premiumUsername, + let url = URL(string: "https://\(AppInfo.premiumInstance)/subscribe/to/\(premiumUsername)?callback=icecubesapp://socialproxy&id=@\(accountName)&amount=\(500)¤cy=USD") { openURL(url) } } diff --git a/Packages/Models/Sources/Models/Account.swift b/Packages/Models/Sources/Models/Account.swift index 9b24f227..69e510ad 100644 --- a/Packages/Models/Sources/Models/Account.swift +++ b/Packages/Models/Sources/Models/Account.swift @@ -70,19 +70,7 @@ public final class Account: Codable, Identifiable, Hashable, Sendable, Equatable public var haveHeader: Bool { header.lastPathComponent != "missing.png" } - - public var isLinkedToPremiumAccount: Bool { - fields.first(where: { $0.value.asRawText.hasSuffix(AppInfo.premiumInstance) }) != nil - } - - public var premiumAcct: String? { - fields.first(where: { $0.value.asRawText.hasSuffix(AppInfo.premiumInstance) })?.value.asRawText - } - - public var isPremiumAccount: Bool { - url?.host() == AppInfo.premiumInstance - } - + public var fullAccountName: String { "\(acct)@\(url?.host() ?? "")" } @@ -203,3 +191,34 @@ public struct FamiliarAccounts: Decodable { } extension FamiliarAccounts: Sendable {} + +// Premium Stuff +extension Account { + public var isLinkedToPremiumAccount: Bool { + guard url?.host() != AppInfo.premiumInstance else { + return false + } + return fields.first(where: { $0.value.asRawText.contains(AppInfo.premiumInstance) }) != nil + } + + public var premiumAcct: String? { + if let field = fields.first(where: { $0.value.asRawText.hasSuffix(AppInfo.premiumInstance) }) { + return field.value.asRawText + } else if let field = fields.first(where: { $0.value.asRawText.hasPrefix("https://\(AppInfo.premiumInstance)") }), + let url = URL(string: field.value.asRawText) { + return "\(url.lastPathComponent)@\(url.host() ?? "\(AppInfo.premiumInstance)")" + } + return nil + } + + public var premiumUsername: String? { + var username = premiumAcct?.replacingOccurrences(of: "@\(AppInfo.premiumInstance)", with: "") + username?.removeFirst() + return username + } + + public var isPremiumAccount: Bool { + url?.host() == AppInfo.premiumInstance + } + +}