diff --git a/submodules/DatePickerNode/Sources/DatePickerNode.swift b/submodules/DatePickerNode/Sources/DatePickerNode.swift index 2e411799d9..b865b44f66 100644 --- a/submodules/DatePickerNode/Sources/DatePickerNode.swift +++ b/submodules/DatePickerNode/Sources/DatePickerNode.swift @@ -773,6 +773,8 @@ public final class DatePickerNode: ASDisplayNode { public func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) { self.validLayout = size + let constrainedSize = CGSize(width: min(390.0, size.width), height: size.height) + let timeHeight: CGFloat = 50.0 let topInset: CGFloat = 78.0 + timeHeight let sideInset: CGFloat = 16.0 @@ -783,8 +785,8 @@ public final class DatePickerNode: ASDisplayNode { let timeTitleSize = self.timeTitleNode.updateLayout(size) self.timeTitleNode.frame = CGRect(origin: CGPoint(x: 16.0, y: 12.0), size: timeTitleSize) - let timePickerSize = CGSize(width: size.width, height: 180.0) - self.timePickerNode.frame = CGRect(origin: CGPoint(x: 0.0, y: timeHeight + 11.0), size: timePickerSize) + let timePickerSize = CGSize(width: constrainedSize.width, height: 180.0) + self.timePickerNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - constrainedSize.width) / 2.0), y: timeHeight + 11.0), size: timePickerSize) self.monthTextNode.attributedText = NSAttributedString(string: stringForMonth(strings: self.strings, month: components.month.flatMap { Int32($0) - 1 } ?? 0, ofYear: components.year.flatMap { Int32($0) - 1900 } ?? 100), font: controlFont, textColor: self.state.displayingMonthSelection ? self.theme.accentColor : self.theme.textColor) let monthSize = self.monthTextNode.updateLayout(size) @@ -827,14 +829,14 @@ public final class DatePickerNode: ASDisplayNode { self.dateButtonNode.frame = CGRect(x: size.width - timeSize.width - 4.0 - 4.0 - dateSize.width, y: 4.0, width: dateSize.width, height: dateSize.height) let daysSideInset: CGFloat = 12.0 - let cellSize: CGFloat = floor((size.width - daysSideInset * 2.0) / 7.0) + let cellSize: CGFloat = floor((constrainedSize.width - daysSideInset * 2.0) / 7.0) var dayIndex: Int32 = Int32(calendar.firstWeekday) - 1 for i in 0 ..< self.dayNodes.count { let dayNode = self.dayNodes[i] dayNode.attributedText = NSAttributedString(string: shortStringForDayOfWeek(strings: self.strings, day: dayIndex % 7).uppercased(), font: dayFont, textColor: theme.secondaryTextColor) - let textSize = dayNode.updateLayout(size) + let textSize = dayNode.updateLayout(constrainedSize) let cellFrame = CGRect(x: daysSideInset + CGFloat(i) * cellSize, y: topInset - 38.0, width: cellSize, height: cellSize) let textFrame = CGRect(origin: CGPoint(x: cellFrame.minX + floor((cellFrame.width - textSize.width) / 2.0), y: cellFrame.minY + floor((cellFrame.height - textSize.height) / 2.0)), size: textSize) @@ -842,8 +844,8 @@ public final class DatePickerNode: ASDisplayNode { dayIndex += 1 } - let containerSize = CGSize(width: size.width, height: size.height - topInset) - self.contentNode.frame = CGRect(origin: CGPoint(x: 0.0, y: topInset), size: containerSize) + let containerSize = CGSize(width: constrainedSize.width, height: size.height - topInset) + self.contentNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - constrainedSize.width) / 2.0), y: topInset), size: containerSize) self.updateItems(size: containerSize, transition: transition) diff --git a/submodules/PremiumUI/Sources/CreateGiveawayController.swift b/submodules/PremiumUI/Sources/CreateGiveawayController.swift index 96dbded069..6b9b7dbb02 100644 --- a/submodules/PremiumUI/Sources/CreateGiveawayController.swift +++ b/submodules/PremiumUI/Sources/CreateGiveawayController.swift @@ -904,8 +904,15 @@ public func createGiveawayController(context: AccountContext, updatedPresentatio var selectedProduct: PremiumGiftProduct? let selectedMonths = state.selectedMonths ?? 12 - if let product = products.first(where: { $0.months == selectedMonths && $0.giftOption.users == state.subscriptions }) { - selectedProduct = product + switch state.mode { + case .giveaway: + if let product = products.first(where: { $0.months == selectedMonths && $0.giftOption.users == state.subscriptions }) { + selectedProduct = product + } + case .gift: + if let product = products.first(where: { $0.months == selectedMonths && $0.giftOption.users == 1 }) { + selectedProduct = product + } } guard let selectedProduct else { diff --git a/submodules/TelegramUI/Components/ItemListDatePickerItem/Sources/ItemListDatePickerItem.swift b/submodules/TelegramUI/Components/ItemListDatePickerItem/Sources/ItemListDatePickerItem.swift index 73ba9bb85a..6951152d8c 100644 --- a/submodules/TelegramUI/Components/ItemListDatePickerItem/Sources/ItemListDatePickerItem.swift +++ b/submodules/TelegramUI/Components/ItemListDatePickerItem/Sources/ItemListDatePickerItem.swift @@ -155,8 +155,9 @@ public class ItemListDatePickerItemNode: ListViewItemNode, ItemListItemNode { let leftInset = 16.0 + params.leftInset - let width = min(390.0, params.width - params.leftInset - params.rightInset) - let cellSize = floor((width - 12.0 * 2.0) / 7.0) + let width = params.width - params.leftInset - params.rightInset + let constrainedWidth = min(390.0, width) + let cellSize = floor((constrainedWidth - 12.0 * 2.0) / 7.0) let pickerHeight = 122.0 + cellSize * 6.0 let height: CGFloat if item.displayingDateSelection { diff --git a/versions.json b/versions.json index 31ccc090d1..73fae8de01 100644 --- a/versions.json +++ b/versions.json @@ -1,5 +1,5 @@ { - "app": "10.2.2", + "app": "10.2.3", "bazel": "6.4.0", "xcode": "15.0" }