Skip to content

Commit 74b761c

Browse files
committed
Various improvements
1 parent eb7f575 commit 74b761c

File tree

6 files changed

+36
-29
lines changed

6 files changed

+36
-29
lines changed

submodules/AccountContext/Sources/AccountContext.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,8 +1423,8 @@ public protocol SharedAccountContext: AnyObject {
14231423
func makeGiftViewScreen(context: AccountContext, gift: StarGift.UniqueGift, shareStory: ((StarGift.UniqueGift) -> Void)?, openChatTheme: (() -> Void)?, dismissed: (() -> Void)?) -> ViewController
14241424
func makeGiftWearPreviewScreen(context: AccountContext, gift: StarGift.UniqueGift) -> ViewController
14251425
func makeGiftAuctionInfoScreen(context: AccountContext, auctionContext: GiftAuctionContext, completion: (() -> Void)?) -> ViewController
1426-
func makeGiftAuctionBidScreen(context: AccountContext, toPeerId: EnginePeer.Id, text: String?, entities: [MessageTextEntity]?, hideName: Bool, auctionContext: GiftAuctionContext, acquiredGifts: [GiftAuctionAcquiredGift]?) -> ViewController
1427-
func makeGiftAuctionViewScreen(context: AccountContext, auctionContext: GiftAuctionContext, completion: @escaping ([GiftAuctionAcquiredGift]?) -> Void) -> ViewController
1426+
func makeGiftAuctionBidScreen(context: AccountContext, toPeerId: EnginePeer.Id, text: String?, entities: [MessageTextEntity]?, hideName: Bool, auctionContext: GiftAuctionContext, acquiredGifts: Signal<[GiftAuctionAcquiredGift], NoError>?) -> ViewController
1427+
func makeGiftAuctionViewScreen(context: AccountContext, auctionContext: GiftAuctionContext, completion: @escaping (Signal<[GiftAuctionAcquiredGift], NoError>) -> Void) -> ViewController
14281428
func makeGiftAuctionActiveBidsScreen(context: AccountContext) -> ViewController
14291429

14301430
func makeStorySharingScreen(context: AccountContext, subject: StorySharingSubject, parentController: ViewController) -> ViewController

submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGiftsAuctions.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ extension GiftAuctionContext.State.MyState {
272272
}
273273
}
274274

