diff --git a/submodules/ChatImportUI/Sources/ChatImportActivityScreen.swift b/submodules/ChatImportUI/Sources/ChatImportActivityScreen.swift index c7b4cff179..dac1e32e27 100644 --- a/submodules/ChatImportUI/Sources/ChatImportActivityScreen.swift +++ b/submodules/ChatImportUI/Sources/ChatImportActivityScreen.swift @@ -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) diff --git a/submodules/TelegramCore/Sources/ChatHistoryImport.swift b/submodules/TelegramCore/Sources/ChatHistoryImport.swift index b929e0722d..59fedf5d39 100644 --- a/submodules/TelegramCore/Sources/ChatHistoryImport.swift +++ b/submodules/TelegramCore/Sources/ChatHistoryImport.swift @@ -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 { @@ -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 in return .single(1.0) diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index 91ef103005..b1c8b78c1c 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -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))) diff --git a/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift b/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift index b943a8e2b2..a3d49e11e0 100644 --- a/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift @@ -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) } } diff --git a/submodules/TelegramUI/Sources/ShareExtensionContext.swift b/submodules/TelegramUI/Sources/ShareExtensionContext.swift index da503e084d..12bebcf204 100644 --- a/submodules/TelegramUI/Sources/ShareExtensionContext.swift +++ b/submodules/TelegramUI/Sources/ShareExtensionContext.swift @@ -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." }