no message

This commit is contained in:
Peter 2018-06-19 14:12:21 +01:00
parent 01e6511c8e
commit d2b2c273d5
4 changed files with 56 additions and 0 deletions

View File

@ -56,6 +56,8 @@
D03229EF1E6B33FD0000AF9C /* SqliteInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03229ED1E6B33FD0000AF9C /* SqliteInterface.swift */; };
D033A6F71C73D512006A2EAB /* MessageHistoryUnsentTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D033A6F61C73D512006A2EAB /* MessageHistoryUnsentTable.swift */; };
D033A6F91C73E440006A2EAB /* UnsentMessageHistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D033A6F81C73E440006A2EAB /* UnsentMessageHistoryView.swift */; };
D037178B20D923CA004773C8 /* CachedItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D037178A20D923CA004773C8 /* CachedItemView.swift */; };
D037178C20D923CA004773C8 /* CachedItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D037178A20D923CA004773C8 /* CachedItemView.swift */; };
D03BCCF81C73561C0097A291 /* Table.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03BCCF71C73561C0097A291 /* Table.swift */; };
D044CA2A1C617D39002160FF /* SeedConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D044CA291C617D39002160FF /* SeedConfiguration.swift */; };
D044CA2C1C617E2D002160FF /* MessageHistoryMetadataTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D044CA2B1C617E2D002160FF /* MessageHistoryMetadataTable.swift */; };
@ -413,6 +415,7 @@
D03229ED1E6B33FD0000AF9C /* SqliteInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SqliteInterface.swift; sourceTree = "<group>"; };
D033A6F61C73D512006A2EAB /* MessageHistoryUnsentTable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageHistoryUnsentTable.swift; sourceTree = "<group>"; };
D033A6F81C73E440006A2EAB /* UnsentMessageHistoryView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnsentMessageHistoryView.swift; sourceTree = "<group>"; };
D037178A20D923CA004773C8 /* CachedItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CachedItemView.swift; sourceTree = "<group>"; };
D03BCCF71C73561C0097A291 /* Table.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Table.swift; sourceTree = "<group>"; };
D044CA291C617D39002160FF /* SeedConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SeedConfiguration.swift; sourceTree = "<group>"; };
D044CA2B1C617E2D002160FF /* MessageHistoryMetadataTable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageHistoryMetadataTable.swift; sourceTree = "<group>"; };
@ -860,6 +863,7 @@
D0BE3033206026C800FBE6D8 /* MessagesView.swift */,
D048B4AE20A5EEAE00C79D31 /* AdditionalChatListItemsView.swift */,
D06ECFC420B796DC00C576C2 /* NoticeEntryView.swift */,
D037178A20D923CA004773C8 /* CachedItemView.swift */,
);
name = Views;
sourceTree = "<group>";
@ -1154,6 +1158,7 @@
D0943AFC1FDAE074001522CC /* ChatListTopPeersView.swift in Sources */,
D048B4A920A5CBE400C79D31 /* AdditionalChatListItemsTable.swift in Sources */,
D073CE771DCBF3B4007511FD /* Media.swift in Sources */,
D037178C20D923CA004773C8 /* CachedItemView.swift in Sources */,
D0A352F91F549D95001423DC /* InvalidatedMessageHistoryTagSummariesView.swift in Sources */,
D073CE791DCBF3B4007511FD /* ChatListHole.swift in Sources */,
D0F53BF41E794C6700117362 /* PeerChatStateView.swift in Sources */,
@ -1328,6 +1333,7 @@
D021E0D81DB4FD1300C6B04F /* ItemCollectionItemTable.swift in Sources */,
D048B4A820A5CBE400C79D31 /* AdditionalChatListItemsTable.swift in Sources */,
D0F9E85B1C565EBB00037222 /* MessageMediaTable.swift in Sources */,
D037178B20D923CA004773C8 /* CachedItemView.swift in Sources */,
D049EAF01E44D9B900A2CD3A /* PostboxStateView.swift in Sources */,
D0079F631D5A242500A27A2C /* ContactPeerIdsView.swift in Sources */,
D0E23DE21E808A9400B9B6D2 /* ItemCollectionIdsView.swift in Sources */,

View File

@ -0,0 +1,31 @@
import Foundation
final class MutableCachedItemView: MutablePostboxView {
private let id: ItemCacheEntryId
fileprivate var value: PostboxCoding?
init(postbox: Postbox, id: ItemCacheEntryId) {
self.id = id
self.value = postbox.itemCacheTable.retrieve(id: id, metaTable: postbox.itemCacheMetaTable)
}
func replay(postbox: Postbox, transaction: PostboxTransaction) -> Bool {
if transaction.updatedCacheEntryKeys.contains(self.id) {
self.value = postbox.itemCacheTable.retrieve(id: id, metaTable: postbox.itemCacheMetaTable)
return true
}
return false
}
func immutableView() -> PostboxView {
return CachedItemView(self)
}
}
public final class CachedItemView: PostboxView {
public let value: PostboxCoding?
init(_ view: MutableCachedItemView) {
self.value = view.value
}
}

View File

@ -813,6 +813,14 @@ public final class Transaction {
self.postbox?.replaceMessageTagSummary(peerId: peerId, tagMask: tagMask, namespace: namespace, count: count, maxId: maxId)
}
public func getMessageIndicesWithTag(peerId: PeerId, tag: MessageTags) -> [MessageIndex] {
assert(!self.disposed)
guard let postbox = self.postbox else {
return []
}
return postbox.messageHistoryTagsTable.earlierIndices(tag, peerId: peerId, index: nil, count: 10000)
}
public func scanMessages(peerId: PeerId, tagMask: MessageTags, _ f: (ScanMessageEntry) -> Bool) {
assert(!self.disposed)
self.postbox?.scanMessages(peerId: peerId, tagMask: tagMask, f)

View File

@ -26,6 +26,7 @@ public enum PostboxViewKey: Hashable {
case messages(Set<MessageId>)
case additionalChatListItems
case noticeEntry(NoticeEntryKey)
case cachedItem(ItemCacheEntryId)
public var hashValue: Int {
switch self {
@ -79,6 +80,8 @@ public enum PostboxViewKey: Hashable {
return 11
case let .noticeEntry(key):
return key.hashValue
case let .cachedItem(id):
return id.hashValue
}
}
@ -234,6 +237,12 @@ public enum PostboxViewKey: Hashable {
} else {
return false
}
case let .cachedItem(id):
if case .cachedItem(id) = rhs {
return true
} else {
return false
}
}
}
}
@ -290,5 +299,7 @@ func postboxViewForKey(postbox: Postbox, key: PostboxViewKey) -> MutablePostboxV
return MutableAdditionalChatListItemsView(postbox: postbox)
case let .noticeEntry(key):
return MutableNoticeEntryView(postbox: postbox, key: key)
case let .cachedItem(id):
return MutableCachedItemView(postbox: postbox, id: id)
}
}