mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various fixes
This commit is contained in:
parent
874fac0c63
commit
c9c4d78e30
@ -152,6 +152,27 @@ public extension Peer {
|
||||
}
|
||||
}
|
||||
|
||||
var isGenericUser: Bool {
|
||||
switch self {
|
||||
case let user as TelegramUser:
|
||||
if user.isDeleted {
|
||||
return false
|
||||
}
|
||||
if user.botInfo != nil {
|
||||
return false
|
||||
}
|
||||
if user.id.isRepliesOrVerificationCodes {
|
||||
return false
|
||||
}
|
||||
if user.id.isTelegramNotifications {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
var isScam: Bool {
|
||||
switch self {
|
||||
case let user as TelegramUser:
|
||||
|
@ -4,6 +4,7 @@ import AsyncDisplayKit
|
||||
import Display
|
||||
import ComponentFlow
|
||||
import SwiftSignalKit
|
||||
import Postbox
|
||||
import TelegramCore
|
||||
import TextFormat
|
||||
import TelegramPresentationData
|
||||
@ -211,27 +212,46 @@ private final class QuickShareScreenComponent: Component {
|
||||
self.state = state
|
||||
|
||||
if self.component == nil {
|
||||
let peers = component.context.engine.peers.recentPeers()
|
||||
|> take(1)
|
||||
|> mapToSignal { recentPeers -> Signal<[EnginePeer], NoError> in
|
||||
if case let .peers(peers) = recentPeers, !peers.isEmpty {
|
||||
return .single(peers.map(EnginePeer.init))
|
||||
} else {
|
||||
return component.context.account.stateManager.postbox.tailChatListView(
|
||||
groupId: .root,
|
||||
count: 20,
|
||||
summaryComponents: ChatListEntrySummaryComponents()
|
||||
)
|
||||
|> take(1)
|
||||
|> map { view -> [EnginePeer] in
|
||||
var peers: [EnginePeer] = []
|
||||
for entry in view.0.entries.reversed() {
|
||||
if case let .MessageEntry(entryData) = entry {
|
||||
if let user = entryData.renderedPeer.chatMainPeer as? TelegramUser, user.isGenericUser && user.id != component.context.account.peerId && !user.id.isSecretChat {
|
||||
peers.append(EnginePeer(user))
|
||||
}
|
||||
}
|
||||
}
|
||||
return peers
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.disposable = combineLatest(queue: Queue.mainQueue(),
|
||||
component.context.engine.peers.recentPeers() |> take(1),
|
||||
peers,
|
||||
component.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: component.context.account.peerId))
|
||||
).start(next: { [weak self] recentPeers, accountPeer in
|
||||
).start(next: { [weak self] peers, accountPeer in
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
var result: [EnginePeer] = []
|
||||
switch recentPeers {
|
||||
case let .peers(peers):
|
||||
result = peers.map(EnginePeer.init)
|
||||
case .disabled:
|
||||
break
|
||||
}
|
||||
if !result.isEmpty, let accountPeer {
|
||||
self.peers = Array([accountPeer] + result.prefix(4))
|
||||
if !peers.isEmpty, let accountPeer {
|
||||
self.peers = Array([accountPeer] + peers.prefix(4))
|
||||
self.state?.updated()
|
||||
component.ready.set(.single(true))
|
||||
} else {
|
||||
self.environment?.controller()?.dismiss()
|
||||
}
|
||||
component.ready.set(.single(true))
|
||||
})
|
||||
|
||||
component.gesture.externalUpdated = { [weak self] view, point in
|
||||
|
@ -2462,13 +2462,23 @@ private final class GiftViewSheetContent: CombinedComponent {
|
||||
if let uniqueGift {
|
||||
if isMyUniqueGift, case let .peerId(peerId) = uniqueGift.owner {
|
||||
var canTransfer = true
|
||||
if let peer = state.peerMap[peerId], case let .channel(channel) = peer, !channel.flags.contains(.isCreator) {
|
||||
var canResell = true
|
||||
if let peer = state.peerMap[peerId], case let .channel(channel) = peer {
|
||||
if !channel.flags.contains(.isCreator) {
|
||||
canTransfer = false
|
||||
}
|
||||
canResell = false
|
||||
} else if subject.arguments?.transferStars == nil {
|
||||
canTransfer = false
|
||||
}
|
||||
|
||||
let buttonsCount = canTransfer ? 3 : 2
|
||||
var buttonsCount = 1
|
||||
if canTransfer {
|
||||
buttonsCount += 1
|
||||
}
|
||||
if canResell {
|
||||
buttonsCount += 1
|
||||
}
|
||||
|
||||
let buttonSpacing: CGFloat = 10.0
|
||||
let buttonWidth = floor(context.availableSize.width - sideInset * 2.0 - buttonSpacing * CGFloat(buttonsCount - 1)) / CGFloat(buttonsCount)
|
||||
@ -2560,6 +2570,7 @@ private final class GiftViewSheetContent: CombinedComponent {
|
||||
)
|
||||
buttonOriginX += buttonWidth + buttonSpacing
|
||||
|
||||
if canResell {
|
||||
let resellButton = resellButton.update(
|
||||
component: PlainButtonComponent(
|
||||
content: AnyComponent(
|
||||
@ -2583,6 +2594,7 @@ private final class GiftViewSheetContent: CombinedComponent {
|
||||
.disappear(.default(scale: true, alpha: true))
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
let order: [StarGift.UniqueGift.Attribute.AttributeType] = [
|
||||
.model, .backdrop, .pattern, .originalInfo
|
||||
|
@ -827,10 +827,13 @@ func openResolvedUrlImpl(
|
||||
}
|
||||
case .stars:
|
||||
dismissInput()
|
||||
let controller = context.sharedContext.makeStarsIntroScreen(context: context)
|
||||
if let navigationController = navigationController {
|
||||
if let starsContext = context.starsContext {
|
||||
let controller = context.sharedContext.makeStarsTransactionsScreen(context: context, starsContext: starsContext)
|
||||
controller.navigationPresentation = .modal
|
||||
if let navigationController {
|
||||
navigationController.pushViewController(controller, animated: true)
|
||||
}
|
||||
}
|
||||
case let .joinVoiceChat(peerId, invite):
|
||||
let _ = (context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId))
|
||||
|> deliverOnMainQueue).start(next: { peer in
|
||||
|
Loading…
x
Reference in New Issue
Block a user