no message

This commit is contained in:
Peter
2016-11-04 01:39:54 +03:00
parent abfd19bda8
commit 2168cdd46a
13 changed files with 212 additions and 92 deletions

View File

@@ -62,7 +62,7 @@ enum ChatListNodeEntryId: Hashable, CustomStringConvertible {
enum ChatListNodeEntry: Comparable, Identifiable {
case SearchEntry
case MessageEntry(Message, CombinedPeerReadState?, PeerNotificationSettings?)
case MessageEntry(MessageIndex, Message, CombinedPeerReadState?, PeerNotificationSettings?, PeerChatListEmbeddedInterfaceState?)
case HoleEntry(ChatListHole)
case Nothing(MessageIndex)
@@ -70,8 +70,8 @@ enum ChatListNodeEntry: Comparable, Identifiable {
switch self {
case .SearchEntry:
return MessageIndex.absoluteUpperBound()
case let .MessageEntry(message, _, _):
return MessageIndex(message)
case let .MessageEntry(index, _, _, _, _):
return index
case let .HoleEntry(hole):
return hole.index
case let .Nothing(index):
@@ -83,8 +83,8 @@ enum ChatListNodeEntry: Comparable, Identifiable {
switch self {
case .SearchEntry:
return .Search
case let .MessageEntry(message, _, _):
return .PeerId(message.id.peerId.toInt64())
case let .MessageEntry(index, _, _, _, _):
return .PeerId(index.id.peerId.toInt64())
case let .HoleEntry(hole):
return .Hole(Int64(hole.index.id.id))
case let .Nothing(index):
@@ -100,41 +100,51 @@ enum ChatListNodeEntry: Comparable, Identifiable {
switch lhs {
case .SearchEntry:
switch rhs {
case .SearchEntry:
return true
default:
return false
}
case let .MessageEntry(lhsMessage, lhsUnreadCount, lhsNotificationSettings):
switch rhs {
case let .MessageEntry(rhsMessage, rhsUnreadCount, rhsNotificationSettings):
if lhsMessage.id != rhsMessage.id || lhsMessage.flags != rhsMessage.flags || lhsUnreadCount != rhsUnreadCount {
case .SearchEntry:
return true
default:
return false
}
if let lhsNotificationSettings = lhsNotificationSettings, let rhsNotificationSettings = rhsNotificationSettings {
if !lhsNotificationSettings.isEqual(to: rhsNotificationSettings) {
}
case let .MessageEntry(lhsIndex, lhsMessage, lhsUnreadCount, lhsNotificationSettings, lhsEmbeddedState):
switch rhs {
case let .MessageEntry(rhsIndex, rhsMessage, rhsUnreadCount, rhsNotificationSettings, rhsEmbeddedState):
if lhsIndex != rhsIndex {
return false
}
} else if (lhsNotificationSettings != nil) != (rhsNotificationSettings != nil) {
return false
}
return true
default:
break
if lhsMessage.id != rhsMessage.id || lhsMessage.flags != rhsMessage.flags || lhsUnreadCount != rhsUnreadCount {
return false
}
if let lhsNotificationSettings = lhsNotificationSettings, let rhsNotificationSettings = rhsNotificationSettings {
if !lhsNotificationSettings.isEqual(to: rhsNotificationSettings) {
return false
}
} else if (lhsNotificationSettings != nil) != (rhsNotificationSettings != nil) {
return false
}
if let lhsEmbeddedState = lhsEmbeddedState, let rhsEmbeddedState = rhsEmbeddedState {
if !lhsEmbeddedState.isEqual(to: rhsEmbeddedState) {
return false
}
} else if (lhsEmbeddedState != nil) != (rhsEmbeddedState != nil) {
return false
}
return true
default:
break
}
case let .HoleEntry(lhsHole):
switch rhs {
case let .HoleEntry(rhsHole):
return lhsHole == rhsHole
default:
return false
case let .HoleEntry(rhsHole):
return lhsHole == rhsHole
default:
return false
}
case let .Nothing(lhsIndex):
switch rhs {
case let .Nothing(rhsIndex):
return lhsIndex == rhsIndex
default:
return false
case let .Nothing(rhsIndex):
return lhsIndex == rhsIndex
default:
return false
}
}
return false
@@ -145,8 +155,8 @@ func chatListNodeEntriesForView(_ view: ChatListView) -> [ChatListNodeEntry] {
var result: [ChatListNodeEntry] = []
for entry in view.entries {
switch entry {
case let .MessageEntry(message, combinedReadState, notificationSettings):
result.append(.MessageEntry(message, combinedReadState, notificationSettings))
case let .MessageEntry(index, message, combinedReadState, notificationSettings, embeddedState):
result.append(.MessageEntry(index, message, combinedReadState, notificationSettings, embeddedState))
case let .HoleEntry(hole):
result.append(.HoleEntry(hole))
case let .Nothing(index):