mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Stories
This commit is contained in:
parent
9f47ee57a1
commit
d472c7d1a9
@ -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 {
|
||||
|
@ -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(),
|
||||
|
@ -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 {
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"app": "9.6",
|
||||
"app": "9.6.4",
|
||||
"bazel": "6.1.1",
|
||||
"xcode": "14.2"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user