Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios

This commit is contained in:
Ilya Laktyushin 2021-01-24 23:57:00 +03:00
commit a3b8870065
5 changed files with 20 additions and 9 deletions

View File

@ -508,8 +508,13 @@ public final class ChatImportActivityScreen: ViewController {
}
return ChatHistoryImport.uploadMedia(account: context.account, session: session, file: tempFile, fileName: fileName, mimeType: mimeTypeValue, type: mediaType)
|> mapError { _ -> ImportError in
return .generic
|> mapError { error -> ImportError in
switch error {
case .chatAdminRequired:
return .chatAdminRequired
case .generic:
return .generic
}
}
|> map { progress -> (String, Float) in
return (fileName, progress)

View File

@ -100,6 +100,7 @@ public enum ChatHistoryImport {
public enum UploadMediaError {
case generic
case chatAdminRequired
}
public static func uploadMedia(account: Account, session: Session, file: TempBoxFile, fileName: String, mimeType: String, type: MediaType) -> Signal<Float, UploadMediaError> {
@ -136,8 +137,13 @@ public enum ChatHistoryImport {
return .fail(.generic)
}
return account.network.request(Api.functions.messages.uploadImportedMedia(peer: session.inputPeer, importId: session.id, fileName: fileName, media: inputMedia))
|> mapError { _ -> UploadMediaError in
return .generic
|> mapError { error -> UploadMediaError in
switch error.errorDescription {
case "CHAT_ADMIN_REQUIRED":
return .chatAdminRequired
default:
return .generic
}
}
|> mapToSignal { result -> Signal<Float, UploadMediaError> in
return .single(1.0)

View File

@ -56,14 +56,14 @@ private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> ([
var isFile = false
inner: for media in message.media {
if let _ = media as? TelegramMediaImage {
if let forwardInfo = message.forwardInfo, forwardInfo.flags.contains(.isImported) {
if let forwardInfo = message.forwardInfo, forwardInfo.flags.contains(.isImported), message.text.isEmpty {
messageWithCaptionToAdd = (message, itemAttributes)
}
result.append((message, ChatMessageMediaBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .media, neighborSpacing: .default)))
} else if let file = media as? TelegramMediaFile {
let isVideo = file.isVideo || (file.isAnimated && file.dimensions != nil)
if isVideo {
if let forwardInfo = message.forwardInfo, forwardInfo.flags.contains(.isImported) {
if let forwardInfo = message.forwardInfo, forwardInfo.flags.contains(.isImported), message.text.isEmpty {
messageWithCaptionToAdd = (message, itemAttributes)
}
result.append((message, ChatMessageMediaBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .media, neighborSpacing: .default)))

View File

@ -542,7 +542,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode {
} else if let statusFrameValue = statusFrame {
if progressFrame.intersects(statusFrameValue) {
fittedLayoutSize.height += 10.0
statusFrame = statusFrameValue.offsetBy(dx: 0.0, dy: 15.0)
statusFrame = statusFrameValue.offsetBy(dx: 0.0, dy: 10.0)
}
}

View File

@ -571,7 +571,7 @@ public class ShareRootControllerImpl {
attemptSelectionImpl = { peer in
var errorText: String?
if let channel = peer as? TelegramChannel {
if channel.hasPermission(.changeInfo) {
if channel.hasPermission(.changeInfo), (channel.flags.contains(.isCreator) || channel.adminRights != nil) {
} else {
errorText = "You need to be an admin of the group to import messages into it."
}
@ -771,7 +771,7 @@ public class ShareRootControllerImpl {
var errorText: String?
if let channel = peer as? TelegramChannel {
if channel.hasPermission(.changeInfo) {
if channel.hasPermission(.changeInfo), (channel.flags.contains(.isCreator) || channel.adminRights != nil) {
} else {
errorText = "You need to be an admin of the group to import messages into it."
}