This commit is contained in:
Ali 2023-09-10 15:52:57 +04:00
parent 5880268293
commit ec6d48dd5a
10 changed files with 117 additions and 4 deletions

View File

@ -1638,7 +1638,10 @@ public final class ChatListNode: ListView {
} else {
self.push?(NewSessionInfoScreen(context: self.context, newSessionReview: newSessionReview))
//#if DEBUG
//#else
let _ = self.context.engine.privacy.terminateAnotherSession(id: newSessionReview.id).start()
//#endif
}
}, openChatFolderUpdates: { [weak self] in
guard let self else {

View File

@ -143,6 +143,10 @@ public final class NavigationBackgroundNode: ASDisplayNode {
public var effectView: UIVisualEffectView?
private let backgroundNode: ASDisplayNode
public var backgroundView: UIView {
return self.backgroundNode.view
}
private var validLayout: (CGSize, CGFloat)?

View File

@ -757,6 +757,10 @@ public extension CALayer {
static func blur() -> NSObject? {
return makeBlurFilter()
}
static func luminanceToAlpha() -> NSObject? {
return makeLuminanceToAlphaFilter()
}
}
public extension CALayer {

View File

@ -151,6 +151,7 @@ final class ReactionContextBackgroundNode: ASDisplayNode {
}
self.backgroundView.updateColor(color: theme.contextMenu.backgroundColor, transition: .immediate)
//self.backgroundView.updateColor(color: UIColor(white: 1.0, alpha: 0.0), forceKeepBlur: true, transition: .immediate)
let shadowColor = UIColor(white: 0.0, alpha: 0.4)

View File

@ -0,0 +1,96 @@
import Foundation
import TelegramApi
import Postbox
import SwiftSignalKit
public final class ChannelBoostStatus: Equatable {
public let level: Int
public let boosts: Int
public let nextLevelBoosts: Int?
public init(level: Int, boosts: Int, nextLevelBoosts: Int?) {
self.level = level
self.boosts = boosts
self.nextLevelBoosts = nextLevelBoosts
}
public static func ==(lhs: ChannelBoostStatus, rhs: ChannelBoostStatus) -> Bool {
if lhs.level != rhs.level {
return false
}
if lhs.boosts != rhs.boosts {
return false
}
if lhs.nextLevelBoosts != rhs.nextLevelBoosts {
return false
}
return true
}
}
func _internal_getBoostStatus(account: Account, peerId: PeerId) -> Signal<ChannelBoostStatus?, NoError> {
return account.postbox.transaction { transaction -> Api.InputPeer? in
return transaction.getPeer(peerId).flatMap(apiInputPeer)
}
|> mapToSignal { inputPeer -> Signal<ChannelBoostStatus?, NoError> in
guard let inputPeer = inputPeer else {
return .single(nil)
}
return account.network.request(Api.functions.stories.getBoostsStatus(peer: inputPeer))
|> map(Optional.init)
|> `catch` { _ -> Signal<Api.stories.BoostsStatus?, NoError> in
return .single(nil)
}
|> map { result -> ChannelBoostStatus? in
guard let result = result else {
return nil
}
switch result {
case let .boostsStatus(_, level, boosts, nextLevelBoosts):
return ChannelBoostStatus(level: Int(level), boosts: Int(boosts), nextLevelBoosts: nextLevelBoosts.flatMap(Int.init))
}
}
}
}
public enum CanApplyBoostStatus {
case ok
case replace(currentBoost: EnginePeer)
}
func _internal_canApplyBoost(account: Account, peerId: PeerId) -> Signal<CanApplyBoostStatus?, NoError> {
return account.postbox.transaction { transaction -> Api.InputPeer? in
return transaction.getPeer(peerId).flatMap(apiInputPeer)
}
|> mapToSignal { inputPeer -> Signal<CanApplyBoostStatus?, NoError> in
guard let inputPeer = inputPeer else {
return .single(nil)
}
return account.network.request(Api.functions.stories.canApplyBoost(peer: inputPeer))
|> map(Optional.init)
|> `catch` { _ -> Signal<Api.stories.CanApplyBoostResult?, NoError> in
return .single(nil)
}
|> mapToSignal { result -> Signal<CanApplyBoostStatus?, NoError> in
guard let result = result else {
return .single(nil)
}
return account.postbox.transaction { transaction -> CanApplyBoostStatus? in
switch result {
case .canApplyBoostOk:
return .ok
case let .canApplyBoostReplace(currentBoost, chats):
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: AccumulatedPeers(transaction: transaction, chats: chats, users: []))
if let peer = transaction.getPeer(currentBoost.peerId) {
return .replace(currentBoost: EnginePeer(peer))
} else {
return nil
}
}
}
}
}
}

View File

@ -1281,7 +1281,7 @@ public enum StoriesUploadAvailability {
case unknownLimit
}
func _internal_checkStoriesUploadAvailability(account: Account) -> Signal<StoriesUploadAvailability, NoError> {
func _internal_checkStoriesUploadAvailability(account: Account, target: Stories.PendingTarget) -> Signal<StoriesUploadAvailability, NoError> {
return account.network.request(Api.functions.stories.canSendStory(peer: .inputPeerSelf))
|> map { result -> StoriesUploadAvailability in
if result == .boolTrue {

View File

@ -1213,8 +1213,8 @@ public extension TelegramEngine {
return _internal_editStoryPrivacy(account: self.account, id: id, privacy: privacy)
}
public func checkStoriesUploadAvailability() -> Signal<StoriesUploadAvailability, NoError> {
return _internal_checkStoriesUploadAvailability(account: self.account)
public func checkStoriesUploadAvailability(target: Stories.PendingTarget) -> Signal<StoriesUploadAvailability, NoError> {
return _internal_checkStoriesUploadAvailability(account: self.account, target: target)
}
public func deleteStories(peerId: EnginePeer.Id, ids: [Int32]) -> Signal<Never, NoError> {

View File

@ -2410,7 +2410,7 @@ public class CameraScreen: ViewController {
self.requestAudioSession()
self.postingAvailabilityPromise.set(self.context.engine.messages.checkStoriesUploadAvailability())
self.postingAvailabilityPromise.set(self.context.engine.messages.checkStoriesUploadAvailability(target: .myStories))
}
required public init(coder: NSCoder) {

View File

@ -26,3 +26,4 @@ void applySmoothRoundedCornersImpl(CALayer * _Nonnull layer);
UIView<UIKitPortalViewProtocol> * _Nullable makePortalView(bool matchPosition);
NSObject * _Nullable makeBlurFilter();
NSObject * _Nullable makeLuminanceToAlphaFilter();

View File

@ -210,3 +210,7 @@ UIView<UIKitPortalViewProtocol> * _Nullable makePortalView(bool matchPosition) {
NSObject * _Nullable makeBlurFilter() {
return [(id<GraphicsFilterProtocol>)NSClassFromString(@"CAFilter") filterWithName:@"gaussianBlur"];
}
NSObject * _Nullable makeLuminanceToAlphaFilter() {
return [(id<GraphicsFilterProtocol>)NSClassFromString(@"CAFilter") filterWithName:@"luminanceToAlpha"];
}