Various fixes

This commit is contained in:
Ilya Laktyushin 2024-03-04 17:52:17 +04:00
parent 79ac0a6c5f
commit be9463e80b
7 changed files with 47 additions and 13 deletions

View File

@ -11336,12 +11336,10 @@ Sorry for the inconvenience.";
"Premium.Business.Location.Text" = "Display the location of your business on your account.";
"Premium.Business.Hours.Title" = "Opening Hours";
"Premium.Business.Hours.Text" = "Show to your customers when you are
open for business.";
"Premium.Business.Hours.Text" = "Show to your customers when you are open for business.";
"Premium.Business.Replies.Title" = "Quick Replies";
"Premium.Business.Replies.Text" = "Set up shortcuts with rich text and media
to respond to messages faster.";
"Premium.Business.Replies.Text" = "Set up shortcuts with rich text and media to respond to messages faster.";
"Premium.Business.Greetings.Title" = "Greeting Messages";
"Premium.Business.Greetings.Text" = "Create greetings that will be automatically sent to new customers.";

View File

@ -3141,10 +3141,14 @@ private final class PremiumIntroScreenComponent: CombinedComponent {
let secondaryTitleText: String
var isAnonymous = false
if var otherPeerName = state.otherPeerName {
if case let .emojiStatus(_, _, file, maybeEmojiPack) = context.component.source, let emojiPack = maybeEmojiPack, case let .result(info, _, _) = emojiPack {
if case let .emojiStatus(peerId, _, file, maybeEmojiPack) = context.component.source, let emojiPack = maybeEmojiPack, case let .result(info, _, _) = emojiPack {
loadedEmojiPack = maybeEmojiPack
highlightableLinks = true
if peerId.isGroupOrChannel, otherPeerName.count > 20 {
otherPeerName = otherPeerName.prefix(20).trimmingCharacters(in: .whitespacesAndNewlines) + "\u{2026}"
}
var packReference: StickerPackReference?
if let file = file {
for attribute in file.attributes {

View File

@ -17,6 +17,12 @@ public final class AudioTranscriptionButtonComponent: Component {
} else {
return false
}
case let .custom(lhsBackgroundColor, lhsForegroundColor):
if case let .custom(rhsBackgroundColor, rhsForegroundColor) = rhs {
return lhsBackgroundColor == rhsBackgroundColor && lhsForegroundColor == rhsForegroundColor
} else {
return false
}
case let .freeform(lhsFreeform, lhsForeground):
if case let .freeform(rhsFreeform, rhsForeground) = rhs, lhsFreeform == rhsFreeform, lhsForeground == rhsForeground {
return true
@ -27,6 +33,7 @@ public final class AudioTranscriptionButtonComponent: Component {
}
case bubble(PresentationThemePartedColors)
case custom(UIColor, UIColor)
case freeform((UIColor, Bool), UIColor)
}
@ -101,6 +108,9 @@ public final class AudioTranscriptionButtonComponent: Component {
case let .bubble(theme):
foregroundColor = theme.bubble.withWallpaper.reactionActiveBackground
backgroundColor = theme.bubble.withWallpaper.reactionInactiveBackground
case let .custom(backgroundColorValue, foregroundColorValue):
foregroundColor = foregroundColorValue
backgroundColor = backgroundColorValue
case let .freeform(colorAndBlur, color):
foregroundColor = color
backgroundColor = .clear

View File

@ -728,7 +728,7 @@ public final class ChatMessageAttachedContentNode: ASDisplayNode {
let contentFileSizeAndApply: (CGSize, ChatMessageInteractiveFileNode.Apply)?
if let contentFileFinalizeLayout {
let (size, apply) = contentFileFinalizeLayout(resultingWidth - insets.left - insets.right)
let (size, apply) = contentFileFinalizeLayout(resultingWidth - insets.left - insets.right - 6.0)
contentFileSizeAndApply = (size, apply)
} else {
contentFileSizeAndApply = nil
@ -846,7 +846,7 @@ public final class ChatMessageAttachedContentNode: ASDisplayNode {
offsetY: actualSize.height
))
actualSize.height += contentFileSize.height
actualSize.height += contentFileSize.height + 9.0
}
case .actionButton:
if let (actionButtonSize, _) = actionButtonSizeAndApply {

View File

@ -1329,10 +1329,16 @@ public final class ChatMessageInteractiveFileNode: ASDisplayNode {
strongSelf.view.addSubview(audioTranscriptionButton)
added = true
}
let buttonTheme: AudioTranscriptionButtonComponent.Theme
if let customTintColor = arguments.customTintColor {
buttonTheme = .custom(customTintColor.withMultipliedAlpha(0.1), customTintColor)
} else {
buttonTheme = .bubble(arguments.incoming ? arguments.presentationData.theme.theme.chat.message.incoming : arguments.presentationData.theme.theme.chat.message.outgoing)
}
let audioTranscriptionButtonSize = audioTranscriptionButton.update(
transition: animation.isAnimated ? .easeInOut(duration: 0.3) : .immediate,
component: AnyComponent(AudioTranscriptionButtonComponent(
theme: .bubble(arguments.incoming ? arguments.presentationData.theme.theme.chat.message.incoming : arguments.presentationData.theme.theme.chat.message.outgoing),
theme: buttonTheme,
transcriptionState: effectiveAudioTranscriptionState,
pressed: {
guard let strongSelf = self else {

View File

@ -427,6 +427,10 @@ final class ShareWithPeersScreenComponent: Component {
}
}
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
self.endEditing(true)
}
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
guard let itemLayout = self.itemLayout, let topOffsetDistance = self.topOffsetDistance else {
return
@ -801,7 +805,7 @@ final class ShareWithPeersScreenComponent: Component {
}
private func updateModalOverlayTransition(transition: Transition) {
guard let component = self.component, let environment = self.environment, let itemLayout = self.itemLayout else {
guard let component = self.component, let environment = self.environment, let itemLayout = self.itemLayout, !self.isDismissed else {
return
}
@ -2071,6 +2075,14 @@ final class ShareWithPeersScreenComponent: Component {
self.selectedCategories.insert(.everyone)
}
self.state?.updated(transition: Transition(animation: .curve(duration: 0.35, curve: .spring)))
},
isFocusedUpdated: { [weak self] isFocused in
guard let self else {
return
}
if isFocused {
self.scrollView.setContentOffset(CGPoint(x: 0.0, y: -self.scrollView.contentInset.top), animated: true)
}
}
)),
environment: {},
@ -2122,11 +2134,11 @@ final class ShareWithPeersScreenComponent: Component {
transition.setFrame(view: self.dimView, frame: CGRect(origin: CGPoint(), size: availableSize))
if case .members = component.stateContext.subject {
self.dimView .isHidden = true
self.dimView.isHidden = true
} else if case .channels = component.stateContext.subject {
self.dimView .isHidden = true
self.dimView.isHidden = true
} else {
self.dimView .isHidden = false
self.dimView.isHidden = false
}
let categoryItemSize = self.categoryTemplateItem.update(

View File

@ -88,6 +88,7 @@ public final class TokenListTextField: Component {
public let tokens: [Token]
public let sideInset: CGFloat
public let deleteToken: (AnyHashable) -> Void
public let isFocusedUpdated: (Bool) -> Void
public init(
externalState: ExternalState,
@ -96,7 +97,8 @@ public final class TokenListTextField: Component {
placeholder: String,
tokens: [Token],
sideInset: CGFloat,
deleteToken: @escaping (AnyHashable) -> Void
deleteToken: @escaping (AnyHashable) -> Void,
isFocusedUpdated: @escaping (Bool) -> Void = { _ in }
) {
self.externalState = externalState
self.context = context
@ -105,6 +107,7 @@ public final class TokenListTextField: Component {
self.tokens = tokens
self.sideInset = sideInset
self.deleteToken = deleteToken
self.isFocusedUpdated = isFocusedUpdated
}
public static func ==(lhs: TokenListTextField, rhs: TokenListTextField) -> Bool {
@ -191,6 +194,7 @@ public final class TokenListTextField: Component {
guard let self else {
return
}
self.component?.isFocusedUpdated(self.tokenListNode?.isFocused ?? false)
self.componentState?.updated(transition: Transition(animation: .curve(duration: 0.35, curve: .spring)))
}