diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift b/submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift index 72145ceb8b..1cdbf93064 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift @@ -1480,11 +1480,18 @@ private final class ProfileGiftsContextImpl { } return false }) + self.pushState() return _internal_buyStarGift(account: self.account, slug: 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 { return Signal { [weak self] subscriber in guard let self else { @@ -1520,7 +1527,7 @@ private final class ProfileGiftsContextImpl { } } - func updateStarGiftResellPrice(reference: StarGiftReference, price: Int64?) -> Signal { + func updateStarGiftResellPrice(reference: StarGiftReference, price: Int64?, id: Int64?) -> Signal { return Signal { [weak self] subscriber in guard let self else { return EmptyDisposable @@ -1539,6 +1546,16 @@ private final class ProfileGiftsContextImpl { if gift.reference == reference { return true } + switch gift.gift { + case .generic(let gift): + if gift.id == id { + return true + } + case .unique(let uniqueGift): + if uniqueGift.id == id { + return true + } + } return false }) { if case let .unique(uniqueGift) = self.gifts[index].gift { @@ -1552,6 +1569,16 @@ private final class ProfileGiftsContextImpl { if gift.reference == reference { return true } + switch gift.gift { + case .generic(let gift): + if gift.id == id { + return true + } + case .unique(let uniqueGift): + if uniqueGift.id == id { + return true + } + } return false }) { if case let .unique(uniqueGift) = self.filteredGifts[index].gift { @@ -1935,6 +1962,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 { return Signal { subscriber in let disposable = MetaDisposable() @@ -1965,11 +1998,11 @@ public final class ProfileGiftsContext { } } - public func updateStarGiftResellPrice(reference: StarGiftReference, price: Int64?) -> Signal { + public func updateStarGiftResellPrice(reference: StarGiftReference, price: Int64?, id: Int64? = nil) -> Signal { return Signal { subscriber in let disposable = MetaDisposable() self.impl.with { impl in - disposable.set(impl.updateStarGiftResellPrice(reference: reference, price: price).start(error: { error in + disposable.set(impl.updateStarGiftResellPrice(reference: reference, price: price, id: id).start(error: { error in subscriber.putError(error) }, completed: { subscriber.putCompletion() @@ -2524,6 +2557,11 @@ private final class ResaleGiftsContextImpl { self.loadMore() } + func removeStarGift(gift: TelegramCore.StarGift) { + self.gifts.removeAll(where: { $0 == gift }) + self.pushState() + } + func updateSorting(_ sorting: ResaleGiftsContext.Sorting) { guard self.sorting != sorting else { return @@ -2710,6 +2748,13 @@ public final class ResaleGiftsContext { return disposable } } + + public func removeStarGift(gift: TelegramCore.StarGift) { + self.impl.with { impl in + impl.removeStarGift(gift: gift) + } + } + public var currentState: ResaleGiftsContext.State? { var state: ResaleGiftsContext.State?