mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various fixes
This commit is contained in:
parent
3512968e0e
commit
d9e35e7882
@ -191,6 +191,14 @@ class ChatListSearchEmptyFooterItemNode: ListViewItemNode {
|
|||||||
self.contentNode.frame = contentFrame
|
self.contentNode.frame = contentFrame
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
|
||||||
|
let result = super.hitTest(point, with: event)
|
||||||
|
if let contentResult = self.contentNode.view.hitTest(self.view.convert(point, to: self.contentNode.view), with: event), contentResult === self.searchAllMessagesButton.view {
|
||||||
|
return contentResult
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
func asyncLayout() -> (_ item: ChatListSearchEmptyFooterItem, _ params: ListViewItemLayoutParams) -> (ListViewItemNodeLayout, () -> Void) {
|
func asyncLayout() -> (_ item: ChatListSearchEmptyFooterItem, _ params: ListViewItemLayoutParams) -> (ListViewItemNodeLayout, () -> Void) {
|
||||||
let makeTitleNodeLayout = TextNode.asyncLayout(self.titleNode)
|
let makeTitleNodeLayout = TextNode.asyncLayout(self.titleNode)
|
||||||
let makeTextNodeLayout = TextNode.asyncLayout(self.textNode)
|
let makeTextNodeLayout = TextNode.asyncLayout(self.textNode)
|
||||||
|
@ -1225,7 +1225,9 @@ public final class ReactionButtonAsyncNode: ContextControllerSourceView {
|
|||||||
|
|
||||||
let tintColor: UIColor
|
let tintColor: UIColor
|
||||||
if layout.backgroundLayout.colors.isSelected {
|
if layout.backgroundLayout.colors.isSelected {
|
||||||
if layout.spec.component.colors.selectedForeground != 0 {
|
if layout.spec.component.colors.selectedIconTintColor != 0 {
|
||||||
|
tintColor = UIColor(argb: layout.spec.component.colors.selectedIconTintColor)
|
||||||
|
} else if layout.spec.component.colors.selectedForeground != 0 {
|
||||||
tintColor = UIColor(argb: layout.spec.component.colors.selectedForeground)
|
tintColor = UIColor(argb: layout.spec.component.colors.selectedForeground)
|
||||||
} else {
|
} else {
|
||||||
tintColor = .white
|
tintColor = .white
|
||||||
@ -1352,6 +1354,7 @@ public final class ReactionButtonComponent: Equatable {
|
|||||||
public var selectedBackground: UInt32
|
public var selectedBackground: UInt32
|
||||||
public var deselectedForeground: UInt32
|
public var deselectedForeground: UInt32
|
||||||
public var selectedForeground: UInt32
|
public var selectedForeground: UInt32
|
||||||
|
public var selectedIconTintColor: UInt32
|
||||||
public var deselectedStarsBackground: UInt32
|
public var deselectedStarsBackground: UInt32
|
||||||
public var selectedStarsBackground: UInt32
|
public var selectedStarsBackground: UInt32
|
||||||
public var deselectedStarsForeground: UInt32
|
public var deselectedStarsForeground: UInt32
|
||||||
@ -1367,6 +1370,7 @@ public final class ReactionButtonComponent: Equatable {
|
|||||||
selectedBackground: UInt32,
|
selectedBackground: UInt32,
|
||||||
deselectedForeground: UInt32,
|
deselectedForeground: UInt32,
|
||||||
selectedForeground: UInt32,
|
selectedForeground: UInt32,
|
||||||
|
selectedIconTintColor: UInt32,
|
||||||
deselectedStarsBackground: UInt32,
|
deselectedStarsBackground: UInt32,
|
||||||
selectedStarsBackground: UInt32,
|
selectedStarsBackground: UInt32,
|
||||||
deselectedStarsForeground: UInt32,
|
deselectedStarsForeground: UInt32,
|
||||||
@ -1381,6 +1385,7 @@ public final class ReactionButtonComponent: Equatable {
|
|||||||
self.selectedBackground = selectedBackground
|
self.selectedBackground = selectedBackground
|
||||||
self.deselectedForeground = deselectedForeground
|
self.deselectedForeground = deselectedForeground
|
||||||
self.selectedForeground = selectedForeground
|
self.selectedForeground = selectedForeground
|
||||||
|
self.selectedIconTintColor = selectedIconTintColor
|
||||||
self.deselectedStarsBackground = deselectedStarsBackground
|
self.deselectedStarsBackground = deselectedStarsBackground
|
||||||
self.selectedStarsBackground = selectedStarsBackground
|
self.selectedStarsBackground = selectedStarsBackground
|
||||||
self.deselectedStarsForeground = deselectedStarsForeground
|
self.deselectedStarsForeground = deselectedStarsForeground
|
||||||
|
@ -2490,6 +2490,7 @@ public final class ContextController: ViewController, StandalonePresentableContr
|
|||||||
public var immediateItemsTransitionAnimation = false
|
public var immediateItemsTransitionAnimation = false
|
||||||
let workaroundUseLegacyImplementation: Bool
|
let workaroundUseLegacyImplementation: Bool
|
||||||
let disableScreenshots: Bool
|
let disableScreenshots: Bool
|
||||||
|
let hideReactionPanelTail: Bool
|
||||||
|
|
||||||
public enum HandledTouchEvent {
|
public enum HandledTouchEvent {
|
||||||
case ignore
|
case ignore
|
||||||
@ -2505,7 +2506,7 @@ public final class ContextController: ViewController, StandalonePresentableContr
|
|||||||
|
|
||||||
public var getOverlayViews: (() -> [UIView])?
|
public var getOverlayViews: (() -> [UIView])?
|
||||||
|
|
||||||
convenience public init(context: AccountContext? = nil, presentationData: PresentationData, source: ContextContentSource, items: Signal<ContextController.Items, NoError>, recognizer: TapLongTapOrDoubleTapGestureRecognizer? = nil, gesture: ContextGesture? = nil, workaroundUseLegacyImplementation: Bool = false, disableScreenshots: Bool = false) {
|
convenience public init(context: AccountContext? = nil, presentationData: PresentationData, source: ContextContentSource, items: Signal<ContextController.Items, NoError>, recognizer: TapLongTapOrDoubleTapGestureRecognizer? = nil, gesture: ContextGesture? = nil, workaroundUseLegacyImplementation: Bool = false, disableScreenshots: Bool = false, hideReactionPanelTail: Bool = false) {
|
||||||
self.init(
|
self.init(
|
||||||
context: context,
|
context: context,
|
||||||
presentationData: presentationData,
|
presentationData: presentationData,
|
||||||
@ -2521,7 +2522,8 @@ public final class ContextController: ViewController, StandalonePresentableContr
|
|||||||
recognizer: recognizer,
|
recognizer: recognizer,
|
||||||
gesture: gesture,
|
gesture: gesture,
|
||||||
workaroundUseLegacyImplementation: workaroundUseLegacyImplementation,
|
workaroundUseLegacyImplementation: workaroundUseLegacyImplementation,
|
||||||
disableScreenshots: disableScreenshots
|
disableScreenshots: disableScreenshots,
|
||||||
|
hideReactionPanelTail: hideReactionPanelTail
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2532,7 +2534,8 @@ public final class ContextController: ViewController, StandalonePresentableContr
|
|||||||
recognizer: TapLongTapOrDoubleTapGestureRecognizer? = nil,
|
recognizer: TapLongTapOrDoubleTapGestureRecognizer? = nil,
|
||||||
gesture: ContextGesture? = nil,
|
gesture: ContextGesture? = nil,
|
||||||
workaroundUseLegacyImplementation: Bool = false,
|
workaroundUseLegacyImplementation: Bool = false,
|
||||||
disableScreenshots: Bool = false
|
disableScreenshots: Bool = false,
|
||||||
|
hideReactionPanelTail: Bool = false
|
||||||
) {
|
) {
|
||||||
self.context = context
|
self.context = context
|
||||||
self.presentationData = presentationData
|
self.presentationData = presentationData
|
||||||
@ -2541,6 +2544,7 @@ public final class ContextController: ViewController, StandalonePresentableContr
|
|||||||
self.gesture = gesture
|
self.gesture = gesture
|
||||||
self.workaroundUseLegacyImplementation = workaroundUseLegacyImplementation
|
self.workaroundUseLegacyImplementation = workaroundUseLegacyImplementation
|
||||||
self.disableScreenshots = disableScreenshots
|
self.disableScreenshots = disableScreenshots
|
||||||
|
self.hideReactionPanelTail = hideReactionPanelTail
|
||||||
|
|
||||||
super.init(navigationBarPresentationData: nil)
|
super.init(navigationBarPresentationData: nil)
|
||||||
|
|
||||||
|
@ -645,7 +645,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
|||||||
var contentTopInset: CGFloat = topInset
|
var contentTopInset: CGFloat = topInset
|
||||||
var removedReactionContextNode: ReactionContextNode?
|
var removedReactionContextNode: ReactionContextNode?
|
||||||
|
|
||||||
if let reactionItems = self.actionsStackNode.topReactionItems, !reactionItems.reactionItems.isEmpty {
|
if let reactionItems = self.actionsStackNode.topReactionItems, !reactionItems.reactionItems.isEmpty, let controller = self.getController() as? ContextController {
|
||||||
let reactionContextNode: ReactionContextNode
|
let reactionContextNode: ReactionContextNode
|
||||||
if let current = self.reactionContextNode {
|
if let current = self.reactionContextNode {
|
||||||
reactionContextNode = current
|
reactionContextNode = current
|
||||||
@ -681,6 +681,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
|||||||
strongSelf.requestUpdateOverlayWantsToBeBelowKeyboard(transition)
|
strongSelf.requestUpdateOverlayWantsToBeBelowKeyboard(transition)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
reactionContextNode.displayTail = !controller.hideReactionPanelTail
|
||||||
self.reactionContextNode = reactionContextNode
|
self.reactionContextNode = reactionContextNode
|
||||||
self.addSubnode(reactionContextNode)
|
self.addSubnode(reactionContextNode)
|
||||||
|
|
||||||
|
@ -306,18 +306,7 @@ private final class StickerPackContainer: ASDisplayNode {
|
|||||||
guard let self else {
|
guard let self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if let mainPreviewIconView = self.mainPreviewIcon?.view {
|
self.hideMainPreviewIcon()
|
||||||
mainPreviewIconView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak self] _ in
|
|
||||||
guard let self else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if let mainPreviewIconView = self.mainPreviewIcon?.view {
|
|
||||||
self.mainPreviewIcon = nil
|
|
||||||
mainPreviewIconView.removeFromSuperview()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
mainPreviewIconView.layer.animateScale(from: 1.0, to: 0.5, duration: 0.2, removeOnCompletion: false)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.gridNode.interactiveScrollingEnded = { [weak self] in
|
self.gridNode.interactiveScrollingEnded = { [weak self] in
|
||||||
@ -643,6 +632,8 @@ private final class StickerPackContainer: ASDisplayNode {
|
|||||||
return nil
|
return nil
|
||||||
}, present: { [weak self] content, sourceView, sourceRect in
|
}, present: { [weak self] content, sourceView, sourceRect in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
|
strongSelf.hideMainPreviewIcon()
|
||||||
|
|
||||||
let controller = PeekController(presentationData: strongSelf.presentationData, content: content, sourceView: {
|
let controller = PeekController(presentationData: strongSelf.presentationData, content: content, sourceView: {
|
||||||
return (sourceView, sourceRect)
|
return (sourceView, sourceRect)
|
||||||
})
|
})
|
||||||
@ -697,6 +688,21 @@ private final class StickerPackContainer: ASDisplayNode {
|
|||||||
self.gridNode.view.addGestureRecognizer(reorderingGestureRecognizer)
|
self.gridNode.view.addGestureRecognizer(reorderingGestureRecognizer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func hideMainPreviewIcon() {
|
||||||
|
if let mainPreviewIconView = self.mainPreviewIcon?.view {
|
||||||
|
mainPreviewIconView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak self] _ in
|
||||||
|
guard let self else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if let mainPreviewIconView = self.mainPreviewIcon?.view {
|
||||||
|
self.mainPreviewIcon = nil
|
||||||
|
mainPreviewIconView.removeFromSuperview()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
mainPreviewIconView.layer.animateScale(from: 1.0, to: 0.5, duration: 0.2, removeOnCompletion: false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private var reorderFeedback: HapticFeedback?
|
private var reorderFeedback: HapticFeedback?
|
||||||
private var reorderNode: ReorderingItemNode?
|
private var reorderNode: ReorderingItemNode?
|
||||||
private var reorderInitialIndex: Int?
|
private var reorderInitialIndex: Int?
|
||||||
@ -2184,7 +2190,7 @@ private final class StickerPackContainer: ASDisplayNode {
|
|||||||
transition.updateFrame(node: self.backgroundNode, frame: backgroundFrame)
|
transition.updateFrame(node: self.backgroundNode, frame: backgroundFrame)
|
||||||
|
|
||||||
if let previewIconFile = self.previewIconFile, let mainPreviewIcon = self.mainPreviewIcon {
|
if let previewIconFile = self.previewIconFile, let mainPreviewIcon = self.mainPreviewIcon {
|
||||||
let iconFitSize = CGSize(width: 90.0, height: 90.0)
|
let iconFitSize = CGSize(width: 120.0, height: 120.0)
|
||||||
let iconSize = mainPreviewIcon.update(
|
let iconSize = mainPreviewIcon.update(
|
||||||
transition: .immediate,
|
transition: .immediate,
|
||||||
component: AnyComponent(EmojiStatusComponent(
|
component: AnyComponent(EmojiStatusComponent(
|
||||||
|
@ -356,6 +356,7 @@ public class ChatMessageDateAndStatusNode: ASDisplayNode {
|
|||||||
selectedBackground: themeColors.reactionActiveBackground.argb,
|
selectedBackground: themeColors.reactionActiveBackground.argb,
|
||||||
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
||||||
selectedForeground: themeColors.reactionActiveForeground.argb,
|
selectedForeground: themeColors.reactionActiveForeground.argb,
|
||||||
|
selectedIconTintColor: 0,
|
||||||
deselectedStarsBackground: themeColors.reactionStarsInactiveBackground.argb,
|
deselectedStarsBackground: themeColors.reactionStarsInactiveBackground.argb,
|
||||||
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
||||||
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
||||||
@ -374,6 +375,7 @@ public class ChatMessageDateAndStatusNode: ASDisplayNode {
|
|||||||
selectedBackground: themeColors.reactionActiveBackground.argb,
|
selectedBackground: themeColors.reactionActiveBackground.argb,
|
||||||
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
||||||
selectedForeground: themeColors.reactionActiveForeground.argb,
|
selectedForeground: themeColors.reactionActiveForeground.argb,
|
||||||
|
selectedIconTintColor: 0,
|
||||||
deselectedStarsBackground: themeColors.reactionStarsInactiveBackground.argb,
|
deselectedStarsBackground: themeColors.reactionStarsInactiveBackground.argb,
|
||||||
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
||||||
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
||||||
|
@ -78,6 +78,7 @@ public final class MessageReactionButtonsNode: ASDisplayNode {
|
|||||||
selectedBackground: themeColors.reactionActiveBackground.argb,
|
selectedBackground: themeColors.reactionActiveBackground.argb,
|
||||||
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
||||||
selectedForeground: themeColors.reactionActiveForeground.argb,
|
selectedForeground: themeColors.reactionActiveForeground.argb,
|
||||||
|
selectedIconTintColor: 0,
|
||||||
deselectedStarsBackground: themeColors.reactionStarsInactiveBackground.argb,
|
deselectedStarsBackground: themeColors.reactionStarsInactiveBackground.argb,
|
||||||
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
||||||
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
||||||
@ -95,6 +96,7 @@ public final class MessageReactionButtonsNode: ASDisplayNode {
|
|||||||
selectedBackground: themeColors.reactionActiveBackground.argb,
|
selectedBackground: themeColors.reactionActiveBackground.argb,
|
||||||
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
||||||
selectedForeground: themeColors.reactionActiveForeground.argb,
|
selectedForeground: themeColors.reactionActiveForeground.argb,
|
||||||
|
selectedIconTintColor: 0,
|
||||||
deselectedStarsBackground: themeColors.reactionStarsInactiveBackground.argb,
|
deselectedStarsBackground: themeColors.reactionStarsInactiveBackground.argb,
|
||||||
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
||||||
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
||||||
@ -117,6 +119,7 @@ public final class MessageReactionButtonsNode: ASDisplayNode {
|
|||||||
selectedBackground: themeColors.reactionActiveBackground.argb,
|
selectedBackground: themeColors.reactionActiveBackground.argb,
|
||||||
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
deselectedForeground: themeColors.reactionInactiveForeground.argb,
|
||||||
selectedForeground: themeColors.reactionActiveForeground.argb,
|
selectedForeground: themeColors.reactionActiveForeground.argb,
|
||||||
|
selectedIconTintColor: presentationData.theme.theme.overallDarkAppearance ? 0 : presentationData.theme.theme.chat.message.incoming.accentTextColor.argb,
|
||||||
deselectedStarsBackground: selectReactionFillStaticColor(theme: presentationData.theme.theme, wallpaper: presentationData.theme.wallpaper, isStars: true).argb,
|
deselectedStarsBackground: selectReactionFillStaticColor(theme: presentationData.theme.theme, wallpaper: presentationData.theme.wallpaper, isStars: true).argb,
|
||||||
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
selectedStarsBackground: themeColors.reactionStarsActiveBackground.argb,
|
||||||
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
deselectedStarsForeground: themeColors.reactionStarsInactiveForeground.argb,
|
||||||
|
@ -301,8 +301,20 @@ extension ChatControllerImpl {
|
|||||||
|
|
||||||
self.canReadHistory.set(false)
|
self.canReadHistory.set(false)
|
||||||
|
|
||||||
|
var hideReactionPanelTail = false
|
||||||
|
for media in message.media {
|
||||||
|
if let action = media as? TelegramMediaAction {
|
||||||
|
switch action.action {
|
||||||
|
case .phoneCall:
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
hideReactionPanelTail = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let isSecret = self.presentationInterfaceState.copyProtectionEnabled || self.chatLocation.peerId?.namespace == Namespaces.Peer.SecretChat
|
let isSecret = self.presentationInterfaceState.copyProtectionEnabled || self.chatLocation.peerId?.namespace == Namespaces.Peer.SecretChat
|
||||||
let controller = ContextController(presentationData: self.presentationData, source: source, items: actionsSignal, recognizer: recognizer, gesture: gesture, disableScreenshots: isSecret)
|
let controller = ContextController(presentationData: self.presentationData, source: source, items: actionsSignal, recognizer: recognizer, gesture: gesture, disableScreenshots: isSecret, hideReactionPanelTail: hideReactionPanelTail)
|
||||||
controller.dismissed = { [weak self] in
|
controller.dismissed = { [weak self] in
|
||||||
self?.canReadHistory.set(true)
|
self?.canReadHistory.set(true)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"app": "11.6",
|
"app": "11.6.1",
|
||||||
"xcode": "16.0",
|
"xcode": "16.0",
|
||||||
"bazel": "7.3.1:981f82a470bad1349322b6f51c9c6ffa0aa291dab1014fac411543c12e661dff",
|
"bazel": "7.3.1:981f82a470bad1349322b6f51c9c6ffa0aa291dab1014fac411543c12e661dff",
|
||||||
"macos": "15.0"
|
"macos": "15.0"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user