Skip to content

Commit 0dd09cf

Browse files
author
Isaac
committed
Merge commit '920755afa56f421d27758f0cb24e461514a316b1' into beta
2 parents 0340e69 + 920755a commit 0dd09cf

File tree

22 files changed

+151
-78
lines changed

22 files changed

+151
-78
lines changed

Telegram/Telegram-iOS/en.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13304,6 +13304,8 @@ Sorry for the inconvenience.";
1330413304

1330513305
"Chat.VideoProcessingInfo" = "The video will be published once converted and optimized.";
1330613306

13307+
"Camera.CollageRetake" = "Retake";
13308+
"Camera.CollageDelete" = "Delete";
1330713309
"Camera.CollageManagementTooltip" = "Tap a tile to delete or reorder it.";
1330813310
"Camera.CollageReorderingInfo" = "Hold and drag tiles to reorder them.";
1330913311

submodules/ChatListUI/Sources/Node/ChatListNode.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -519,10 +519,13 @@ private func mappedInsertEntries(context: AccountContext, nodeInteraction: ChatL
519519
default:
520520
break
521521
}
522+
} else if case let .channel(peer) = peer, case .group = peer.info, peer.hasPermission(.inviteMembers) {
523+
canManage = true
524+
} else if case let .channel(peer) = peer, case .broadcast = peer.info, peer.hasPermission(.addAdmins) {
525+
canManage = true
522526
}
523527

524528
if canManage {
525-
} else if case let .channel(peer) = peer, case .group = peer.info, peer.hasPermission(.inviteMembers) {
526529
} else {
527530
enabled = false
528531
}
@@ -2413,10 +2416,13 @@ public final class ChatListNode: ListView {
24132416
default:
24142417
break
24152418
}
2419+
} else if case let .channel(peer) = peer, case .group = peer.info, peer.hasPermission(.inviteMembers) {
2420+
canManage = true
2421+
} else if case let .channel(peer) = peer, case .broadcast = peer.info, peer.hasPermission(.addAdmins) {
2422+
canManage = true
24162423
}
24172424

24182425
if canManage {
2419-
} else if case let .channel(peer) = peer, case .group = peer.info, peer.hasPermission(.inviteMembers) {
24202426
} else {
24212427
return false
24222428
}

submodules/ChatListUI/Sources/Node/ChatListNodeEntries.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,7 @@ func chatListNodeEntriesForView(view: EngineChatList, state: ChatListNodeState,
605605

606606
var result: [ChatListNodeEntry] = []
607607

608+
var hasContacts = false
608609
if !view.hasEarlier {
609610
var existingPeerIds = Set<EnginePeer.Id>()
610611
for item in view.items {
@@ -620,8 +621,9 @@ func chatListNodeEntriesForView(view: EngineChatList, state: ChatListNodeState,
620621
peer: contact.peer,
621622
presence: contact.presence
622623
)))
624+
hasContacts = true
623625
}
624-
if !contacts.isEmpty {
626+
if hasContacts {
625627
result.append(.SectionHeader(presentationData: state.presentationData, displayHide: !view.items.isEmpty))
626628
}
627629
}

submodules/ChatPresentationInterfaceState/Sources/ChatPresentationInterfaceState.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1277,9 +1277,20 @@ public final class ChatPresentationInterfaceState: Equatable {
12771277
}
12781278
}
12791279

