Skip to content

Commit cd4f75b

Browse files
committed
refactor: MessageSizeCalculator methods with indexPath argument
BREAKING CHANGE: `func messageContainerMaxWidth(for message: MessageType) -> CGFloat` now has IndexPath argument `func messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat `func messageContainerSize(for message: MessageType) -> CGSize` now has IndexPath argument `func messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize`
1 parent 830b10e commit cd4f75b

7 files changed

Lines changed: 28 additions & 28 deletions

Sources/Layout/AudioMessageSizeCalculator.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ import UIKit
2727

2828
open class AudioMessageSizeCalculator: MessageSizeCalculator {
2929

30-
open override func messageContainerSize(for message: MessageType) -> CGSize {
30+
open override func messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize {
3131
switch message.kind {
3232
case .audio(let item):
33-
let maxWidth = messageContainerMaxWidth(for: message)
33+
let maxWidth = messageContainerMaxWidth(for: message, at: indexPath)
3434
if maxWidth < item.size.width {
3535
// Maintain the ratio if width is too great
3636
let height = maxWidth * item.size.height / item.size.width

Sources/Layout/ContactMessageSizeCalculator.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ open class ContactMessageSizeCalculator: MessageSizeCalculator {
3737
return isFromCurrentSender ? outgoingMessageNameLabelInsets : incomingMessageNameLabelInsets
3838
}
3939

40-
open override func messageContainerMaxWidth(for message: MessageType) -> CGFloat {
41-
let maxWidth = super.messageContainerMaxWidth(for: message)
40+
open override func messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat {
41+
let maxWidth = super.messageContainerMaxWidth(for: message, at: indexPath)
4242
let textInsets = contactLabelInsets(for: message)
4343
return maxWidth - textInsets.horizontal
4444
}
4545

46-
open override func messageContainerSize(for message: MessageType) -> CGSize {
47-
let maxWidth = messageContainerMaxWidth(for: message)
46+
open override func messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize {
47+
let maxWidth = messageContainerMaxWidth(for: message, at: indexPath)
4848

4949
var messageContainerSize: CGSize
5050
let attributedText: NSAttributedString

Sources/Layout/LinkPreviewMessageSizeCalculator.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,23 @@ open class LinkPreviewMessageSizeCalculator: TextMessageSizeCalculator {
4646
super.init(layout: layout)
4747
}
4848

49-
open override func messageContainerMaxWidth(for message: MessageType) -> CGFloat {
49+
open override func messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat {
5050
switch message.kind {
5151
case .linkPreview:
52-
let maxWidth = super.messageContainerMaxWidth(for: message)
52+
let maxWidth = super.messageContainerMaxWidth(for: message, at: indexPath)
5353
return max(maxWidth, (layout?.collectionView?.bounds.width ?? 0) * 0.75)
5454
default:
55-
return super.messageContainerMaxWidth(for: message)
55+
return super.messageContainerMaxWidth(for: message, at: indexPath)
5656
}
5757
}
5858

59-
open override func messageContainerSize(for message: MessageType) -> CGSize {
59+
open override func messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize {
6060
guard case MessageKind.linkPreview(let linkItem) = message.kind else {
6161
fatalError("messageContainerSize received unhandled MessageDataType: \(message.kind)")
6262
}
6363

64-
var containerSize = super.messageContainerSize(for: message)
65-
containerSize.width = max(containerSize.width, messageContainerMaxWidth(for: message))
64+
var containerSize = super.messageContainerSize(for: message, at: indexPath)
65+
containerSize.width = max(containerSize.width, messageContainerMaxWidth(for: message, at: indexPath))
6666

6767
let labelInsets: UIEdgeInsets = messageLabelInsets(for: message)
6868

Sources/Layout/LocationMessageSizeCalculator.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ import UIKit
2727

2828
open class LocationMessageSizeCalculator: MessageSizeCalculator {
2929

30-
open override func messageContainerSize(for message: MessageType) -> CGSize {
30+
open override func messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize {
3131
switch message.kind {
3232
case .location(let item):
33-
let maxWidth = messageContainerMaxWidth(for: message)
33+
let maxWidth = messageContainerMaxWidth(for: message, at: indexPath)
3434
if maxWidth < item.size.width {
3535
// Maintain the ratio if width is too great
3636
let height = maxWidth * item.size.height / item.size.width

Sources/Layout/MediaMessageSizeCalculator.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import UIKit
2727

2828
open class MediaMessageSizeCalculator: MessageSizeCalculator {
2929

30-
open override func messageContainerSize(for message: MessageType) -> CGSize {
31-
let maxWidth = messageContainerMaxWidth(for: message)
30+
open override func messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize {
31+
let maxWidth = messageContainerMaxWidth(for: message, at: indexPath)
3232
let sizeForMediaItem = { (maxWidth: CGFloat, item: MediaItem) -> CGSize in
3333
if maxWidth < item.size.width {
3434
// Maintain the ratio if width is too great

Sources/Layout/MessageSizeCalculator.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,12 @@ open class MessageSizeCalculator: CellSizeCalculator {
7272
let indexPath = attributes.indexPath
7373
let message = dataSource.messageForItem(at: indexPath, in: messagesLayout.messagesCollectionView)
7474

75-
attributes.avatarSize = avatarSize(for: message)
75+
attributes.avatarSize = avatarSize(for: message, at: indexPath)
7676
attributes.avatarPosition = avatarPosition(for: message)
7777
attributes.avatarLeadingTrailingPadding = avatarLeadingTrailingPadding
7878

7979
attributes.messageContainerPadding = messageContainerPadding(for: message)
80-
attributes.messageContainerSize = messageContainerSize(for: message)
80+
attributes.messageContainerSize = messageContainerSize(for: message, at: indexPath)
8181
attributes.cellTopLabelSize = cellTopLabelSize(for: message, at: indexPath)
8282
attributes.cellTopLabelAlignment = cellTopLabelAlignment(for: message)
8383
attributes.cellBottomLabelSize = cellBottomLabelSize(for: message, at: indexPath)
@@ -103,13 +103,13 @@ open class MessageSizeCalculator: CellSizeCalculator {
103103

104104
open func cellContentHeight(for message: MessageType, at indexPath: IndexPath) -> CGFloat {
105105

106-
let messageContainerHeight = messageContainerSize(for: message).height
106+
let messageContainerHeight = messageContainerSize(for: message, at: indexPath).height
107107
let cellBottomLabelHeight = cellBottomLabelSize(for: message, at: indexPath).height
108108
let messageBottomLabelHeight = messageBottomLabelSize(for: message, at: indexPath).height
109109
let cellTopLabelHeight = cellTopLabelSize(for: message, at: indexPath).height
110110
let messageTopLabelHeight = messageTopLabelSize(for: message, at: indexPath).height
111111
let messageVerticalPadding = messageContainerPadding(for: message).vertical
112-
let avatarHeight = avatarSize(for: message).height
112+
let avatarHeight = avatarSize(for: message, at: indexPath).height
113113
let avatarVerticalPosition = avatarPosition(for: message).vertical
114114
let accessoryViewHeight = accessoryViewSize(for: message).height
115115

@@ -163,7 +163,7 @@ open class MessageSizeCalculator: CellSizeCalculator {
163163
return position
164164
}
165165

166-
open func avatarSize(for message: MessageType) -> CGSize {
166+
open func avatarSize(for message: MessageType, at indexPath: IndexPath) -> CGSize {
167167
let dataSource = messagesLayout.messagesDataSource
168168
let isFromCurrentSender = dataSource.isFromCurrentSender(message: message)
169169
return isFromCurrentSender ? outgoingAvatarSize : incomingAvatarSize
@@ -282,13 +282,13 @@ open class MessageSizeCalculator: CellSizeCalculator {
282282
return isFromCurrentSender ? outgoingMessagePadding : incomingMessagePadding
283283
}
284284

285-
open func messageContainerSize(for message: MessageType) -> CGSize {
285+
open func messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize {
286286
// Returns .zero by default
287287
return .zero
288288
}
289289

290-
open func messageContainerMaxWidth(for message: MessageType) -> CGFloat {
291-
let avatarWidth = avatarSize(for: message).width
290+
open func messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat {
291+
let avatarWidth: CGFloat = avatarSize(for: message, at: indexPath).width
292292
let messagePadding = messageContainerPadding(for: message)
293293
let accessoryWidth = accessoryViewSize(for: message).width
294294
let accessoryPadding = accessoryViewPadding(for: message)

Sources/Layout/TextMessageSizeCalculator.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ open class TextMessageSizeCalculator: MessageSizeCalculator {
3838
return isFromCurrentSender ? outgoingMessageLabelInsets : incomingMessageLabelInsets
3939
}
4040

41-
open override func messageContainerMaxWidth(for message: MessageType) -> CGFloat {
42-
let maxWidth = super.messageContainerMaxWidth(for: message)
41+
open override func messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat {
42+
let maxWidth = super.messageContainerMaxWidth(for: message, at: indexPath)
4343
let textInsets = messageLabelInsets(for: message)
4444
return maxWidth - textInsets.horizontal
4545
}
4646

47-
open override func messageContainerSize(for message: MessageType) -> CGSize {
48-
let maxWidth = messageContainerMaxWidth(for: message)
47+
open override func messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize {
48+
let maxWidth = messageContainerMaxWidth(for: message, at: indexPath)
4949

5050
var messageContainerSize: CGSize
5151
let attributedText: NSAttributedString

0 commit comments

Comments
 (0)