mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-16 11:20:18 +00:00
Use contact auto-download settings in groups
Removed "stop bot" buttons for support accounts
This commit is contained in:
parent
a1da20afe0
commit
936adda0a9
@ -471,13 +471,19 @@ func isAutodownloadEnabledForAnyPeerType(category: AutomaticMediaDownloadCategor
|
|||||||
return category.contacts || category.otherPrivate || category.groups || category.channels
|
return category.contacts || category.otherPrivate || category.groups || category.channels
|
||||||
}
|
}
|
||||||
|
|
||||||
public func shouldDownloadMediaAutomatically(settings: AutomaticMediaDownloadSettings, peerType: AutomaticMediaDownloadPeerType, networkType: AutomaticDownloadNetworkType, media: Media) -> Bool {
|
public func shouldDownloadMediaAutomatically(settings: AutomaticMediaDownloadSettings, peerType: AutomaticMediaDownloadPeerType, networkType: AutomaticDownloadNetworkType, authorPeerId: PeerId?, contactsPeerIds: Set<PeerId>, media: Media) -> Bool {
|
||||||
if (networkType == .cellular && !settings.cellular.enabled) || (networkType == .wifi && !settings.wifi.enabled) {
|
if (networkType == .cellular && !settings.cellular.enabled) || (networkType == .wifi && !settings.wifi.enabled) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if let file = media as? TelegramMediaFile, file.isSticker {
|
if let file = media as? TelegramMediaFile, file.isSticker {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var peerType = peerType
|
||||||
|
if case .group = peerType, let authorPeerId = authorPeerId, contactsPeerIds.contains(authorPeerId) {
|
||||||
|
peerType = .contact
|
||||||
|
}
|
||||||
|
|
||||||
if let (category, size) = categoryAndSizeForMedia(media, categories: effectiveAutodownloadCategories(settings: settings, networkType: networkType)) {
|
if let (category, size) = categoryAndSizeForMedia(media, categories: effectiveAutodownloadCategories(settings: settings, networkType: networkType)) {
|
||||||
guard isAutodownloadEnabledForPeerType(peerType, category: category) else {
|
guard isAutodownloadEnabledForPeerType(peerType, category: category) else {
|
||||||
return false
|
return false
|
||||||
|
|||||||
@ -264,6 +264,7 @@ private final class ChatHistoryTransactionOpaqueState {
|
|||||||
|
|
||||||
private func extractAssociatedData(chatLocation: ChatLocation, view: MessageHistoryView, automaticDownloadNetworkType: AutomaticDownloadNetworkType) -> ChatMessageItemAssociatedData {
|
private func extractAssociatedData(chatLocation: ChatLocation, view: MessageHistoryView, automaticDownloadNetworkType: AutomaticDownloadNetworkType) -> ChatMessageItemAssociatedData {
|
||||||
var automaticMediaDownloadPeerType: AutomaticMediaDownloadPeerType = .channel
|
var automaticMediaDownloadPeerType: AutomaticMediaDownloadPeerType = .channel
|
||||||
|
var contactsPeerIds: Set<PeerId> = Set()
|
||||||
if case let .peer(peerId) = chatLocation {
|
if case let .peer(peerId) = chatLocation {
|
||||||
if peerId.namespace == Namespaces.Peer.CloudUser || peerId.namespace == Namespaces.Peer.SecretChat {
|
if peerId.namespace == Namespaces.Peer.CloudUser || peerId.namespace == Namespaces.Peer.SecretChat {
|
||||||
var isContact = false
|
var isContact = false
|
||||||
@ -276,6 +277,12 @@ private func extractAssociatedData(chatLocation: ChatLocation, view: MessageHist
|
|||||||
automaticMediaDownloadPeerType = isContact ? .contact : .otherPrivate
|
automaticMediaDownloadPeerType = isContact ? .contact : .otherPrivate
|
||||||
} else if peerId.namespace == Namespaces.Peer.CloudGroup {
|
} else if peerId.namespace == Namespaces.Peer.CloudGroup {
|
||||||
automaticMediaDownloadPeerType = .group
|
automaticMediaDownloadPeerType = .group
|
||||||
|
|
||||||
|
for case let .MessageEntry(message, _, _, _, attributes) in view.entries {
|
||||||
|
if attributes.authorIsContact, let peerId = message.author?.id {
|
||||||
|
contactsPeerIds.insert(peerId)
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if peerId.namespace == Namespaces.Peer.CloudChannel {
|
} else if peerId.namespace == Namespaces.Peer.CloudChannel {
|
||||||
for entry in view.additionalData {
|
for entry in view.additionalData {
|
||||||
if case let .peer(_, value) = entry {
|
if case let .peer(_, value) = entry {
|
||||||
@ -285,9 +292,16 @@ private func extractAssociatedData(chatLocation: ChatLocation, view: MessageHist
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if automaticMediaDownloadPeerType == .group {
|
||||||
|
for case let .MessageEntry(message, _, _, _, attributes) in view.entries {
|
||||||
|
if attributes.authorIsContact, let peerId = message.author?.id {
|
||||||
|
contactsPeerIds.insert(peerId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let associatedData = ChatMessageItemAssociatedData(automaticDownloadPeerType: automaticMediaDownloadPeerType, automaticDownloadNetworkType: automaticDownloadNetworkType, isRecentActions: false)
|
let associatedData = ChatMessageItemAssociatedData(automaticDownloadPeerType: automaticMediaDownloadPeerType, automaticDownloadNetworkType: automaticDownloadNetworkType, isRecentActions: false, contactsPeerIds: contactsPeerIds)
|
||||||
return associatedData
|
return associatedData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -387,7 +387,7 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie
|
|||||||
canClear = false
|
canClear = false
|
||||||
}
|
}
|
||||||
} else if let user = chatPeer as? TelegramUser, user.botInfo != nil {
|
} else if let user = chatPeer as? TelegramUser, user.botInfo != nil {
|
||||||
canStop = true
|
canStop = !user.flags.contains(.isSupport)
|
||||||
deleteTitle = strongSelf.presentationData.strings.ChatList_DeleteChat
|
deleteTitle = strongSelf.presentationData.strings.ChatList_DeleteChat
|
||||||
} else if let _ = chatPeer as? TelegramSecretChat {
|
} else if let _ = chatPeer as? TelegramSecretChat {
|
||||||
deleteTitle = strongSelf.presentationData.strings.ChatList_DeleteChat
|
deleteTitle = strongSelf.presentationData.strings.ChatList_DeleteChat
|
||||||
|
|||||||
@ -144,12 +144,10 @@ private enum ChatListRecentEntry: Comparable, Identifiable {
|
|||||||
|
|
||||||
let status: ContactsPeerItemStatus
|
let status: ContactsPeerItemStatus
|
||||||
if let user = primaryPeer as? TelegramUser {
|
if let user = primaryPeer as? TelegramUser {
|
||||||
if let _ = user.botInfo {
|
if user.flags.contains(.isSupport) {
|
||||||
if let phoneNumber = user.phone, phoneNumber.hasPrefix("424") {
|
status = .custom(strings.Bot_GenericSupportStatus)
|
||||||
status = .custom(strings.Bot_GenericSupportStatus)
|
} else if let _ = user.botInfo {
|
||||||
} else {
|
status = .custom(strings.Bot_GenericBotStatus)
|
||||||
status = .custom(strings.Bot_GenericBotStatus)
|
|
||||||
}
|
|
||||||
} else if user.id != context.account.peerId {
|
} else if user.id != context.account.peerId {
|
||||||
let presence = peer.presence ?? TelegramUserPresence(status: .none, lastActivity: 0)
|
let presence = peer.presence ?? TelegramUserPresence(status: .none, lastActivity: 0)
|
||||||
status = .presence(presence, timeFormat)
|
status = .presence(presence, timeFormat)
|
||||||
|
|||||||
@ -380,7 +380,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
|
|||||||
if let (media, flags) = mediaAndFlags {
|
if let (media, flags) = mediaAndFlags {
|
||||||
if let file = media as? TelegramMediaFile {
|
if let file = media as? TelegramMediaFile {
|
||||||
if file.isInstantVideo {
|
if file.isInstantVideo {
|
||||||
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: file)
|
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, authorPeerId: message.author?.id, contactsPeerIds: associatedData.contactsPeerIds, media: file)
|
||||||
let (videoLayout, apply) = contentInstantVideoLayout(ChatMessageBubbleContentItem(context: context, controllerInteraction: controllerInteraction, message: message, read: messageRead, presentationData: presentationData, associatedData: associatedData), constrainedSize.width - horizontalInsets.left - horizontalInsets.right, CGSize(width: 180.0, height: 180.0), .bubble, automaticDownload)
|
let (videoLayout, apply) = contentInstantVideoLayout(ChatMessageBubbleContentItem(context: context, controllerInteraction: controllerInteraction, message: message, read: messageRead, presentationData: presentationData, associatedData: associatedData), constrainedSize.width - horizontalInsets.left - horizontalInsets.right, CGSize(width: 180.0, height: 180.0), .bubble, automaticDownload)
|
||||||
initialWidth = videoLayout.contentSize.width + videoLayout.overflowLeft + videoLayout.overflowRight
|
initialWidth = videoLayout.contentSize.width + videoLayout.overflowLeft + videoLayout.overflowRight
|
||||||
contentInstantVideoSizeAndApply = (videoLayout, apply)
|
contentInstantVideoSizeAndApply = (videoLayout, apply)
|
||||||
@ -388,7 +388,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
|
|||||||
var automaticDownload: InteractiveMediaNodeAutodownloadMode = .none
|
var automaticDownload: InteractiveMediaNodeAutodownloadMode = .none
|
||||||
var automaticPlayback = false
|
var automaticPlayback = false
|
||||||
|
|
||||||
if shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: file) {
|
if shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, authorPeerId: message.author?.id, contactsPeerIds: associatedData.contactsPeerIds, media: file) {
|
||||||
automaticDownload = .full
|
automaticDownload = .full
|
||||||
} else if shouldPredownloadMedia(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: file) {
|
} else if shouldPredownloadMedia(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: file) {
|
||||||
automaticDownload = .prefetch
|
automaticDownload = .prefetch
|
||||||
@ -405,12 +405,12 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
|
|||||||
initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right
|
initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right
|
||||||
refineContentImageLayout = refineLayout
|
refineContentImageLayout = refineLayout
|
||||||
} else if file.isSticker, let _ = file.dimensions {
|
} else if file.isSticker, let _ = file.dimensions {
|
||||||
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: file)
|
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, authorPeerId: message.author?.id, contactsPeerIds: associatedData.contactsPeerIds, media: file)
|
||||||
let (_, initialImageWidth, refineLayout) = contentImageLayout(context, presentationData.theme.theme, presentationData.strings, message, file, automaticDownload ? .full : .none, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode)
|
let (_, initialImageWidth, refineLayout) = contentImageLayout(context, presentationData.theme.theme, presentationData.strings, message, file, automaticDownload ? .full : .none, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode)
|
||||||
initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right
|
initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right
|
||||||
refineContentImageLayout = refineLayout
|
refineContentImageLayout = refineLayout
|
||||||
} else {
|
} else {
|
||||||
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: file)
|
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, authorPeerId: message.author?.id, contactsPeerIds: associatedData.contactsPeerIds, media: file)
|
||||||
|
|
||||||
let statusType: ChatMessageDateAndStatusType
|
let statusType: ChatMessageDateAndStatusType
|
||||||
if message.effectivelyIncoming(context.account.peerId) {
|
if message.effectivelyIncoming(context.account.peerId) {
|
||||||
@ -430,7 +430,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
} else if let image = media as? TelegramMediaImage {
|
} else if let image = media as? TelegramMediaImage {
|
||||||
if !flags.contains(.preferMediaInline) {
|
if !flags.contains(.preferMediaInline) {
|
||||||
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: image)
|
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, authorPeerId: message.author?.id, contactsPeerIds: associatedData.contactsPeerIds, media: image)
|
||||||
let (_, initialImageWidth, refineLayout) = contentImageLayout(context, presentationData.theme.theme, presentationData.strings, message, image, automaticDownload ? .full : .none, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode)
|
let (_, initialImageWidth, refineLayout) = contentImageLayout(context, presentationData.theme.theme, presentationData.strings, message, image, automaticDownload ? .full : .none, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode)
|
||||||
initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right
|
initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right
|
||||||
refineContentImageLayout = refineLayout
|
refineContentImageLayout = refineLayout
|
||||||
@ -442,7 +442,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if let image = media as? TelegramMediaWebFile {
|
} else if let image = media as? TelegramMediaWebFile {
|
||||||
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: image)
|
let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, authorPeerId: message.author?.id, contactsPeerIds: associatedData.contactsPeerIds, media: image)
|
||||||
let (_, initialImageWidth, refineLayout) = contentImageLayout(context, presentationData.theme.theme, presentationData.strings, message, image, automaticDownload ? .full : .none, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode)
|
let (_, initialImageWidth, refineLayout) = contentImageLayout(context, presentationData.theme.theme, presentationData.strings, message, image, automaticDownload ? .full : .none, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode)
|
||||||
initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right
|
initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right
|
||||||
refineContentImageLayout = refineLayout
|
refineContentImageLayout = refineLayout
|
||||||
|
|||||||
@ -66,8 +66,7 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
statusType = nil
|
statusType = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var automaticDownload = false
|
let automaticDownload = shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, authorPeerId: item.message.author?.id, contactsPeerIds: item.associatedData.contactsPeerIds, media: selectedFile!)
|
||||||
automaticDownload = shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, media: selectedFile!)
|
|
||||||
|
|
||||||
let (initialWidth, refineLayout) = interactiveFileLayout(item.context, item.presentationData, item.message, selectedFile!, automaticDownload, item.message.effectivelyIncoming(item.context.account.peerId), item.associatedData.isRecentActions, statusType, CGSize(width: constrainedSize.width - layoutConstants.file.bubbleInsets.left - layoutConstants.file.bubbleInsets.right, height: constrainedSize.height))
|
let (initialWidth, refineLayout) = interactiveFileLayout(item.context, item.presentationData, item.message, selectedFile!, automaticDownload, item.message.effectivelyIncoming(item.context.account.peerId), item.associatedData.isRecentActions, statusType, CGSize(width: constrainedSize.width - layoutConstants.file.bubbleInsets.left - layoutConstants.file.bubbleInsets.right, height: constrainedSize.height))
|
||||||
|
|
||||||
|
|||||||
@ -178,7 +178,7 @@ class ChatMessageInstantVideoItemNode: ChatMessageItemView {
|
|||||||
var automaticDownload = true
|
var automaticDownload = true
|
||||||
for media in item.message.media {
|
for media in item.message.media {
|
||||||
if let file = media as? TelegramMediaFile {
|
if let file = media as? TelegramMediaFile {
|
||||||
automaticDownload = shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, media: file)
|
automaticDownload = shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, authorPeerId: item.message.author?.id, contactsPeerIds: item.associatedData.contactsPeerIds, media: file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -191,11 +191,13 @@ public final class ChatMessageItemAssociatedData: Equatable {
|
|||||||
let automaticDownloadPeerType: AutomaticMediaDownloadPeerType
|
let automaticDownloadPeerType: AutomaticMediaDownloadPeerType
|
||||||
let automaticDownloadNetworkType: AutomaticDownloadNetworkType
|
let automaticDownloadNetworkType: AutomaticDownloadNetworkType
|
||||||
let isRecentActions: Bool
|
let isRecentActions: Bool
|
||||||
|
let contactsPeerIds: Set<PeerId>
|
||||||
|
|
||||||
init(automaticDownloadPeerType: AutomaticMediaDownloadPeerType, automaticDownloadNetworkType: AutomaticDownloadNetworkType, isRecentActions: Bool) {
|
init(automaticDownloadPeerType: AutomaticMediaDownloadPeerType, automaticDownloadNetworkType: AutomaticDownloadNetworkType, isRecentActions: Bool, contactsPeerIds: Set<PeerId> = Set()) {
|
||||||
self.automaticDownloadPeerType = automaticDownloadPeerType
|
self.automaticDownloadPeerType = automaticDownloadPeerType
|
||||||
self.automaticDownloadNetworkType = automaticDownloadNetworkType
|
self.automaticDownloadNetworkType = automaticDownloadNetworkType
|
||||||
self.isRecentActions = isRecentActions
|
self.isRecentActions = isRecentActions
|
||||||
|
self.contactsPeerIds = contactsPeerIds
|
||||||
}
|
}
|
||||||
|
|
||||||
public static func == (lhs: ChatMessageItemAssociatedData, rhs: ChatMessageItemAssociatedData) -> Bool {
|
public static func == (lhs: ChatMessageItemAssociatedData, rhs: ChatMessageItemAssociatedData) -> Bool {
|
||||||
@ -208,6 +210,9 @@ public final class ChatMessageItemAssociatedData: Equatable {
|
|||||||
if lhs.isRecentActions != rhs.isRecentActions {
|
if lhs.isRecentActions != rhs.isRecentActions {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if lhs.contactsPeerIds != rhs.contactsPeerIds {
|
||||||
|
return false
|
||||||
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,12 +66,12 @@ class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
for media in item.message.media {
|
for media in item.message.media {
|
||||||
if let telegramImage = media as? TelegramMediaImage {
|
if let telegramImage = media as? TelegramMediaImage {
|
||||||
selectedMedia = telegramImage
|
selectedMedia = telegramImage
|
||||||
if shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, media: telegramImage) {
|
if shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, authorPeerId: item.message.author?.id, contactsPeerIds: item.associatedData.contactsPeerIds, media: telegramImage) {
|
||||||
automaticDownload = .full
|
automaticDownload = .full
|
||||||
}
|
}
|
||||||
} else if let telegramFile = media as? TelegramMediaFile {
|
} else if let telegramFile = media as? TelegramMediaFile {
|
||||||
selectedMedia = telegramFile
|
selectedMedia = telegramFile
|
||||||
if shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, media: telegramFile) {
|
if shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, authorPeerId: item.message.author?.id, contactsPeerIds: item.associatedData.contactsPeerIds, media: telegramFile) {
|
||||||
automaticDownload = .full
|
automaticDownload = .full
|
||||||
} else if shouldPredownloadMedia(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, media: telegramFile) {
|
} else if shouldPredownloadMedia(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, media: telegramFile) {
|
||||||
automaticDownload = .prefetch
|
automaticDownload = .prefetch
|
||||||
|
|||||||
@ -221,7 +221,7 @@ final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
|
|
||||||
var automaticPlayback = false
|
var automaticPlayback = false
|
||||||
if let file = webpage.file, !file.isAnimated, item.controllerInteraction.automaticMediaDownloadSettings.autoplayVideos {
|
if let file = webpage.file, !file.isAnimated, item.controllerInteraction.automaticMediaDownloadSettings.autoplayVideos {
|
||||||
if shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, media: file) {
|
if shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, authorPeerId: item.message.author?.id, contactsPeerIds: item.associatedData.contactsPeerIds, media: file) {
|
||||||
automaticPlayback = true
|
automaticPlayback = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -336,13 +336,17 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
|
|||||||
self.infoNode.attributedText = string
|
self.infoNode.attributedText = string
|
||||||
shouldUpdateLayout = true
|
shouldUpdateLayout = true
|
||||||
}
|
}
|
||||||
} else if let _ = user.botInfo {
|
} else if user.flags.contains(.isSupport) {
|
||||||
let statusText: String
|
let statusText = self.strings.Bot_GenericSupportStatus
|
||||||
if let phoneNumber = user.phone, phoneNumber.hasPrefix("424") {
|
|
||||||
statusText = self.strings.Bot_GenericSupportStatus
|
let string = NSAttributedString(string: statusText, font: Font.regular(13.0), textColor: self.theme.rootController.navigationBar.secondaryTextColor)
|
||||||
} else {
|
if self.infoNode.attributedText == nil || !self.infoNode.attributedText!.isEqual(to: string) {
|
||||||
statusText = self.strings.Bot_GenericBotStatus
|
self.infoNode.attributedText = string
|
||||||
|
shouldUpdateLayout = true
|
||||||
}
|
}
|
||||||
|
} else if let _ = user.botInfo {
|
||||||
|
let statusText = self.strings.Bot_GenericBotStatus
|
||||||
|
|
||||||
let string = NSAttributedString(string: statusText, font: Font.regular(13.0), textColor: self.theme.rootController.navigationBar.secondaryTextColor)
|
let string = NSAttributedString(string: statusText, font: Font.regular(13.0), textColor: self.theme.rootController.navigationBar.secondaryTextColor)
|
||||||
if self.infoNode.attributedText == nil || !self.infoNode.attributedText!.isEqual(to: string) {
|
if self.infoNode.attributedText == nil || !self.infoNode.attributedText!.isEqual(to: string) {
|
||||||
self.infoNode.attributedText = string
|
self.infoNode.attributedText = string
|
||||||
|
|||||||
@ -420,12 +420,11 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||||||
if let label = item.label {
|
if let label = item.label {
|
||||||
statusText = label
|
statusText = label
|
||||||
statusColor = item.theme.list.itemSecondaryTextColor
|
statusColor = item.theme.list.itemSecondaryTextColor
|
||||||
|
} else if peer.flags.contains(.isSupport) {
|
||||||
|
statusText = item.strings.Bot_GenericSupportStatus
|
||||||
|
statusColor = item.theme.list.itemSecondaryTextColor
|
||||||
} else if let _ = peer.botInfo {
|
} else if let _ = peer.botInfo {
|
||||||
if let phoneNumber = peer.phone, phoneNumber.hasPrefix("424") {
|
statusText = item.strings.Bot_GenericBotStatus
|
||||||
statusText = item.strings.Bot_GenericSupportStatus
|
|
||||||
} else {
|
|
||||||
statusText = item.strings.Bot_GenericBotStatus
|
|
||||||
}
|
|
||||||
statusColor = item.theme.list.itemSecondaryTextColor
|
statusColor = item.theme.list.itemSecondaryTextColor
|
||||||
} else if case .generic = item.mode, !(peer.id.namespace == Namespaces.Peer.CloudUser && (peer.id.id == 777000 || peer.id.id == 333000)) {
|
} else if case .generic = item.mode, !(peer.id.namespace == Namespaces.Peer.CloudUser && (peer.id.id == 777000 || peer.id.id == 333000)) {
|
||||||
let presence = (item.presence as? TelegramUserPresence) ?? TelegramUserPresence(status: .none, lastActivity: 0)
|
let presence = (item.presence as? TelegramUserPresence) ?? TelegramUserPresence(status: .none, lastActivity: 0)
|
||||||
|
|||||||
@ -1502,14 +1502,19 @@ func internalMediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaRe
|
|||||||
let context = DrawingContext(size: arguments.drawingSize, clear: true)
|
let context = DrawingContext(size: arguments.drawingSize, clear: true)
|
||||||
|
|
||||||
let drawingRect = arguments.drawingRect
|
let drawingRect = arguments.drawingRect
|
||||||
var fittedSize = arguments.imageSize.aspectFilled(arguments.boundingSize).fitted(arguments.imageSize)
|
var drawingSize: CGSize
|
||||||
if fittedSize.width < drawingRect.size.width && fittedSize.width >= drawingRect.size.width - 2.0 {
|
if case .aspectFill = arguments.resizeMode {
|
||||||
fittedSize.width = drawingRect.size.width
|
drawingSize = arguments.imageSize.aspectFilled(arguments.boundingSize)
|
||||||
|
} else {
|
||||||
|
drawingSize = arguments.imageSize.aspectFilled(arguments.boundingSize).fitted(arguments.imageSize)
|
||||||
}
|
}
|
||||||
if fittedSize.height < drawingRect.size.height && fittedSize.height >= drawingRect.size.height - 2.0 {
|
if drawingSize.width < drawingRect.size.width && drawingSize.width >= drawingRect.size.width - 2.0 {
|
||||||
fittedSize.height = drawingRect.size.height
|
drawingSize.width = drawingRect.size.width
|
||||||
}
|
}
|
||||||
let fittedRect = CGRect(origin: CGPoint(x: drawingRect.origin.x + (drawingRect.size.width - fittedSize.width) / 2.0, y: drawingRect.origin.y + (drawingRect.size.height - fittedSize.height) / 2.0), size: fittedSize)
|
if drawingSize.height < drawingRect.size.height && drawingSize.height >= drawingRect.size.height - 2.0 {
|
||||||
|
drawingSize.height = drawingRect.size.height
|
||||||
|
}
|
||||||
|
let fittedRect = CGRect(origin: CGPoint(x: drawingRect.origin.x + (drawingRect.size.width - drawingSize.width) / 2.0, y: drawingRect.origin.y + (drawingRect.size.height - drawingSize.height) / 2.0), size: drawingSize)
|
||||||
|
|
||||||
var fullSizeImage: CGImage?
|
var fullSizeImage: CGImage?
|
||||||
var imageOrientation: UIImageOrientation = .up
|
var imageOrientation: UIImageOrientation = .up
|
||||||
@ -1544,7 +1549,7 @@ func internalMediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaRe
|
|||||||
blurredThumbnailImage = UIImage(cgImage: thumbnailImage)
|
blurredThumbnailImage = UIImage(cgImage: thumbnailImage)
|
||||||
} else {
|
} else {
|
||||||
let thumbnailSize = CGSize(width: thumbnailImage.width, height: thumbnailImage.height)
|
let thumbnailSize = CGSize(width: thumbnailImage.width, height: thumbnailImage.height)
|
||||||
let initialThumbnailContextFittingSize = fittedSize.fitted(CGSize(width: 100.0, height: 100.0))
|
let initialThumbnailContextFittingSize = drawingSize.fitted(CGSize(width: 100.0, height: 100.0))
|
||||||
|
|
||||||
let thumbnailContextSize = thumbnailSize.aspectFitted(initialThumbnailContextFittingSize)
|
let thumbnailContextSize = thumbnailSize.aspectFitted(initialThumbnailContextFittingSize)
|
||||||
let thumbnailContext = DrawingContext(size: thumbnailContextSize, scale: 1.0)
|
let thumbnailContext = DrawingContext(size: thumbnailContextSize, scale: 1.0)
|
||||||
@ -1587,7 +1592,7 @@ func internalMediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaRe
|
|||||||
var sideBlurredImage: UIImage?
|
var sideBlurredImage: UIImage?
|
||||||
let thumbnailSize = CGSize(width: fullSizeImage.width, height: fullSizeImage.height)
|
let thumbnailSize = CGSize(width: fullSizeImage.width, height: fullSizeImage.height)
|
||||||
if true {
|
if true {
|
||||||
let initialThumbnailContextFittingSize = fittedSize.fitted(CGSize(width: 100.0, height: 100.0))
|
let initialThumbnailContextFittingSize = drawingSize.fitted(CGSize(width: 100.0, height: 100.0))
|
||||||
|
|
||||||
let thumbnailContextSize = thumbnailSize.aspectFitted(initialThumbnailContextFittingSize)
|
let thumbnailContextSize = thumbnailSize.aspectFitted(initialThumbnailContextFittingSize)
|
||||||
let thumbnailContext = DrawingContext(size: thumbnailContextSize, scale: 1.0)
|
let thumbnailContext = DrawingContext(size: thumbnailContextSize, scale: 1.0)
|
||||||
@ -1643,6 +1648,8 @@ func internalMediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaRe
|
|||||||
case let .fill(color):
|
case let .fill(color):
|
||||||
c.setFillColor((arguments.emptyColor ?? color).cgColor)
|
c.setFillColor((arguments.emptyColor ?? color).cgColor)
|
||||||
c.fill(arguments.drawingRect)
|
c.fill(arguments.drawingRect)
|
||||||
|
case .aspectFill:
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3509,427 +3509,427 @@ public final class PresentationStrings {
|
|||||||
public var Channel_Setup_TypePublicHelp: String { return self._s[3133]! }
|
public var Channel_Setup_TypePublicHelp: String { return self._s[3133]! }
|
||||||
public var Passport_Identity_EditInternalPassport: String { return self._s[3134]! }
|
public var Passport_Identity_EditInternalPassport: String { return self._s[3134]! }
|
||||||
public var PhotoEditor_Skip: String { return self._s[3135]! }
|
public var PhotoEditor_Skip: String { return self._s[3135]! }
|
||||||
public func LastSeen_MinutesAgo(_ value: Int32) -> String {
|
public func ForwardedVideoMessages(_ value: Int32) -> String {
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, "\(value)")
|
return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
}
|
}
|
||||||
public func Conversation_StatusOnline(_ value: Int32) -> String {
|
public func MuteFor_Days(_ value: Int32) -> String {
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, "\(value)")
|
return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
}
|
}
|
||||||
public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, _1, _2)
|
|
||||||
}
|
|
||||||
public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
|
||||||
}
|
|
||||||
public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, _1, _2)
|
|
||||||
}
|
|
||||||
public func AttachmentMenu_SendGif(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedFiles(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_Minutes(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func LiveLocation_MenuChatsCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_Years(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func AttachmentMenu_SendItem(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Map_ETAHours(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
|
||||||
}
|
|
||||||
public func MessageTimer_Hours(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedVideoMessages(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func StickerPack_StickerCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessagePoll_VotedCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Conversation_StatusSubscribers(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func SharedMedia_File(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func SharedMedia_Video(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Call_Minutes(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_ShortMinutes(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
|
||||||
}
|
|
||||||
public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MuteExpires_Minutes(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, _1, _2)
|
|
||||||
}
|
|
||||||
public func Map_ETAMinutes(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func GroupInfo_ParticipantCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_Weeks(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Notification_GameScoreSimple(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedPolls(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Media_ShareItem(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Media_ShareVideo(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, _1, _2)
|
|
||||||
}
|
|
||||||
public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedStickers(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_Seconds(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Watch_UserInfo_Mute(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedContacts(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func AttachmentMenu_SendVideo(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func StickerPack_AddStickerCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, _1, _2)
|
|
||||||
}
|
|
||||||
public func AttachmentMenu_SendPhoto(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_Days(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Invitation_Members(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedPhotos(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func SharedMedia_Generic(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedGifs(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_ShortDays(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, _1, _2)
|
|
||||||
}
|
|
||||||
public func ForwardedVideos(_ value: Int32) -> String {
|
public func ForwardedVideos(_ value: Int32) -> String {
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, "\(value)")
|
return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
}
|
|
||||||
public func MessageTimer_ShortHours(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Passport_Scans(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, _1, _2)
|
|
||||||
}
|
|
||||||
public func SharedMedia_Link(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedLocations(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func CreatePoll_AddMoreOptions(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func StickerPack_AddMaskCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_ShortSeconds(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Call_ShortMinutes(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, _1, _2)
|
|
||||||
}
|
|
||||||
public func SharedMedia_Photo(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
}
|
||||||
public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String {
|
public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String {
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, "\(value)")
|
return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
}
|
}
|
||||||
public func StickerPack_RemoveStickerCount(_ value: Int32) -> String {
|
public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Notification_GameScoreExtended(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MuteExpires_Days(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedMessages(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ChatList_DeleteConfirmation(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func QuickSend_Photos(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Call_ShortSeconds(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Notifications_Exceptions(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func UserCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Contacts_ImportersCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Media_SharePhoto(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func LastSeen_HoursAgo(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MessageTimer_ShortWeeks(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, _1, _2)
|
return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
||||||
}
|
}
|
||||||
public func InviteText_ContactsCountText(_ value: Int32) -> String {
|
public func MessageTimer_Minutes(_ value: Int32) -> String {
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, "\(value)")
|
return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
}
|
|
||||||
public func MessageTimer_Months(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
|
||||||
}
|
|
||||||
public func Conversation_StatusMembers(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, _0, _1)
|
|
||||||
}
|
|
||||||
public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
|
||||||
return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
|
||||||
}
|
|
||||||
public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MuteFor_Days(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MuteFor_Hours(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func MuteExpires_Hours(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func ForwardedAudios(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Notification_GameScoreSelfExtended(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Notification_GameScoreSelfSimple(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
|
||||||
public func Call_Seconds(_ value: Int32) -> String {
|
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
|
||||||
return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, "\(value)")
|
|
||||||
}
|
}
|
||||||
public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
let form = presentationStringsPluralizationForm(self.lc, selector)
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, _1, _2)
|
return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func AttachmentMenu_SendPhoto(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedMessages(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Notifications_Exceptions(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func AttachmentMenu_SendGif(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func SharedMedia_Photo(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_ShortWeeks(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_Months(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func StickerPack_RemoveStickerCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Notification_GameScoreSelfSimple(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_Seconds(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func StickerPack_StickerCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ChatList_DeleteConfirmation(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
||||||
|
}
|
||||||
|
public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func MessageTimer_Hours(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_ShortMinutes(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func LiveLocation_MenuChatsCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_Days(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Notification_GameScoreExtended(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Call_ShortSeconds(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_Weeks(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MuteFor_Hours(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Map_ETAHours(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Call_Minutes(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func Contacts_ImportersCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func SharedMedia_Generic(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
||||||
|
}
|
||||||
|
public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MuteExpires_Minutes(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func Conversation_StatusSubscribers(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedLocations(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Map_ETAMinutes(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedAudios(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func StickerPack_AddStickerCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessagePoll_VotedCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Notification_GameScoreSimple(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
||||||
|
}
|
||||||
|
public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_ShortHours(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, _0, _1)
|
||||||
|
}
|
||||||
|
public func LastSeen_MinutesAgo(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func QuickSend_Photos(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func StickerPack_AddMaskCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedGifs(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func LastSeen_HoursAgo(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Conversation_StatusOnline(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func AttachmentMenu_SendVideo(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Call_Seconds(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func InviteText_ContactsCountText(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_ShortSeconds(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Media_ShareItem(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MuteExpires_Hours(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MessageTimer_ShortDays(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func UserCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedContacts(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func SharedMedia_Video(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func Call_ShortMinutes(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Passport_Scans(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func AttachmentMenu_SendItem(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedFiles(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedPolls(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func SharedMedia_Link(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedStickers(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Conversation_StatusMembers(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func Notification_GameScoreSelfExtended(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func GroupInfo_ParticipantCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func MuteExpires_Days(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, _2, _1, _3)
|
||||||
|
}
|
||||||
|
public func MessageTimer_Years(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func CreatePoll_AddMoreOptions(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Media_SharePhoto(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Watch_UserInfo_Mute(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Invitation_Members(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func ForwardedPhotos(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, selector)
|
||||||
|
return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, _1, _2)
|
||||||
|
}
|
||||||
|
public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func SharedMedia_File(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
}
|
}
|
||||||
public func StickerPack_RemoveMaskCount(_ value: Int32) -> String {
|
public func StickerPack_RemoveMaskCount(_ value: Int32) -> String {
|
||||||
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
|
return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
|
}
|
||||||
|
public func Media_ShareVideo(_ value: Int32) -> String {
|
||||||
let form = presentationStringsPluralizationForm(self.lc, value)
|
let form = presentationStringsPluralizationForm(self.lc, value)
|
||||||
return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, "\(value)")
|
return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, "\(value)")
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@ -3,6 +3,7 @@ import UIKit
|
|||||||
|
|
||||||
public enum TransformImageResizeMode {
|
public enum TransformImageResizeMode {
|
||||||
case fill(UIColor)
|
case fill(UIColor)
|
||||||
|
case aspectFill
|
||||||
case blurBackground
|
case blurBackground
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -693,7 +693,7 @@ private func userInfoEntries(account: Account, presentationData: PresentationDat
|
|||||||
if cachedData.isBlocked {
|
if cachedData.isBlocked {
|
||||||
entries.append(UserInfoEntry.block(presentationData.theme, stringForBlockAction(strings: presentationData.strings, action: .unblock, peer: user), .unblock))
|
entries.append(UserInfoEntry.block(presentationData.theme, stringForBlockAction(strings: presentationData.strings, action: .unblock, peer: user), .unblock))
|
||||||
} else {
|
} else {
|
||||||
if let peer = peer as? TelegramUser, let phone = peer.phone, phone.hasPrefix("424") {
|
if let peer = peer as? TelegramUser, peer.flags.contains(.isSupport) {
|
||||||
} else {
|
} else {
|
||||||
entries.append(UserInfoEntry.block(presentationData.theme, stringForBlockAction(strings: presentationData.strings, action: .block, peer: user), .block))
|
entries.append(UserInfoEntry.block(presentationData.theme, stringForBlockAction(strings: presentationData.strings, action: .block, peer: user), .block))
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user