mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-03 19:30:09 +00:00
Various fixes
This commit is contained in:
parent
0c2266aa73
commit
a690eb8033
@ -9870,3 +9870,8 @@ Sorry for the inconvenience.";
|
||||
"Story.Privacy.KeepOnChannelPageInfo" = "Keep this story on channel profile even after it expires in %@.";
|
||||
|
||||
"Story.Editor.TooltipPremiumReaction" = "Subscribe to [Telegram Premium]() to use this reaction.";
|
||||
|
||||
"Story.Privacy.TooltipStoryArchivedChannel" = "Users will see this story on the channel page even after it expires.";
|
||||
|
||||
"Story.Editor.TooltipMutedWithAudio" = "Original audio will be removed";
|
||||
"Story.Editor.TooltipUnmutedWithAudio" = "Original audio will be preserved";
|
||||
|
@ -139,6 +139,7 @@ public final class SecretMediaPreviewController: ViewController {
|
||||
private var messageView: MessageView?
|
||||
private var currentNodeMessageId: MessageId?
|
||||
private var currentNodeMessageIsVideo = false
|
||||
private var currentNodeMessageIsViewOnce = false
|
||||
private var tempFile: TempBoxFile?
|
||||
|
||||
private let _hiddenMedia = Promise<(MessageId, Media)?>(nil)
|
||||
@ -263,6 +264,8 @@ public final class SecretMediaPreviewController: ViewController {
|
||||
}
|
||||
|
||||
if let attribute = message.autoclearAttribute {
|
||||
strongSelf.currentNodeMessageIsViewOnce = attribute.timeout == viewOnceTimeout
|
||||
|
||||
if let countdownBeginTime = attribute.countdownBeginTime {
|
||||
if let videoDuration = videoDuration {
|
||||
beginTimeAndTimeout = (CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970, videoDuration)
|
||||
@ -271,6 +274,8 @@ public final class SecretMediaPreviewController: ViewController {
|
||||
}
|
||||
}
|
||||
} else if let attribute = message.autoremoveAttribute {
|
||||
strongSelf.currentNodeMessageIsViewOnce = attribute.timeout == viewOnceTimeout
|
||||
|
||||
if let countdownBeginTime = attribute.countdownBeginTime {
|
||||
if let videoDuration = videoDuration {
|
||||
beginTimeAndTimeout = (CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970, videoDuration)
|
||||
@ -478,7 +483,7 @@ public final class SecretMediaPreviewController: ViewController {
|
||||
if !self.didSetReady {
|
||||
self._ready.set(.single(true))
|
||||
}
|
||||
if !self.currentNodeMessageIsVideo {
|
||||
if !(self.currentNodeMessageIsVideo && !self.currentNodeMessageIsViewOnce) {
|
||||
self.dismiss()
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,11 @@ public class AutoclearTimeoutMessageAttribute: MessageAttribute {
|
||||
self.countdownBeginTime = countdownBeginTime
|
||||
|
||||
if let countdownBeginTime = countdownBeginTime {
|
||||
self.automaticTimestampBasedAttribute = (1, countdownBeginTime + timeout)
|
||||
if self.timeout == viewOnceTimeout {
|
||||
self.automaticTimestampBasedAttribute = (1, countdownBeginTime)
|
||||
} else {
|
||||
self.automaticTimestampBasedAttribute = (1, countdownBeginTime + timeout)
|
||||
}
|
||||
} else {
|
||||
self.automaticTimestampBasedAttribute = nil
|
||||
}
|
||||
@ -67,7 +71,11 @@ public class AutoclearTimeoutMessageAttribute: MessageAttribute {
|
||||
self.countdownBeginTime = decoder.decodeOptionalInt32ForKey("c")
|
||||
|
||||
if let countdownBeginTime = self.countdownBeginTime {
|
||||
self.automaticTimestampBasedAttribute = (1, countdownBeginTime + self.timeout)
|
||||
if self.timeout == viewOnceTimeout {
|
||||
self.automaticTimestampBasedAttribute = (1, countdownBeginTime)
|
||||
} else {
|
||||
self.automaticTimestampBasedAttribute = (1, countdownBeginTime + self.timeout)
|
||||
}
|
||||
} else {
|
||||
self.automaticTimestampBasedAttribute = nil
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ func _internal_markMessageContentAsConsumedInteractively(postbox: Postbox, messa
|
||||
} else if let attribute = updatedAttributes[i] as? AutoclearTimeoutMessageAttribute {
|
||||
if attribute.countdownBeginTime == nil || attribute.countdownBeginTime == 0 {
|
||||
var timeout = attribute.timeout
|
||||
if let duration = message.secretMediaDuration {
|
||||
if let duration = message.secretMediaDuration, timeout != viewOnceTimeout {
|
||||
timeout = max(timeout, Int32(duration))
|
||||
}
|
||||
updatedAttributes[i] = AutoclearTimeoutMessageAttribute(timeout: timeout, countdownBeginTime: timestamp)
|
||||
|
@ -2778,7 +2778,22 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
||||
let absoluteFrame = sourceView.convert(sourceView.bounds, to: nil).offsetBy(dx: -parentFrame.minX, dy: 0.0)
|
||||
let location = CGRect(origin: CGPoint(x: absoluteFrame.midX, y: absoluteFrame.maxY + 3.0), size: CGSize())
|
||||
|
||||
let tooltipController = TooltipScreen(account: self.context.account, sharedContext: self.context.sharedContext, text: .plain(text: isMuted ? self.presentationData.strings.Story_Editor_TooltipMuted : self.presentationData.strings.Story_Editor_TooltipUnmuted), location: .point(location, .top), displayDuration: .default, inset: 16.0, shouldDismissOnTouch: { _, _ in
|
||||
let text: String
|
||||
if let _ = self.mediaEditor?.values.audioTrack {
|
||||
if isMuted {
|
||||
text = self.presentationData.strings.Story_Editor_TooltipMutedWithAudio
|
||||
} else {
|
||||
text = self.presentationData.strings.Story_Editor_TooltipUnmutedWithAudio
|
||||
}
|
||||
} else {
|
||||
if isMuted {
|
||||
text = self.presentationData.strings.Story_Editor_TooltipMuted
|
||||
} else {
|
||||
text = self.presentationData.strings.Story_Editor_TooltipUnmuted
|
||||
}
|
||||
}
|
||||
|
||||
let tooltipController = TooltipScreen(account: self.context.account, sharedContext: self.context.sharedContext, text: .plain(text: text), location: .point(location, .top), displayDuration: .default, inset: 16.0, shouldDismissOnTouch: { _, _ in
|
||||
return .ignore
|
||||
})
|
||||
self.muteTooltip = tooltipController
|
||||
|
@ -345,6 +345,8 @@ final class ShareWithPeersScreenComponent: Component {
|
||||
private var searchStateContext: ShareWithPeersScreen.StateContext?
|
||||
private var searchStateDisposable: Disposable?
|
||||
|
||||
private let hapticFeedback = HapticFeedback()
|
||||
|
||||
private var effectiveStateValue: ShareWithPeersScreen.State? {
|
||||
return self.searchStateContext?.stateValue ?? self.defaultStateValue
|
||||
}
|
||||
@ -549,7 +551,11 @@ final class ShareWithPeersScreenComponent: Component {
|
||||
case .pin:
|
||||
if self.selectedOptions.contains(.pin) {
|
||||
animationName = "anim_profileadd"
|
||||
text = presentationData.strings.Story_Privacy_TooltipStoryArchived
|
||||
if let peerId = self.sendAsPeerId, peerId.namespace != Namespaces.Peer.CloudUser {
|
||||
text = presentationData.strings.Story_Privacy_TooltipStoryArchivedChannel
|
||||
} else {
|
||||
text = presentationData.strings.Story_Privacy_TooltipStoryArchived
|
||||
}
|
||||
} else {
|
||||
animationName = "anim_autoremove_on"
|
||||
text = presentationData.strings.Story_Privacy_TooltipStoryExpires
|
||||
@ -996,9 +1002,9 @@ final class ShareWithPeersScreenComponent: Component {
|
||||
|
||||
let subtitle: String?
|
||||
if case .user = peer {
|
||||
subtitle = "personal account"
|
||||
subtitle = environment.strings.VoiceChat_PersonalAccount
|
||||
} else {
|
||||
subtitle = "channel"
|
||||
subtitle = environment.strings.Channel_Status
|
||||
}
|
||||
|
||||
var isStories = false
|
||||
@ -1037,6 +1043,7 @@ final class ShareWithPeersScreenComponent: Component {
|
||||
if isStories {
|
||||
let _ = self.presentSendAsPeer()
|
||||
} else {
|
||||
self.hapticFeedback.tap()
|
||||
self.environment?.controller()?.dismiss()
|
||||
self.component?.peerCompletion(peer.id)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user