This commit is contained in:
Ali 2023-07-16 17:45:35 +04:00
parent 9f47ee57a1
commit d472c7d1a9
4 changed files with 69 additions and 34 deletions

View File

@ -2145,7 +2145,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
})
#endif
if let componentView = self.chatListHeaderView(), let storyPeerListView = componentView.storyPeerListView(), let _ = storyPeerListView.lockViewFrame(), !self.didShowPasscodeLockTooltipController {
if let componentView = self.chatListHeaderView(), let storyPeerListView = componentView.storyPeerListView(), let _ = storyPeerListView.lockViewFrame(), !self.didShowPasscodeLockTooltipController, !"".isEmpty {
self.passcodeLockTooltipDisposable.set(combineLatest(queue: .mainQueue(), ApplicationSpecificNotice.getPasscodeLockTips(accountManager: self.context.sharedContext.accountManager), self.context.sharedContext.accountManager.accessChallengeData() |> take(1)).start(next: { [weak self] tooltipValue, passcodeView in
if let strongSelf = self {
if !tooltipValue {

View File

@ -955,24 +955,44 @@ private final class StoryContainerScreenComponent: Component {
private func updateVolumeButtonMonitoring() {
if self.volumeButtonsListener == nil {
let buttonAction = { [weak self] in
guard let self else {
guard let self, let component = self.component else {
return
}
switch self.audioMode {
case .off, .ambient:
break
case .on:
guard let slice = component.content.stateValue?.slice else {
return
}
self.audioMode = .on
for (_, itemSetView) in self.visibleItemSetViews {
if let componentView = itemSetView.view.view as? StoryItemSetContainerComponent.View {
componentView.leaveAmbientMode()
var isSilentVideo = false
if case let .file(file) = slice.item.storyItem.media {
for attribute in file.attributes {
if case let .Video(_, _, flags, _) = attribute {
if flags.contains(.isSilent) {
isSilentVideo = true
}
}
}
}
self.state?.updated(transition: .immediate)
if isSilentVideo {
if let slice = component.content.stateValue?.slice, let itemSetView = self.visibleItemSetViews[slice.peer.id], let currentItemView = itemSetView.view.view as? StoryItemSetContainerComponent.View {
currentItemView.displayMutedVideoTooltip()
}
} else {
switch self.audioMode {
case .off, .ambient:
break
case .on:
return
}
self.audioMode = .on
for (_, itemSetView) in self.visibleItemSetViews {
if let componentView = itemSetView.view.view as? StoryItemSetContainerComponent.View {
componentView.leaveAmbientMode()
}
}
self.state?.updated(transition: .immediate)
}
}
self.volumeButtonsListener = VolumeButtonsListener(
shouldBeActive: self.volumeButtonsListenerShouldBeActive.get(),

View File

@ -414,6 +414,8 @@ public final class StoryItemSetContainerComponent: Component {
private var verticalPanState: PanState?
private var isAnimatingOut: Bool = false
override init(frame: CGRect) {
self.sendMessageContext = StoryItemSetContainerSendMessage()
@ -1366,6 +1368,8 @@ public final class StoryItemSetContainerComponent: Component {
func animateOut(transitionOut: StoryContainerScreen.TransitionOut, transitionCloneMasterView: UIView, completion: @escaping () -> Void) {
var cleanups: [() -> Void] = []
self.isAnimatingOut = true
self.sendMessageContext.animateOut(bounds: self.bounds)
if let inputPanelView = self.inputPanel.view {
@ -2409,26 +2413,7 @@ public final class StoryItemSetContainerComponent: Component {
}
if isSilentVideo {
guard let soundButtonView = self.soundButton.view else {
return
}
let tooltipScreen = TooltipScreen(
account: component.context.account,
sharedContext: component.context.sharedContext,
text: .plain(text: "This video has no sound"), style: .default, location: TooltipScreen.Location.point(soundButtonView.convert(soundButtonView.bounds, to: nil).offsetBy(dx: 1.0, dy: -10.0), .top), displayDuration: .infinite, shouldDismissOnTouch: { _, _ in
return .dismiss(consume: true)
}
)
tooltipScreen.willBecomeDismissed = { [weak self] _ in
guard let self else {
return
}
self.sendMessageContext.tooltipScreen = nil
self.updateIsProgressPaused()
}
self.sendMessageContext.tooltipScreen = tooltipScreen
self.updateIsProgressPaused()
component.controller()?.present(tooltipScreen, in: .current)
self.displayMutedVideoTooltip()
} else {
component.toggleAmbientMode()
}
@ -2496,6 +2481,7 @@ public final class StoryItemSetContainerComponent: Component {
self.sendMessageContext.tooltipScreen = nil
self.updateIsProgressPaused()
}
self.sendMessageContext.tooltipScreen?.dismiss()
self.sendMessageContext.tooltipScreen = tooltipScreen
self.updateIsProgressPaused()
component.controller()?.present(tooltipScreen, in: .current)
@ -2608,7 +2594,7 @@ public final class StoryItemSetContainerComponent: Component {
}
}
if let currentLeftInfoItem {
if let currentLeftInfoItem, !self.isAnimatingOut {
self.leftInfoItem = currentLeftInfoItem
let leftInfoItemSize = currentLeftInfoItem.view.update(
@ -2953,6 +2939,7 @@ public final class StoryItemSetContainerComponent: Component {
return false
}
)
self.sendMessageContext.tooltipScreen?.dismiss()
self.sendMessageContext.tooltipScreen = controller
self.updateIsProgressPaused()
presentController(controller, nil)
@ -3951,6 +3938,7 @@ public final class StoryItemSetContainerComponent: Component {
self.sendMessageContext.tooltipScreen = nil
self.updateIsProgressPaused()
}
self.sendMessageContext.tooltipScreen?.dismiss()
self.sendMessageContext.tooltipScreen = tooltipScreen
self.updateIsProgressPaused()
component.controller()?.present(tooltipScreen, in: .current)
@ -4122,6 +4110,33 @@ public final class StoryItemSetContainerComponent: Component {
controller.present(contextController, in: .window(.root))
})
}
func displayMutedVideoTooltip() {
guard let component = self.component else {
return
}
guard let soundButtonView = self.soundButton.view else {
return
}
let tooltipScreen = TooltipScreen(
account: component.context.account,
sharedContext: component.context.sharedContext,
text: .plain(text: "This video has no sound"), style: .default, location: TooltipScreen.Location.point(soundButtonView.convert(soundButtonView.bounds, to: nil).offsetBy(dx: 1.0, dy: -10.0), .top), displayDuration: .infinite, shouldDismissOnTouch: { _, _ in
return .dismiss(consume: true)
}
)
tooltipScreen.willBecomeDismissed = { [weak self] _ in
guard let self else {
return
}
self.sendMessageContext.tooltipScreen = nil
self.updateIsProgressPaused()
}
self.sendMessageContext.tooltipScreen?.dismiss()
self.sendMessageContext.tooltipScreen = tooltipScreen
self.updateIsProgressPaused()
component.controller()?.present(tooltipScreen, in: .current)
}
}
public func makeView() -> View {

View File

@ -1,5 +1,5 @@
{
"app": "9.6",
"app": "9.6.4",
"bazel": "6.1.1",
"xcode": "14.2"
}