@@ -36,6 +36,7 @@ import StarsBalanceOverlayComponent
3636import BalanceNeededScreen
3737import GiftItemComponent
3838import GiftAnimationComponent
39+ import ChatThemeScreen
3940
4041private final class GiftViewSheetContent : CombinedComponent {
4142 typealias EnvironmentType = ViewControllerComponentContainer . Environment
@@ -809,27 +810,66 @@ private final class GiftViewSheetContent: CombinedComponent {
809810 }
810811
811812 let context = self . context
812- let peerController = self . context. sharedContext. makePeerSelectionController ( PeerSelectionControllerParams ( context: self . context, filter: [ . excludeRecent, . doNotSearchMessages] , requestPeerType: [ . user( . init( isBot: false , isPremium: false ) ) ] , hasContactSelector: false , hasCreation: false ) )
813+
814+ let themePeerId = Promise < EnginePeer . Id ? > ( )
815+ themePeerId. set (
816+ . single( gift. themePeerId)
817+ |> then (
818+ context. engine. payments. getUniqueStarGift ( slug: gift. slug)
819+ |> map { gift in
820+ return gift? . themePeerId
821+ }
822+ )
823+ )
824+
825+ let peerController = context. sharedContext. makePeerSelectionController ( PeerSelectionControllerParams ( context: context, filter: [ . excludeRecent, . doNotSearchMessages] , requestPeerType: [ . user( . init( isBot: false , isPremium: nil ) ) ] , hasContactSelector: false , hasCreation: false ) )
813826 peerController. peerSelected = { [ weak peerController, weak navigationController] peer, _ in
814- let _ = context. engine. themes. setChatTheme ( peerId: peer. id, chatTheme: . gift( . unique( gift) , [ ] ) ) . start ( )
815- peerController? . dismiss ( )
816-
817827 if let navigationController {
818- context. sharedContext. navigateToChatController ( NavigateToChatControllerParams (
819- navigationController: navigationController,
820- chatController: nil ,
821- context: context,
822- chatLocation: . peer( peer) ,
823- subject: nil ,
824- botStart: nil ,
825- updateTextInputState: nil ,
826- keepStack: . always,
827- useExisting: true ,
828- purposefulAction: nil ,
829- scrollToEndIfExists: false ,
830- activateMessageSearch: nil ,
831- animated: true
832- ) )
828+ let proceed = {
829+ let _ = context. engine. themes. setChatTheme ( peerId: peer. id, chatTheme: . gift( . unique( gift) , [ ] ) ) . start ( )
830+ peerController? . dismiss ( )
831+
832+ context. sharedContext. navigateToChatController ( NavigateToChatControllerParams (
833+ navigationController: navigationController,
834+ chatController: nil ,
835+ context: context,
836+ chatLocation: . peer( peer) ,
837+ subject: nil ,
838+ botStart: nil ,
839+ updateTextInputState: nil ,
840+ keepStack: . always,
841+ useExisting: true ,
842+ purposefulAction: nil ,
843+ scrollToEndIfExists: false ,
844+ activateMessageSearch: nil ,
845+ animated: true
846+ ) )
847+ }
848+
849+ let _ = ( themePeerId. get ( )
850+ |> deliverOnMainQueue
851+ |> take ( 1 ) ) . start ( next: { [ weak navigationController] themePeerId in
852+ if let themePeerId, themePeerId != peer. id {
853+ let _ = ( context. engine. data. get ( TelegramEngine . EngineData. Item. Peer. Peer ( id: themePeerId) )
854+ |> deliverOnMainQueue) . start ( next: { [ weak navigationController] peer in
855+ guard let peer else {
856+ proceed ( )
857+ return
858+ }
859+ let controller = giftThemeTransferAlertController (
860+ context: context,
861+ gift: gift,
862+ previousPeer: peer,
863+ commit: {
864+ proceed ( )
865+ }
866+ )
867+ ( navigationController? . viewControllers. last as? ViewController ) ? . present ( controller, in: . window( . root) )
868+ } )
869+ } else {
870+ proceed ( )
871+ }
872+ } )
833873 }
834874 }
835875 self . dismiss ( animated: true )
@@ -3278,8 +3318,8 @@ private final class GiftViewSheetContent: CombinedComponent {
32783318 component: PlainButtonComponent (
32793319 content: AnyComponent (
32803320 HeaderButtonComponent (
3281- title: uniqueGift. resellAmounts == nil ? strings. Gift_View_Sell : strings. Gift_View_Unlist,
3282- iconName: uniqueGift. resellAmounts == nil ? " Premium/Collectible/Sell " : " Premium/Collectible/Unlist "
3321+ title: ( uniqueGift. resellAmounts ?? [ ] ) . isEmpty ? strings. Gift_View_Sell : strings. Gift_View_Unlist,
3322+ iconName: ( uniqueGift. resellAmounts ?? [ ] ) . isEmpty ? " Premium/Collectible/Sell " : " Premium/Collectible/Unlist "
32833323 )
32843324 ) ,
32853325 effectAlignment: . center,
0 commit comments