diff --git a/submodules/AttachmentUI/Sources/AttachmentPanel.swift b/submodules/AttachmentUI/Sources/AttachmentPanel.swift index f3809c60ef..e42f61b19c 100644 --- a/submodules/AttachmentUI/Sources/AttachmentPanel.swift +++ b/submodules/AttachmentUI/Sources/AttachmentPanel.swift @@ -12,71 +12,15 @@ import ChatPresentationInterfaceState import ChatSendMessageActionUI import ChatTextLinkEditUI -let panelButtonSize = CGSize(width: 80.0, height: 72.0) -let smallPanelButtonSize = CGSize(width: 60.0, height: 49.0) - -private let iconSize = CGSize(width: 54.0, height: 42.0) -private let normalSideInset: CGFloat = 3.0 -private let smallSideInset: CGFloat = 0.0 +private let buttonSize = CGSize(width: 75.0, height: 49.0) +private let iconSize = CGSize(width: 30.0, height: 30.0) +private let sideInset: CGFloat = 0.0 private enum AttachmentButtonTransition { case transitionIn case selection } -private func generateBackgroundImage(colors: [UIColor]) -> UIImage? { - return generateImage(iconSize, rotatedContext: { size, context in - var locations: [CGFloat] - if colors.count == 3 { - locations = [1.0, 0.5, 0.0] - } else { - locations = [1.0, 0.0] - } - let colors: [CGColor] = colors.map { $0.cgColor } - let colorSpace = CGColorSpaceCreateDeviceRGB() - let gradient = CGGradient(colorsSpace: colorSpace, colors: colors as CFArray, locations: &locations)! - - if colors.count == 2 { - context.drawLinearGradient(gradient, start: CGPoint(), end: CGPoint(x: 0.0, y: size.height), options: .drawsAfterEndLocation) - } else if colors.count == 3 { - context.drawLinearGradient(gradient, start: CGPoint(x: 0.0, y: size.height), end: CGPoint(x: size.width, y: 0.0), options: .drawsAfterEndLocation) - } -// let center = CGPoint(x: 10.0, y: 10.0) -// context.drawRadialGradient(gradient, startCenter: center, startRadius: 0.0, endCenter: center, endRadius: size.width, options: .drawsAfterEndLocation) - }) -} - -private let buttonGlowImage: UIImage? = { - let inset: CGFloat = 6.0 - return generateImage(CGSize(width: iconSize.width + inset * 2.0, height: iconSize.height + inset * 2.0), rotatedContext: { size, context in - let bounds = CGRect(origin: CGPoint(), size: size) - context.clear(bounds) - - let rect = bounds.insetBy(dx: inset, dy: inset) - let path = UIBezierPath(roundedRect: rect, cornerRadius: 21.0).cgPath - context.addRect(bounds) - context.addPath(path) - context.clip(using: .evenOdd) - - context.addPath(path) - context.setShadow(offset: CGSize(), blur: 14.0, color: UIColor(rgb: 0xffffff, alpha: 0.8).cgColor) - context.setFillColor(UIColor.white.cgColor) - context.fillPath() - })?.withRenderingMode(.alwaysTemplate) -}() - -private let buttonSelectionMaskImage: UIImage? = { - let inset: CGFloat = 3.0 - return generateImage(CGSize(width: iconSize.width + inset * 2.0, height: iconSize.height + inset * 2.0), rotatedContext: { size, context in - let bounds = CGRect(origin: CGPoint(), size: size) - context.clear(bounds) - - let path = UIBezierPath(roundedRect: bounds, cornerRadius: 23.0).cgPath - context.addPath(path) - context.setFillColor(UIColor(rgb: 0xffffff).cgColor) - context.fillPath() - })?.withRenderingMode(.alwaysTemplate) -}() private final class AttachButtonComponent: CombinedComponent { let context: AccountContext @@ -134,103 +78,87 @@ private final class AttachButtonComponent: CombinedComponent { } static var body: Body { - let icon = Child(AttachButtonIconComponent.self) + let icon = Child(Image.self) let title = Child(Text.self) return { context in let name: String let animationName: String? let imageName: String? - let backgroundColors: [UIColor] - let foregroundColor: UIColor = .white - let isCollapsed = context.component.isCollapsed + let component = context.component + let strings = component.strings - switch context.component.type { + switch component.type { case .camera: - name = context.component.strings.Attachment_Camera + name = strings.Attachment_Camera animationName = "anim_camera" imageName = "Chat/Attach Menu/Camera" - backgroundColors = [UIColor(rgb: 0xba4aae), UIColor(rgb: 0xdd4e6f), UIColor(rgb: 0xf4b76c)] case .gallery: - name = context.component.strings.Attachment_Gallery + name = strings.Attachment_Gallery animationName = "anim_gallery" imageName = "Chat/Attach Menu/Gallery" - backgroundColors = [UIColor(rgb: 0x2071f1), UIColor(rgb: 0x1bc9fa)] case .file: - name = context.component.strings.Attachment_File + name = strings.Attachment_File animationName = "anim_file" imageName = "Chat/Attach Menu/File" - backgroundColors = [UIColor(rgb: 0xed705d), UIColor(rgb: 0xffa14c)] case .location: - name = context.component.strings.Attachment_Location + name = strings.Attachment_Location animationName = "anim_location" imageName = "Chat/Attach Menu/Location" - backgroundColors = [UIColor(rgb: 0x5fb84f), UIColor(rgb: 0x99de6f)] case .contact: - name = context.component.strings.Attachment_Contact + name = strings.Attachment_Contact animationName = "anim_contact" imageName = "Chat/Attach Menu/Contact" - backgroundColors = [UIColor(rgb: 0xaa47d6), UIColor(rgb: 0xd67cf4)] case .poll: - name = context.component.strings.Attachment_Poll + name = strings.Attachment_Poll animationName = "anim_poll" imageName = "Chat/Attach Menu/Poll" - backgroundColors = [UIColor(rgb: 0xe9484f), UIColor(rgb: 0xee707e)] case let .app(appName): name = appName animationName = nil imageName = nil - backgroundColors = [UIColor(rgb: 0x000000), UIColor(rgb: 0x000000)] } + let image = imageName.flatMap { UIImage(bundleImageName: $0)?.withRenderingMode(.alwaysTemplate) } + let tintColor = component.isSelected ? component.theme.rootController.tabBar.selectedIconColor : component.theme.rootController.tabBar.iconColor + let icon = icon.update( - component: AttachButtonIconComponent( - animationName: animationName, - imageName: imageName, - isSelected: context.component.isSelected, - backgroundColors: backgroundColors, - foregroundColor: foregroundColor, - theme: context.component.theme, - context: context.component.context, - action: context.component.action - ), - availableSize: iconSize, + component: Image(image: image, tintColor: tintColor), + availableSize: CGSize(width: 30.0, height: 30.0), transition: context.transition ) + + print(animationName ?? "") let title = title.update( component: Text( text: name, - font: Font.regular(11.0), - color: context.component.theme.actionSheet.primaryTextColor + font: Font.regular(10.0), + color: context.component.isSelected ? component.theme.rootController.tabBar.selectedTextColor : component.theme.rootController.tabBar.textColor ), availableSize: context.availableSize, transition: .immediate ) - let topInset: CGFloat = 8.0 - let spacing: CGFloat = 3.0 + UIScreenPixel - - let normalIconScale = isCollapsed ? 0.7 : 1.0 - let smallIconScale = isCollapsed ? 0.5 : 0.6 + let topInset: CGFloat = 5.0 + UIScreenPixel + let spacing: CGFloat = 15.0 + UIScreenPixel - let iconScale = normalIconScale - (normalIconScale - smallIconScale) * abs(context.component.transitionFraction) - let iconOffset: CGFloat = (isCollapsed ? 10.0 : 20.0) * context.component.transitionFraction - let iconFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((context.availableSize.width - icon.size.width) / 2.0) + iconOffset, y: isCollapsed ? 3.0 : topInset), size: icon.size) - var titleFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((context.availableSize.width - title.size.width) / 2.0) + iconOffset, y: iconFrame.midY + (iconFrame.height * 0.5 * iconScale) + spacing), size: title.size) - if isCollapsed { - titleFrame.origin.y = floorToScreenPixels(iconFrame.midY - title.size.height / 2.0) - } + let iconFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((context.availableSize.width - icon.size.width) / 2.0), y: topInset), size: icon.size) + let titleFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((context.availableSize.width - title.size.width) / 2.0), y: iconFrame.midY + spacing), size: title.size) context.add(title .position(CGPoint(x: titleFrame.midX, y: titleFrame.midY)) - .opacity(isCollapsed ? 0.0 : 1.0 - abs(context.component.transitionFraction)) + .gesture(.tap { + component.action() + }) ) context.add(icon .position(CGPoint(x: iconFrame.midX, y: iconFrame.midY)) - .scale(iconScale) + .gesture(.tap { + component.action() + }) ) return context.availableSize @@ -238,197 +166,6 @@ private final class AttachButtonComponent: CombinedComponent { } } -private final class AttachButtonIconComponent: Component { - let animationName: String? - let imageName: String? - let isSelected: Bool - let backgroundColors: [UIColor] - let foregroundColor: UIColor - let theme: PresentationTheme - let context: AccountContext - - let action: () -> Void - - init( - animationName: String?, - imageName: String?, - isSelected: Bool, - backgroundColors: [UIColor], - foregroundColor: UIColor, - theme: PresentationTheme, - context: AccountContext, - action: @escaping () -> Void - ) { - self.animationName = animationName - self.imageName = imageName - self.isSelected = isSelected - self.backgroundColors = backgroundColors - self.foregroundColor = foregroundColor - self.theme = theme - self.context = context - self.action = action - } - - static func ==(lhs: AttachButtonIconComponent, rhs: AttachButtonIconComponent) -> Bool { - if lhs.animationName != rhs.animationName { - return false - } - if lhs.imageName != rhs.imageName { - return false - } - if lhs.isSelected != rhs.isSelected { - return false - } - if lhs.backgroundColors != rhs.backgroundColors { - return false - } - if lhs.foregroundColor != rhs.foregroundColor { - return false - } - if lhs.theme !== rhs.theme { - return false - } - if lhs.context !== rhs.context { - return false - } - return true - } - - final class View: HighlightTrackingButton { - private let containerView: UIView - private let glowView: UIImageView - private let selectionView: UIImageView - private let backgroundView: UIView - private let iconView: UIImageView - private let highlightView: UIView - - private var action: (() -> Void)? - - private var currentColors: [UIColor] = [] - private var currentImageName: String? - private var currentIsSelected: Bool? - - private let hapticFeedback = HapticFeedback() - - init() { - self.containerView = UIView() - self.containerView.isUserInteractionEnabled = false - - self.glowView = UIImageView() - self.glowView.image = buttonGlowImage - self.glowView.isUserInteractionEnabled = false - - self.selectionView = UIImageView() - self.selectionView.image = buttonSelectionMaskImage - self.selectionView.isUserInteractionEnabled = false - - self.backgroundView = UIView() - self.backgroundView.clipsToBounds = true - self.backgroundView.isUserInteractionEnabled = false - self.backgroundView.layer.cornerRadius = 21.0 - - self.iconView = UIImageView() - - self.highlightView = UIView() - self.highlightView.alpha = 0.0 - self.highlightView.backgroundColor = UIColor(rgb: 0x000000, alpha: 0.1) - self.highlightView.isUserInteractionEnabled = false - - super.init(frame: CGRect()) - - self.addSubview(self.containerView) - self.containerView.addSubview(self.glowView) - self.containerView.addSubview(self.selectionView) - self.containerView.addSubview(self.backgroundView) - self.backgroundView.addSubview(self.iconView) - self.backgroundView.addSubview(self.highlightView) - - self.addTarget(self, action: #selector(self.pressed), for: .touchUpInside) - self.highligthedChanged = { [weak self] highlighted in - if let strongSelf = self { - if highlighted { - strongSelf.containerView.layer.animateScale(from: 1.0, to: 0.9, duration: 0.3, removeOnCompletion: false) - - strongSelf.highlightView.layer.removeAnimation(forKey: "opacity") - strongSelf.highlightView.alpha = 1.0 - - strongSelf.hapticFeedback.impact(.click05) - } else { - if let presentationLayer = strongSelf.containerView.layer.presentation() { - strongSelf.containerView.layer.animateScale(from: CGFloat((presentationLayer.value(forKeyPath: "transform.scale.y") as? NSNumber)?.floatValue ?? 1.0), to: 1.0, duration: 0.2, removeOnCompletion: false) - } - - strongSelf.highlightView.alpha = 0.0 - strongSelf.highlightView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2) - - strongSelf.hapticFeedback.impact(.click06) - } - } - } - } - - required init?(coder aDecoder: NSCoder) { - preconditionFailure() - } - - @objc private func pressed() { - self.action?() - } - - func update(component: AttachButtonIconComponent, availableSize: CGSize, transition: Transition) -> CGSize { - self.action = component.action - - if self.currentColors != component.backgroundColors { - self.currentColors = component.backgroundColors - self.backgroundView.layer.contents = generateBackgroundImage(colors: component.backgroundColors)?.cgImage - - if let color = component.backgroundColors.last { - self.glowView.tintColor = color - self.selectionView.tintColor = color.withAlphaComponent(0.2) - } - } - - if self.currentImageName != component.imageName { - self.currentImageName = component.imageName - if let imageName = component.imageName, let image = UIImage(bundleImageName: imageName) { - self.iconView.image = image - - let scale: CGFloat = 0.875 - let iconSize = CGSize(width: floorToScreenPixels(image.size.width * scale), height: floorToScreenPixels(image.size.height * scale)) - self.iconView.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((availableSize.width - iconSize.width) / 2.0), y: floorToScreenPixels((availableSize.height - iconSize.height) / 2.0)), size: iconSize) - } - } - - if self.currentIsSelected != component.isSelected { - self.currentIsSelected = component.isSelected - - transition.setScale(view: self.selectionView, scale: component.isSelected ? 1.0 : 0.8) - } - - let contentFrame = CGRect(origin: CGPoint(), size: availableSize) - self.containerView.frame = contentFrame - self.backgroundView.frame = contentFrame - self.highlightView.frame = contentFrame - - self.glowView.bounds = CGRect(origin: CGPoint(), size: CGSize(width: contentFrame.width + 12.0, height: contentFrame.height + 12.0)) - self.glowView.center = CGPoint(x: contentFrame.midX, y: contentFrame.midY) - - self.selectionView.bounds = CGRect(origin: CGPoint(), size: CGSize(width: contentFrame.width + 6.0, height: contentFrame.height + 6.0)) - self.selectionView.center = CGPoint(x: contentFrame.midX, y: contentFrame.midY) - - return availableSize - } - } - - func makeView() -> View { - return View() - } - - func update(view: View, availableSize: CGSize, environment: Environment, transition: Transition) -> CGSize { - return view.update(component: self, availableSize: availableSize, transition: transition) - } -} - final class AttachmentPanel: ASDisplayNode, UIScrollViewDelegate { private let context: AccountContext private var presentationData: PresentationData @@ -707,9 +444,7 @@ final class AttachmentPanel: ASDisplayNode, UIScrollViewDelegate { let actualVisibleRect = self.scrollNode.bounds var validButtons = Set() - let buttonSize = self.isCollapsed ? smallPanelButtonSize : panelButtonSize - var sideInset = self.isCollapsed ? smallSideInset : normalSideInset - + var sideInset = sideInset let buttonsWidth = sideInset * 2.0 + buttonSize.width * CGFloat(self.buttons.count) if buttonsWidth < layout.size.width { sideInset = floorToScreenPixels((layout.size.width - buttonsWidth) / 2.0) @@ -778,12 +513,17 @@ final class AttachmentPanel: ASDisplayNode, UIScrollViewDelegate { if self.scrollLayout?.width == layout.size.width && !force { return false } + + var sideInset = sideInset + let buttonsWidth = sideInset * 2.0 + buttonSize.width * CGFloat(self.buttons.count) + if buttonsWidth < layout.size.width { + sideInset = floorToScreenPixels((layout.size.width - buttonsWidth) / 2.0) + } - let buttonSize = self.isCollapsed ? smallPanelButtonSize : panelButtonSize - let contentSize = CGSize(width: (self.isCollapsed ? smallSideInset : normalSideInset) * 2.0 + CGFloat(self.buttons.count) * buttonSize.width, height: buttonSize.height) + let contentSize = CGSize(width: sideInset * 2.0 + CGFloat(self.buttons.count) * buttonSize.width, height: buttonSize.height) self.scrollLayout = (layout.size.width, contentSize) - transition.updateFrame(node: self.scrollNode, frame: CGRect(origin: CGPoint(x: 0.0, y: self.isSelecting ? -panelButtonSize.height : 0.0), size: CGSize(width: layout.size.width, height: panelButtonSize.height))) + transition.updateFrame(node: self.scrollNode, frame: CGRect(origin: CGPoint(x: 0.0, y: self.isSelecting ? -buttonSize.height : 0.0), size: CGSize(width: layout.size.width, height: buttonSize.height))) self.scrollNode.view.contentSize = contentSize return true @@ -866,13 +606,11 @@ final class AttachmentPanel: ASDisplayNode, UIScrollViewDelegate { } } - let bounds = CGRect(origin: CGPoint(), size: CGSize(width: layout.size.width, height: panelButtonSize.height + insets.bottom)) + let bounds = CGRect(origin: CGPoint(), size: CGSize(width: layout.size.width, height: buttonSize.height + insets.bottom)) let containerTransition: ContainedViewLayoutTransition let containerFrame: CGRect if isSelecting { containerFrame = CGRect(origin: CGPoint(), size: CGSize(width: bounds.width, height: textPanelHeight + insets.bottom)) - } else if isCollapsed { - containerFrame = CGRect(origin: CGPoint(), size: CGSize(width: bounds.width, height: smallPanelButtonSize.height + insets.bottom)) } else { containerFrame = bounds } diff --git a/submodules/CalendarMessageScreen/Sources/CalendarMessageScreen.swift b/submodules/CalendarMessageScreen/Sources/CalendarMessageScreen.swift index 2603dfcd91..43cbd314f3 100644 --- a/submodules/CalendarMessageScreen/Sources/CalendarMessageScreen.swift +++ b/submodules/CalendarMessageScreen/Sources/CalendarMessageScreen.swift @@ -285,47 +285,6 @@ private final class DayEnvironment: Equatable { } } -private final class ImageComponent: Component { - let image: UIImage? - - init( - image: UIImage? - ) { - self.image = image - } - - static func ==(lhs: ImageComponent, rhs: ImageComponent) -> Bool { - if lhs.image !== rhs.image { - return false - } - return true - } - - final class View: UIImageView { - init() { - super.init(frame: CGRect()) - } - - required init?(coder aDecoder: NSCoder) { - preconditionFailure() - } - - func update(component: ImageComponent, availableSize: CGSize, environment: Environment, transition: Transition) -> CGSize { - self.image = component.image - - return availableSize - } - } - - func makeView() -> View { - return View() - } - - func update(view: View, availableSize: CGSize, environment: Environment, transition: Transition) -> CGSize { - return view.update(component: self, availableSize: availableSize, environment: environment, transition: transition) - } -} - private final class DayComponent: Component { typealias EnvironmentType = DayEnvironment @@ -894,7 +853,7 @@ private final class MonthComponent: CombinedComponent { let selectionRect = CGRect(origin: CGPoint(x: minX, y: minY), size: CGSize(width: maxX - minX, height: maxY - minY)) let selection = selections[lineIndex].update( - component: AnyComponent(ImageComponent(image: dayEnvironment.imageCache.monthSelection(leftRadius: selectionRadius, rightRadius: selectionRadius, maxRadius: selectionRadius, color: monthSelectionColor))), + component: AnyComponent(Image(image: dayEnvironment.imageCache.monthSelection(leftRadius: selectionRadius, rightRadius: selectionRadius, maxRadius: selectionRadius, color: monthSelectionColor))), availableSize: selectionRect.size, transition: .immediate ) diff --git a/submodules/ComponentFlow/Source/Base/CombinedComponent.swift b/submodules/ComponentFlow/Source/Base/CombinedComponent.swift index a518cf5ee1..dcb130a4a8 100644 --- a/submodules/ComponentFlow/Source/Base/CombinedComponent.swift +++ b/submodules/ComponentFlow/Source/Base/CombinedComponent.swift @@ -475,6 +475,7 @@ private class _AnyCombinedComponentContext { } else { let gestureInstance = gesture.create() self.gestures[gesture.id.id] = gestureInstance + self.view.isUserInteractionEnabled = true self.view.addGestureRecognizer(gestureInstance) } } diff --git a/submodules/ComponentFlow/Source/Components/Image.swift b/submodules/ComponentFlow/Source/Components/Image.swift new file mode 100644 index 0000000000..a9ebfc58ec --- /dev/null +++ b/submodules/ComponentFlow/Source/Components/Image.swift @@ -0,0 +1,50 @@ +import Foundation +import UIKit + +public final class Image: Component { + public let image: UIImage? + public let tintColor: UIColor? + + public init( + image: UIImage?, + tintColor: UIColor? = nil + ) { + self.image = image + self.tintColor = tintColor + } + + public static func ==(lhs: Image, rhs: Image) -> Bool { + if lhs.image !== rhs.image { + return false + } + if lhs.tintColor != rhs.tintColor { + return false + } + return true + } + + public final class View: UIImageView { + init() { + super.init(frame: CGRect()) + } + + required init?(coder aDecoder: NSCoder) { + preconditionFailure() + } + + func update(component: Image, availableSize: CGSize, environment: Environment, transition: Transition) -> CGSize { + self.image = component.image + self.tintColor = component.tintColor + + return availableSize + } + } + + public func makeView() -> View { + return View() + } + + public func update(view: View, availableSize: CGSize, environment: Environment, transition: Transition) -> CGSize { + return view.update(component: self, availableSize: availableSize, environment: environment, transition: transition) + } +} diff --git a/submodules/Display/Source/ViewController.swift b/submodules/Display/Source/ViewController.swift index 27dec081c0..d4e11392e8 100644 --- a/submodules/Display/Source/ViewController.swift +++ b/submodules/Display/Source/ViewController.swift @@ -215,7 +215,7 @@ public protocol CustomViewControllerNavigationDataSummary: AnyObject { open func navigationLayout(layout: ContainerViewLayout) -> NavigationLayout { let statusBarHeight: CGFloat = layout.statusBarHeight ?? 0.0 var defaultNavigationBarHeight: CGFloat - if self._presentedInModal { + if self._presentedInModal && layout.orientation == .portrait { defaultNavigationBarHeight = 56.0 } else { defaultNavigationBarHeight = 44.0 diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGAttachmentCarouselItemView.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGAttachmentCarouselItemView.h index 15dcd40a22..5fe705a653 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGAttachmentCarouselItemView.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGAttachmentCarouselItemView.h @@ -33,7 +33,7 @@ @property (nonatomic) bool hasSilentPosting; @property (nonatomic) bool hasSchedule; @property (nonatomic) bool reminder; -@property (nonatomic, copy) void (^presentScheduleController)(void (^)(int32_t)); +@property (nonatomic, copy) void (^presentScheduleController)(bool, void (^)(int32_t)); @property (nonatomic, copy) void (^presentTimerController)(void (^)(int32_t)); @property (nonatomic, strong) NSArray *underlyingViews; diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraController.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraController.h index 9255465feb..01bfa00ecb 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraController.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraController.h @@ -58,7 +58,7 @@ typedef enum { @property (nonatomic, copy) void(^finishedTransitionOut)(void); @property (nonatomic, copy) void(^customPresentOverlayController)(TGOverlayController *(^)(id)); -@property (nonatomic, copy) void (^presentScheduleController)(void (^)(int32_t)); +@property (nonatomic, copy) void (^presentScheduleController)(bool, void (^)(int32_t)); @property (nonatomic, copy) void (^presentTimerController)(void (^)(int32_t)); - (instancetype)initWithContext:(id)context saveEditedPhotos:(bool)saveEditedPhotos saveCapturedMedia:(bool)saveCapturedMedia; diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaAssetsController.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaAssetsController.h index c07a81d485..5eac3189d4 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaAssetsController.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaAssetsController.h @@ -64,7 +64,7 @@ typedef enum @property (nonatomic, assign) bool hasSilentPosting; @property (nonatomic, assign) bool hasSchedule; @property (nonatomic, assign) bool reminder; -@property (nonatomic, copy) void (^presentScheduleController)(void (^)(int32_t)); +@property (nonatomic, copy) void (^presentScheduleController)(bool, void (^)(int32_t)); @property (nonatomic, copy) void (^presentTimerController)(void (^)(int32_t)); @property (nonatomic, assign) bool liveVideoUploadEnabled; @@ -92,7 +92,7 @@ typedef enum - (UIBarButtonItem *)rightBarButtonItem; - (void)send:(bool)silently; -- (void)schedule; +- (void)schedule:(bool)schedule; - (NSArray *)resultSignalsWithCurrentItem:(TGMediaAsset *)currentItem descriptionGenerator:(id (^)(id, NSAttributedString *, NSString *, NSString *))descriptionGenerator; diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerController.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerController.h index 76b1817805..6d8c8b9e5c 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerController.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerController.h @@ -30,7 +30,7 @@ @property (nonatomic, assign) bool hasSilentPosting; @property (nonatomic, assign) bool hasSchedule; @property (nonatomic, assign) bool reminder; -@property (nonatomic, copy) void (^presentScheduleController)(void (^)(int32_t)); +@property (nonatomic, copy) void (^presentScheduleController)(bool, void (^)(int32_t)); @property (nonatomic, copy) void (^presentTimerController)(void (^)(int32_t)); @property (nonatomic, assign) CGFloat topInset; diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerModernGalleryMixin.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerModernGalleryMixin.h index 0c625409c0..818cbe4dd2 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerModernGalleryMixin.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerModernGalleryMixin.h @@ -28,7 +28,7 @@ @property (nonatomic, copy) void (^editorOpened)(void); @property (nonatomic, copy) void (^editorClosed)(void); -@property (nonatomic, copy) void (^presentScheduleController)(void (^)(int32_t)); +@property (nonatomic, copy) void (^presentScheduleController)(bool, void (^)(int32_t)); @property (nonatomic, copy) void (^presentTimerController)(void (^)(int32_t)); - (instancetype)initWithContext:(id)context item:(id)item fetchResult:(TGMediaAssetFetchResult *)fetchResult parentController:(TGViewController *)parentController thumbnailImage:(UIImage *)thumbnailImage selectionContext:(TGMediaSelectionContext *)selectionContext editingContext:(TGMediaEditingContext *)editingContext hasCaptions:(bool)hasCaptions allowCaptionEntities:(bool)allowCaptionEntities hasTimer:(bool)hasTimer onlyCrop:(bool)onlyCrop inhibitDocumentCaptions:(bool)inhibitDocumentCaptions inhibitMute:(bool)inhibitMute asFile:(bool)asFile itemsLimit:(NSUInteger)itemsLimit recipientName:(NSString *)recipientName hasSilentPosting:(bool)hasSilentPosting hasSchedule:(bool)hasSchedule reminder:(bool)reminder stickersContext:(id)stickersContext; diff --git a/submodules/LegacyComponents/Sources/TGCameraController.m b/submodules/LegacyComponents/Sources/TGCameraController.m index 68a8630d68..9da963c36f 100644 --- a/submodules/LegacyComponents/Sources/TGCameraController.m +++ b/submodules/LegacyComponents/Sources/TGCameraController.m @@ -1618,7 +1618,7 @@ static CGPoint TGCameraControllerClampPointToScreenSize(__unused id self, __unus if (strongSelf == nil) return; - strongSelf.presentScheduleController(^(int32_t time) { + strongSelf.presentScheduleController(true, ^(int32_t time) { __strong TGCameraController *strongSelf = weakSelf; __strong TGMediaPickerGalleryModel *strongModel = weakModel; diff --git a/submodules/LegacyComponents/Sources/TGMediaAssetsController.m b/submodules/LegacyComponents/Sources/TGMediaAssetsController.m index b281a4c313..65a399330d 100644 --- a/submodules/LegacyComponents/Sources/TGMediaAssetsController.m +++ b/submodules/LegacyComponents/Sources/TGMediaAssetsController.m @@ -363,7 +363,7 @@ self.pickerController.reminder = reminder; } -- (void)setPresentScheduleController:(void (^)(void (^)(int32_t)))presentScheduleController { +- (void)setPresentScheduleController:(void (^)(bool, void (^)(int32_t)))presentScheduleController { _presentScheduleController = [presentScheduleController copy]; self.pickerController.presentScheduleController = presentScheduleController; } @@ -1432,9 +1432,9 @@ [self completeWithCurrentItem:nil silentPosting:silently scheduleTime:0]; } -- (void)schedule { +- (void)schedule:(bool)media { __weak TGMediaAssetsController *weakSelf = self; - self.presentScheduleController(^(int32_t scheduleTime) { + self.presentScheduleController(media, ^(int32_t scheduleTime) { [weakSelf completeWithCurrentItem:nil silentPosting:false scheduleTime:scheduleTime]; }); } diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m b/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m index 9abb103ab6..c81218980e 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m @@ -191,7 +191,7 @@ if (strongSelf == nil) return; - strongSelf.presentScheduleController(^(int32_t time) { + strongSelf.presentScheduleController(true, ^(int32_t time) { __strong TGMediaPickerModernGalleryMixin *strongSelf = weakSelf; if (strongSelf == nil) return; diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift b/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift index e8bedbd30e..0b0d2120d9 100644 --- a/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift +++ b/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift @@ -123,7 +123,7 @@ public func legacyMediaEditor(context: AccountContext, peer: Peer, media: AnyMed }) } -public func legacyAttachmentMenu(context: AccountContext, peer: Peer, chatLocation: ChatLocation, editMediaOptions: LegacyAttachmentMenuMediaEditing?, saveEditedPhotos: Bool, allowGrouping: Bool, hasSchedule: Bool, canSendPolls: Bool, updatedPresentationData: (initial: PresentationData, signal: Signal), parentController: LegacyController, recentlyUsedInlineBots: [Peer], initialCaption: NSAttributedString, openGallery: @escaping () -> Void, openCamera: @escaping (TGAttachmentCameraView?, TGMenuSheetController?) -> Void, openFileGallery: @escaping () -> Void, openWebSearch: @escaping () -> Void, openMap: @escaping () -> Void, openContacts: @escaping () -> Void, openPoll: @escaping () -> Void, presentSelectionLimitExceeded: @escaping () -> Void, presentCantSendMultipleFiles: @escaping () -> Void, presentJpegConversionAlert: @escaping (@escaping (Bool) -> Void) -> Void, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32, ((String) -> UIView?)?, @escaping () -> Void) -> Void, selectRecentlyUsedInlineBot: @escaping (Peer) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> TGPhotoPaintStickersScreen?, getCaptionPanelView: @escaping () -> TGCaptionPanelView?, present: @escaping (ViewController, Any?) -> Void) -> TGMenuSheetController { +public func legacyAttachmentMenu(context: AccountContext, peer: Peer, chatLocation: ChatLocation, editMediaOptions: LegacyAttachmentMenuMediaEditing?, saveEditedPhotos: Bool, allowGrouping: Bool, hasSchedule: Bool, canSendPolls: Bool, updatedPresentationData: (initial: PresentationData, signal: Signal), parentController: LegacyController, recentlyUsedInlineBots: [Peer], initialCaption: NSAttributedString, openGallery: @escaping () -> Void, openCamera: @escaping (TGAttachmentCameraView?, TGMenuSheetController?) -> Void, openFileGallery: @escaping () -> Void, openWebSearch: @escaping () -> Void, openMap: @escaping () -> Void, openContacts: @escaping () -> Void, openPoll: @escaping () -> Void, presentSelectionLimitExceeded: @escaping () -> Void, presentCantSendMultipleFiles: @escaping () -> Void, presentJpegConversionAlert: @escaping (@escaping (Bool) -> Void) -> Void, presentSchedulePicker: @escaping (Bool, @escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32, ((String) -> UIView?)?, @escaping () -> Void) -> Void, selectRecentlyUsedInlineBot: @escaping (Peer) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> TGPhotoPaintStickersScreen?, getCaptionPanelView: @escaping () -> TGCaptionPanelView?, present: @escaping (ViewController, Any?) -> Void) -> TGMenuSheetController { let defaultVideoPreset = defaultVideoPresetForContext(context) UserDefaults.standard.set(defaultVideoPreset.rawValue as NSNumber, forKey: "TG_preferredVideoPreset_v0") @@ -219,10 +219,10 @@ public func legacyAttachmentMenu(context: AccountContext, peer: Peer, chatLocati } carouselItem.hasSchedule = hasSchedule carouselItem.reminder = peer.id == context.account.peerId - carouselItem.presentScheduleController = { done in - presentSchedulePicker { time in + carouselItem.presentScheduleController = { media, done in + presentSchedulePicker(media, { time in done?(time) - } + }) } carouselItem.presentTimerController = { done in presentTimerPicker { time in diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift b/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift index 7cff8e35b1..75e61b79ee 100644 --- a/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift +++ b/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift @@ -20,7 +20,7 @@ public func guessMimeTypeByFileExtension(_ ext: String) -> String { return TGMimeTypeMap.mimeType(forExtension: ext) ?? "application/binary" } -public func configureLegacyAssetPicker(_ controller: TGMediaAssetsController, context: AccountContext, peer: Peer, chatLocation: ChatLocation, captionsEnabled: Bool = true, storeCreatedAssets: Bool = true, showFileTooltip: Bool = false, initialCaption: NSAttributedString, hasSchedule: Bool, presentWebSearch: (() -> Void)?, presentSelectionLimitExceeded: @escaping () -> Void, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> TGPhotoPaintStickersScreen?, getCaptionPanelView: @escaping () -> TGCaptionPanelView?) { +public func configureLegacyAssetPicker(_ controller: TGMediaAssetsController, context: AccountContext, peer: Peer, chatLocation: ChatLocation, captionsEnabled: Bool = true, storeCreatedAssets: Bool = true, showFileTooltip: Bool = false, initialCaption: NSAttributedString, hasSchedule: Bool, presentWebSearch: (() -> Void)?, presentSelectionLimitExceeded: @escaping () -> Void, presentSchedulePicker: @escaping (Bool, @escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> TGPhotoPaintStickersScreen?, getCaptionPanelView: @escaping () -> TGCaptionPanelView?) { let paintStickersContext = LegacyPaintStickersContext(context: context) paintStickersContext.captionPanelView = { return getCaptionPanelView() @@ -44,10 +44,10 @@ public func configureLegacyAssetPicker(_ controller: TGMediaAssetsController, co } controller.hasSchedule = hasSchedule controller.reminder = peer.id == context.account.peerId - controller.presentScheduleController = { done in - presentSchedulePicker { time in + controller.presentScheduleController = { media, done in + presentSchedulePicker(media, { time in done?(time) - } + }) } controller.presentTimerController = { done in presentTimerPicker { time in @@ -109,7 +109,7 @@ public class LegacyAssetPickerContext: AttachmentMediaPickerContext { } public func schedule() { - self.controller?.schedule() + self.controller?.schedule(false) } } diff --git a/submodules/LocationUI/Sources/LocationMapHeaderNode.swift b/submodules/LocationUI/Sources/LocationMapHeaderNode.swift index e267dedc67..44472fe5c2 100644 --- a/submodules/LocationUI/Sources/LocationMapHeaderNode.swift +++ b/submodules/LocationUI/Sources/LocationMapHeaderNode.swift @@ -207,7 +207,7 @@ final class LocationMapHeaderNode: ASDisplayNode { transition.updateAlpha(node: self.notificationButtonNode, alpha: self.proximityNotification != nil ? 1.0 : 0.0) transition.updateAlpha(node: self.optionsSecondSeparatorNode, alpha: self.proximityNotification != nil ? 1.0 : 0.0) - transition.updateFrame(node: self.optionsBackgroundNode, frame: CGRect(x: size.width - inset - panelButtonSize.width - panelInset * 2.0, y: navigationBarHeight + topPadding + inset, width: panelButtonSize.width + panelInset * 2.0, height: panelHeight + panelInset * 2.0)) + transition.updateFrame(node: self.optionsBackgroundNode, frame: CGRect(x: size.width - inset - panelButtonSize.width - panelInset * 2.0 - layout.safeInsets.right, y: navigationBarHeight + topPadding + inset, width: panelButtonSize.width + panelInset * 2.0, height: panelHeight + panelInset * 2.0)) let alphaTransition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut) let optionsAlpha: CGFloat = size.height > 160.0 + navigationBarHeight && !self.forceIsHidden ? 1.0 : 0.0 diff --git a/submodules/LocationUI/Sources/LocationOptionsNode.swift b/submodules/LocationUI/Sources/LocationOptionsNode.swift index dceb5b2b8e..5198b435f9 100644 --- a/submodules/LocationUI/Sources/LocationOptionsNode.swift +++ b/submodules/LocationUI/Sources/LocationOptionsNode.swift @@ -55,7 +55,7 @@ final class LocationOptionsNode: ASDisplayNode { transition.updateFrame(node: self.backgroundNode, frame: CGRect(origin: CGPoint(), size: size)) transition.updateFrame(node: self.separatorNode, frame: CGRect(x: 0.0, y: size.height, width: size.width, height: UIScreenPixel)) - let controlSize = self.segmentedControlNode.updateLayout(.stretchToFill(width: size.width - 16.0), transition: .immediate) + let controlSize = self.segmentedControlNode.updateLayout(.stretchToFill(width: size.width - 16.0 - leftInset - rightInset), transition: .immediate) self.segmentedControlNode.frame = CGRect(origin: CGPoint(x: floor((size.width - controlSize.width) / 2.0), y: 0.0), size: controlSize) } } diff --git a/submodules/LocationUI/Sources/LocationPickerControllerNode.swift b/submodules/LocationUI/Sources/LocationPickerControllerNode.swift index 57e5326505..1df81a0b37 100644 --- a/submodules/LocationUI/Sources/LocationPickerControllerNode.swift +++ b/submodules/LocationUI/Sources/LocationPickerControllerNode.swift @@ -882,7 +882,7 @@ final class LocationPickerControllerNode: ViewControllerTracingNode, CLLocationM let optionsOffset: CGFloat = self.state.displayingMapModeOptions ? navigationHeight : navigationHeight - optionsHeight let optionsFrame = CGRect(x: 0.0, y: optionsOffset, width: layout.size.width, height: optionsHeight) transition.updateFrame(node: self.optionsNode, frame: optionsFrame) - self.optionsNode.updateLayout(size: optionsFrame.size, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, transition: transition) + self.optionsNode.updateLayout(size: optionsFrame.size, leftInset: insets.left, rightInset: insets.right, transition: transition) self.optionsNode.isUserInteractionEnabled = self.state.displayingMapModeOptions if let searchContainerNode = self.searchContainerNode { diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Messages/SearchMessages.swift b/submodules/TelegramCore/Sources/TelegramEngine/Messages/SearchMessages.swift index 8e9b879f1f..2ab9f5a231 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Messages/SearchMessages.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Messages/SearchMessages.swift @@ -10,6 +10,7 @@ public enum SearchMessagesLocation: Equatable { case group(groupId: PeerGroupId, tags: MessageTags?, minDate: Int32?, maxDate: Int32?) case peer(peerId: PeerId, fromId: PeerId?, tags: MessageTags?, topMsgId: MessageId?, minDate: Int32?, maxDate: Int32?) case publicForwards(messageId: MessageId, datacenterId: Int?) + case recentDocuments } private struct SearchMessagesPeerState: Equatable { @@ -337,7 +338,43 @@ func _internal_searchMessages(account: Account, location: SearchMessagesLocation |> `catch` { _ -> Signal<(Api.messages.Messages?, Api.messages.Messages?), NoError> in return .single((nil, nil)) } - } + } + case .recentDocuments: + let filter: Api.MessagesFilter = messageFilterForTagMask(.file) ?? .inputMessagesFilterEmpty + let peerId = account.peerId + + remoteSearchResult = account.postbox.transaction { transaction -> Peer? in + guard let peer = transaction.getPeer(peerId) else { + return nil + } + return peer + } + |> mapToSignal { peer -> Signal<(Api.messages.Messages?, Api.messages.Messages?), NoError> in + guard let peer = peer else { + return .single((nil, nil)) + } + let inputPeer = Api.InputPeer.inputPeerEmpty + + var flags: Int32 = 0 + + let fromInputPeer = apiInputPeer(peer) + flags |= (1 << 0) + + let peerMessages: Signal + if let completed = state?.main.completed, completed { + peerMessages = .single(nil) + } else { + let lowerBound = state?.main.messages.last.flatMap({ $0.index }) + let signal = account.network.request(Api.functions.messages.search(flags: flags, peer: inputPeer, q: query, fromId: fromInputPeer, topMsgId: nil, filter: filter, minDate: 0, maxDate: (Int32.max - 1), offsetId: lowerBound?.id.id ?? 0, addOffset: 0, limit: limit, maxId: Int32.max - 1, minId: 0, hash: 0)) + + peerMessages = signal + |> map(Optional.init) + |> `catch` { _ -> Signal in + return .single(nil) + } + } + return combineLatest(peerMessages, .single(nil)) + } } return remoteSearchResult diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Contents.json index 806935b949..b63884fcb4 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Property 1=Camera.pdf", + "filename" : "Icon-3.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Icon-3.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Icon-3.pdf new file mode 100644 index 0000000000..480dc55c21 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Icon-3.pdf @@ -0,0 +1,107 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 3.000000 5.000000 cm +0.635294 0.635294 0.635294 scn +0.000000 12.652475 m +0.000000 13.439779 0.000000 13.833430 0.049142 14.163219 c +0.340950 16.121538 1.878462 17.659050 3.836780 17.950859 c +4.166570 18.000000 4.560222 18.000000 5.347525 18.000000 c +5.881966 18.000000 l +6.567171 18.000000 7.193567 18.387135 7.500000 19.000000 c +7.806434 19.612865 8.432830 20.000000 9.118035 20.000000 c +14.881966 20.000000 l +15.567171 20.000000 16.193567 19.612865 16.500000 19.000000 c +16.806433 18.387135 17.432829 18.000000 18.118034 18.000000 c +18.652475 18.000000 l +19.439775 18.000000 19.833426 18.000000 20.163214 17.950859 c +22.121534 17.659052 23.659048 16.121538 23.950855 14.163218 c +23.999996 13.833429 23.999996 13.439779 23.999996 12.652477 c +23.999996 7.200001 l +23.999996 4.679764 23.999996 3.419645 23.509525 2.457043 c +23.078094 1.610313 22.389683 0.921902 21.542953 0.490471 c +20.580351 0.000000 19.320232 0.000000 16.799995 0.000000 c +7.199999 0.000000 l +4.679763 0.000000 3.419646 0.000000 2.457043 0.490471 c +1.610313 0.921902 0.921901 1.610313 0.490471 2.457043 c +0.000000 3.419645 0.000000 4.679764 0.000000 7.200000 c +0.000000 12.652475 l +h +12.000000 12.375000 m +10.136039 12.375000 8.625000 10.863961 8.625000 9.000000 c +8.625000 7.136039 10.136039 5.625000 12.000000 5.625000 c +13.863961 5.625000 15.375000 7.136039 15.375000 9.000000 c +15.375000 10.863961 13.863961 12.375000 12.000000 12.375000 c +h +6.375000 9.000000 m +6.375000 12.106602 8.893398 14.625000 12.000000 14.625000 c +15.106602 14.625000 17.625000 12.106602 17.625000 9.000000 c +17.625000 5.893398 15.106602 3.375000 12.000000 3.375000 c +8.893398 3.375000 6.375000 5.893398 6.375000 9.000000 c +h +19.500000 12.000000 m +20.328426 12.000000 21.000000 12.671573 21.000000 13.500000 c +21.000000 14.328427 20.328426 15.000000 19.500000 15.000000 c +18.671574 15.000000 18.000000 14.328427 18.000000 13.500000 c +18.000000 12.671573 18.671574 12.000000 19.500000 12.000000 c +h +f* +n +Q + +endstream +endobj + +3 0 obj + 2018 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 30.000000 30.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002108 00000 n +0000002131 00000 n +0000002304 00000 n +0000002378 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2437 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Property 1=Camera.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Property 1=Camera.pdf deleted file mode 100644 index 429bee41ab..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Camera.imageset/Property 1=Camera.pdf +++ /dev/null @@ -1,118 +0,0 @@ -%PDF-1.7 - -1 0 obj - << >> -endobj - -2 0 obj - << /Length 3 0 R >> -stream -/DeviceRGB CS -/DeviceRGB cs -q -1.000000 0.000000 -0.000000 1.000000 14.000000 17.000000 cm -1.000000 1.000000 1.000000 scn -0.000000 16.899923 m -0.000000 17.921806 0.000000 18.432747 0.062100 18.861015 c -0.443433 21.490837 2.509163 23.556566 5.138984 23.937901 c -5.567253 24.000000 6.078194 24.000000 7.100077 24.000000 c -7.197224 24.000000 l -7.389089 24.000000 7.485021 24.000000 7.575428 24.005465 c -8.449500 24.058290 9.256863 24.490376 9.785665 25.188347 c -9.840356 25.260532 9.893565 25.340347 9.999977 25.499966 c -10.000000 25.500000 l -10.000046 25.500069 l -10.000060 25.500093 l -10.106449 25.659672 10.159652 25.739475 10.214336 25.811653 c -10.743138 26.509623 11.550501 26.941710 12.424573 26.994535 c -12.514979 27.000000 12.610912 27.000000 12.802777 27.000000 c -19.197224 27.000000 l -19.389088 27.000000 19.485020 27.000000 19.575428 26.994535 c -20.449501 26.941710 21.256863 26.509623 21.785666 25.811653 c -21.840359 25.739460 21.893574 25.659641 22.000000 25.500000 c -22.106426 25.340359 22.159641 25.260540 22.214334 25.188347 c -22.743137 24.490377 23.550499 24.058289 24.424572 24.005465 c -24.514980 24.000000 24.610912 24.000000 24.802776 24.000000 c -24.899923 24.000000 l -25.921803 24.000000 26.432743 24.000000 26.861012 23.937901 c -29.490833 23.556566 31.556562 21.490837 31.937897 18.861015 c -31.999996 18.432747 31.999996 17.921806 31.999996 16.899923 c -31.999996 9.600000 l -31.999996 6.239685 31.999996 4.559526 31.346035 3.276056 c -30.770796 2.147085 29.852911 1.229200 28.723940 0.653961 c -27.440470 0.000000 25.760311 0.000000 22.399996 0.000000 c -9.599999 0.000000 l -6.239685 0.000000 4.559527 0.000000 3.276057 0.653961 c -2.147084 1.229200 1.229201 2.147085 0.653961 3.276056 c -0.000000 4.559526 0.000000 6.239685 0.000000 9.600000 c -0.000000 16.899923 l -h -16.000000 16.500000 m -13.514719 16.500000 11.500000 14.485281 11.500000 12.000000 c -11.500000 9.514719 13.514719 7.500000 16.000000 7.500000 c -18.485281 7.500000 20.500000 9.514719 20.500000 12.000000 c -20.500000 14.485281 18.485281 16.500000 16.000000 16.500000 c -h -8.500000 12.000000 m -8.500000 16.142136 11.857864 19.500000 16.000000 19.500000 c -20.142136 19.500000 23.500000 16.142136 23.500000 12.000000 c -23.500000 7.857864 20.142136 4.500000 16.000000 4.500000 c -11.857864 4.500000 8.500000 7.857864 8.500000 12.000000 c -h -26.000000 16.000000 m -27.104570 16.000000 28.000000 16.895432 28.000000 18.000000 c -28.000000 19.104568 27.104570 20.000000 26.000000 20.000000 c -24.895430 20.000000 24.000000 19.104568 24.000000 18.000000 c -24.000000 16.895432 24.895430 16.000000 26.000000 16.000000 c -h -f* -n -Q - -endstream -endobj - -3 0 obj - 2589 -endobj - -4 0 obj - << /Annots [] - /Type /Page - /MediaBox [ 0.000000 0.000000 60.000000 60.000000 ] - /Resources 1 0 R - /Contents 2 0 R - /Parent 5 0 R - >> -endobj - -5 0 obj - << /Kids [ 4 0 R ] - /Count 1 - /Type /Pages - >> -endobj - -6 0 obj - << /Pages 5 0 R - /Type /Catalog - >> -endobj - -xref -0 7 -0000000000 65535 f -0000000010 00000 n -0000000034 00000 n -0000002679 00000 n -0000002702 00000 n -0000002875 00000 n -0000002949 00000 n -trailer -<< /ID [ (some) (id) ] - /Root 6 0 R - /Size 7 ->> -startxref -3008 -%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Contents.json index a406bd6cae..708596d23c 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Union-2.pdf", + "filename" : "Type=Default-4.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Type=Default-4.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Type=Default-4.pdf new file mode 100644 index 0000000000..9061905793 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Type=Default-4.pdf @@ -0,0 +1,89 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 2.000000 2.000000 cm +0.000000 0.000000 0.000000 scn +26.000000 13.000000 m +26.000000 5.820297 20.179703 0.000000 13.000000 0.000000 c +5.820298 0.000000 0.000000 5.820297 0.000000 13.000000 c +0.000000 20.179703 5.820298 26.000000 13.000000 26.000000 c +20.179703 26.000000 26.000000 20.179703 26.000000 13.000000 c +h +20.003258 6.872458 m +18.344250 8.290819 16.009829 9.000000 13.000000 9.000000 c +9.992910 9.000000 7.660003 8.292110 6.000182 6.876038 c +5.833464 6.733803 5.622884 6.515335 5.426986 6.300488 c +5.083337 5.923595 5.107304 5.346016 5.475027 4.992571 c +5.660997 4.813824 5.854316 4.634521 6.004015 4.511009 c +7.905313 2.942308 10.342612 2.000000 13.000000 2.000000 c +15.659546 2.000000 18.098646 2.943840 20.000311 4.515163 c +20.148626 4.637714 20.340015 4.815340 20.524366 4.992630 c +20.891705 5.345900 20.915785 5.922966 20.572666 6.299803 c +20.377987 6.513613 20.168888 6.730852 20.003258 6.872458 c +h +17.000000 16.000000 m +17.000000 18.209139 15.209139 20.000000 13.000000 20.000000 c +10.790861 20.000000 9.000000 18.209139 9.000000 16.000000 c +9.000000 13.790861 10.790861 12.000000 13.000000 12.000000 c +15.209139 12.000000 17.000000 13.790861 17.000000 16.000000 c +h +f* +n +Q + +endstream +endobj + +3 0 obj + 1257 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 30.000000 30.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000001347 00000 n +0000001370 00000 n +0000001543 00000 n +0000001617 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1676 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Union-2.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Union-2.pdf deleted file mode 100644 index 707375b99e..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Contact.imageset/Union-2.pdf +++ /dev/null @@ -1,79 +0,0 @@ -%PDF-1.7 - -1 0 obj - << >> -endobj - -2 0 obj - << /Length 3 0 R >> -stream -/DeviceRGB CS -/DeviceRGB cs -q -1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm -1.000000 1.000000 1.000000 scn -12.473795 18.000000 m -15.787504 18.000000 18.473795 20.686291 18.473795 24.000000 c -18.473795 27.313709 15.787504 30.000000 12.473795 30.000000 c -9.160086 30.000000 6.473795 27.313709 6.473795 24.000000 c -6.473795 20.686291 9.160086 18.000000 12.473795 18.000000 c -h -12.473970 14.000000 m -17.620707 14.000000 22.118784 11.222771 24.551340 7.085182 c -25.277521 5.850006 24.987329 4.309250 23.837667 3.454098 c -21.863237 1.985462 18.145235 0.000000 12.473970 0.000000 c -6.802708 0.000000 3.084706 1.985462 1.110274 3.454098 c --0.039390 4.309246 -0.329582 5.850006 0.396601 7.085182 c -2.829157 11.222771 7.327235 14.000000 12.473970 14.000000 c -h -f* -n -Q - -endstream -endobj - -3 0 obj - 770 -endobj - -4 0 obj - << /Annots [] - /Type /Page - /MediaBox [ 0.000000 0.000000 24.947937 30.000000 ] - /Resources 1 0 R - /Contents 2 0 R - /Parent 5 0 R - >> -endobj - -5 0 obj - << /Kids [ 4 0 R ] - /Count 1 - /Type /Pages - >> -endobj - -6 0 obj - << /Pages 5 0 R - /Type /Catalog - >> -endobj - -xref -0 7 -0000000000 65535 f -0000000010 00000 n -0000000034 00000 n -0000000860 00000 n -0000000882 00000 n -0000001055 00000 n -0000001129 00000 n -trailer -<< /ID [ (some) (id) ] - /Root 6 0 R - /Size 7 ->> -startxref -1188 -%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Contents.json index 3b0c6903e1..5a86267c04 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Subtract.pdf", + "filename" : "Type=Default-2.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Subtract.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Subtract.pdf deleted file mode 100644 index ac014ededf..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Subtract.pdf +++ /dev/null @@ -1,96 +0,0 @@ -%PDF-1.7 - -1 0 obj - << >> -endobj - -2 0 obj - << /Length 3 0 R >> -stream -/DeviceRGB CS -/DeviceRGB cs -q -1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm -1.000000 1.000000 1.000000 scn -14.400000 0.000000 m -9.600000 0.000000 l -6.239685 0.000000 4.559527 0.000000 3.276057 0.653961 c -2.147084 1.229200 1.229201 2.147085 0.653961 3.276056 c -0.000000 4.559526 0.000000 6.239685 0.000000 9.600000 c -0.000000 20.400002 l -0.000000 23.760315 0.000000 25.440472 0.653961 26.723944 c -1.229201 27.852915 2.147084 28.770800 3.276057 29.346039 c -4.559527 30.000000 6.239685 30.000000 9.600000 30.000000 c -11.341846 30.000000 l -12.345142 30.000000 12.846791 30.000000 13.317464 29.884233 c -13.734708 29.781607 14.132692 29.612423 14.496114 29.383186 c -14.906072 29.124596 15.254162 28.763371 15.950342 28.040918 c -22.208498 21.546604 l -22.208509 21.546591 l -22.870174 20.859959 23.201010 20.516640 23.437363 20.119482 c -23.646940 19.767319 23.801153 19.385040 23.894608 18.986031 c -24.000000 18.536037 24.000000 18.059254 24.000000 17.105690 c -24.000000 9.600000 l -24.000000 6.239685 24.000000 4.559526 23.346039 3.276056 c -22.770800 2.147085 21.852915 1.229200 20.723944 0.653961 c -19.440474 0.000000 17.760315 0.000000 14.400000 0.000000 c -h -21.023287 16.875000 m -14.187500 16.875000 l -13.082931 16.875000 12.187500 17.770432 12.187500 18.875000 c -12.187500 25.710787 l -12.187500 26.601692 13.264641 27.047859 13.894606 26.417894 c -21.730392 18.582108 l -22.360359 17.952141 21.914192 16.875000 21.023287 16.875000 c -h -f* -n -Q - -endstream -endobj - -3 0 obj - 1447 -endobj - -4 0 obj - << /Annots [] - /Type /Page - /MediaBox [ 0.000000 0.000000 24.000000 30.000000 ] - /Resources 1 0 R - /Contents 2 0 R - /Parent 5 0 R - >> -endobj - -5 0 obj - << /Kids [ 4 0 R ] - /Count 1 - /Type /Pages - >> -endobj - -6 0 obj - << /Pages 5 0 R - /Type /Catalog - >> -endobj - -xref -0 7 -0000000000 65535 f -0000000010 00000 n -0000000034 00000 n -0000001537 00000 n -0000001560 00000 n -0000001733 00000 n -0000001807 00000 n -trailer -<< /ID [ (some) (id) ] - /Root 6 0 R - /Size 7 ->> -startxref -1866 -%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Type=Default-2.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Type=Default-2.pdf new file mode 100644 index 0000000000..1427c16275 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/File.imageset/Type=Default-2.pdf @@ -0,0 +1,98 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 5.000000 2.500000 cm +0.000000 0.000000 0.000000 scn +12.000015 0.000000 m +8.000006 0.000000 l +5.199739 0.000000 3.799606 0.000000 2.730047 0.544968 c +1.789237 1.024334 1.024334 1.789238 0.544967 2.730047 c +0.000000 3.799606 0.000000 5.199738 0.000000 8.000000 c +0.000000 17.000000 l +0.000000 19.800262 0.000000 21.200394 0.544967 22.269953 c +1.024334 23.210762 1.789237 23.975666 2.730047 24.455032 c +3.799606 25.000000 5.199738 25.000000 8.000000 25.000000 c +10.011778 25.000000 l +10.745548 25.000000 11.112434 25.000000 11.457696 24.917110 c +11.763804 24.843620 12.056438 24.722406 12.324855 24.557922 c +12.627604 24.372398 12.887030 24.112972 13.405881 23.594124 c +13.405887 23.594116 l +18.594124 18.405888 l +18.594152 18.405859 l +18.594193 18.405819 l +19.113003 17.887009 19.372419 17.627590 19.557934 17.324856 c +19.722422 17.056438 19.843634 16.763803 19.917126 16.457695 c +20.000015 16.112431 20.000015 15.745545 20.000015 15.011772 c +20.000015 8.000000 l +20.000015 5.199738 20.000015 3.799606 19.455048 2.730047 c +18.975681 1.789238 18.210777 1.024334 17.269968 0.544968 c +16.200409 0.000000 14.800278 0.000000 12.000015 0.000000 c +h +17.292892 15.000001 m +11.000000 15.000001 l +10.447715 15.000001 10.000000 15.447717 10.000000 16.000000 c +10.000000 22.292892 l +10.000000 22.738346 10.538570 22.961430 10.853554 22.646446 c +17.646446 15.853554 l +17.961430 15.538572 17.738346 15.000001 17.292892 15.000001 c +h +f* +n +Q + +endstream +endobj + +3 0 obj + 1491 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 30.000000 30.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000001581 00000 n +0000001604 00000 n +0000001777 00000 n +0000001851 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1910 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Contents.json index 4171612590..ac6c32870f 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Union.pdf", + "filename" : "Type=Default.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Type=Default.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Type=Default.pdf new file mode 100644 index 0000000000..559e5ccc8d --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Type=Default.pdf @@ -0,0 +1,124 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 0.000000 2.000000 cm +0.000000 0.000000 0.000000 scn +0.435974 23.815962 m +0.000000 22.960316 0.000000 21.840210 0.000000 19.600000 c +0.000000 13.400001 l +0.000000 11.159790 0.000000 10.039685 0.435974 9.184038 c +0.819467 8.431389 1.431390 7.819468 2.184038 7.435974 c +2.659054 7.193941 3.215575 7.086273 4.000000 7.038378 c +4.000000 12.400000 l +4.000000 15.760315 4.000000 17.440472 4.653961 18.723944 c +5.229201 19.852917 6.147084 20.770798 7.276057 21.346039 c +8.559527 22.000000 10.239685 22.000000 13.600000 22.000000 c +23.961622 22.000000 l +23.913727 22.784424 23.806059 23.340946 23.564026 23.815962 c +23.180532 24.568611 22.568611 25.180532 21.815962 25.564026 c +20.960316 26.000000 19.840210 26.000000 17.600000 26.000000 c +6.400001 26.000000 l +4.159790 26.000000 3.039685 26.000000 2.184038 25.564026 c +1.431390 25.180532 0.819467 24.568611 0.435974 23.815962 c +h +6.000000 13.600000 m +6.000000 15.840210 6.000000 16.960316 6.435974 17.815962 c +6.819468 18.568611 7.431390 19.180532 8.184038 19.564026 c +9.039685 20.000000 10.159790 20.000000 12.400001 20.000000 c +23.600000 20.000000 l +25.840210 20.000000 26.960316 20.000000 27.815962 19.564026 c +28.568611 19.180532 29.180532 18.568611 29.564026 17.815962 c +30.000000 16.960316 30.000000 15.840210 30.000000 13.600000 c +30.000000 6.400000 l +30.000000 4.159790 30.000000 3.039684 29.564026 2.184038 c +29.180532 1.431389 28.568611 0.819468 27.815962 0.435974 c +26.960316 0.000000 25.840210 0.000000 23.600000 0.000000 c +12.400000 0.000000 l +10.159790 0.000000 9.039685 0.000000 8.184038 0.435974 c +7.431390 0.819468 6.819468 1.431389 6.435974 2.184038 c +6.000000 3.039684 6.000000 4.159790 6.000000 6.400000 c +6.000000 13.600000 l +h +13.999928 11.500000 m +15.380639 11.500000 16.499928 12.619288 16.499928 14.000000 c +16.499928 15.380712 15.380639 16.500000 13.999928 16.500000 c +12.619216 16.500000 11.499928 15.380712 11.499928 14.000000 c +11.499928 12.619288 12.619216 11.500000 13.999928 11.500000 c +h +27.999968 5.878641 m +27.999968 6.276464 27.841932 6.657997 27.560627 6.939301 c +23.560589 10.939340 l +22.974800 11.525126 22.025053 11.525126 21.439266 10.939340 c +16.749928 6.250000 l +15.060588 7.939339 l +14.474801 8.525127 13.525055 8.525127 12.939268 7.939341 c +8.665479 3.665550 l +8.371915 3.371986 8.275769 2.909405 8.564352 2.610941 c +8.722180 2.447710 8.903227 2.314165 9.091988 2.217987 c +9.519811 2.000000 10.079864 2.000000 11.199968 2.000000 c +24.799969 2.000000 l +25.920073 2.000000 26.480125 2.000000 26.907949 2.217987 c +27.284273 2.409733 27.590235 2.715694 27.781981 3.092018 c +27.999968 3.519842 27.999968 4.079895 27.999968 5.200001 c +27.999968 5.878641 l +h +f* +n +Q + +endstream +endobj + +3 0 obj + 2713 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 30.000000 30.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002803 00000 n +0000002826 00000 n +0000002999 00000 n +0000003073 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +3132 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Union.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Union.pdf deleted file mode 100644 index f4bcf9be8b..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Gallery.imageset/Union.pdf +++ /dev/null @@ -1,123 +0,0 @@ -%PDF-1.7 - -1 0 obj - << >> -endobj - -2 0 obj - << /Length 3 0 R >> -stream -/DeviceRGB CS -/DeviceRGB cs -q -1.000000 0.000000 -0.000000 1.000000 0.000000 -0.000050 cm -1.000000 1.000000 1.000000 scn -11.100000 28.000050 m -11.035790 28.000050 l -9.410112 28.000065 8.098883 28.000076 7.037065 27.913322 c -5.943791 27.823997 4.983509 27.635279 4.095072 27.182598 c -2.683856 26.463547 1.536502 25.316193 0.817452 23.904978 c -0.364771 23.016541 0.176052 22.056259 0.086728 20.962984 c --0.000027 19.901167 -0.000015 18.589939 0.000000 16.964260 c -0.000000 16.900049 l -0.000000 11.100050 l -0.000000 11.035839 l --0.000015 9.410160 -0.000027 8.098932 0.086728 7.037113 c -0.176052 5.943840 0.364771 4.983559 0.817452 4.095121 c -1.536502 2.683905 2.683856 1.536551 4.095072 0.817501 c -4.983509 0.364819 5.943791 0.176100 7.037065 0.086777 c -8.098874 0.000023 9.410091 0.000034 11.035753 0.000050 c -11.100000 0.000050 l -16.900000 0.000050 l -16.964247 0.000050 l -18.589909 0.000034 19.901125 0.000023 20.962936 0.086777 c -22.056210 0.176100 23.016491 0.364819 23.904928 0.817501 c -25.316145 1.536551 26.463499 2.683905 27.182549 4.095121 c -27.635231 4.983559 27.823950 5.943840 27.913273 7.037113 c -28.000027 8.098925 28.000015 9.410141 28.000000 11.035803 c -28.000000 11.100050 l -28.000000 16.900049 l -28.000000 16.964296 l -28.000015 18.589958 28.000027 19.901175 27.913273 20.962984 c -27.823950 22.056259 27.635231 23.016541 27.182549 23.904978 c -26.463499 25.316193 25.316145 26.463547 23.904928 27.182598 c -23.016491 27.635279 22.056210 27.823997 20.962936 27.913322 c -19.901117 28.000076 18.589890 28.000065 16.964211 28.000050 c -16.900000 28.000050 l -11.100000 28.000050 l -h -3.093551 7.093601 m -3.170904 6.300156 3.303499 5.824047 3.490471 5.457092 c -3.921902 4.610363 4.610314 3.921951 5.457044 3.490520 c -5.852077 3.289240 6.373610 3.150980 7.281361 3.076813 c -8.206622 3.001217 9.395091 3.000050 11.100000 3.000050 c -16.900000 3.000050 l -18.604908 3.000050 19.793379 3.001217 20.718641 3.076813 c -21.626392 3.150980 22.147924 3.289240 22.542957 3.490520 c -23.389687 3.921951 24.078098 4.610363 24.509529 5.457092 c -24.710810 5.852125 24.849070 6.373657 24.923237 7.281408 c -24.963232 7.770926 24.982393 8.334116 24.991571 9.008478 c -19.060661 14.939390 l -18.474873 15.525175 17.525127 15.525177 16.939339 14.939390 c -11.000000 9.000050 l -9.060661 10.939388 l -8.474873 11.525177 7.525128 11.525177 6.939342 10.939392 c -3.093551 7.093601 l -h -9.000000 16.000050 m -10.656855 16.000050 12.000000 17.343195 12.000000 19.000050 c -12.000000 20.656902 10.656855 22.000050 9.000000 22.000050 c -7.343146 22.000050 6.000001 20.656902 6.000001 19.000050 c -6.000001 17.343195 7.343146 16.000050 9.000000 16.000050 c -h -f* -n -Q - -endstream -endobj - -3 0 obj - 2627 -endobj - -4 0 obj - << /Annots [] - /Type /Page - /MediaBox [ 0.000000 0.000000 28.000000 28.000000 ] - /Resources 1 0 R - /Contents 2 0 R - /Parent 5 0 R - >> -endobj - -5 0 obj - << /Kids [ 4 0 R ] - /Count 1 - /Type /Pages - >> -endobj - -6 0 obj - << /Pages 5 0 R - /Type /Catalog - >> -endobj - -xref -0 7 -0000000000 65535 f -0000000010 00000 n -0000000034 00000 n -0000002717 00000 n -0000002740 00000 n -0000002913 00000 n -0000002987 00000 n -trailer -<< /ID [ (some) (id) ] - /Root 6 0 R - /Size 7 ->> -startxref -3046 -%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Contents.json index 730276db9c..2342459940 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Subtract-2.pdf", + "filename" : "Type=Default-3.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Subtract-2.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Subtract-2.pdf deleted file mode 100644 index a72085cb96..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Subtract-2.pdf +++ /dev/null @@ -1,77 +0,0 @@ -%PDF-1.7 - -1 0 obj - << >> -endobj - -2 0 obj - << /Length 3 0 R >> -stream -/DeviceRGB CS -/DeviceRGB cs -q -1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm -1.000000 1.000000 1.000000 scn -12.000000 0.000000 m -15.627419 0.000000 24.000000 11.372581 24.000000 20.000000 c -24.000000 26.627417 18.627419 32.000000 12.000000 32.000000 c -5.372583 32.000000 0.000000 26.627417 0.000000 20.000000 c -0.000000 11.372581 8.372583 0.000000 12.000000 0.000000 c -h -12.000000 15.000000 m -14.761425 15.000000 17.000000 17.238577 17.000000 20.000000 c -17.000000 22.761423 14.761425 25.000000 12.000000 25.000000 c -9.238577 25.000000 7.000000 22.761423 7.000000 20.000000 c -7.000000 17.238577 9.238577 15.000000 12.000000 15.000000 c -h -f* -n -Q - -endstream -endobj - -3 0 obj - 656 -endobj - -4 0 obj - << /Annots [] - /Type /Page - /MediaBox [ 0.000000 0.000000 24.000000 32.000000 ] - /Resources 1 0 R - /Contents 2 0 R - /Parent 5 0 R - >> -endobj - -5 0 obj - << /Kids [ 4 0 R ] - /Count 1 - /Type /Pages - >> -endobj - -6 0 obj - << /Pages 5 0 R - /Type /Catalog - >> -endobj - -xref -0 7 -0000000000 65535 f -0000000010 00000 n -0000000034 00000 n -0000000746 00000 n -0000000768 00000 n -0000000941 00000 n -0000001015 00000 n -trailer -<< /ID [ (some) (id) ] - /Root 6 0 R - /Size 7 ->> -startxref -1074 -%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Type=Default-3.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Type=Default-3.pdf new file mode 100644 index 0000000000..a328b1f257 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Location.imageset/Type=Default-3.pdf @@ -0,0 +1,77 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 5.000000 1.333336 cm +0.000000 0.000000 0.000000 scn +10.000000 -0.000002 m +13.022847 -0.000002 20.000000 9.477150 20.000000 16.666664 c +20.000000 22.189512 15.522848 26.666664 10.000000 26.666664 c +4.477152 26.666664 0.000000 22.189512 0.000000 16.666664 c +0.000000 9.477150 6.977153 -0.000002 10.000000 -0.000002 c +h +10.000000 12.666664 m +12.209139 12.666664 14.000000 14.457525 14.000000 16.666664 c +14.000000 18.875803 12.209139 20.666664 10.000000 20.666664 c +7.790861 20.666664 6.000000 18.875803 6.000000 16.666664 c +6.000000 14.457525 7.790861 12.666664 10.000000 12.666664 c +h +f* +n +Q + +endstream +endobj + +3 0 obj + 658 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 30.000000 30.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000000748 00000 n +0000000770 00000 n +0000000943 00000 n +0000001017 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1076 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Contents.json index 1fab2f6057..85d93ec670 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Union.png", + "filename" : "Icon-4.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Icon-4.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Icon-4.pdf new file mode 100644 index 0000000000..6f32987e94 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Icon-4.pdf @@ -0,0 +1,157 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 4.500000 4.499939 cm +0.635294 0.635294 0.635294 scn +8.325001 21.000061 m +8.276846 21.000061 l +7.057586 21.000072 6.074163 21.000082 5.277799 20.935015 c +4.457843 20.868023 3.737631 20.726484 3.071304 20.386972 c +2.012892 19.847685 1.152376 18.987169 0.613089 17.928757 c +0.273578 17.262430 0.132038 16.542217 0.065045 15.722262 c +-0.000020 14.925898 -0.000011 13.942474 0.000000 12.723215 c +0.000000 12.675060 l +0.000000 8.325061 l +0.000000 8.276906 l +-0.000011 7.057647 -0.000020 6.074224 0.065045 5.277859 c +0.132038 4.457905 0.273578 3.737692 0.613089 3.071363 c +1.152376 2.012953 2.012892 1.152437 3.071304 0.613150 c +3.737631 0.273638 4.457843 0.132099 5.277799 0.065105 c +6.074152 0.000040 7.057559 0.000050 8.276797 0.000061 c +8.276814 0.000061 l +8.325001 0.000061 l +12.675000 0.000061 l +12.723186 0.000061 l +12.723204 0.000061 l +13.942441 0.000050 14.925848 0.000040 15.722202 0.065105 c +16.542156 0.132099 17.262369 0.273638 17.928698 0.613150 c +18.987108 1.152437 19.847624 2.012953 20.386911 3.071363 c +20.726423 3.737692 20.867962 4.457905 20.934956 5.277860 c +21.000021 6.074213 21.000011 7.057621 21.000000 8.276858 c +21.000000 8.276875 l +21.000000 8.325062 l +21.000000 12.675060 l +21.000000 12.723248 l +21.000000 12.723265 l +21.000011 13.942501 21.000021 14.925909 20.934956 15.722262 c +20.867962 16.542217 20.726423 17.262430 20.386911 17.928757 c +19.847624 18.987169 18.987108 19.847685 17.928698 20.386972 c +17.262369 20.726484 16.542156 20.868023 15.722201 20.935015 c +14.925837 21.000082 13.942413 21.000072 12.723154 21.000061 c +12.674999 21.000061 l +8.325001 21.000061 l +h +9.000000 16.800060 m +9.000000 17.220100 9.000000 17.430120 9.081745 17.590553 c +9.153650 17.731674 9.268385 17.846411 9.409508 17.918316 c +9.569941 18.000061 9.779961 18.000061 10.200000 18.000061 c +10.799999 18.000061 l +11.220039 18.000061 11.430059 18.000061 11.590492 17.918316 c +11.731615 17.846411 11.846350 17.731674 11.918255 17.590553 c +12.000000 17.430120 12.000000 17.220100 12.000000 16.800060 c +12.000000 4.200062 l +12.000000 3.780022 12.000000 3.570002 11.918255 3.409569 c +11.846350 3.268448 11.731615 3.153711 11.590492 3.081806 c +11.430059 3.000061 11.220039 3.000061 10.800000 3.000061 c +10.200001 3.000061 l +9.779961 3.000061 9.569941 3.000061 9.409508 3.081806 c +9.268385 3.153711 9.153650 3.268448 9.081745 3.409569 c +9.000000 3.570002 9.000000 3.780022 9.000000 4.200062 c +9.000000 16.800060 l +h +3.750000 12.300061 m +3.750000 12.720100 3.750000 12.930120 3.831745 13.090553 c +3.903650 13.231675 4.018386 13.346411 4.159507 13.418316 c +4.319942 13.500061 4.529961 13.500061 4.950000 13.500061 c +5.550001 13.500061 l +5.970040 13.500061 6.180060 13.500061 6.340494 13.418316 c +6.481615 13.346411 6.596350 13.231675 6.668255 13.090553 c +6.750000 12.930120 6.750000 12.720100 6.750000 12.300060 c +6.750000 4.200062 l +6.750000 3.780022 6.750000 3.570002 6.668255 3.409569 c +6.596350 3.268448 6.481615 3.153711 6.340494 3.081806 c +6.180060 3.000061 5.970040 3.000061 5.550001 3.000061 c +4.950000 3.000061 l +4.529961 3.000061 4.319942 3.000061 4.159507 3.081806 c +4.018386 3.153711 3.903650 3.268448 3.831745 3.409569 c +3.750000 3.570002 3.750000 3.780022 3.750000 4.200062 c +3.750000 12.300061 l +h +14.331745 8.590554 m +14.250000 8.430120 14.250000 8.220100 14.250000 7.800061 c +14.250000 4.200062 l +14.250000 3.780022 14.250000 3.570002 14.331745 3.409569 c +14.403650 3.268448 14.518386 3.153711 14.659507 3.081806 c +14.819941 3.000061 15.029961 3.000061 15.450000 3.000061 c +16.049999 3.000061 l +16.470039 3.000061 16.680059 3.000061 16.840492 3.081806 c +16.981613 3.153711 17.096350 3.268448 17.168255 3.409569 c +17.250000 3.570002 17.250000 3.780022 17.250000 4.200062 c +17.250000 7.800061 l +17.250000 8.220100 17.250000 8.430120 17.168255 8.590554 c +17.096350 8.731675 16.981613 8.846411 16.840492 8.918316 c +16.680059 9.000061 16.470039 9.000061 16.049999 9.000061 c +15.450000 9.000061 l +15.029961 9.000061 14.819941 9.000061 14.659507 8.918316 c +14.518386 8.846411 14.403650 8.731675 14.331745 8.590554 c +h +f* +n +Q + +endstream +endobj + +3 0 obj + 4096 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 30.000000 30.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000004186 00000 n +0000004209 00000 n +0000004382 00000 n +0000004456 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +4515 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Union.png b/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Union.png deleted file mode 100644 index 728dd1f6ac..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Attach Menu/Poll.imageset/Union.png and /dev/null differ diff --git a/submodules/TelegramUI/Sources/AttachmentFileController.swift b/submodules/TelegramUI/Sources/AttachmentFileController.swift index d5ce069db7..37347b0261 100644 --- a/submodules/TelegramUI/Sources/AttachmentFileController.swift +++ b/submodules/TelegramUI/Sources/AttachmentFileController.swift @@ -12,6 +12,7 @@ import PresentationDataUtils import AccountContext import ItemListPeerActionItem import AttachmentUI +import TelegramStringFormatting private final class AttachmentFileControllerArguments { let openGallery: () -> Void @@ -28,17 +29,28 @@ private enum AttachmentFileSection: Int32 { case recent } +private func areMessagesEqual(_ lhsMessage: Message, _ rhsMessage: Message) -> Bool { + if lhsMessage.stableVersion != rhsMessage.stableVersion { + return false + } + if lhsMessage.id != rhsMessage.id || lhsMessage.flags != rhsMessage.flags { + return false + } + return true +} + private enum AttachmentFileEntry: ItemListNodeEntry { case selectFromGallery(PresentationTheme, String) case selectFromFiles(PresentationTheme, String) case recentHeader(PresentationTheme, String) + case file(Int32, PresentationTheme, Message) var section: ItemListSectionId { switch self { case .selectFromGallery, .selectFromFiles: return AttachmentFileSection.select.rawValue - case .recentHeader: + case .recentHeader, .file: return AttachmentFileSection.recent.rawValue } } @@ -51,6 +63,8 @@ private enum AttachmentFileEntry: ItemListNodeEntry { return 1 case .recentHeader: return 2 + case let .file(index, _, _): + return 3 + index } } @@ -74,6 +88,12 @@ private enum AttachmentFileEntry: ItemListNodeEntry { } else { return false } + case let .file(lhsIndex, lhsTheme, lhsMessage): + if case let .file(rhsIndex, rhsTheme, rhsMessage) = rhs, lhsIndex != rhsIndex, lhsTheme === rhsTheme, areMessagesEqual(lhsMessage, rhsMessage) { + return true + } else { + return false + } } } @@ -94,17 +114,35 @@ private enum AttachmentFileEntry: ItemListNodeEntry { }) case let .recentHeader(_, text): return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section) + case let .file(_, _, message): + let file = message.media.first(where: { $0 is TelegramMediaFile }) as? TelegramMediaFile + let label: String + if let file = file { + label = dataSizeString(file.size ?? 0, formatting: DataSizeStringFormatting(strings: presentationData.strings, decimalSeparator: ".")) + } else { + label = "" + } + return ItemListDisclosureItem(presentationData: presentationData, title: file?.fileName ?? "", label: label, sectionId: self.section, style: .blocks, action: { + + }) } } } -private func attachmentFileControllerEntries(presentationData: PresentationData) -> [AttachmentFileEntry] { +private func attachmentFileControllerEntries(presentationData: PresentationData, recentDocuments: [Message]?) -> [AttachmentFileEntry] { var entries: [AttachmentFileEntry] = [] entries.append(.selectFromGallery(presentationData.theme, presentationData.strings.Attachment_SelectFromGallery)) entries.append(.selectFromFiles(presentationData.theme, presentationData.strings.Attachment_SelectFromFiles)) -// entries.append(.recentHeader(presentationData.theme, "RECENTLY SENT FILES".uppercased())) + if let _ = recentDocuments { +// entries.append(.recentHeader(presentationData.theme, "RECENTLY SENT FILES".uppercased())) +// var i: Int32 = 0 +// for file in recentDocuments { +// entries.append(.file(i, presentationData.theme, file)) +// i += 1 +// } + } return entries } @@ -122,14 +160,21 @@ public func attachmentFileController(context: AccountContext, presentGallery: @e }, openFiles: { presentFiles() }) + + let recentDocuments: Signal<[Message]?, NoError> = .single(nil) + |> then( + context.engine.messages.searchMessages(location: .recentDocuments, query: "", state: nil) + |> map { result -> [Message]? in + return result.0.messages + } + ) - let signal = context.sharedContext.presentationData - |> deliverOnMainQueue - |> map { presentationData -> (ItemListControllerState, (ItemListNodeState, Any)) in + let signal = combineLatest(queue: Queue.mainQueue(), context.sharedContext.presentationData, recentDocuments) + |> map { presentationData, recentDocuments -> (ItemListControllerState, (ItemListNodeState, Any)) in let controllerState = ItemListControllerState(presentationData: ItemListPresentationData(presentationData), title: .text(presentationData.strings.Attachment_File), leftNavigationButton: ItemListNavigationButton(content: .text(presentationData.strings.Common_Cancel), style: .regular, enabled: true, action: { dismissImpl?() }), rightNavigationButton: nil, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back), animateChanges: false) - let listState = ItemListNodeState(presentationData: ItemListPresentationData(presentationData), entries: attachmentFileControllerEntries(presentationData: presentationData), style: .blocks, emptyStateItem: nil, animateChanges: false) + let listState = ItemListNodeState(presentationData: ItemListPresentationData(presentationData), entries: attachmentFileControllerEntries(presentationData: presentationData, recentDocuments: recentDocuments), style: .blocks, emptyStateItem: nil, animateChanges: false) return (controllerState, (listState, arguments)) } |> afterDisposed { diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 375de93813..b7419b80eb 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -10258,7 +10258,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G strongSelf.openResolved(result: ResolvedUrl.proxy(host: host, port: port, username: username, password: password, secret: secret), sourceMessageId: nil) } } - }, presentSchedulePicker: { [weak self] done in + }, presentSchedulePicker: { [weak self] _, done in if let strongSelf = self { strongSelf.presentScheduleTimePicker(style: .media, completion: { [weak self] time in if let strongSelf = self { @@ -10664,7 +10664,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G strongSelf.openResolved(result: ResolvedUrl.proxy(host: host, port: port, username: username, password: password, secret: secret), sourceMessageId: nil) } } - }, presentSchedulePicker: { [weak self] done in + }, presentSchedulePicker: { [weak self] _, done in if let strongSelf = self { strongSelf.presentScheduleTimePicker(style: .media, completion: { [weak self] time in if let strongSelf = self { @@ -10730,7 +10730,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G }), TextAlertAction(type: .genericAction, title: strongSelf.presentationData.strings.MediaPicker_ConvertToJpeg, action: { completion(true) })], actionLayout: .vertical), in: .window(.root)) - }, presentSchedulePicker: { [weak self] done in + }, presentSchedulePicker: { [weak self] _, done in if let strongSelf = self { strongSelf.presentScheduleTimePicker(style: .media, completion: { [weak self] time in if let strongSelf = self { @@ -11016,9 +11016,9 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: strongSelf.presentationData), title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root)) - }, presentSchedulePicker: { [weak self] done in + }, presentSchedulePicker: { [weak self] media, done in if let strongSelf = self { - strongSelf.presentScheduleTimePicker(style: .media, completion: { [weak self] time in + strongSelf.presentScheduleTimePicker(style: media ? .media : .default, completion: { [weak self] time in if let strongSelf = self { done(time) if strongSelf.presentationInterfaceState.subject != .scheduledMessages && time != scheduleWhenOnlineTimestamp { diff --git a/submodules/TelegramUI/Sources/LegacyCamera.swift b/submodules/TelegramUI/Sources/LegacyCamera.swift index d0d8f6256c..16913d426a 100644 --- a/submodules/TelegramUI/Sources/LegacyCamera.swift +++ b/submodules/TelegramUI/Sources/LegacyCamera.swift @@ -10,7 +10,7 @@ import ShareController import LegacyUI import LegacyMediaPickerUI -func presentedLegacyCamera(context: AccountContext, peer: Peer, chatLocation: ChatLocation, cameraView: TGAttachmentCameraView?, menuController: TGMenuSheetController?, parentController: ViewController, editingMedia: Bool, saveCapturedPhotos: Bool, mediaGrouping: Bool, initialCaption: String, hasSchedule: Bool, photoOnly: Bool, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32) -> Void, recognizedQRCode: @escaping (String) -> Void = { _ in }, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> TGPhotoPaintStickersScreen?, getCaptionPanelView: @escaping () -> TGCaptionPanelView?) { +func presentedLegacyCamera(context: AccountContext, peer: Peer, chatLocation: ChatLocation, cameraView: TGAttachmentCameraView?, menuController: TGMenuSheetController?, parentController: ViewController, editingMedia: Bool, saveCapturedPhotos: Bool, mediaGrouping: Bool, initialCaption: String, hasSchedule: Bool, photoOnly: Bool, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32) -> Void, recognizedQRCode: @escaping (String) -> Void = { _ in }, presentSchedulePicker: @escaping (Bool, @escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> TGPhotoPaintStickersScreen?, getCaptionPanelView: @escaping () -> TGCaptionPanelView?) { let presentationData = context.sharedContext.currentPresentationData.with { $0 } let legacyController = LegacyController(presentation: .custom, theme: presentationData.theme) legacyController.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .portrait, compactSize: .portrait) @@ -28,10 +28,10 @@ func presentedLegacyCamera(context: AccountContext, peer: Peer, chatLocation: Ch } controller.inhibitMultipleCapture = editingMedia - controller.presentScheduleController = { done in - presentSchedulePicker { time in + controller.presentScheduleController = { _, done in + presentSchedulePicker(true, { time in done?(time) - } + }) } controller.presentTimerController = { done in presentTimerPicker { time in