remove gift

This commit is contained in:
Mikhail Filimonov 2025-04-17 17:28:34 +01:00
parent 27a2f38ff6
commit c3c4e17b13

View File

@ -1459,10 +1459,10 @@ private final class ProfileGiftsContextImpl {
return _internal_transferStarGift(account: self.account, prepaid: prepaid, reference: reference, peerId: peerId)
}
func buyStarGift(reference: StarGiftReference, peerId: EnginePeer.Id) -> Signal<Never, BuyStarGiftError> {
var gift = self.gifts.first(where: { $0.reference == reference })
func buyStarGift(gift inputGift: TelegramCore.StarGift, peerId: EnginePeer.Id) -> Signal<Never, BuyStarGiftError> {
var gift = self.gifts.first(where: { $0.gift == inputGift })
if gift == nil {
gift = self.filteredGifts.first(where: { $0.reference == reference })
gift = self.filteredGifts.first(where: { $0.gift == inputGift })
}
guard case let .unique(uniqueGift) = gift?.gift else {
return .complete()
@ -1471,13 +1471,19 @@ private final class ProfileGiftsContextImpl {
if let count = self.count {
self.count = max(0, count - 1)
}
self.gifts.removeAll(where: { $0.reference == reference })
self.filteredGifts.removeAll(where: { $0.reference == reference })
self.gifts.removeAll(where: { $0.gift == inputGift })
self.filteredGifts.removeAll(where: { $0.gift == inputGift })
self.pushState()
return _internal_buyStarGift(account: self.account, slug: uniqueGift.slug, peerId: peerId)
}
func removeStarGift(gift: TelegramCore.StarGift) {
self.gifts.removeAll(where: { $0.gift == gift })
self.filteredGifts.removeAll(where: { $0.gift == gift })
self.pushState()
}
func upgradeStarGift(formId: Int64?, reference: StarGiftReference, keepOriginalInfo: Bool) -> Signal<ProfileGiftsContext.State.StarGift, UpgradeStarGiftError> {
return Signal { [weak self] subscriber in
guard let self else {
@ -1893,11 +1899,11 @@ public final class ProfileGiftsContext {
}
}
public func buyStarGift(reference: StarGiftReference, peerId: EnginePeer.Id) -> Signal<Never, BuyStarGiftError> {
public func buyStarGift(gift: TelegramCore.StarGift, peerId: EnginePeer.Id) -> Signal<Never, BuyStarGiftError> {
return Signal { subscriber in
let disposable = MetaDisposable()
self.impl.with { impl in
disposable.set(impl.buyStarGift(reference: reference, peerId: peerId).start(error: { error in
disposable.set(impl.buyStarGift(gift: gift, peerId: peerId).start(error: { error in
subscriber.putError(error)
}, completed: {
subscriber.putCompletion()
@ -1907,6 +1913,12 @@ public final class ProfileGiftsContext {
}
}
public func removeStarGift(gift: TelegramCore.StarGift) {
self.impl.with { impl in
impl.removeStarGift(gift: gift)
}
}
public func transferStarGift(prepaid: Bool, reference: StarGiftReference, peerId: EnginePeer.Id) -> Signal<Never, TransferStarGiftError> {
return Signal { subscriber in
let disposable = MetaDisposable()