1280+
public func canBypassRestrictions(chatPresentationInterfaceState: ChatPresentationInterfaceState) -> Bool {
1281+
guard let boostsToUnrestrict = chatPresentationInterfaceState.boostsToUnrestrict, boostsToUnrestrict > 0 else {
1282+
return false
1283+
}
1284+
if let appliedBoosts = chatPresentationInterfaceState.appliedBoosts, appliedBoosts >= boostsToUnrestrict {
1285+
return true
1286+
}
1287+
return false
1288+
}
1289+
12801290
public func canSendMessagesToChat(_ state: ChatPresentationInterfaceState) -> Bool {
12811291
if let peer = state.renderedPeer?.peer {
1282-
if canSendMessagesToPeer(peer) {
1292+
let canBypassRestrictions = canBypassRestrictions(chatPresentationInterfaceState: state)
1293+
if canSendMessagesToPeer(peer, ignoreDefault: canBypassRestrictions) {
12831294
return true
12841295
} else {
12851296
return false

submodules/Display/Source/NavigationTransitionCoordinator.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,11 @@ final class NavigationTransitionCoordinator {
9797
case .Push:
9898
self.container.addSubnode(topNode)
9999
case .Pop:
100-
self.container.insertSubnode(bottomNode, belowSubnode: topNode)
100+
if topNode.supernode == self.container {
101+
self.container.insertSubnode(bottomNode, belowSubnode: topNode)
102+
} else {
103+
self.container.addSubnode(topNode)
104+
}
101105
}
102106

103107
if !self.isFlat {

submodules/GalleryUI/Sources/ChatItemGalleryFooterContentNode.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, ASScroll
871871

872872
if !isVideo {
873873
canEdit = true
874+
isImage = true
874875
}
875876
} else if let media = media as? TelegramMediaWebpage, case let .Loaded(content) = media.content {
876877
let type = webEmbedType(content: content)

submodules/TelegramApi/Sources/Api0.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -908,7 +908,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
908908
dict[1577421297] = { return Api.StarsGiftOption.parse_starsGiftOption($0) }
909909
dict[-1798404822] = { return Api.StarsGiveawayOption.parse_starsGiveawayOption($0) }
910910
dict[1411605001] = { return Api.StarsGiveawayWinnersOption.parse_starsGiveawayWinnersOption($0) }
911-
dict[2033461574] = { return Api.StarsRevenueStatus.parse_starsRevenueStatus($0) }
911+
dict[-21080943] = { return Api.StarsRevenueStatus.parse_starsRevenueStatus($0) }
912912
dict[779004698] = { return Api.StarsSubscription.parse_starsSubscription($0) }
913913
dict[88173912] = { return Api.StarsSubscriptionPricing.parse_starsSubscriptionPricing($0) }
914914
dict[198776256] = { return Api.StarsTopupOption.parse_starsTopupOption($0) }

submodules/TelegramApi/Sources/Api24.swift

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -904,18 +904,18 @@ public extension Api {
904904
}
905905
public extension Api {
906906
enum StarsRevenueStatus: TypeConstructorDescription {
907-
case starsRevenueStatus(flags: Int32, currentBalance: Int64, availableBalance: Int64, overallRevenue: Int64, nextWithdrawalAt: Int32?)
907+
case starsRevenueStatus(flags: Int32, currentBalance: Api.StarsAmount, availableBalance: Api.StarsAmount, overallRevenue: Api.StarsAmount, nextWithdrawalAt: Int32?)
908908

909909
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
910910
switch self {
911911
case .starsRevenueStatus(let flags, let currentBalance, let availableBalance, let overallRevenue, let nextWithdrawalAt):
912912
if boxed {
913-
buffer.appendInt32(2033461574)
913+
buffer.appendInt32(-21080943)
914914
}
915915
serializeInt32(flags, buffer: buffer, boxed: false)
916-
serializeInt64(currentBalance, buffer: buffer, boxed: false)
917-
serializeInt64(availableBalance, buffer: buffer, boxed: false)
918-
serializeInt64(overallRevenue, buffer: buffer, boxed: false)
916+
currentBalance.serialize(buffer, true)
917+
availableBalance.serialize(buffer, true)
918+
overallRevenue.serialize(buffer, true)
919919
if Int(flags) & Int(1 << 1) != 0 {serializeInt32(nextWithdrawalAt!, buffer: buffer, boxed: false)}
920920
break
921921
}
@@ -931,12 +931,18 @@ public extension Api {
931931
public static func parse_starsRevenueStatus(_ reader: BufferReader) -> StarsRevenueStatus? {
932932
var _1: Int32?
933933
_1 = reader.readInt32()
934-
var _2: Int64?
935-
_2 = reader.readInt64()
936-
var _3: Int64?
937-
_3 = reader.readInt64()
938-
var _4: Int64?
939-
_4 = reader.readInt64()
934+
var _2: Api.StarsAmount?
935+
if let signature = reader.readInt32() {
936+
_2 = Api.parse(reader, signature: signature) as? Api.StarsAmount
937+
}
938+
var _3: Api.StarsAmount?
939+
if let signature = reader.readInt32() {
940+
_3 = Api.parse(reader, signature: signature) as? Api.StarsAmount
941+
}
942+
var _4: Api.StarsAmount?
943+
if let signature = reader.readInt32() {
944+
_4 = Api.parse(reader, signature: signature) as? Api.StarsAmount
945+
}
940946
var _5: Int32?
941947
if Int(_1!) & Int(1 << 1) != 0 {_5 = reader.readInt32() }
942948
let _c1 = _1 != nil

submodules/TelegramCore/Sources/ApiUtils/TelegramChannel.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public enum TelegramChannelPermission {
2424
}
2525

2626
public extension TelegramChannel {
27-
func hasPermission(_ permission: TelegramChannelPermission) -> Bool {
27+
func hasPermission(_ permission: TelegramChannelPermission, ignoreDefault: Bool = false) -> Bool {
2828
if self.flags.contains(.isCreator) {
2929
if case .canBeAnonymous = permission {
3030
if let adminRights = self.adminRights {
@@ -50,7 +50,7 @@ public extension TelegramChannel {
5050
if let bannedRights = self.bannedRights, bannedRights.flags.contains(.banSendText) {
5151
return false
5252
}
53-
if let defaultBannedRights = self.defaultBannedRights, defaultBannedRights.flags.contains(.banSendText) {
53+
if let defaultBannedRights = self.defaultBannedRights, defaultBannedRights.flags.contains(.banSendText) && !ignoreDefault {
5454
return false
5555
}
5656
return true
@@ -69,7 +69,7 @@ public extension TelegramChannel {
6969
if let bannedRights = self.bannedRights, bannedRights.flags.contains(.banSendPhotos) {
7070
return false
7171
}
72-
if let defaultBannedRights = self.defaultBannedRights, defaultBannedRights.flags.contains(.banSendPhotos) {
72+
if let defaultBannedRights = self.defaultBannedRights, defaultBannedRights.flags.contains(.banSendText) && !ignoreDefault {
7373
return false
7474
}
7575
return true
@@ -88,7 +88,7 @@ public extension TelegramChannel {
8888
if let bannedRights = self.bannedRights, bannedRights.flags.contains(.banSendVideos) {
8989
return false
9090
}
91-
if let defaultBannedRights = self.defaultBannedRights, defaultBannedRights.flags.contains(.banSendVideos) {
91+
if let defaultBannedRights = self.defaultBannedRights, defaultBannedRights.flags.contains(.banSendVideos) && !ignoreDefault {
9292
return false
9393
}
9494
return true
@@ -121,7 +121,7 @@ public extension TelegramChannel {
121121
if let bannedRights = self.bannedRights, bannedRights.flags.intersection(flags) == flags {
122122
return false
123123
}
124-
if let defaultBannedRights = self.defaultBannedRights, defaultBannedRights.flags.intersection(flags) == flags {
124+
if let defaultBannedRights = self.defaultBannedRights, defaultBannedRights.flags.intersection(flags) == flags && !ignoreDefault {
125125
return false
126126
}
127127
return true

submodules/TelegramCore/Sources/Statistics/StarsRevenueStatistics.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ extension StarsRevenueStats.Balances {
146146
init(apiStarsRevenueStatus: Api.StarsRevenueStatus) {
147147
switch apiStarsRevenueStatus {
148148
case let .starsRevenueStatus(flags, currentBalance, availableBalance, overallRevenue, nextWithdrawalAt):
149-
self.init(currentBalance: StarsAmount(value: currentBalance, nanos: 0), availableBalance: StarsAmount(value: availableBalance, nanos: 0), overallRevenue: StarsAmount(value: overallRevenue, nanos: 0), withdrawEnabled: ((flags & (1 << 0)) != 0), nextWithdrawalTimestamp: nextWithdrawalAt)
149+
self.init(currentBalance: StarsAmount(apiAmount: currentBalance), availableBalance: StarsAmount(apiAmount: availableBalance), overallRevenue: StarsAmount(apiAmount: overallRevenue), withdrawEnabled: ((flags & (1 << 0)) != 0), nextWithdrawalTimestamp: nextWithdrawalAt)
150150
}
151151
}
152152
}

0 commit comments

Comments
 (0)