Skip to content

Commit 3fd2bf7

Browse files
committed
Various improvements
1 parent 3ed05bc commit 3fd2bf7

File tree

7 files changed

+147
-72
lines changed

7 files changed

+147
-72
lines changed

submodules/AttachmentUI/Sources/AttachmentContainer.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,8 @@ final class AttachmentContainer: ASDisplayNode, ASGestureRecognizerDelegate {
506506
let containerFrame: CGRect
507507
let clipFrame: CGRect
508508
let containerScale: CGFloat
509+
510+
let isFullscreen = controllers.last?.isFullscreen == true
509511
if case .compact = layout.metrics.widthClass {
510512
self.clipNode.clipsToBounds = true
511513

@@ -524,7 +526,7 @@ final class AttachmentContainer: ASDisplayNode, ASGestureRecognizerDelegate {
524526
}
525527

526528
var containerTopInset: CGFloat
527-
if isLandscape || controllers.last?.isFullscreen == true {
529+
if isLandscape || isFullscreen {
528530
containerTopInset = 0.0
529531
containerLayout = layout
530532

@@ -560,7 +562,7 @@ final class AttachmentContainer: ASDisplayNode, ASGestureRecognizerDelegate {
560562
clipFrame = CGRect(x: containerFrame.minX + overflowInset, y: containerFrame.minY, width: containerFrame.width - overflowInset * 2.0, height: containerFrame.height)
561563
}
562564
} else {
563-
containerLayout = ContainerViewLayout(size: layout.size, metrics: layout.metrics, deviceMetrics: layout.deviceMetrics, intrinsicInsets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: layout.intrinsicInsets.bottom, right: 0.0), safeInsets: UIEdgeInsets(), additionalInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, inputHeightIsInteractivellyChanging: false, inVoiceOver: layout.inVoiceOver)
565+
containerLayout = ContainerViewLayout(size: layout.size, metrics: layout.metrics, deviceMetrics: layout.deviceMetrics, intrinsicInsets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: layout.intrinsicInsets.bottom, right: 0.0), safeInsets: UIEdgeInsets(), additionalInsets: UIEdgeInsets(), statusBarHeight: isFullscreen ? layout.statusBarHeight : nil, inputHeight: isFullscreen ? layout.inputHeight : nil, inputHeightIsInteractivellyChanging: false, inVoiceOver: layout.inVoiceOver)
564566

565567
let unscaledFrame = CGRect(origin: CGPoint(), size: containerLayout.size)
566568
containerScale = 1.0

submodules/AttachmentUI/Sources/AttachmentController.swift

Lines changed: 49 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,50 +1057,57 @@ public class AttachmentController: ViewController, MinimizableController {
10571057
var containerLayout = layout
10581058
let containerRect: CGRect
10591059
if case .regular = layout.metrics.widthClass {
1060-
let availableHeight = layout.size.height - (layout.inputHeight ?? 0.0) - 60.0
1061-
1062-
let size = CGSize(width: 390.0, height: min(620.0, availableHeight))
1063-
1064-
let insets = layout.insets(options: [.input])
1065-
let masterWidth = min(max(320.0, floor(layout.size.width / 3.0)), floor(layout.size.width / 2.0))
1066-
1067-
let position: CGPoint
1068-
let positionY = layout.size.height - size.height - insets.bottom - 40.0
1069-
if let sourceRect = controller.getSourceRect?() {
1070-
position = CGPoint(x: min(layout.size.width - size.width - 28.0, floor(sourceRect.midX - size.width / 2.0)), y: min(positionY, sourceRect.minY - size.height))
1060+
if controller.isFullscreen {
1061+
containerRect = CGRect(origin: .zero, size: layout.size)
1062+
self.wrapperNode.cornerRadius = 0.0
1063+
self.wrapperNode.view.mask = nil
1064+
self.shadowNode.alpha = 0.0
10711065
} else {
1072-
position = CGPoint(x: masterWidth - 174.0, y: positionY)
1073-
}
1074-
1075-
if controller.isStandalone && !controller.forceSourceRect {
1076-
var containerY = floorToScreenPixels((layout.size.height - size.height) / 2.0)
1077-
if let inputHeight = layout.inputHeight, inputHeight > 88.0 {
1078-
containerY = layout.size.height - inputHeight - size.height - 80.0
1066+
let availableHeight = layout.size.height - (layout.inputHeight ?? 0.0) - 60.0
1067+
1068+
let size = CGSize(width: 390.0, height: min(620.0, availableHeight))
1069+
1070+
let insets = layout.insets(options: [.input])
1071+
let masterWidth = min(max(320.0, floor(layout.size.width / 3.0)), floor(layout.size.width / 2.0))
1072+
1073+
let position: CGPoint
1074+
let positionY = layout.size.height - size.height - insets.bottom - 40.0
1075+
if let sourceRect = controller.getSourceRect?() {
1076+
position = CGPoint(x: min(layout.size.width - size.width - 28.0, floor(sourceRect.midX - size.width / 2.0)), y: min(positionY, sourceRect.minY - size.height))
1077+
} else {
1078+
position = CGPoint(x: masterWidth - 174.0, y: positionY)
1079+
}
1080+
1081+
if controller.isStandalone && !controller.forceSourceRect {
1082+
var containerY = floorToScreenPixels((layout.size.height - size.height) / 2.0)
1083+
if let inputHeight = layout.inputHeight, inputHeight > 88.0 {
1084+
containerY = layout.size.height - inputHeight - size.height - 80.0
1085+
}
1086+
containerRect = CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - size.width) / 2.0), y: containerY), size: size)
1087+
} else {
1088+
containerRect = CGRect(origin: position, size: size)
1089+
}
1090+
containerLayout.size = containerRect.size
1091+
containerLayout.intrinsicInsets.bottom = 12.0
1092+
containerLayout.inputHeight = nil
1093+
1094+
if controller.isStandalone {
1095+
self.wrapperNode.cornerRadius = 10.0
1096+
} else if self.wrapperNode.view.mask == nil {
1097+
let maskView = UIImageView()
1098+
maskView.image = generateMaskImage()
1099+
maskView.contentMode = .scaleToFill
1100+
self.wrapperNode.view.mask = maskView
1101+
}
1102+
1103+
if let maskView = self.wrapperNode.view.mask {
1104+
transition.updateFrame(view: maskView, frame: CGRect(origin: CGPoint(), size: size))
1105+
}
1106+
1107+
self.shadowNode.alpha = 1.0
1108+
if self.shadowNode.image == nil {
1109+
self.shadowNode.image = generateShadowImage()
10791110
}
1080-
containerRect = CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - size.width) / 2.0), y: containerY), size: size)
1081-
} else {
1082-
containerRect = CGRect(origin: position, size: size)
1083-
}
1084-
containerLayout.size = containerRect.size
1085-
containerLayout.intrinsicInsets.bottom = 12.0
1086-
containerLayout.inputHeight = nil
1087-
1088-
if controller.isStandalone {
1089-
self.wrapperNode.cornerRadius = 10.0
1090-
} else if self.wrapperNode.view.mask == nil {
1091-
let maskView = UIImageView()
1092-
maskView.image = generateMaskImage()
1093-
maskView.contentMode = .scaleToFill
1094-
self.wrapperNode.view.mask = maskView
1095-
}
1096-
1097-
if let maskView = self.wrapperNode.view.mask {
1098-
transition.updateFrame(view: maskView, frame: CGRect(origin: CGPoint(), size: size))
1099-
}
1100-
1101-
self.shadowNode.alpha = 1.0
1102-
if self.shadowNode.image == nil {
1103-
self.shadowNode.image = generateShadowImage()
11041111
}
11051112
} else {
11061113
let containerHeight: CGFloat

submodules/ChatListUI/Sources/Node/ChatListNoticeItem.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ final class ChatListNoticeItemNode: ItemListRevealOptionsItemNode {
167167

168168
let sideInset: CGFloat = params.leftInset + 16.0
169169
let rightInset: CGFloat = sideInset + 24.0
170+
var titleRightInset = rightInset
170171
let verticalInset: CGFloat = 9.0
171172
var spacing: CGFloat = 0.0
172173

@@ -214,6 +215,7 @@ final class ChatListNoticeItemNode: ItemListRevealOptionsItemNode {
214215
titleString = titleStringValue
215216

216217
textString = NSAttributedString(string: item.strings.ChatList_PremiumAnnualDiscountText, font: textFont, textColor: item.theme.rootController.navigationBar.secondaryTextColor)
218+
titleRightInset = sideInset
217219
case let .premiumRestore(discount):
218220
let discountString = "\(discount)%"
219221
let rawTitleString = item.strings.ChatList_PremiumRestoreDiscountTitle(discountString)
@@ -291,7 +293,7 @@ final class ChatListNoticeItemNode: ItemListRevealOptionsItemNode {
291293
leftInset += avatarsWidth + 4.0
292294
}
293295

294-
let titleLayout = makeTitleLayout(TextNodeLayoutArguments(attributedString: titleString, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - rightInset, height: 100.0), alignment: alignment, lineSpacing: 0.18))
296+
let titleLayout = makeTitleLayout(TextNodeLayoutArguments(attributedString: titleString, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - titleRightInset, height: 100.0), alignment: alignment, lineSpacing: 0.18))
295297

296298
let textLayout = makeTextLayout(TextNodeLayoutArguments(attributedString: textString, maximumNumberOfLines: 10, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - rightInset, height: 100.0), alignment: alignment, lineSpacing: 0.18))
297299

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

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,23 +1545,33 @@ private func infoItems(data: PeerInfoScreenData?, context: AccountContext, prese
15451545

15461546
if let _ = user.botInfo {
15471547
//TODO:localize
1548-
items[.permissions]!.append(PeerInfoScreenHeaderItem(id: 30, text: "ALLOW ACCESS TO"))
15491548
var canManageEmojiStatus = false
15501549
if let cachedData = data.cachedData as? CachedUserData, cachedData.flags.contains(.botCanManageEmojiStatus) {
15511550
canManageEmojiStatus = true
15521551
}
1553-
items[.permissions]!.append(PeerInfoScreenSwitchItem(id: 31, text: "Emoji Status", value: canManageEmojiStatus, icon: UIImage(bundleImageName: "Chat/Info/Status"), isLocked: false, toggled: { value in
1554-
let _ = (context.engine.peers.toggleBotEmojiStatusAccess(peerId: user.id, enabled: value)
1555-
|> deliverOnMainQueue).startStandalone()
1556-
}))
1552+
1553+
if canManageEmojiStatus || data.webAppPermissions?.emojiStatus?.isRequested == true {
1554+
items[.permissions]!.append(PeerInfoScreenSwitchItem(id: 31, text: "Emoji Status", value: canManageEmojiStatus, icon: UIImage(bundleImageName: "Chat/Info/Status"), isLocked: false, toggled: { value in
1555+
let _ = (context.engine.peers.toggleBotEmojiStatusAccess(peerId: user.id, enabled: value)
1556+
|> deliverOnMainQueue).startStandalone()
1557+
1558+
let _ = updateWebAppPermissionsStateInteractively(context: context, peerId: user.id) { current in
1559+
return WebAppPermissionsState(location: current?.location, emojiStatus: WebAppPermissionsState.EmojiStatus(isRequested: true))
1560+
}.startStandalone()
1561+
}))
1562+
}
15571563

15581564
if data.webAppPermissions?.location?.isRequested == true || data.webAppPermissions?.location?.isAllowed == true {
15591565
items[.permissions]!.append(PeerInfoScreenSwitchItem(id: 32, text: "Geolocation", value: data.webAppPermissions?.location?.isAllowed ?? false, icon: UIImage(bundleImageName: "Chat/Info/Location"), isLocked: false, toggled: { value in
15601566
let _ = updateWebAppPermissionsStateInteractively(context: context, peerId: user.id) { current in
1561-
return WebAppPermissionsState(location: WebAppPermissionsState.Location(isRequested: true, isAllowed: value))
1567+
return WebAppPermissionsState(location: WebAppPermissionsState.Location(isRequested: true, isAllowed: value), emojiStatus: current?.emojiStatus)
15621568
}.startStandalone()
15631569
}))
15641570
}
1571+
1572+
if !items[.permissions]!.isEmpty {
1573+
items[.permissions]!.insert(PeerInfoScreenHeaderItem(id: 30, text: "ALLOW ACCESS TO"), at: 0)
1574+
}
15651575
}
15661576

15671577
if let botInfo = user.botInfo, botInfo.flags.contains(.canEdit) {

submodules/TelegramUI/Sources/Chat/ChatControllerOpenWebApp.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ func openWebAppImpl(
222222
} else {
223223
source = url.isEmpty ? .generic : .simple
224224
}
225-
let params = WebAppParameters(source: source, peerId: chatPeer?.id ?? botId, botId: botId, botName: botName, botVerified: botVerified, botAddress: botPeer.addressName ?? "", appName: nil, url: result.url, queryId: nil, payload: payload, buttonText: buttonText, keepAliveSignal: nil, forceHasSettings: false, fullSize: result.flags.contains(.fullSize), isFullscreen: result.flags.contains(.fullScreen), appSettings: appSettings)
225+
let params = WebAppParameters(source: source, peerId: chatPeer?.id ?? botId, botId: botId, botName: botName, botVerified: botVerified, botAddress: botPeer.addressName ?? "", appName: "", url: result.url, queryId: nil, payload: payload, buttonText: buttonText, keepAliveSignal: nil, forceHasSettings: false, fullSize: result.flags.contains(.fullSize), isFullscreen: result.flags.contains(.fullScreen), appSettings: appSettings)
226226
let controller = standaloneWebAppController(context: context, updatedPresentationData: updatedPresentationData, params: params, threadId: threadId, openUrl: { [weak parentController] url, concealed, forceUpdate, commit in
227227
ChatControllerImpl.botOpenUrl(context: context, peerId: chatPeer?.id ?? botId, controller: parentController as? ChatControllerImpl, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
228228
presentImpl?(c, a)

0 commit comments

Comments
 (0)