Skip to content

Commit c54e9fb

Browse files
committed
Various fixes
1 parent da7fae6 commit c54e9fb

File tree

4 files changed

+83
-31
lines changed

4 files changed

+83
-31
lines changed

submodules/TelegramCore/Sources/TelegramEngine/Themes/ChatThemes.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,20 +104,20 @@ public enum ChatTheme: PostboxCoding, Codable, Equatable {
104104
} else {
105105
return false
106106
}
107-
case let .gift(lhsGift, _):
108-
if case let .gift(rhsGift, _) = rhs {
107+
case let .gift(lhsGift, lhsThemeSettings):
108+
if case let .gift(rhsGift, rhsThemeSettings) = rhs {
109109
switch lhsGift {
110-
case .generic(let lhsGeneric):
110+
case let .generic(lhsGeneric):
111111
switch rhsGift {
112-
case .generic(let rhsGeneric):
113-
return lhsGeneric == rhsGeneric
112+
case let .generic(rhsGeneric):
113+
return lhsGeneric == rhsGeneric && lhsThemeSettings == rhsThemeSettings
114114
default:
115115
return false
116116
}
117-
case .unique(let lhsUnique):
117+
case let .unique(lhsUnique):
118118
switch rhsGift {
119-
case .unique(let rhsUnique):
120-
return lhsUnique.slug == rhsUnique.slug
119+
case let .unique(rhsUnique):
120+
return lhsUnique.slug == rhsUnique.slug && lhsThemeSettings == rhsThemeSettings
121121
default:
122122
return false
123123
}

submodules/TelegramUI/Components/Gifts/GiftViewScreen/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ swift_library(
5353
"//submodules/ActivityIndicator",
5454
"//submodules/TelegramUI/Components/TabSelectorComponent",
5555
"//submodules/TelegramUI/Components/Stars/BalanceNeededScreen",
56+
"//submodules/TelegramUI/Components/ChatThemeScreen",
5657
"//submodules/ImageBlur",
5758
],
5859
visibility = [

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

Lines changed: 61 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import StarsBalanceOverlayComponent
3636
import BalanceNeededScreen
3737
import GiftItemComponent
3838
import GiftAnimationComponent
39+
import ChatThemeScreen
3940

4041
private 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,

submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/Panes/PeerInfoMembersPane.swift

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ private enum PeerMembersListEntry: Comparable, Identifiable {
127127
}))
128128
}
129129

130-
let presence: EnginePeer.Presence
130+
var presence: EnginePeer.Presence
131131
if member.peer.id == context.account.peerId {
132132
presence = EnginePeer.Presence(status: .present(until: Int32.max), lastActivity: 0)
133133
} else if let value = member.presence {
@@ -136,6 +136,17 @@ private enum PeerMembersListEntry: Comparable, Identifiable {
136136
presence = EnginePeer.Presence(status: .longTimeAgo, lastActivity: 0)
137137
}
138138

139+
var status: ContactsPeerItemStatus = .presence(presence, presentationData.dateTimeFormat)
140+
if let user = member.peer as? TelegramUser, let botInfo = user.botInfo {
141+
let botStatus: String
142+
if botInfo.flags.contains(.hasAccessToChatHistory) {
143+
botStatus = presentationData.strings.Bot_GroupStatusReadsHistory
144+
} else {
145+
botStatus = presentationData.strings.Bot_GroupStatusDoesNotReadHistory
146+
}
147+
status = .custom(string: NSAttributedString(string: botStatus, font: Font.regular(floor(presentationData.listsFontSize.itemListBaseFontSize * 14.0 / 17.0)), textColor: presentationData.theme.list.itemSecondaryTextColor), multiline: false, isActive: false, icon: nil)
148+
}
149+
139150
return ContactsPeerItem(
140151
presentationData: ItemListPresentationData(presentationData),
141152
style: .plain,
@@ -145,7 +156,7 @@ private enum PeerMembersListEntry: Comparable, Identifiable {
145156
context: context,
146157
peerMode: .memberList,
147158
peer: .peer(peer: EnginePeer(member.peer), chatPeer: EnginePeer(member.peer)),
148-
status: .presence(presence, presentationData.dateTimeFormat),
159+
status: status,
149160
rightLabelText: label,
150161
enabled: true,
151162
selection: .none,

0 commit comments

Comments
 (0)