275-
public struct GiftAuctionAcquiredGift {
275+
public struct GiftAuctionAcquiredGift: Equatable {
276276
public var nameHidden: Bool
277277
public let peer: EnginePeer
278278
public let date: Int32

submodules/TelegramUI/Components/Gifts/GiftSetupScreen/Sources/GiftSetupScreen.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ private final class GiftSetupScreenComponent: Component {
4646
let context: AccountContext
4747
let peerId: EnginePeer.Id
4848
let subject: GiftSetupScreen.Subject
49-
let auctionAcquiredGifts: [GiftAuctionAcquiredGift]?
49+
let auctionAcquiredGifts: Signal<[GiftAuctionAcquiredGift], NoError>?
5050
let completion: (() -> Void)?
5151

5252
init(
5353
context: AccountContext,
5454
peerId: EnginePeer.Id,
5555
subject: GiftSetupScreen.Subject,
56-
auctionAcquiredGifts: [GiftAuctionAcquiredGift]?,
56+
auctionAcquiredGifts: Signal<[GiftAuctionAcquiredGift], NoError>?,
5757
completion: (() -> Void)? = nil
5858
) {
5959
self.context = context
@@ -2034,7 +2034,7 @@ public class GiftSetupScreen: ViewControllerComponentContainer {
20342034
context: AccountContext,
20352035
peerId: EnginePeer.Id,
20362036
subject: Subject,
2037-
auctionAcquiredGifts: [GiftAuctionAcquiredGift]? = nil,
2037+
auctionAcquiredGifts: Signal<[GiftAuctionAcquiredGift], NoError>? = nil,
20382038
completion: (() -> Void)? = nil
20392039
) {
20402040
self.context = context

submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftAuctionBidScreen.swift

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -957,7 +957,7 @@ private final class GiftAuctionBidScreenComponent: Component {
957957
let hideName: Bool
958958
let gift: StarGift
959959
let auctionContext: GiftAuctionContext
960-
let acquiredGifts: [GiftAuctionAcquiredGift]?
960+
let acquiredGifts: Signal<[GiftAuctionAcquiredGift], NoError>?
961961

962962
init(
963963
context: AccountContext,
@@ -967,7 +967,7 @@ private final class GiftAuctionBidScreenComponent: Component {
967967
hideName: Bool,
968968
gift: StarGift,
969969
auctionContext: GiftAuctionContext,
970-
acquiredGifts: [GiftAuctionAcquiredGift]?
970+
acquiredGifts: Signal<[GiftAuctionAcquiredGift], NoError>?
971971
) {
972972
self.context = context
973973
self.toPeerId = toPeerId
@@ -1922,8 +1922,6 @@ private final class GiftAuctionBidScreenComponent: Component {
19221922
}
19231923

19241924
if self.component == nil {
1925-
self.giftAuctionAcquiredGifts = component.acquiredGifts
1926-
19271925
if let starsContext = component.context.starsContext {
19281926
self.balanceDisposable = (starsContext.state
19291927
|> deliverOnMainQueue).startStrict(next: { [weak self] state in
@@ -1957,6 +1955,18 @@ private final class GiftAuctionBidScreenComponent: Component {
19571955
peerIds.append(context.account.peerId)
19581956
self.resetSliderValue(component: component)
19591957
transition = .immediate
1958+
1959+
if let acquiredGifts = component.acquiredGifts {
1960+
self.giftAuctionAcquiredGiftsDisposable.set((acquiredGifts
1961+
|> take(1)
1962+
|> deliverOnMainQueue).start(next: { [weak self] acquiredGifts in
1963+
self?.giftAuctionAcquiredGifts = acquiredGifts
1964+
}))
1965+
} else if let acquiredCount = auctionState?.myState.acquiredCount, acquiredCount > 0 {
1966+
Queue.mainQueue().justDispatch {
1967+
self.loadAcquiredGifts()
1968+
}
1969+
}
19601970
}
19611971

19621972
if !peerIds.isEmpty {
@@ -1981,13 +1991,7 @@ private final class GiftAuctionBidScreenComponent: Component {
19811991
}
19821992
self.state?.updated(transition: transition)
19831993

1984-
let previousAcquiredCount: Int32
1985-
if let previousState {
1986-
previousAcquiredCount = previousState.myState.acquiredCount
1987-
} else {
1988-
previousAcquiredCount = Int32(component.acquiredGifts?.count ?? 0)
1989-
}
1990-
if let acquiredCount = auctionState?.myState.acquiredCount, acquiredCount > previousAcquiredCount {
1994+
if let acquiredCount = auctionState?.myState.acquiredCount, let previousAcquiredCount = previousState?.myState.acquiredCount, acquiredCount > previousAcquiredCount {
19911995
Queue.mainQueue().justDispatch {
19921996
self.loadAcquiredGifts()
19931997
}
@@ -2310,7 +2314,6 @@ private final class GiftAuctionBidScreenComponent: Component {
23102314

23112315
var perks: [([AnimatedTextComponent.Item], String)] = []
23122316

2313-
var minBidIsSmall = false
23142317
var minBidAnimatedItems: [AnimatedTextComponent.Item] = []
23152318
var untilNextDropAnimatedItems: [AnimatedTextComponent.Item] = []
23162319
var dropsLeftAnimatedItems: [AnimatedTextComponent.Item] = []
@@ -2321,11 +2324,13 @@ private final class GiftAuctionBidScreenComponent: Component {
23212324
if let myMinBidAmmount = self.giftAuctionState?.myState.minBidAmount {
23222325
minBidAmount = myMinBidAmmount
23232326
}
2324-
var minBidString = "# \(presentationStringsFormattedNumber(Int32(clamping: minBidAmount), environment.dateTimeFormat.groupingSeparator))"
2325-
if minBidAmount > 999999 {
2326-
minBidString = "# \(minBidAmount)"
2327-
minBidIsSmall = true
2327+
var minBidString: String
2328+
if minBidAmount > 99999 {
2329+
minBidString = compactNumericCountString(Int(minBidAmount), decimalSeparator: environment.dateTimeFormat.decimalSeparator, showDecimalPart: false)
2330+
} else {
2331+
minBidString = presentationStringsFormattedNumber(Int32(clamping: minBidAmount), environment.dateTimeFormat.groupingSeparator)
23282332
}
2333+
minBidString = "# \(minBidString)"
23292334
if let hashIndex = minBidString.firstIndex(of: "#") {
23302335
var prefix = String(minBidString[..<hashIndex])
23312336
if !prefix.isEmpty {
@@ -2440,7 +2445,7 @@ private final class GiftAuctionBidScreenComponent: Component {
24402445
gift: i == perks.count - 1 ? component.auctionContext.gift : nil,
24412446
title: perk.0,
24422447
subtitle: perk.1,
2443-
small: i == 0 && minBidIsSmall,
2448+
small: false,
24442449
theme: environment.theme
24452450
)),
24462451
environment: {},
@@ -2939,7 +2944,7 @@ public class GiftAuctionBidScreen: ViewControllerComponentContainer {
29392944
private var didPlayAppearAnimation: Bool = false
29402945
private var isDismissed: Bool = false
29412946

2942-
public init(context: AccountContext, toPeerId: EnginePeer.Id, text: String?, entities: [MessageTextEntity]?, hideName: Bool, auctionContext: GiftAuctionContext, acquiredGifts: [GiftAuctionAcquiredGift]?) {
2947+
public init(context: AccountContext, toPeerId: EnginePeer.Id, text: String?, entities: [MessageTextEntity]?, hideName: Bool, auctionContext: GiftAuctionContext, acquiredGifts: Signal<[GiftAuctionAcquiredGift], NoError>?) {
29432948
self.context = context
29442949

29452950
super.init(context: context, component: GiftAuctionBidScreenComponent(

submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftAuctionViewScreen.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ private final class GiftAuctionViewSheetContent: CombinedComponent {
6969

7070
private var giftAuctionTimer: SwiftSignalKit.Timer?
7171
fileprivate var giftAuctionAcquiredGifts: [GiftAuctionAcquiredGift] = []
72+
private var giftAuctionAcquiredGiftsPromise = ValuePromise<[GiftAuctionAcquiredGift]>()
7273
private var giftAuctionAcquiredGiftsDisposable = MetaDisposable()
7374

7475
var cachedStarImage: (UIImage, PresentationTheme)?
@@ -122,6 +123,7 @@ private final class GiftAuctionViewSheetContent: CombinedComponent {
122123
return
123124
}
124125
self.giftAuctionAcquiredGifts = acquiredGifts
126+
self.giftAuctionAcquiredGiftsPromise.set(acquiredGifts)
125127
self.updated(transition: .easeInOut(duration: 0.25))
126128
}))
127129
}
@@ -169,7 +171,7 @@ private final class GiftAuctionViewSheetContent: CombinedComponent {
169171
}
170172
self.dismiss(animated: true)
171173

172-
controller.completion(self.giftAuctionAcquiredGifts)
174+
controller.completion(self.giftAuctionAcquiredGiftsPromise.get())
173175
}
174176

175177
func openPeer(_ peer: EnginePeer, dismiss: Bool = true) {
@@ -975,12 +977,12 @@ final class GiftAuctionViewSheetComponent: CombinedComponent {
975977
}
976978

977979
public final class GiftAuctionViewScreen: ViewControllerComponentContainer {
978-
fileprivate let completion: ([GiftAuctionAcquiredGift]?) -> Void
980+
fileprivate let completion: (Signal<[GiftAuctionAcquiredGift], NoError>) -> Void
979981

980982
public init(
981983
context: AccountContext,
982984
auctionContext: GiftAuctionContext,
983-
completion: @escaping ([GiftAuctionAcquiredGift]?) -> Void
985+
completion: @escaping (Signal<[GiftAuctionAcquiredGift], NoError>) -> Void
984986
) {
985987
self.completion = completion
986988

submodules/TelegramUI/Sources/SharedAccountContext.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3846,11 +3846,11 @@ public final class SharedAccountContextImpl: SharedAccountContext {
38463846
return GiftAuctionInfoScreen(context: context, auctionContext: auctionContext, completion: completion)
38473847
}
38483848

3849-
public func makeGiftAuctionBidScreen(context: AccountContext, toPeerId: EnginePeer.Id, text: String?, entities: [MessageTextEntity]?, hideName: Bool, auctionContext: GiftAuctionContext, acquiredGifts: [GiftAuctionAcquiredGift]?) -> ViewController {
3849+
public func makeGiftAuctionBidScreen(context: AccountContext, toPeerId: EnginePeer.Id, text: String?, entities: [MessageTextEntity]?, hideName: Bool, auctionContext: GiftAuctionContext, acquiredGifts: Signal<[GiftAuctionAcquiredGift], NoError>?) -> ViewController {
38503850
return GiftAuctionBidScreen(context: context, toPeerId: toPeerId, text: text, entities: entities, hideName: hideName, auctionContext: auctionContext, acquiredGifts: acquiredGifts)
38513851
}
38523852

3853-
public func makeGiftAuctionViewScreen(context: AccountContext, auctionContext: GiftAuctionContext, completion: @escaping ([GiftAuctionAcquiredGift]?) -> Void) -> ViewController {
3853+
public func makeGiftAuctionViewScreen(context: AccountContext, auctionContext: GiftAuctionContext, completion: @escaping (Signal<[GiftAuctionAcquiredGift], NoError>) -> Void) -> ViewController {
38543854
return GiftAuctionViewScreen(context: context, auctionContext: auctionContext, completion: completion)
38553855
}
38563856

0 commit comments

Comments
 (0)