mirror of
https://github.com/ichmagmaus111/ghostgram.git
synced 2026-07-30 11:18:55 +02:00
Update Ghostgram features
This commit is contained in:
@@ -35,14 +35,14 @@ private func apiInputStorePaymentPurpose(postbox: Postbox, purpose: AppStoreTran
|
||||
default:
|
||||
break
|
||||
}
|
||||
return .single(.inputStorePaymentPremiumSubscription(flags: flags))
|
||||
return .single(.inputStorePaymentPremiumSubscription(.init(flags: flags)))
|
||||
case let .gift(peerId, currency, amount):
|
||||
return postbox.loadedPeerWithId(peerId)
|
||||
|> mapToSignal { peer -> Signal<Api.InputStorePaymentPurpose, NoError> in
|
||||
guard let inputUser = apiInputUser(peer) else {
|
||||
return .complete()
|
||||
}
|
||||
return .single(.inputStorePaymentGiftPremium(userId: inputUser, currency: currency, amount: amount))
|
||||
return .single(.inputStorePaymentGiftPremium(.init(userId: inputUser, currency: currency, amount: amount)))
|
||||
}
|
||||
case let .giftCode(peerIds, boostPeerId, currency, amount, text, entities):
|
||||
return postbox.transaction { transaction -> Api.InputStorePaymentPurpose in
|
||||
@@ -64,10 +64,10 @@ private func apiInputStorePaymentPurpose(postbox: Postbox, purpose: AppStoreTran
|
||||
var message: Api.TextWithEntities?
|
||||
if let text, !text.isEmpty {
|
||||
flags |= (1 << 1)
|
||||
message = .textWithEntities(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? [])
|
||||
message = .textWithEntities(.init(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? []))
|
||||
}
|
||||
|
||||
return .inputStorePaymentPremiumGiftCode(flags: flags, users: apiInputUsers, boostPeer: apiBoostPeer, currency: currency, amount: amount, message: message)
|
||||
return .inputStorePaymentPremiumGiftCode(.init(flags: flags, users: apiInputUsers, boostPeer: apiBoostPeer, currency: currency, amount: amount, message: message))
|
||||
}
|
||||
case let .giveaway(boostPeerId, additionalPeerIds, countries, onlyNewSubscribers, showWinners, prizeDescription, randomId, untilDate, currency, amount):
|
||||
return postbox.transaction { transaction -> Signal<Api.InputStorePaymentPurpose, NoError> in
|
||||
@@ -96,7 +96,7 @@ private func apiInputStorePaymentPurpose(postbox: Postbox, purpose: AppStoreTran
|
||||
if let _ = prizeDescription {
|
||||
flags |= (1 << 4)
|
||||
}
|
||||
return .single(.inputStorePaymentPremiumGiveaway(flags: flags, boostPeer: apiBoostPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: currency, amount: amount))
|
||||
return .single(.inputStorePaymentPremiumGiveaway(.init(flags: flags, boostPeer: apiBoostPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: currency, amount: amount)))
|
||||
}
|
||||
|> switchToLatest
|
||||
case let .stars(count, currency, amount, peerId):
|
||||
@@ -115,7 +115,7 @@ private func apiInputStorePaymentPurpose(postbox: Postbox, purpose: AppStoreTran
|
||||
if let _ = spendPurposePeer {
|
||||
flags |= (1 << 0)
|
||||
}
|
||||
return .inputStorePaymentStarsTopup(flags: flags, stars: count, currency: currency, amount: amount, spendPurposePeer: spendPurposePeer)
|
||||
return .inputStorePaymentStarsTopup(.init(flags: flags, stars: count, currency: currency, amount: amount, spendPurposePeer: spendPurposePeer))
|
||||
}
|
||||
case let .starsGift(peerId, count, currency, amount):
|
||||
return postbox.loadedPeerWithId(peerId)
|
||||
@@ -123,7 +123,7 @@ private func apiInputStorePaymentPurpose(postbox: Postbox, purpose: AppStoreTran
|
||||
guard let inputUser = apiInputUser(peer) else {
|
||||
return .complete()
|
||||
}
|
||||
return .single(.inputStorePaymentStarsGift(userId: inputUser, stars: count, currency: currency, amount: amount))
|
||||
return .single(.inputStorePaymentStarsGift(.init(userId: inputUser, stars: count, currency: currency, amount: amount)))
|
||||
}
|
||||
case let .starsGiveaway(stars, boostPeerId, additionalPeerIds, countries, onlyNewSubscribers, showWinners, prizeDescription, randomId, untilDate, currency, amount, users):
|
||||
return postbox.transaction { transaction -> Signal<Api.InputStorePaymentPurpose, NoError> in
|
||||
@@ -152,7 +152,7 @@ private func apiInputStorePaymentPurpose(postbox: Postbox, purpose: AppStoreTran
|
||||
if let _ = prizeDescription {
|
||||
flags |= (1 << 4)
|
||||
}
|
||||
return .single(.inputStorePaymentStarsGiveaway(flags: flags, stars: stars, boostPeer: apiBoostPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: currency, amount: amount, users: users))
|
||||
return .single(.inputStorePaymentStarsGiveaway(.init(flags: flags, stars: stars, boostPeer: apiBoostPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: currency, amount: amount, users: users)))
|
||||
}
|
||||
|> switchToLatest
|
||||
case let .authCode(restore, phoneNumber, phoneCodeHash, currency, amount):
|
||||
@@ -160,7 +160,7 @@ private func apiInputStorePaymentPurpose(postbox: Postbox, purpose: AppStoreTran
|
||||
if restore {
|
||||
flags |= (1 << 0)
|
||||
}
|
||||
return .single(.inputStorePaymentAuthCode(flags: flags, phoneNumber: phoneNumber, phoneCodeHash: phoneCodeHash, currency: currency, amount: amount))
|
||||
return .single(.inputStorePaymentAuthCode(.init(flags: flags, phoneNumber: phoneNumber, phoneCodeHash: phoneCodeHash, currency: currency, amount: amount)))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,8 @@ public struct BankCardInfo {
|
||||
extension BankCardUrl {
|
||||
init(apiBankCardOpenUrl: Api.BankCardOpenUrl) {
|
||||
switch apiBankCardOpenUrl {
|
||||
case let .bankCardOpenUrl(url, name):
|
||||
case let .bankCardOpenUrl(bankCardOpenUrlData):
|
||||
let (url, name) = (bankCardOpenUrlData.url, bankCardOpenUrlData.name)
|
||||
self.title = name
|
||||
self.url = url
|
||||
}
|
||||
@@ -50,7 +51,8 @@ extension BankCardUrl {
|
||||
extension BankCardInfo {
|
||||
init(apiBankCardData: Api.payments.BankCardData) {
|
||||
switch apiBankCardData {
|
||||
case let .bankCardData(title, urls):
|
||||
case let .bankCardData(bankCardDataData):
|
||||
let (title, urls) = (bankCardDataData.title, bankCardDataData.openUrls)
|
||||
self.title = title
|
||||
self.urls = urls.map { BankCardUrl(apiBankCardOpenUrl: $0) }
|
||||
}
|
||||
|
||||
@@ -171,7 +171,8 @@ public struct BotPaymentMethod: Equatable {
|
||||
extension BotPaymentMethod {
|
||||
init(apiPaymentFormMethod: Api.PaymentFormMethod) {
|
||||
switch apiPaymentFormMethod {
|
||||
case let .paymentFormMethod(url, title):
|
||||
case let .paymentFormMethod(paymentFormMethodData):
|
||||
let (url, title) = (paymentFormMethodData.url, paymentFormMethodData.title)
|
||||
self.init(url: url, title: title)
|
||||
}
|
||||
}
|
||||
@@ -189,7 +190,8 @@ public enum BotPaymentFormRequestError {
|
||||
extension BotPaymentInvoice {
|
||||
init(apiInvoice: Api.Invoice) {
|
||||
switch apiInvoice {
|
||||
case let .invoice(flags, currency, prices, maxTipAmount, suggestedTipAmounts, termsUrl, subscriptionPeriod):
|
||||
case let .invoice(invoiceData):
|
||||
let (flags, currency, prices, maxTipAmount, suggestedTipAmounts, termsUrl, subscriptionPeriod) = (invoiceData.flags, invoiceData.currency, invoiceData.prices, invoiceData.maxTipAmount, invoiceData.suggestedTipAmounts, invoiceData.termsUrl, invoiceData.subscriptionPeriod)
|
||||
var fields = BotPaymentInvoiceFields()
|
||||
if (flags & (1 << 1)) != 0 {
|
||||
fields.insert(.name)
|
||||
@@ -223,7 +225,8 @@ extension BotPaymentInvoice {
|
||||
}
|
||||
self.init(isTest: (flags & (1 << 0)) != 0, requestedFields: fields, currency: currency, prices: prices.map {
|
||||
switch $0 {
|
||||
case let .labeledPrice(label, amount):
|
||||
case let .labeledPrice(labeledPriceData):
|
||||
let (label, amount) = (labeledPriceData.label, labeledPriceData.amount)
|
||||
return BotPaymentPrice(label: label, amount: amount)
|
||||
}
|
||||
}, tip: parsedTip, termsInfo: termsInfo, subscriptionPeriod: subscriptionPeriod)
|
||||
@@ -234,11 +237,13 @@ extension BotPaymentInvoice {
|
||||
extension BotPaymentRequestedInfo {
|
||||
init(apiInfo: Api.PaymentRequestedInfo) {
|
||||
switch apiInfo {
|
||||
case let .paymentRequestedInfo(_, name, phone, email, shippingAddress):
|
||||
case let .paymentRequestedInfo(paymentRequestedInfoData):
|
||||
let (name, phone, email, shippingAddress) = (paymentRequestedInfoData.name, paymentRequestedInfoData.phone, paymentRequestedInfoData.email, paymentRequestedInfoData.shippingAddress)
|
||||
var parsedShippingAddress: BotPaymentShippingAddress?
|
||||
if let shippingAddress = shippingAddress {
|
||||
switch shippingAddress {
|
||||
case let .postAddress(streetLine1, streetLine2, city, state, countryIso2, postCode):
|
||||
case let .postAddress(postAddressData):
|
||||
let (streetLine1, streetLine2, city, state, countryIso2, postCode) = (postAddressData.streetLine1, postAddressData.streetLine2, postAddressData.city, postAddressData.state, postAddressData.countryIso2, postAddressData.postCode)
|
||||
parsedShippingAddress = BotPaymentShippingAddress(streetLine1: streetLine1, streetLine2: streetLine2, city: city, state: state, countryIso2: countryIso2, postCode: postCode)
|
||||
}
|
||||
}
|
||||
@@ -253,9 +258,9 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
guard let inputPeer = transaction.getPeer(messageId.peerId).flatMap(apiInputPeer) else {
|
||||
return nil
|
||||
}
|
||||
return .inputInvoiceMessage(peer: inputPeer, msgId: messageId.id)
|
||||
return .inputInvoiceMessage(.init(peer: inputPeer, msgId: messageId.id))
|
||||
case let .slug(slug):
|
||||
return .inputInvoiceSlug(slug: slug)
|
||||
return .inputInvoiceSlug(.init(slug: slug))
|
||||
case let .premiumGiveaway(boostPeerId, additionalPeerIds, countries, onlyNewSubscribers, showWinners, prizeDescription, randomId, untilDate, currency, amount, option):
|
||||
guard let peer = transaction.getPeer(boostPeerId), let apiBoostPeer = apiInputPeer(peer) else {
|
||||
return nil
|
||||
@@ -283,7 +288,7 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
flags |= (1 << 4)
|
||||
}
|
||||
|
||||
let inputPurpose: Api.InputStorePaymentPurpose = .inputStorePaymentPremiumGiveaway(flags: flags, boostPeer: apiBoostPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: currency, amount: amount)
|
||||
let inputPurpose: Api.InputStorePaymentPurpose = .inputStorePaymentPremiumGiveaway(.init(flags: flags, boostPeer: apiBoostPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: currency, amount: amount))
|
||||
|
||||
flags = 0
|
||||
|
||||
@@ -294,9 +299,9 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
flags |= (1 << 1)
|
||||
}
|
||||
|
||||
let option: Api.PremiumGiftCodeOption = .premiumGiftCodeOption(flags: flags, users: option.users, months: option.months, storeProduct: option.storeProductId, storeQuantity: option.storeQuantity, currency: option.currency, amount: option.amount)
|
||||
let option: Api.PremiumGiftCodeOption = .premiumGiftCodeOption(.init(flags: flags, users: option.users, months: option.months, storeProduct: option.storeProductId, storeQuantity: option.storeQuantity, currency: option.currency, amount: option.amount))
|
||||
|
||||
return .inputInvoicePremiumGiftCode(purpose: inputPurpose, option: option)
|
||||
return .inputInvoicePremiumGiftCode(.init(purpose: inputPurpose, option: option))
|
||||
case let .giftCode(users, currency, amount, option, text, entities):
|
||||
var inputUsers: [Api.InputUser] = []
|
||||
if !users.isEmpty {
|
||||
@@ -311,10 +316,10 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
var message: Api.TextWithEntities?
|
||||
if let text, !text.isEmpty {
|
||||
inputPurposeFlags |= (1 << 1)
|
||||
message = .textWithEntities(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? [])
|
||||
message = .textWithEntities(.init(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? []))
|
||||
}
|
||||
|
||||
let inputPurpose: Api.InputStorePaymentPurpose = .inputStorePaymentPremiumGiftCode(flags: inputPurposeFlags, users: inputUsers, boostPeer: nil, currency: currency, amount: amount, message: message)
|
||||
let inputPurpose: Api.InputStorePaymentPurpose = .inputStorePaymentPremiumGiftCode(.init(flags: inputPurposeFlags, users: inputUsers, boostPeer: nil, currency: currency, amount: amount, message: message))
|
||||
|
||||
var flags: Int32 = 0
|
||||
if let _ = option.storeProductId {
|
||||
@@ -324,9 +329,9 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
flags |= (1 << 1)
|
||||
}
|
||||
|
||||
let option: Api.PremiumGiftCodeOption = .premiumGiftCodeOption(flags: flags, users: option.users, months: option.months, storeProduct: option.storeProductId, storeQuantity: option.storeQuantity, currency: option.currency, amount: option.amount)
|
||||
let option: Api.PremiumGiftCodeOption = .premiumGiftCodeOption(.init(flags: flags, users: option.users, months: option.months, storeProduct: option.storeProductId, storeQuantity: option.storeQuantity, currency: option.currency, amount: option.amount))
|
||||
|
||||
return .inputInvoicePremiumGiftCode(purpose: inputPurpose, option: option)
|
||||
return .inputInvoicePremiumGiftCode(.init(purpose: inputPurpose, option: option))
|
||||
case let .stars(option, peerId):
|
||||
var flags: Int32 = 0
|
||||
var spendPurposePeer: Api.InputPeer?
|
||||
@@ -334,14 +339,14 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
flags |= (1 << 0)
|
||||
spendPurposePeer = inputPeer
|
||||
}
|
||||
return .inputInvoiceStars(purpose: .inputStorePaymentStarsTopup(flags: flags, stars: option.count, currency: option.currency, amount: option.amount, spendPurposePeer: spendPurposePeer))
|
||||
return .inputInvoiceStars(.init(purpose: .inputStorePaymentStarsTopup(.init(flags: flags, stars: option.count, currency: option.currency, amount: option.amount, spendPurposePeer: spendPurposePeer))))
|
||||
case let .starsGift(peerId, count, currency, amount):
|
||||
guard let peer = transaction.getPeer(peerId), let inputUser = apiInputUser(peer) else {
|
||||
return nil
|
||||
}
|
||||
return .inputInvoiceStars(purpose: .inputStorePaymentStarsGift(userId: inputUser, stars: count, currency: currency, amount: amount))
|
||||
return .inputInvoiceStars(.init(purpose: .inputStorePaymentStarsGift(.init(userId: inputUser, stars: count, currency: currency, amount: amount))))
|
||||
case let .starsChatSubscription(hash):
|
||||
return .inputInvoiceChatInviteSubscription(hash: hash)
|
||||
return .inputInvoiceChatInviteSubscription(.init(hash: hash))
|
||||
case let .starsGiveaway(stars, boostPeerId, additionalPeerIds, countries, onlyNewSubscribers, showWinners, prizeDescription, randomId, untilDate, currency, amount, users):
|
||||
guard let peer = transaction.getPeer(boostPeerId), let apiBoostPeer = apiInputPeer(peer) else {
|
||||
return nil
|
||||
@@ -368,7 +373,7 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
if let _ = prizeDescription {
|
||||
flags |= (1 << 4)
|
||||
}
|
||||
return .inputInvoiceStars(purpose: .inputStorePaymentStarsGiveaway(flags: flags, stars: stars, boostPeer: apiBoostPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: currency, amount: amount, users: users))
|
||||
return .inputInvoiceStars(.init(purpose: .inputStorePaymentStarsGiveaway(.init(flags: flags, stars: stars, boostPeer: apiBoostPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: currency, amount: amount, users: users))))
|
||||
case let .starGift(hideName, includeUpgrade, peerId, giftId, text, entities):
|
||||
guard let peer = transaction.getPeer(peerId), let inputPeer = apiInputPeer(peer) else {
|
||||
return nil
|
||||
@@ -383,20 +388,20 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
var message: Api.TextWithEntities?
|
||||
if let text, !text.isEmpty {
|
||||
flags |= (1 << 1)
|
||||
message = .textWithEntities(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? [])
|
||||
message = .textWithEntities(.init(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? []))
|
||||
}
|
||||
return .inputInvoiceStarGift(flags: flags, peer: inputPeer, giftId: giftId, message: message)
|
||||
return .inputInvoiceStarGift(.init(flags: flags, peer: inputPeer, giftId: giftId, message: message))
|
||||
case let .starGiftUpgrade(keepOriginalInfo, reference):
|
||||
var flags: Int32 = 0
|
||||
if keepOriginalInfo {
|
||||
flags |= (1 << 0)
|
||||
}
|
||||
return reference.apiStarGiftReference(transaction: transaction).flatMap { .inputInvoiceStarGiftUpgrade(flags: flags, stargift: $0) }
|
||||
return reference.apiStarGiftReference(transaction: transaction).flatMap { .inputInvoiceStarGiftUpgrade(.init(flags: flags, stargift: $0)) }
|
||||
case let .starGiftTransfer(reference, toPeerId):
|
||||
guard let peer = transaction.getPeer(toPeerId), let inputPeer = apiInputPeer(peer) else {
|
||||
return nil
|
||||
}
|
||||
return reference.apiStarGiftReference(transaction: transaction).flatMap { .inputInvoiceStarGiftTransfer(stargift: $0, toId: inputPeer) }
|
||||
return reference.apiStarGiftReference(transaction: transaction).flatMap { .inputInvoiceStarGiftTransfer(.init(stargift: $0, toId: inputPeer)) }
|
||||
case let .premiumGift(peerId, option, text, entities):
|
||||
guard let peer = transaction.getPeer(peerId), let inputUser = apiInputUser(peer) else {
|
||||
return nil
|
||||
@@ -405,9 +410,9 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
var message: Api.TextWithEntities?
|
||||
if let text, !text.isEmpty {
|
||||
flags |= (1 << 0)
|
||||
message = .textWithEntities(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? [])
|
||||
message = .textWithEntities(.init(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? []))
|
||||
}
|
||||
return .inputInvoicePremiumGiftStars(flags: flags, userId: inputUser, months: option.months, message: message)
|
||||
return .inputInvoicePremiumGiftStars(.init(flags: flags, userId: inputUser, months: option.months, message: message))
|
||||
case let .starGiftResale(slug, toPeerId, ton):
|
||||
guard let peer = transaction.getPeer(toPeerId), let inputPeer = apiInputPeer(peer) else {
|
||||
return nil
|
||||
@@ -416,14 +421,14 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
if ton {
|
||||
flags |= 1 << 0
|
||||
}
|
||||
return .inputInvoiceStarGiftResale(flags: flags, slug: slug, toId: inputPeer)
|
||||
return .inputInvoiceStarGiftResale(.init(flags: flags, slug: slug, toId: inputPeer))
|
||||
case let .starGiftPrepaidUpgrade(peerId, hash):
|
||||
guard let peer = transaction.getPeer(peerId), let inputPeer = apiInputPeer(peer) else {
|
||||
return nil
|
||||
}
|
||||
return .inputInvoiceStarGiftPrepaidUpgrade(peer: inputPeer, hash: hash)
|
||||
return .inputInvoiceStarGiftPrepaidUpgrade(.init(peer: inputPeer, hash: hash))
|
||||
case let .starGiftDropOriginalDetails(reference):
|
||||
return reference.apiStarGiftReference(transaction: transaction).flatMap { .inputInvoiceStarGiftDropOriginalDetails(stargift: $0) }
|
||||
return reference.apiStarGiftReference(transaction: transaction).flatMap { .inputInvoiceStarGiftDropOriginalDetails(.init(stargift: $0)) }
|
||||
|
||||
case let .starGiftAuctionBid(update, hideName, peerId, giftId, bidAmount, text, entities):
|
||||
var flags: Int32 = 0
|
||||
@@ -445,10 +450,10 @@ func _internal_parseInputInvoice(transaction: Transaction, source: BotPaymentInv
|
||||
|
||||
if let text, !text.isEmpty {
|
||||
flags |= (1 << 1)
|
||||
message = .textWithEntities(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? [])
|
||||
message = .textWithEntities(.init(text: text, entities: entities.flatMap { apiEntitiesFromMessageTextEntities($0, associatedPeers: SimpleDictionary()) } ?? []))
|
||||
}
|
||||
}
|
||||
return .inputInvoiceStarGiftAuctionBid(flags: flags, peer: inputPeer, giftId: giftId, bidAmount: bidAmount, message: message)
|
||||
return .inputInvoiceStarGiftAuctionBid(.init(flags: flags, peer: inputPeer, giftId: giftId, bidAmount: bidAmount, message: message))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,7 +480,8 @@ func _internal_fetchBotPaymentInvoice(postbox: Postbox, network: Network, source
|
||||
|> mapToSignal { result -> Signal<TelegramMediaInvoice, BotPaymentFormRequestError> in
|
||||
return postbox.transaction { transaction -> TelegramMediaInvoice in
|
||||
switch result {
|
||||
case let .paymentForm(_, _, _, title, description, photo, invoice, _, _, _, _, _, _, _, _):
|
||||
case let .paymentForm(paymentFormData):
|
||||
let (title, description, photo, invoice) = (paymentFormData.title, paymentFormData.description, paymentFormData.photo, paymentFormData.invoice)
|
||||
let parsedInvoice = BotPaymentInvoice(apiInvoice: invoice)
|
||||
|
||||
var parsedFlags = TelegramMediaInvoiceFlags()
|
||||
@@ -487,10 +493,12 @@ func _internal_fetchBotPaymentInvoice(postbox: Postbox, network: Network, source
|
||||
}
|
||||
|
||||
return TelegramMediaInvoice(title: title, description: description, photo: photo.flatMap(TelegramMediaWebFile.init), receiptMessageId: nil, currency: parsedInvoice.currency, totalAmount: 0, startParam: "", extendedMedia: nil, subscriptionPeriod: parsedInvoice.subscriptionPeriod, flags: parsedFlags, version: TelegramMediaInvoice.lastVersion)
|
||||
case let .paymentFormStars(_, _, _, title, description, photo, invoice, _):
|
||||
case let .paymentFormStars(paymentFormStarsData):
|
||||
let (title, description, photo, invoice) = (paymentFormStarsData.title, paymentFormStarsData.description, paymentFormStarsData.photo, paymentFormStarsData.invoice)
|
||||
let parsedInvoice = BotPaymentInvoice(apiInvoice: invoice)
|
||||
return TelegramMediaInvoice(title: title, description: description, photo: photo.flatMap(TelegramMediaWebFile.init), receiptMessageId: nil, currency: parsedInvoice.currency, totalAmount: parsedInvoice.prices.reduce(0, { $0 + $1.amount }), startParam: "", extendedMedia: nil, subscriptionPeriod: parsedInvoice.subscriptionPeriod, flags: [], version: TelegramMediaInvoice.lastVersion)
|
||||
case let .paymentFormStarGift(_, invoice):
|
||||
case let .paymentFormStarGift(paymentFormStarGiftData):
|
||||
let invoice = paymentFormStarGiftData.invoice
|
||||
let parsedInvoice = BotPaymentInvoice(apiInvoice: invoice)
|
||||
return TelegramMediaInvoice(title: "", description: "", photo: nil, receiptMessageId: nil, currency: parsedInvoice.currency, totalAmount: parsedInvoice.prices.reduce(0, { $0 + $1.amount }), startParam: "", extendedMedia: nil, subscriptionPeriod: parsedInvoice.subscriptionPeriod, flags: [], version: TelegramMediaInvoice.lastVersion)
|
||||
}
|
||||
@@ -513,7 +521,7 @@ func _internal_fetchBotPaymentForm(accountPeerId: PeerId, postbox: Postbox, netw
|
||||
var flags: Int32 = 0
|
||||
var serializedThemeParams: Api.DataJSON?
|
||||
if let themeParams = themeParams, let data = try? JSONSerialization.data(withJSONObject: themeParams, options: []), let dataString = String(data: data, encoding: .utf8) {
|
||||
serializedThemeParams = Api.DataJSON.dataJSON(data: dataString)
|
||||
serializedThemeParams = Api.DataJSON.dataJSON(.init(data: dataString))
|
||||
}
|
||||
if serializedThemeParams != nil {
|
||||
flags |= 1 << 0
|
||||
@@ -538,11 +546,12 @@ func _internal_fetchBotPaymentForm(accountPeerId: PeerId, postbox: Postbox, netw
|
||||
|> mapToSignal { result -> Signal<BotPaymentForm, BotPaymentFormRequestError> in
|
||||
return postbox.transaction { transaction -> BotPaymentForm in
|
||||
switch result {
|
||||
case let .paymentForm(flags, id, botId, title, description, photo, invoice, providerId, url, nativeProvider, nativeParams, additionalMethods, savedInfo, savedCredentials, apiUsers):
|
||||
case let .paymentForm(paymentFormData):
|
||||
let (flags, id, botId, title, description, photo, invoice, providerId, url, nativeProvider, nativeParams, additionalMethods, savedInfo, savedCredentials, apiUsers) = (paymentFormData.flags, paymentFormData.formId, paymentFormData.botId, paymentFormData.title, paymentFormData.description, paymentFormData.photo, paymentFormData.invoice, paymentFormData.providerId, paymentFormData.url, paymentFormData.nativeProvider, paymentFormData.nativeParams, paymentFormData.additionalMethods, paymentFormData.savedInfo, paymentFormData.savedCredentials, paymentFormData.users)
|
||||
let _ = title
|
||||
let _ = description
|
||||
let _ = photo
|
||||
|
||||
|
||||
let parsedPeers = AccumulatedPeers(users: apiUsers)
|
||||
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: parsedPeers)
|
||||
|
||||
@@ -550,33 +559,37 @@ func _internal_fetchBotPaymentForm(accountPeerId: PeerId, postbox: Postbox, netw
|
||||
var parsedNativeProvider: BotPaymentNativeProvider?
|
||||
if let nativeProvider = nativeProvider, let nativeParams = nativeParams {
|
||||
switch nativeParams {
|
||||
case let .dataJSON(data):
|
||||
case let .dataJSON(dataJSONData):
|
||||
let data = dataJSONData.data
|
||||
parsedNativeProvider = BotPaymentNativeProvider(name: nativeProvider, params: data)
|
||||
}
|
||||
}
|
||||
let parsedSavedInfo = savedInfo.flatMap(BotPaymentRequestedInfo.init)
|
||||
let parsedSavedCredentials = savedCredentials?.map({ savedCredentials -> BotPaymentSavedCredentials in
|
||||
switch savedCredentials {
|
||||
case let .paymentSavedCredentialsCard(id, title):
|
||||
case let .paymentSavedCredentialsCard(paymentSavedCredentialsCardData):
|
||||
let (id, title) = (paymentSavedCredentialsCardData.id, paymentSavedCredentialsCardData.title)
|
||||
return .card(id: id, title: title)
|
||||
}
|
||||
}) ?? []
|
||||
|
||||
let additionalPaymentMethods = additionalMethods?.map({ BotPaymentMethod(apiPaymentFormMethod: $0) }) ?? []
|
||||
return BotPaymentForm(id: id, canSaveCredentials: (flags & (1 << 2)) != 0, passwordMissing: (flags & (1 << 3)) != 0, invoice: parsedInvoice, paymentBotId: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(botId)), providerId: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(providerId)), url: url, nativeProvider: parsedNativeProvider, savedInfo: parsedSavedInfo, savedCredentials: parsedSavedCredentials, additionalPaymentMethods: additionalPaymentMethods)
|
||||
case let .paymentFormStars(flags, id, botId, title, description, photo, invoice, apiUsers):
|
||||
case let .paymentFormStars(paymentFormStarsData):
|
||||
let (flags, id, botId, title, description, photo, invoice, apiUsers) = (paymentFormStarsData.flags, paymentFormStarsData.formId, paymentFormStarsData.botId, paymentFormStarsData.title, paymentFormStarsData.description, paymentFormStarsData.photo, paymentFormStarsData.invoice, paymentFormStarsData.users)
|
||||
let _ = flags
|
||||
let _ = title
|
||||
let _ = description
|
||||
let _ = photo
|
||||
|
||||
|
||||
let parsedPeers = AccumulatedPeers(users: apiUsers)
|
||||
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: parsedPeers)
|
||||
|
||||
|
||||
let parsedInvoice = BotPaymentInvoice(apiInvoice: invoice)
|
||||
return BotPaymentForm(id: id, canSaveCredentials: false, passwordMissing: false, invoice: parsedInvoice, paymentBotId: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(botId)), providerId: nil, url: nil, nativeProvider: nil, savedInfo: nil, savedCredentials: [], additionalPaymentMethods: [])
|
||||
|
||||
case let .paymentFormStarGift(id, invoice):
|
||||
case let .paymentFormStarGift(paymentFormStarGiftData):
|
||||
let (id, invoice) = (paymentFormStarGiftData.formId, paymentFormStarGiftData.invoice)
|
||||
let parsedInvoice = BotPaymentInvoice(apiInvoice: invoice)
|
||||
return BotPaymentForm(id: id, canSaveCredentials: false, passwordMissing: false, invoice: parsedInvoice, paymentBotId: nil, providerId: nil, url: nil, nativeProvider: nil, savedInfo: nil, savedCredentials: [], additionalPaymentMethods: [])
|
||||
}
|
||||
@@ -611,10 +624,12 @@ public struct BotPaymentValidatedFormInfo : Equatable {
|
||||
extension BotPaymentShippingOption {
|
||||
init(apiOption: Api.ShippingOption) {
|
||||
switch apiOption {
|
||||
case let .shippingOption(id, title, prices):
|
||||
case let .shippingOption(shippingOptionData):
|
||||
let (id, title, prices) = (shippingOptionData.id, shippingOptionData.title, shippingOptionData.prices)
|
||||
self.init(id: id, title: title, prices: prices.map {
|
||||
switch $0 {
|
||||
case let .labeledPrice(label, amount):
|
||||
case let .labeledPrice(labeledPriceData):
|
||||
let (label, amount) = (labeledPriceData.label, labeledPriceData.amount)
|
||||
return BotPaymentPrice(label: label, amount: amount)
|
||||
}
|
||||
})
|
||||
@@ -649,9 +664,9 @@ func _internal_validateBotPaymentForm(account: Account, saveInfo: Bool, source:
|
||||
var apiShippingAddress: Api.PostAddress?
|
||||
if let address = formInfo.shippingAddress {
|
||||
infoFlags |= (1 << 3)
|
||||
apiShippingAddress = .postAddress(streetLine1: address.streetLine1, streetLine2: address.streetLine2, city: address.city, state: address.state, countryIso2: address.countryIso2, postCode: address.postCode)
|
||||
apiShippingAddress = .postAddress(.init(streetLine1: address.streetLine1, streetLine2: address.streetLine2, city: address.city, state: address.state, countryIso2: address.countryIso2, postCode: address.postCode))
|
||||
}
|
||||
return account.network.request(Api.functions.payments.validateRequestedInfo(flags: flags, invoice: invoice, info: .paymentRequestedInfo(flags: infoFlags, name: formInfo.name, phone: formInfo.phone, email: formInfo.email, shippingAddress: apiShippingAddress)))
|
||||
return account.network.request(Api.functions.payments.validateRequestedInfo(flags: flags, invoice: invoice, info: .paymentRequestedInfo(.init(flags: infoFlags, name: formInfo.name, phone: formInfo.phone, email: formInfo.email, shippingAddress: apiShippingAddress))))
|
||||
|> mapError { error -> ValidateBotPaymentFormError in
|
||||
if error.errorDescription == "SHIPPING_NOT_AVAILABLE" {
|
||||
return .shippingNotAvailable
|
||||
@@ -673,7 +688,8 @@ func _internal_validateBotPaymentForm(account: Account, saveInfo: Bool, source:
|
||||
}
|
||||
|> map { result -> BotPaymentValidatedFormInfo in
|
||||
switch result {
|
||||
case let .validatedRequestedInfo(_, id, shippingOptions):
|
||||
case let .validatedRequestedInfo(validatedRequestedInfoData):
|
||||
let (id, shippingOptions) = (validatedRequestedInfoData.id, validatedRequestedInfoData.shippingOptions)
|
||||
return BotPaymentValidatedFormInfo(id: id, shippingOptions: shippingOptions.flatMap {
|
||||
return $0.map(BotPaymentShippingOption.init)
|
||||
})
|
||||
@@ -721,11 +737,11 @@ func _internal_sendBotPaymentForm(account: Account, formId: Int64, source: BotPa
|
||||
if saveOnServer {
|
||||
credentialsFlags |= (1 << 0)
|
||||
}
|
||||
apiCredentials = .inputPaymentCredentials(flags: credentialsFlags, data: .dataJSON(data: data))
|
||||
apiCredentials = .inputPaymentCredentials(.init(flags: credentialsFlags, data: .dataJSON(.init(data: data))))
|
||||
case let .saved(id, tempPassword):
|
||||
apiCredentials = .inputPaymentCredentialsSaved(id: id, tmpPassword: Buffer(data: tempPassword))
|
||||
apiCredentials = .inputPaymentCredentialsSaved(.init(id: id, tmpPassword: Buffer(data: tempPassword)))
|
||||
case let .applePay(data):
|
||||
apiCredentials = .inputPaymentCredentialsApplePay(paymentData: .dataJSON(data: data))
|
||||
apiCredentials = .inputPaymentCredentialsApplePay(.init(paymentData: .dataJSON(.init(data: data))))
|
||||
}
|
||||
var flags: Int32 = 0
|
||||
if validatedInfoId != nil {
|
||||
@@ -741,7 +757,8 @@ func _internal_sendBotPaymentForm(account: Account, formId: Int64, source: BotPa
|
||||
return account.network.request(Api.functions.payments.sendPaymentForm(flags: flags, formId: formId, invoice: invoice, requestedInfoId: validatedInfoId, shippingOptionId: shippingOptionId, credentials: apiCredentials, tipAmount: tipAmount))
|
||||
|> map { result -> SendBotPaymentResult in
|
||||
switch result {
|
||||
case let .paymentResult(updates):
|
||||
case let .paymentResult(paymentResultData):
|
||||
let updates = paymentResultData.updates
|
||||
account.stateManager.addUpdates(updates)
|
||||
var receiptMessageId: MessageId?
|
||||
|
||||
@@ -800,7 +817,8 @@ func _internal_sendBotPaymentForm(account: Account, formId: Int64, source: BotPa
|
||||
}
|
||||
}
|
||||
return .done(receiptMessageId: receiptMessageId, subscriptionPeerId: nil, uniqueStarGift: nil)
|
||||
case let .paymentVerificationNeeded(url):
|
||||
case let .paymentVerificationNeeded(paymentVerificationNeededData):
|
||||
let url = paymentVerificationNeededData.url
|
||||
return .externalVerificationRequired(url: url)
|
||||
}
|
||||
}
|
||||
@@ -882,7 +900,8 @@ func _internal_requestBotPaymentReceipt(account: Account, messageId: MessageId)
|
||||
|> mapToSignal { result -> Signal<BotPaymentReceipt, RequestBotPaymentReceiptError> in
|
||||
return account.postbox.transaction { transaction -> BotPaymentReceipt in
|
||||
switch result {
|
||||
case let .paymentReceipt(_, date, botId, _, title, description, photo, invoice, info, shipping, tipAmount, currency, totalAmount, credentialsTitle, users):
|
||||
case let .paymentReceipt(paymentReceiptData):
|
||||
let (date, botId, title, description, photo, invoice, info, shipping, tipAmount, currency, totalAmount, credentialsTitle, users) = (paymentReceiptData.date, paymentReceiptData.botId, paymentReceiptData.title, paymentReceiptData.description, paymentReceiptData.photo, paymentReceiptData.invoice, paymentReceiptData.info, paymentReceiptData.shipping, paymentReceiptData.tipAmount, paymentReceiptData.currency, paymentReceiptData.totalAmount, paymentReceiptData.credentialsTitle, paymentReceiptData.users)
|
||||
let parsedPeers = AccumulatedPeers(transaction: transaction, chats: [], users: users)
|
||||
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: parsedPeers)
|
||||
|
||||
@@ -903,16 +922,17 @@ func _internal_requestBotPaymentReceipt(account: Account, messageId: MessageId)
|
||||
flags: [],
|
||||
version: TelegramMediaInvoice.lastVersion
|
||||
)
|
||||
|
||||
|
||||
let botPaymentId = PeerId.init(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(botId))
|
||||
|
||||
return BotPaymentReceipt(invoice: parsedInvoice, date: date, info: parsedInfo, shippingOption: shippingOption, credentialsTitle: credentialsTitle, invoiceMedia: invoiceMedia, tipAmount: tipAmount, botPaymentId: botPaymentId, transactionId: nil)
|
||||
case let .paymentReceiptStars(_, date, botId, title, description, photo, invoice, currency, totalAmount, transactionId, users):
|
||||
case let .paymentReceiptStars(paymentReceiptStarsData):
|
||||
let (date, botId, title, description, photo, invoice, currency, totalAmount, transactionId, users) = (paymentReceiptStarsData.date, paymentReceiptStarsData.botId, paymentReceiptStarsData.title, paymentReceiptStarsData.description, paymentReceiptStarsData.photo, paymentReceiptStarsData.invoice, paymentReceiptStarsData.currency, paymentReceiptStarsData.totalAmount, paymentReceiptStarsData.transactionId, paymentReceiptStarsData.users)
|
||||
let parsedPeers = AccumulatedPeers(transaction: transaction, chats: [], users: users)
|
||||
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: parsedPeers)
|
||||
|
||||
|
||||
let parsedInvoice = BotPaymentInvoice(apiInvoice: invoice)
|
||||
|
||||
|
||||
let invoiceMedia = TelegramMediaInvoice(
|
||||
title: title,
|
||||
description: description,
|
||||
@@ -926,7 +946,7 @@ func _internal_requestBotPaymentReceipt(account: Account, messageId: MessageId)
|
||||
flags: [],
|
||||
version: TelegramMediaInvoice.lastVersion
|
||||
)
|
||||
|
||||
|
||||
let botPaymentId = PeerId.init(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(botId))
|
||||
return BotPaymentReceipt(invoice: parsedInvoice, date: date, info: nil, shippingOption: nil, credentialsTitle: "", invoiceMedia: invoiceMedia, tipAmount: nil, botPaymentId: botPaymentId, transactionId: transactionId)
|
||||
}
|
||||
|
||||
@@ -114,7 +114,8 @@ func _internal_getPremiumGiveawayInfo(account: Account, peerId: EnginePeer.Id, m
|
||||
|> map { result -> PremiumGiveawayInfo? in
|
||||
if let result = result {
|
||||
switch result {
|
||||
case let .giveawayInfo(flags, startDate, joinedTooEarlyDate, adminDisallowedChatId, disallowedCountry):
|
||||
case let .giveawayInfo(giveawayInfoData):
|
||||
let (flags, startDate, joinedTooEarlyDate, adminDisallowedChatId, disallowedCountry) = (giveawayInfoData.flags, giveawayInfoData.startDate, giveawayInfoData.joinedTooEarlyDate, giveawayInfoData.adminDisallowedChatId, giveawayInfoData.disallowedCountry)
|
||||
if (flags & (1 << 3)) != 0 {
|
||||
return .ongoing(startDate: startDate, status: .almostOver)
|
||||
} else if (flags & (1 << 0)) != 0 {
|
||||
@@ -128,7 +129,8 @@ func _internal_getPremiumGiveawayInfo(account: Account, peerId: EnginePeer.Id, m
|
||||
} else {
|
||||
return .ongoing(startDate: startDate, status: .notQualified)
|
||||
}
|
||||
case let .giveawayInfoResults(flags, startDate, giftCodeSlug, stars, finishDate, winnersCount, activatedCount):
|
||||
case let .giveawayInfoResults(giveawayInfoResultsData):
|
||||
let (flags, startDate, giftCodeSlug, stars, finishDate, winnersCount, activatedCount) = (giveawayInfoResultsData.flags, giveawayInfoResultsData.startDate, giveawayInfoResultsData.giftCodeSlug, giveawayInfoResultsData.starsPrize, giveawayInfoResultsData.finishDate, giveawayInfoResultsData.winnersCount, giveawayInfoResultsData.activatedCount)
|
||||
let status: PremiumGiveawayInfo.ResultStatus
|
||||
if (flags & (1 << 1)) != 0 {
|
||||
status = .refunded
|
||||
@@ -270,7 +272,8 @@ func _internal_checkPremiumGiftCode(account: Account, slug: String) -> Signal<Pr
|
||||
|> mapToSignal { result -> Signal<PremiumGiftCodeInfo?, NoError> in
|
||||
if let result = result {
|
||||
switch result {
|
||||
case let .checkedGiftCode(_, _, _, _, _, _, _, chats, users):
|
||||
case let .checkedGiftCode(checkedGiftCodeData):
|
||||
let (chats, users) = (checkedGiftCodeData.chats, checkedGiftCodeData.users)
|
||||
return account.postbox.transaction { transaction in
|
||||
let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users)
|
||||
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: parsedPeers)
|
||||
@@ -349,9 +352,9 @@ func _internal_launchPrepaidGiveaway(account: Account, peerId: EnginePeer.Id, pu
|
||||
let inputPurpose: Api.InputStorePaymentPurpose
|
||||
switch purpose {
|
||||
case let .stars(stars, users):
|
||||
inputPurpose = .inputStorePaymentStarsGiveaway(flags: flags, stars: stars, boostPeer: inputPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: "", amount: 0, users: users)
|
||||
inputPurpose = .inputStorePaymentStarsGiveaway(.init(flags: flags, stars: stars, boostPeer: inputPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: "", amount: 0, users: users))
|
||||
case .premium:
|
||||
inputPurpose = .inputStorePaymentPremiumGiveaway(flags: flags, boostPeer: inputPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: "", amount: 0)
|
||||
inputPurpose = .inputStorePaymentPremiumGiveaway(.init(flags: flags, boostPeer: inputPeer, additionalPeers: additionalPeers, countriesIso2: countries, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate, currency: "", amount: 0))
|
||||
}
|
||||
|
||||
return account.network.request(Api.functions.payments.launchPrepaidGiveaway(peer: inputPeer, giveawayId: id, purpose: inputPurpose))
|
||||
@@ -370,7 +373,8 @@ func _internal_launchPrepaidGiveaway(account: Account, peerId: EnginePeer.Id, pu
|
||||
extension PremiumGiftCodeOption {
|
||||
init(apiGiftCodeOption: Api.PremiumGiftCodeOption) {
|
||||
switch apiGiftCodeOption {
|
||||
case let .premiumGiftCodeOption(_, users, months, storeProduct, storeQuantity, curreny, amount):
|
||||
case let .premiumGiftCodeOption(premiumGiftCodeOptionData):
|
||||
let (_, users, months, storeProduct, storeQuantity, curreny, amount) = (premiumGiftCodeOptionData.flags, premiumGiftCodeOptionData.users, premiumGiftCodeOptionData.months, premiumGiftCodeOptionData.storeProduct, premiumGiftCodeOptionData.storeQuantity, premiumGiftCodeOptionData.currency, premiumGiftCodeOptionData.amount)
|
||||
self.init(users: users, months: months, storeProductId: storeProduct, storeQuantity: storeQuantity ?? 1, currency: curreny, amount: amount)
|
||||
}
|
||||
}
|
||||
@@ -379,7 +383,8 @@ extension PremiumGiftCodeOption {
|
||||
extension PremiumGiftCodeInfo {
|
||||
init(apiCheckedGiftCode: Api.payments.CheckedGiftCode, slug: String) {
|
||||
switch apiCheckedGiftCode {
|
||||
case let .checkedGiftCode(flags, fromId, giveawayMsgId, toId, date, months, usedDate, _, _):
|
||||
case let .checkedGiftCode(checkedGiftCodeData):
|
||||
let (flags, fromId, giveawayMsgId, toId, date, months, usedDate) = (checkedGiftCodeData.flags, checkedGiftCodeData.fromId, checkedGiftCodeData.giveawayMsgId, checkedGiftCodeData.toId, checkedGiftCodeData.date, checkedGiftCodeData.days, checkedGiftCodeData.usedDate)
|
||||
self.slug = slug
|
||||
self.fromPeerId = fromId?.peerId
|
||||
if let fromId = fromId, let giveawayMsgId = giveawayMsgId {
|
||||
@@ -405,12 +410,14 @@ public extension PremiumGiftCodeInfo {
|
||||
extension PrepaidGiveaway {
|
||||
init(apiPrepaidGiveaway: Api.PrepaidGiveaway) {
|
||||
switch apiPrepaidGiveaway {
|
||||
case let .prepaidGiveaway(id, months, quantity, date):
|
||||
case let .prepaidGiveaway(prepaidGiveawayData):
|
||||
let (id, months, quantity, date) = (prepaidGiveawayData.id, prepaidGiveawayData.months, prepaidGiveawayData.quantity, prepaidGiveawayData.date)
|
||||
self.id = id
|
||||
self.prize = .premium(months: months)
|
||||
self.quantity = quantity
|
||||
self.date = date
|
||||
case let .prepaidStarsGiveaway(id, stars, quantity, boosts, date):
|
||||
case let .prepaidStarsGiveaway(prepaidStarsGiveawayData):
|
||||
let (id, stars, quantity, boosts, date) = (prepaidStarsGiveawayData.id, prepaidStarsGiveawayData.stars, prepaidStarsGiveawayData.quantity, prepaidStarsGiveawayData.boosts, prepaidStarsGiveawayData.date)
|
||||
self.id = id
|
||||
self.prize = .stars(stars: stars, boosts: boosts)
|
||||
self.quantity = quantity
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11,9 +11,9 @@ public enum StarGiftAuctionReference: Equatable {
|
||||
var apiAuction: Api.InputStarGiftAuction {
|
||||
switch self {
|
||||
case let .giftId(giftId):
|
||||
return .inputStarGiftAuction(giftId: giftId)
|
||||
return .inputStarGiftAuction(.init(giftId: giftId))
|
||||
case let .slug(slug):
|
||||
return .inputStarGiftAuctionSlug(slug: slug)
|
||||
return .inputStarGiftAuctionSlug(.init(slug: slug))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,8 @@ private func _internal_getStarGiftAuctionState(postbox: Postbox, network: Networ
|
||||
}
|
||||
return postbox.transaction { transaction -> (gift: StarGift, state: GiftAuctionContext.State.AuctionState?, myState: GiftAuctionContext.State.MyState, timeout: Int32)? in
|
||||
switch result {
|
||||
case let .starGiftAuctionState(apiGift, state, userState, timeout, users, chats):
|
||||
case let .starGiftAuctionState(starGiftAuctionStateData):
|
||||
let (apiGift, state, userState, timeout, users, chats) = (starGiftAuctionStateData.gift, starGiftAuctionStateData.state, starGiftAuctionStateData.userState, starGiftAuctionStateData.timeout, starGiftAuctionStateData.users, starGiftAuctionStateData.chats)
|
||||
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: AccumulatedPeers(chats: chats, users: users))
|
||||
guard let gift = StarGift(apiStarGift: apiGift) else {
|
||||
return nil
|
||||
@@ -242,7 +243,8 @@ public final class GiftAuctionContext {
|
||||
extension GiftAuctionContext.State.BidLevel {
|
||||
init(apiBidLevel: Api.AuctionBidLevel) {
|
||||
switch apiBidLevel {
|
||||
case let .auctionBidLevel(pos, amount, date):
|
||||
case let .auctionBidLevel(auctionBidLevelData):
|
||||
let (pos, amount, date) = (auctionBidLevelData.pos, auctionBidLevelData.amount, auctionBidLevelData.date)
|
||||
self.position = pos
|
||||
self.amount = amount
|
||||
self.date = date
|
||||
@@ -253,7 +255,8 @@ extension GiftAuctionContext.State.BidLevel {
|
||||
extension GiftAuctionContext.State.AuctionState {
|
||||
init?(apiAuctionState: Api.StarGiftAuctionState, peers: [PeerId: Peer]) {
|
||||
switch apiAuctionState {
|
||||
case let .starGiftAuctionState(version, startDate, endDate, minBidAmount, bidLevels, topBiddersPeerIds, nextRoundAt, lastGiftNumber, giftsLeft, currentRound, totalRounds, apiRounds):
|
||||
case let .starGiftAuctionState(starGiftAuctionStateData):
|
||||
let (version, startDate, endDate, minBidAmount, bidLevels, topBiddersPeerIds, nextRoundAt, lastGiftNumber, giftsLeft, currentRound, totalRounds, apiRounds) = (starGiftAuctionStateData.version, starGiftAuctionStateData.startDate, starGiftAuctionStateData.endDate, starGiftAuctionStateData.minBidAmount, starGiftAuctionStateData.bidLevels, starGiftAuctionStateData.topBidders, starGiftAuctionStateData.nextRoundAt, starGiftAuctionStateData.lastGiftNum, starGiftAuctionStateData.giftsLeft, starGiftAuctionStateData.currentRound, starGiftAuctionStateData.totalRounds, starGiftAuctionStateData.rounds)
|
||||
var topBidders: [EnginePeer] = []
|
||||
for peerId in topBiddersPeerIds {
|
||||
if let peer = peers[PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(peerId))] {
|
||||
@@ -263,9 +266,11 @@ extension GiftAuctionContext.State.AuctionState {
|
||||
var rounds: [GiftAuctionContext.State.Round] = []
|
||||
for apiRound in apiRounds {
|
||||
switch apiRound {
|
||||
case let .starGiftAuctionRound(num, duration):
|
||||
case let .starGiftAuctionRound(starGiftAuctionRoundData):
|
||||
let (num, duration) = (starGiftAuctionRoundData.num, starGiftAuctionRoundData.duration)
|
||||
rounds.append(.generic(num: num, duration: duration))
|
||||
case let .starGiftAuctionRoundExtendable(num, duration, extendTop, extendWindow):
|
||||
case let .starGiftAuctionRoundExtendable(starGiftAuctionRoundExtendableData):
|
||||
let (num, duration, extendTop, extendWindow) = (starGiftAuctionRoundExtendableData.num, starGiftAuctionRoundExtendableData.duration, starGiftAuctionRoundExtendableData.extendTop, starGiftAuctionRoundExtendableData.extendWindow)
|
||||
rounds.append(.extendable(num: num, duration: duration, extendTop: extendTop, extendWindow: extendWindow))
|
||||
}
|
||||
}
|
||||
@@ -283,7 +288,8 @@ extension GiftAuctionContext.State.AuctionState {
|
||||
rounds: rounds,
|
||||
lastGiftNumber: lastGiftNumber
|
||||
)
|
||||
case let .starGiftAuctionStateFinished(_, startDate, endDate, averagePrice, listedCount, fragmentListedCount, fragmentListedUrl):
|
||||
case let .starGiftAuctionStateFinished(starGiftAuctionStateFinishedData):
|
||||
let (startDate, endDate, averagePrice, listedCount, fragmentListedCount, fragmentListedUrl) = (starGiftAuctionStateFinishedData.startDate, starGiftAuctionStateFinishedData.endDate, starGiftAuctionStateFinishedData.averagePrice, starGiftAuctionStateFinishedData.listedCount, starGiftAuctionStateFinishedData.fragmentListedCount, starGiftAuctionStateFinishedData.fragmentListedUrl)
|
||||
self = .finished(
|
||||
startDate: startDate,
|
||||
endDate: endDate,
|
||||
@@ -296,10 +302,11 @@ extension GiftAuctionContext.State.AuctionState {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
init?(apiAuctionState: Api.StarGiftAuctionState, transaction: Transaction) {
|
||||
switch apiAuctionState {
|
||||
case let .starGiftAuctionState(version, startDate, endDate, minBidAmount, bidLevels, topBiddersPeerIds, nextRoundAt, lastGiftNumber, giftsLeft, currentRound, totalRounds, apiRounds):
|
||||
case let .starGiftAuctionState(starGiftAuctionStateData):
|
||||
let (version, startDate, endDate, minBidAmount, bidLevels, topBiddersPeerIds, nextRoundAt, lastGiftNumber, giftsLeft, currentRound, totalRounds, apiRounds) = (starGiftAuctionStateData.version, starGiftAuctionStateData.startDate, starGiftAuctionStateData.endDate, starGiftAuctionStateData.minBidAmount, starGiftAuctionStateData.bidLevels, starGiftAuctionStateData.topBidders, starGiftAuctionStateData.nextRoundAt, starGiftAuctionStateData.lastGiftNum, starGiftAuctionStateData.giftsLeft, starGiftAuctionStateData.currentRound, starGiftAuctionStateData.totalRounds, starGiftAuctionStateData.rounds)
|
||||
var topBidders: [EnginePeer] = []
|
||||
for peerId in topBiddersPeerIds {
|
||||
if let peer = transaction.getPeer(PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(peerId))) {
|
||||
@@ -309,9 +316,11 @@ extension GiftAuctionContext.State.AuctionState {
|
||||
var rounds: [GiftAuctionContext.State.Round] = []
|
||||
for apiRound in apiRounds {
|
||||
switch apiRound {
|
||||
case let .starGiftAuctionRound(num, duration):
|
||||
case let .starGiftAuctionRound(starGiftAuctionRoundData):
|
||||
let (num, duration) = (starGiftAuctionRoundData.num, starGiftAuctionRoundData.duration)
|
||||
rounds.append(.generic(num: num, duration: duration))
|
||||
case let .starGiftAuctionRoundExtendable(num, duration, extendTop, extendWindow):
|
||||
case let .starGiftAuctionRoundExtendable(starGiftAuctionRoundExtendableData):
|
||||
let (num, duration, extendTop, extendWindow) = (starGiftAuctionRoundExtendableData.num, starGiftAuctionRoundExtendableData.duration, starGiftAuctionRoundExtendableData.extendTop, starGiftAuctionRoundExtendableData.extendWindow)
|
||||
rounds.append(.extendable(num: num, duration: duration, extendTop: extendTop, extendWindow: extendWindow))
|
||||
}
|
||||
}
|
||||
@@ -329,7 +338,8 @@ extension GiftAuctionContext.State.AuctionState {
|
||||
rounds: rounds,
|
||||
lastGiftNumber: lastGiftNumber
|
||||
)
|
||||
case let .starGiftAuctionStateFinished(_, startDate, endDate, averagePrice, listedCount, fragmentListedCount, fragmentListedUrl):
|
||||
case let .starGiftAuctionStateFinished(starGiftAuctionStateFinishedData):
|
||||
let (startDate, endDate, averagePrice, listedCount, fragmentListedCount, fragmentListedUrl) = (starGiftAuctionStateFinishedData.startDate, starGiftAuctionStateFinishedData.endDate, starGiftAuctionStateFinishedData.averagePrice, starGiftAuctionStateFinishedData.listedCount, starGiftAuctionStateFinishedData.fragmentListedCount, starGiftAuctionStateFinishedData.fragmentListedUrl)
|
||||
self = .finished(
|
||||
startDate: startDate,
|
||||
endDate: endDate,
|
||||
@@ -347,7 +357,8 @@ extension GiftAuctionContext.State.AuctionState {
|
||||
extension GiftAuctionContext.State.MyState {
|
||||
init(apiAuctionUserState: Api.StarGiftAuctionUserState) {
|
||||
switch apiAuctionUserState {
|
||||
case let .starGiftAuctionUserState(flags, bidAmount, bidDate, minBidAmount, bidPeerId, acquiredCount):
|
||||
case let .starGiftAuctionUserState(starGiftAuctionUserStateData):
|
||||
let (flags, bidAmount, bidDate, minBidAmount, bidPeerId, acquiredCount) = (starGiftAuctionUserStateData.flags, starGiftAuctionUserStateData.bidAmount, starGiftAuctionUserStateData.bidDate, starGiftAuctionUserStateData.minBidAmount, starGiftAuctionUserStateData.bidPeer, starGiftAuctionUserStateData.acquiredCount)
|
||||
self.isReturned = (flags & (1 << 1)) != 0
|
||||
self.bidAmount = bidAmount
|
||||
self.bidDate = bidDate
|
||||
@@ -382,19 +393,22 @@ func _internal_getGiftAuctionAcquiredGifts(account: Account, giftId: Int64) -> S
|
||||
}
|
||||
return account.postbox.transaction { transaction -> [GiftAuctionAcquiredGift] in
|
||||
switch result {
|
||||
case let .starGiftAuctionAcquiredGifts(gifts, users, chats):
|
||||
case let .starGiftAuctionAcquiredGifts(starGiftAuctionAcquiredGiftsData):
|
||||
let (gifts, users, chats) = (starGiftAuctionAcquiredGiftsData.gifts, starGiftAuctionAcquiredGiftsData.users, starGiftAuctionAcquiredGiftsData.chats)
|
||||
let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users)
|
||||
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: parsedPeers)
|
||||
|
||||
var mappedGifts: [GiftAuctionAcquiredGift] = []
|
||||
for gift in gifts {
|
||||
switch gift {
|
||||
case let .starGiftAuctionAcquiredGift(flags, peerId, date, bidAmount, round, pos, message, number):
|
||||
case let .starGiftAuctionAcquiredGift(starGiftAuctionAcquiredGiftData):
|
||||
let (flags, peerId, date, bidAmount, round, pos, message, number) = (starGiftAuctionAcquiredGiftData.flags, starGiftAuctionAcquiredGiftData.peer, starGiftAuctionAcquiredGiftData.date, starGiftAuctionAcquiredGiftData.bidAmount, starGiftAuctionAcquiredGiftData.round, starGiftAuctionAcquiredGiftData.pos, starGiftAuctionAcquiredGiftData.message, starGiftAuctionAcquiredGiftData.giftNum)
|
||||
if let peer = transaction.getPeer(peerId.peerId) {
|
||||
var text: String?
|
||||
var entities: [MessageTextEntity]?
|
||||
switch message {
|
||||
case let .textWithEntities(textValue, entitiesValue):
|
||||
case let .textWithEntities(textWithEntitiesData):
|
||||
let (textValue, entitiesValue) = (textWithEntitiesData.text, textWithEntitiesData.entities)
|
||||
text = textValue
|
||||
entities = messageTextEntitiesFromApiEntities(entitiesValue)
|
||||
default:
|
||||
@@ -426,14 +440,16 @@ func _internal_getActiveGiftAuctions(account: Account, hash: Int64) -> Signal<[G
|
||||
|> mapToSignal { result in
|
||||
return account.postbox.transaction { transaction -> [GiftAuctionContext]? in
|
||||
switch result {
|
||||
case let .starGiftActiveAuctions(auctions, users, chats):
|
||||
case let .starGiftActiveAuctions(starGiftActiveAuctionsData):
|
||||
let (auctions, users, chats) = (starGiftActiveAuctionsData.auctions, starGiftActiveAuctionsData.users, starGiftActiveAuctionsData.chats)
|
||||
let parsedPeers = AccumulatedPeers(chats: chats, users: users)
|
||||
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: parsedPeers)
|
||||
|
||||
var auctionContexts: [GiftAuctionContext] = []
|
||||
for auction in auctions {
|
||||
switch auction {
|
||||
case let .starGiftActiveAuctionState(apiGift, auctionState, userState):
|
||||
case let .starGiftActiveAuctionState(starGiftActiveAuctionStateData):
|
||||
let (apiGift, auctionState, userState) = (starGiftActiveAuctionStateData.gift, starGiftActiveAuctionStateData.state, starGiftActiveAuctionStateData.userState)
|
||||
guard let gift = StarGift(apiStarGift: apiGift) else {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -42,7 +42,13 @@ public struct StarGiftCollection: Codable, Equatable {
|
||||
extension StarGiftCollection {
|
||||
init?(apiStarGiftCollection: Api.StarGiftCollection) {
|
||||
switch apiStarGiftCollection {
|
||||
case let .starGiftCollection(_, collectionId, title, icon, giftsCount, hash):
|
||||
case let .starGiftCollection(starGiftCollectionData):
|
||||
let _ = starGiftCollectionData.flags
|
||||
let collectionId = starGiftCollectionData.collectionId
|
||||
let title = starGiftCollectionData.title
|
||||
let icon = starGiftCollectionData.icon
|
||||
let giftsCount = starGiftCollectionData.giftsCount
|
||||
let hash = starGiftCollectionData.hash
|
||||
self.id = collectionId
|
||||
self.title = title
|
||||
self.icon = icon.flatMap { telegramMediaFileFromApiDocument($0, altDocuments: nil) }
|
||||
@@ -121,8 +127,9 @@ private func _internal_getStarGiftCollections(postbox: Postbox, network: Network
|
||||
}
|
||||
return postbox.transaction { transaction -> [StarGiftCollection]? in
|
||||
switch result {
|
||||
case let .starGiftCollections(collections):
|
||||
let collections = collections.compactMap { StarGiftCollection(apiStarGiftCollection: $0) }
|
||||
case let .starGiftCollections(starGiftCollectionsData):
|
||||
let apiCollections = starGiftCollectionsData.collections
|
||||
let collections = apiCollections.compactMap { StarGiftCollection(apiStarGiftCollection: $0) }
|
||||
return collections
|
||||
case .starGiftCollectionsNotModified:
|
||||
return cachedCollections ?? []
|
||||
|
||||
@@ -51,7 +51,8 @@ public struct StarsTopUpOption: Equatable, Codable {
|
||||
extension StarsTopUpOption {
|
||||
init(apiStarsTopupOption: Api.StarsTopupOption) {
|
||||
switch apiStarsTopupOption {
|
||||
case let .starsTopupOption(flags, stars, storeProduct, currency, amount):
|
||||
case let .starsTopupOption(starsTopupOptionData):
|
||||
let (flags, stars, storeProduct, currency, amount) = (starsTopupOptionData.flags, starsTopupOptionData.stars, starsTopupOptionData.storeProduct, starsTopupOptionData.currency, starsTopupOptionData.amount)
|
||||
self.init(count: stars, storeProductId: storeProduct, currency: currency, amount: amount, isExtended: (flags & (1 << 1)) != 0)
|
||||
}
|
||||
}
|
||||
@@ -117,7 +118,8 @@ public struct StarsGiftOption: Equatable, Codable {
|
||||
extension StarsGiftOption {
|
||||
init(apiStarsGiftOption: Api.StarsGiftOption) {
|
||||
switch apiStarsGiftOption {
|
||||
case let .starsGiftOption(flags, stars, storeProduct, currency, amount):
|
||||
case let .starsGiftOption(starsGiftOptionData):
|
||||
let (flags, stars, storeProduct, currency, amount) = (starsGiftOptionData.flags, starsGiftOptionData.stars, starsGiftOptionData.storeProduct, starsGiftOptionData.currency, starsGiftOptionData.amount)
|
||||
self.init(count: stars, storeProductId: storeProduct, currency: currency, amount: amount, isExtended: (flags & (1 << 1)) != 0)
|
||||
}
|
||||
}
|
||||
@@ -241,7 +243,8 @@ public struct StarsGiveawayOption: Equatable, Codable {
|
||||
extension StarsGiveawayOption.Winners {
|
||||
init(apiStarsGiveawayWinnersOption: Api.StarsGiveawayWinnersOption) {
|
||||
switch apiStarsGiveawayWinnersOption {
|
||||
case let .starsGiveawayWinnersOption(flags, users, starsPerUser):
|
||||
case let .starsGiveawayWinnersOption(starsGiveawayWinnersOptionData):
|
||||
let (flags, users, starsPerUser) = (starsGiveawayWinnersOptionData.flags, starsGiveawayWinnersOptionData.users, starsGiveawayWinnersOptionData.perUserStars)
|
||||
self.init(users: users, starsPerUser: starsPerUser, isDefault: (flags & (1 << 0)) != 0)
|
||||
}
|
||||
}
|
||||
@@ -250,7 +253,8 @@ extension StarsGiveawayOption.Winners {
|
||||
extension StarsGiveawayOption {
|
||||
init(apiStarsGiveawayOption: Api.StarsGiveawayOption) {
|
||||
switch apiStarsGiveawayOption {
|
||||
case let .starsGiveawayOption(flags, stars, yearlyBoosts, storeProduct, currency, amount, winners):
|
||||
case let .starsGiveawayOption(starsGiveawayOptionData):
|
||||
let (flags, stars, yearlyBoosts, storeProduct, currency, amount, winners) = (starsGiveawayOptionData.flags, starsGiveawayOptionData.stars, starsGiveawayOptionData.yearlyBoosts, starsGiveawayOptionData.storeProduct, starsGiveawayOptionData.currency, starsGiveawayOptionData.amount, starsGiveawayOptionData.winners)
|
||||
self.init(count: stars, yearlyBoosts: yearlyBoosts, storeProductId: storeProduct, currency: currency, amount: amount, winners: winners.map { StarsGiveawayOption.Winners(apiStarsGiveawayWinnersOption: $0) }, isExtended: (flags & (1 << 0)) != 0, isDefault: (flags & (1 << 1)) != 0)
|
||||
}
|
||||
}
|
||||
@@ -346,9 +350,11 @@ public struct StarsAmount: Equatable, Comparable, Hashable, Codable, CustomStrin
|
||||
extension StarsAmount {
|
||||
init(apiAmount: Api.StarsAmount) {
|
||||
switch apiAmount {
|
||||
case let .starsAmount(amount, nanos):
|
||||
case let .starsAmount(starsAmountData):
|
||||
let (amount, nanos) = (starsAmountData.amount, starsAmountData.nanos)
|
||||
self.init(value: amount, nanos: nanos)
|
||||
case let .starsTonAmount(amount):
|
||||
case let .starsTonAmount(starsTonAmountData):
|
||||
let amount = starsTonAmountData.amount
|
||||
self.init(value: amount, nanos: 0)
|
||||
}
|
||||
}
|
||||
@@ -389,9 +395,11 @@ public struct CurrencyAmount: Equatable, Hashable, Codable {
|
||||
extension CurrencyAmount {
|
||||
init(apiAmount: Api.StarsAmount) {
|
||||
switch apiAmount {
|
||||
case let .starsAmount(amount, nanos):
|
||||
case let .starsAmount(starsAmountData):
|
||||
let (amount, nanos) = (starsAmountData.amount, starsAmountData.nanos)
|
||||
self.init(amount: StarsAmount(value: amount, nanos: nanos), currency: .stars)
|
||||
case let .starsTonAmount(amount):
|
||||
case let .starsTonAmount(starsTonAmountData):
|
||||
let amount = starsTonAmountData.amount
|
||||
self.init(amount: StarsAmount(value: amount, nanos: 0), currency: .ton)
|
||||
}
|
||||
}
|
||||
@@ -399,10 +407,10 @@ extension CurrencyAmount {
|
||||
var apiAmount: Api.StarsAmount {
|
||||
switch self.currency {
|
||||
case .stars:
|
||||
return .starsAmount(amount: self.amount.value, nanos: self.amount.nanos)
|
||||
return .starsAmount(.init(amount: self.amount.value, nanos: self.amount.nanos))
|
||||
case .ton:
|
||||
assert(self.amount.nanos == 0)
|
||||
return .starsTonAmount(amount: self.amount.value)
|
||||
return .starsTonAmount(.init(amount: self.amount.value))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -462,7 +470,8 @@ private func _internal_requestStarsState(account: Account, peerId: EnginePeer.Id
|
||||
|> mapToSignal { result -> Signal<InternalStarsStatus, RequestStarsStateError> in
|
||||
return account.postbox.transaction { transaction -> InternalStarsStatus in
|
||||
switch result {
|
||||
case let .starsStatus(_, balance, _, _, subscriptionsMissingBalance, transactions, nextTransactionsOffset, chats, users):
|
||||
case let .starsStatus(starsStatusData):
|
||||
let (_, balance, _, _, subscriptionsMissingBalance, transactions, nextTransactionsOffset, chats, users) = (starsStatusData.flags, starsStatusData.balance, starsStatusData.subscriptions, starsStatusData.subscriptionsNextOffset, starsStatusData.subscriptionsMissingBalance, starsStatusData.history, starsStatusData.nextOffset, starsStatusData.chats, starsStatusData.users)
|
||||
let peers = AccumulatedPeers(chats: chats, users: users)
|
||||
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: peers)
|
||||
|
||||
@@ -515,10 +524,11 @@ private func _internal_requestStarsSubscriptions(account: Account, peerId: Engin
|
||||
}
|
||||
return account.postbox.transaction { transaction -> InternalStarsStatus in
|
||||
switch result {
|
||||
case let .starsStatus(_, balance, subscriptions, subscriptionsNextOffset, subscriptionsMissingBalance, _, _, chats, users):
|
||||
case let .starsStatus(starsStatusData):
|
||||
let (_, balance, subscriptions, subscriptionsNextOffset, subscriptionsMissingBalance, _, _, chats, users) = (starsStatusData.flags, starsStatusData.balance, starsStatusData.subscriptions, starsStatusData.subscriptionsNextOffset, starsStatusData.subscriptionsMissingBalance, starsStatusData.history, starsStatusData.nextOffset, starsStatusData.chats, starsStatusData.users)
|
||||
let peers = AccumulatedPeers(chats: chats, users: users)
|
||||
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: peers)
|
||||
|
||||
|
||||
var parsedSubscriptions: [StarsContext.State.Subscription] = []
|
||||
if let subscriptions {
|
||||
for entry in subscriptions {
|
||||
@@ -655,11 +665,12 @@ private final class StarsContextImpl {
|
||||
private extension StarsContext.State.Transaction {
|
||||
init?(apiTransaction: Api.StarsTransaction, peerId: EnginePeer.Id?, transaction: Transaction) {
|
||||
switch apiTransaction {
|
||||
case let .starsTransaction(apiFlags, id, stars, date, transactionPeer, title, description, photo, transactionDate, transactionUrl, _, messageId, extendedMedia, subscriptionPeriod, giveawayPostId, starGift, floodskipNumber, starrefCommissionPermille, starrefPeer, starrefAmount, paidMessageCount, premiumGiftMonths, adsProceedsFromDate, adsProceedsToDate):
|
||||
case let .starsTransaction(starsTransactionData):
|
||||
let (apiFlags, id, stars, date, transactionPeer, title, description, photo, transactionDate, transactionUrl, _, messageId, extendedMedia, subscriptionPeriod, giveawayPostId, starGift, floodskipNumber, starrefCommissionPermille, starrefPeer, starrefAmount, paidMessageCount, premiumGiftMonths, adsProceedsFromDate, adsProceedsToDate) = (starsTransactionData.flags, starsTransactionData.id, starsTransactionData.amount, starsTransactionData.date, starsTransactionData.peer, starsTransactionData.title, starsTransactionData.description, starsTransactionData.photo, starsTransactionData.transactionDate, starsTransactionData.transactionUrl, starsTransactionData.botPayload, starsTransactionData.msgId, starsTransactionData.extendedMedia, starsTransactionData.subscriptionPeriod, starsTransactionData.giveawayPostId, starsTransactionData.stargift, starsTransactionData.floodskipNumber, starsTransactionData.starrefCommissionPermille, starsTransactionData.starrefPeer, starsTransactionData.starrefAmount, starsTransactionData.paidMessages, starsTransactionData.premiumGiftMonths, starsTransactionData.adsProceedsFromDate, starsTransactionData.adsProceedsToDate)
|
||||
let parsedPeer: StarsContext.State.Transaction.Peer
|
||||
var paidMessageId: MessageId?
|
||||
var giveawayMessageId: MessageId?
|
||||
|
||||
|
||||
switch transactionPeer {
|
||||
case .starsTransactionPeerAppStore:
|
||||
parsedPeer = .appStore
|
||||
@@ -675,7 +686,8 @@ private extension StarsContext.State.Transaction {
|
||||
parsedPeer = .apiLimitExtension
|
||||
case .starsTransactionPeerUnsupported:
|
||||
parsedPeer = .unsupported
|
||||
case let .starsTransactionPeer(apiPeer):
|
||||
case let .starsTransactionPeer(starsTransactionPeerData):
|
||||
let apiPeer = starsTransactionPeerData.peer
|
||||
guard let peer = transaction.getPeer(apiPeer.peerId) else {
|
||||
return nil
|
||||
}
|
||||
@@ -749,7 +761,8 @@ private extension StarsContext.State.Transaction {
|
||||
private extension StarsContext.State.Subscription {
|
||||
init?(apiSubscription: Api.StarsSubscription, transaction: Transaction) {
|
||||
switch apiSubscription {
|
||||
case let .starsSubscription(apiFlags, id, apiPeer, untilDate, pricing, inviteHash, title, photo, invoiceSlug):
|
||||
case let .starsSubscription(starsSubscriptionData):
|
||||
let (apiFlags, id, apiPeer, untilDate, pricing, inviteHash, title, photo, invoiceSlug) = (starsSubscriptionData.flags, starsSubscriptionData.id, starsSubscriptionData.peer, starsSubscriptionData.untilDate, starsSubscriptionData.pricing, starsSubscriptionData.chatInviteHash, starsSubscriptionData.title, starsSubscriptionData.photo, starsSubscriptionData.invoiceSlug)
|
||||
guard let peer = transaction.getPeer(apiPeer.peerId) else {
|
||||
return nil
|
||||
}
|
||||
@@ -1591,7 +1604,8 @@ func _internal_sendStarsPaymentForm(account: Account, formId: Int64, source: Bot
|
||||
return account.network.request(Api.functions.payments.sendStarsForm(formId: formId, invoice: invoice))
|
||||
|> map { result -> SendBotPaymentResult in
|
||||
switch result {
|
||||
case let .paymentResult(updates):
|
||||
case let .paymentResult(paymentResultData):
|
||||
let updates = paymentResultData.updates
|
||||
account.stateManager.addUpdates(updates)
|
||||
|
||||
switch source {
|
||||
@@ -1644,7 +1658,7 @@ func _internal_sendStarsPaymentForm(account: Account, formId: Int64, source: Bot
|
||||
case .giftCode, .stars, .starsGift, .starsChatSubscription, .starGift, .starGiftUpgrade, .starGiftTransfer, .premiumGift, .starGiftResale, .starGiftPrepaidUpgrade, .starGiftDropOriginalDetails, .starGiftAuctionBid:
|
||||
receiptMessageId = nil
|
||||
}
|
||||
} else if case let .starGiftUnique(gift, _, _, savedToProfile, canExportDate, transferStars, isRefunded, _, peerId, _, savedId, _, canTransferDate, canResaleDate, dropOriginalDetailsStars, _, _) = action.action, case let .Id(messageId) = message.id {
|
||||
} else if case let .starGiftUnique(gift, _, _, savedToProfile, canExportDate, transferStars, isRefunded, _, peerId, _, savedId, _, canTransferDate, canResaleDate, dropOriginalDetailsStars, _, _, canCraftAt, _) = action.action, case let .Id(messageId) = message.id {
|
||||
let reference: StarGiftReference
|
||||
if let peerId, let savedId {
|
||||
reference = .peer(peerId: peerId, id: savedId)
|
||||
@@ -1673,7 +1687,8 @@ func _internal_sendStarsPaymentForm(account: Account, formId: Int64, source: Bot
|
||||
upgradeSeparate: false,
|
||||
dropOriginalDetailsStars: dropOriginalDetailsStars,
|
||||
number: nil,
|
||||
isRefunded: isRefunded
|
||||
isRefunded: isRefunded,
|
||||
canCraftAt: canCraftAt
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1681,7 +1696,8 @@ func _internal_sendStarsPaymentForm(account: Account, formId: Int64, source: Bot
|
||||
}
|
||||
}
|
||||
return .done(receiptMessageId: receiptMessageId, subscriptionPeerId: nil, uniqueStarGift: resultGift)
|
||||
case let .paymentVerificationNeeded(url):
|
||||
case let .paymentVerificationNeeded(paymentVerificationNeededData):
|
||||
let url = paymentVerificationNeededData.url
|
||||
return .externalVerificationRequired(url: url)
|
||||
}
|
||||
}
|
||||
@@ -1746,7 +1762,7 @@ func _internal_getStarsTransaction(accountPeerId: PeerId, postbox: Postbox, netw
|
||||
Api.functions.payments.getStarsTransactionsByID(
|
||||
flags: transactionReference.ton ? 1 << 0 : 0,
|
||||
peer: inputPeer,
|
||||
id: [.inputStarsTransaction(flags: transactionReference.isRefund ? (1 << 0) : 0, id: transactionReference.id)]
|
||||
id: [.inputStarsTransaction(.init(flags: transactionReference.isRefund ? (1 << 0) : 0, id: transactionReference.id))]
|
||||
)
|
||||
)
|
||||
|> map(Optional.init)
|
||||
@@ -1755,9 +1771,11 @@ func _internal_getStarsTransaction(accountPeerId: PeerId, postbox: Postbox, netw
|
||||
}
|
||||
|> mapToSignal { result -> Signal<StarsContext.State.Transaction?, NoError> in
|
||||
return postbox.transaction { transaction -> StarsContext.State.Transaction? in
|
||||
guard let result, case let .starsStatus(_, _, _, _, _, transactions, _, chats, users) = result, let matchingTransaction = transactions?.first else {
|
||||
guard let result, case let .starsStatus(starsStatusData) = result, let matchingTransaction = starsStatusData.history?.first else {
|
||||
return nil
|
||||
}
|
||||
let (_, _, _, _, _, transactions, _, chats, users) = (starsStatusData.flags, starsStatusData.balance, starsStatusData.subscriptions, starsStatusData.subscriptionsNextOffset, starsStatusData.subscriptionsMissingBalance, starsStatusData.history, starsStatusData.nextOffset, starsStatusData.chats, starsStatusData.users)
|
||||
let _ = transactions
|
||||
let peers = AccumulatedPeers(chats: chats, users: users)
|
||||
updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: peers)
|
||||
|
||||
@@ -1808,13 +1826,14 @@ public struct StarsSubscriptionPricing: Codable, Equatable {
|
||||
extension StarsSubscriptionPricing {
|
||||
init(apiStarsSubscriptionPricing: Api.StarsSubscriptionPricing) {
|
||||
switch apiStarsSubscriptionPricing {
|
||||
case let .starsSubscriptionPricing(period, amount):
|
||||
case let .starsSubscriptionPricing(starsSubscriptionPricingData):
|
||||
let (period, amount) = (starsSubscriptionPricingData.period, starsSubscriptionPricingData.amount)
|
||||
self = .init(period: period, amount: StarsAmount(value: amount, nanos: 0))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var apiStarsSubscriptionPricing: Api.StarsSubscriptionPricing {
|
||||
return .starsSubscriptionPricing(period: self.period, amount: self.amount.value)
|
||||
return .starsSubscriptionPricing(.init(period: self.period, amount: self.amount.value))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -149,7 +149,7 @@ public extension TelegramEngine {
|
||||
return _internal_checkCanSendStarGift(account: self.account, giftId: giftId)
|
||||
}
|
||||
|
||||
public func getUniqueStarGift(slug: String) -> Signal<StarGift.UniqueGift?, NoError> {
|
||||
public func getUniqueStarGift(slug: String) -> Signal<StarGift.UniqueGift, GetUniqueStarGiftError> {
|
||||
return _internal_getUniqueStarGift(account: self.account, slug: slug)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user