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
|
#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
|
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 let strongSelf = self {
|
||||||
if !tooltipValue {
|
if !tooltipValue {
|
||||||
|
@ -955,24 +955,44 @@ private final class StoryContainerScreenComponent: Component {
|
|||||||
private func updateVolumeButtonMonitoring() {
|
private func updateVolumeButtonMonitoring() {
|
||||||
if self.volumeButtonsListener == nil {
|
if self.volumeButtonsListener == nil {
|
||||||
let buttonAction = { [weak self] in
|
let buttonAction = { [weak self] in
|
||||||
guard let self else {
|
guard let self, let component = self.component else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch self.audioMode {
|
guard let slice = component.content.stateValue?.slice else {
|
||||||
case .off, .ambient:
|
|
||||||
break
|
|
||||||
case .on:
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
self.audioMode = .on
|
var isSilentVideo = false
|
||||||
|
if case let .file(file) = slice.item.storyItem.media {
|
||||||
for (_, itemSetView) in self.visibleItemSetViews {
|
for attribute in file.attributes {
|
||||||
if let componentView = itemSetView.view.view as? StoryItemSetContainerComponent.View {
|
if case let .Video(_, _, flags, _) = attribute {
|
||||||
componentView.leaveAmbientMode()
|
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(
|
self.volumeButtonsListener = VolumeButtonsListener(
|
||||||
shouldBeActive: self.volumeButtonsListenerShouldBeActive.get(),
|
shouldBeActive: self.volumeButtonsListenerShouldBeActive.get(),
|
||||||
|
@ -414,6 +414,8 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
|
|
||||||
private var verticalPanState: PanState?
|
private var verticalPanState: PanState?
|
||||||
|
|
||||||
|
private var isAnimatingOut: Bool = false
|
||||||
|
|
||||||
override init(frame: CGRect) {
|
override init(frame: CGRect) {
|
||||||
self.sendMessageContext = StoryItemSetContainerSendMessage()
|
self.sendMessageContext = StoryItemSetContainerSendMessage()
|
||||||
|
|
||||||
@ -1366,6 +1368,8 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
func animateOut(transitionOut: StoryContainerScreen.TransitionOut, transitionCloneMasterView: UIView, completion: @escaping () -> Void) {
|
func animateOut(transitionOut: StoryContainerScreen.TransitionOut, transitionCloneMasterView: UIView, completion: @escaping () -> Void) {
|
||||||
var cleanups: [() -> Void] = []
|
var cleanups: [() -> Void] = []
|
||||||
|
|
||||||
|
self.isAnimatingOut = true
|
||||||
|
|
||||||
self.sendMessageContext.animateOut(bounds: self.bounds)
|
self.sendMessageContext.animateOut(bounds: self.bounds)
|
||||||
|
|
||||||
if let inputPanelView = self.inputPanel.view {
|
if let inputPanelView = self.inputPanel.view {
|
||||||
@ -2409,26 +2413,7 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if isSilentVideo {
|
if isSilentVideo {
|
||||||
guard let soundButtonView = self.soundButton.view else {
|
self.displayMutedVideoTooltip()
|
||||||
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)
|
|
||||||
} else {
|
} else {
|
||||||
component.toggleAmbientMode()
|
component.toggleAmbientMode()
|
||||||
}
|
}
|
||||||
@ -2496,6 +2481,7 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
self.sendMessageContext.tooltipScreen = nil
|
self.sendMessageContext.tooltipScreen = nil
|
||||||
self.updateIsProgressPaused()
|
self.updateIsProgressPaused()
|
||||||
}
|
}
|
||||||
|
self.sendMessageContext.tooltipScreen?.dismiss()
|
||||||
self.sendMessageContext.tooltipScreen = tooltipScreen
|
self.sendMessageContext.tooltipScreen = tooltipScreen
|
||||||
self.updateIsProgressPaused()
|
self.updateIsProgressPaused()
|
||||||
component.controller()?.present(tooltipScreen, in: .current)
|
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
|
self.leftInfoItem = currentLeftInfoItem
|
||||||
|
|
||||||
let leftInfoItemSize = currentLeftInfoItem.view.update(
|
let leftInfoItemSize = currentLeftInfoItem.view.update(
|
||||||
@ -2953,6 +2939,7 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
self.sendMessageContext.tooltipScreen?.dismiss()
|
||||||
self.sendMessageContext.tooltipScreen = controller
|
self.sendMessageContext.tooltipScreen = controller
|
||||||
self.updateIsProgressPaused()
|
self.updateIsProgressPaused()
|
||||||
presentController(controller, nil)
|
presentController(controller, nil)
|
||||||
@ -3951,6 +3938,7 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
self.sendMessageContext.tooltipScreen = nil
|
self.sendMessageContext.tooltipScreen = nil
|
||||||
self.updateIsProgressPaused()
|
self.updateIsProgressPaused()
|
||||||
}
|
}
|
||||||
|
self.sendMessageContext.tooltipScreen?.dismiss()
|
||||||
self.sendMessageContext.tooltipScreen = tooltipScreen
|
self.sendMessageContext.tooltipScreen = tooltipScreen
|
||||||
self.updateIsProgressPaused()
|
self.updateIsProgressPaused()
|
||||||
component.controller()?.present(tooltipScreen, in: .current)
|
component.controller()?.present(tooltipScreen, in: .current)
|
||||||
@ -4122,6 +4110,33 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
controller.present(contextController, in: .window(.root))
|
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 {
|
public func makeView() -> View {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"app": "9.6",
|
"app": "9.6.4",
|
||||||
"bazel": "6.1.1",
|
"bazel": "6.1.1",
|
||||||
"xcode": "14.2"
|
"xcode": "14.2"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user