Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ final class ConversationMessageSectionControllerTests: XCTestCase {
userSession = UserSessionMock(mockUser: mockSelfUser)
context = ConversationMessageContext(
isSameSenderAsPrevious: false,
isTimestampInSameMinuteAsPreviousMessage: false,
isGroupedWithPreviousMessage: false,
isFirstMessageOfTheDay: false,
isFirstUnreadMessage: false,
isLastMessage: false,
Expand Down Expand Up @@ -121,7 +121,7 @@ final class ConversationMessageSectionControllerTests: XCTestCase {
let message = MockMessageFactory.textMessage(withText: "Welcome to Dub Dub")
let context = ConversationMessageContext(
isSameSenderAsPrevious: true,
isTimestampInSameMinuteAsPreviousMessage: true
isGroupedWithPreviousMessage: true
)

// WHEN
Expand Down Expand Up @@ -161,7 +161,7 @@ final class ConversationMessageSectionControllerTests: XCTestCase {
let message = MockMessageFactory.textMessage(withText: "Hello")
let context = ConversationMessageContext(
isSameSenderAsPrevious: true,
isTimestampInSameMinuteAsPreviousMessage: false
isGroupedWithPreviousMessage: false
)
// WHEN
let section = makeSUT(message: message, context: context)
Expand All @@ -181,7 +181,7 @@ final class ConversationMessageSectionControllerTests: XCTestCase {
let message = MockMessageFactory.textMessage(withText: "Hello")
let context = ConversationMessageContext(
isSameSenderAsPrevious: true,
isTimestampInSameMinuteAsPreviousMessage: false
isGroupedWithPreviousMessage: false
)
// WHEN
let section = makeSUT(message: message, context: context)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import XCTest
private extension ConversationMessageContext {
static let defaultContext = ConversationMessageContext(
isSameSenderAsPrevious: false,
isTimestampInSameMinuteAsPreviousMessage: false,
isGroupedWithPreviousMessage: false,
isFirstMessageOfTheDay: false,
isFirstUnreadMessage: false,
isLastMessage: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

struct ConversationMessageContext: Equatable {
var isSameSenderAsPrevious: Bool = false
var isTimestampInSameMinuteAsPreviousMessage: Bool = false
var isGroupedWithPreviousMessage: Bool = false
var isFirstMessageOfTheDay: Bool = false
var isFirstUnreadMessage: Bool = false
var isLastMessage: Bool = false
Expand Down Expand Up @@ -562,8 +562,8 @@
return true
}

// This message is from the same sender but in a different minute.
if !context.isTimestampInSameMinuteAsPreviousMessage {
// This message is from the same sender but is not visually grouped with the previous message.
if !context.isGroupedWithPreviousMessage {
return true
}

Expand Down Expand Up @@ -625,7 +625,7 @@
let observer = UserChangeInfo.add(observer: self, for: sender, in: userSession)!
changeObservers.append(observer)
}

Check warning on line 628 in wire-ios/Wire-iOS/Sources/UserInterface/Conversation/Content/Cells/ConfigurationMessageCell/ConversationMessageSectionController.swift

View workflow job for this annotation

GitHub Actions / Test Results

'users' is deprecated: Use `userTypes` instead

'users' is deprecated: Use `userTypes` instead
if let users = message.systemMessageData?.users {
for user in users where user.remoteIdentifier != (message.senderUser as? ZMUser)?.remoteIdentifier {
if let observer = UserChangeInfo.add(observer: self, for: user, in: userSession) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -766,20 +766,24 @@ extension ConversationTableViewDataSource {
messages: [ZMMessage]
) -> ConversationMessageContext {

let isTimestampInSameMinuteAsPreviousMessage: Bool
let isGroupedWithPreviousMessage: Bool

let previousMessage = messageBeforeMessage(at: index, messages: messages)

if let currentMessage = message.serverTimestamp, let prevMessage = previousMessage?.serverTimestamp {
isTimestampInSameMinuteAsPreviousMessage = currentMessage.isInSameMinute(asDate: prevMessage)
if isChatBubbleSimpleEnabled {
isGroupedWithPreviousMessage = currentMessage.isWithin(minutes: 5, fromDate: prevMessage)
} else {
isGroupedWithPreviousMessage = currentMessage.isInSameMinute(asDate: prevMessage)
}
} else {
isTimestampInSameMinuteAsPreviousMessage = false
isGroupedWithPreviousMessage = false
}

let isLastMessage = (index == 0) && !hasNewerMessagesToLoad
return ConversationMessageContext(
isSameSenderAsPrevious: isPreviousSenderSame(forMessage: message, at: index, messages: messages),
isTimestampInSameMinuteAsPreviousMessage: isTimestampInSameMinuteAsPreviousMessage,
isGroupedWithPreviousMessage: isGroupedWithPreviousMessage,
isFirstMessageOfTheDay: isFirstMessageOfTheDay(for: message, at: index, messages: messages),
isFirstUnreadMessage: message.nonce == firstUnreadMessageNonce,
isLastMessage: isLastMessage,
Expand Down Expand Up @@ -986,6 +990,10 @@ extension Date {
return components == otherComponents
}

func isWithin(minutes: Double, fromDate date: Date) -> Bool {
date.addingTimeInterval(minutes * 60) > self
}

}

extension ZMConversationMessage {
Expand Down
Loading