diff --git a/Postbox.xcodeproj/project.pbxproj b/Postbox.xcodeproj/project.pbxproj index f833cd4a5e..8053f8c1a2 100644 --- a/Postbox.xcodeproj/project.pbxproj +++ b/Postbox.xcodeproj/project.pbxproj @@ -1995,6 +1995,153 @@ }; name = "Release Hockeyapp Internal"; }; + D0ADF924212B3AC400310BBC /* Debug AppStore LLC */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D07516491B2D9E2500AE42E0 /* Postbox.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = "Debug AppStore LLC"; + }; + D0ADF925212B3AC400310BBC /* Debug AppStore LLC */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D07516491B2D9E2500AE42E0 /* Postbox.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = Postbox/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_CFLAGS = ( + "-DSQLITE_HAS_CODEC=1", + "-DSQLCIPHER_CRYPTO_CC=1", + "-DSQLITE_ENABLE_FTS5", + "-DSQLITE_DEFAULT_MEMSTATUS=0", + ); + OTHER_SWIFT_FLAGS = "-DDEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = "org.telegram.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = X834Q8SBVP/; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_REFLECTION_METADATA_LEVEL = none; + SWIFT_VERSION = 4.0; + }; + name = "Debug AppStore LLC"; + }; + D0ADF926212B3AC400310BBC /* Debug AppStore LLC */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D07516491B2D9E2500AE42E0 /* Postbox.xcconfig */; + buildSettings = { + DEVELOPMENT_TEAM = ""; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "/Users/peter/Documents/PostBoxTest/submodules/SSignalKit/build/Debug-iphoneos", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = PostboxTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "org.telegram.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 3.0; + }; + name = "Debug AppStore LLC"; + }; + D0ADF927212B3AC400310BBC /* Debug AppStore LLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + COMBINE_HIDPI_IMAGES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + GCC_OPTIMIZATION_LEVEL = s; + INFOPLIST_FILE = PostboxMac/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_PRIVATE_FILE = "$(SRCROOT)/Postbox/module.private-mac.modulemap"; + OTHER_CFLAGS = ( + "-DSQLITE_HAS_CODEC=1", + "-DSQLCIPHER_CRYPTO_CC=1", + "-DSQLITE_ENABLE_FTS5", + "-DSQLITE_DEFAULT_MEMSTATUS=0", + ); + OTHER_SWIFT_FLAGS = "-DDEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.Telegram.PostboxMac; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 4.0; + }; + name = "Debug AppStore LLC"; + }; D0B418181D7DFAF3004562A4 /* Debug Hockeyapp */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2186,6 +2333,7 @@ buildConfigurations = ( D0B418181D7DFAF3004562A4 /* Debug Hockeyapp */, D079FD0F1F06BE070038FADE /* Debug AppStore */, + D0ADF927212B3AC400310BBC /* Debug AppStore LLC */, C22069CB1E8EB4BF00E82730 /* Release Hockeyapp */, D0924FDB1FE52BF1003F693F /* Release Hockeyapp Internal */, D0B4181A1D7DFAF3004562A4 /* Release AppStore */, @@ -2198,6 +2346,7 @@ buildConfigurations = ( D0E3A75E1B28A7E300A402D9 /* Debug Hockeyapp */, D079FD0C1F06BE070038FADE /* Debug AppStore */, + D0ADF924212B3AC400310BBC /* Debug AppStore LLC */, C22069C81E8EB4BF00E82730 /* Release Hockeyapp */, D0924FD81FE52BF1003F693F /* Release Hockeyapp Internal */, D086A5711CC0116A00F08284 /* Release AppStore */, @@ -2210,6 +2359,7 @@ buildConfigurations = ( D0E3A7611B28A7E300A402D9 /* Debug Hockeyapp */, D079FD0D1F06BE070038FADE /* Debug AppStore */, + D0ADF925212B3AC400310BBC /* Debug AppStore LLC */, C22069C91E8EB4BF00E82730 /* Release Hockeyapp */, D0924FD91FE52BF1003F693F /* Release Hockeyapp Internal */, D086A5721CC0116A00F08284 /* Release AppStore */, @@ -2222,6 +2372,7 @@ buildConfigurations = ( D0E3A7641B28A7E300A402D9 /* Debug Hockeyapp */, D079FD0E1F06BE070038FADE /* Debug AppStore */, + D0ADF926212B3AC400310BBC /* Debug AppStore LLC */, C22069CA1E8EB4BF00E82730 /* Release Hockeyapp */, D0924FDA1FE52BF1003F693F /* Release Hockeyapp Internal */, D086A5731CC0116A00F08284 /* Release AppStore */, diff --git a/Postbox/ChatListTable.swift b/Postbox/ChatListTable.swift index 4e21aaf90b..e918d1a382 100644 --- a/Postbox/ChatListTable.swift +++ b/Postbox/ChatListTable.swift @@ -169,7 +169,13 @@ final class ChatListTable: Table { private func ensureInitialized(groupId: PeerGroupId?) { if !self.metadataTable.isInitializedChatList(groupId: groupId) { - for hole in self.seedConfiguration.initializeChatListWithHoles { + let hole: ChatListHole? + if groupId != nil { + hole = self.seedConfiguration.initializeChatListWithHole.groups + } else { + hole = self.seedConfiguration.initializeChatListWithHole.topLevel + } + if let hole = hole { self.justInsertHole(groupId: groupId, hole: hole) } self.metadataTable.setInitializedChatList(groupId: groupId) diff --git a/Postbox/MediaBox.swift b/Postbox/MediaBox.swift index e0e66129a4..b8099cadb5 100644 --- a/Postbox/MediaBox.swift +++ b/Postbox/MediaBox.swift @@ -180,6 +180,13 @@ public final class MediaBox { } } + public func copyResourceData(_ id: MediaResourceId, fromTempPath: String) { + self.dataQueue.async { + let paths = self.storePathsForId(id) + let _ = try? FileManager.default.copyItem(at: URL(fileURLWithPath: fromTempPath), to: URL(fileURLWithPath: paths.complete)) + } + } + public func moveResourceData(from: MediaResourceId, to: MediaResourceId) { self.dataQueue.async { let pathsFrom = self.storePathsForId(from) diff --git a/Postbox/MessageHistoryReadStateTable.swift b/Postbox/MessageHistoryReadStateTable.swift index 0ff1d357b0..40483174a3 100644 --- a/Postbox/MessageHistoryReadStateTable.swift +++ b/Postbox/MessageHistoryReadStateTable.swift @@ -293,7 +293,7 @@ final class MessageHistoryReadStateTable: Table { return (nil, false) } - func applyIncomingMaxReadIndex(_ messageIndex: MessageIndex, incomingStatsInRange: (MessageIndex, MessageIndex) -> (count: Int, holes: Bool, readMesageIds: [MessageId])) -> (CombinedPeerReadState?, Bool, [MessageId]) { + func applyIncomingMaxReadIndex(_ messageIndex: MessageIndex, topMessageIndex: MessageIndex?, incomingStatsInRange: (MessageIndex, MessageIndex) -> (count: Int, holes: Bool, readMesageIds: [MessageId])) -> (CombinedPeerReadState?, Bool, [MessageId]) { if let states = self.get(messageIndex.id.peerId), let state = states.namespaces[messageIndex.id.namespace] { if traceReadStates { print("[ReadStateTable] applyIncomingMaxReadIndex peerId: \(messageIndex.id.peerId), maxReadIndex: \(messageIndex) (before: \(states.namespaces))") @@ -303,8 +303,16 @@ final class MessageHistoryReadStateTable: Table { case .idBased: assertionFailure() case let .indexBased(maxIncomingReadIndex, maxOutgoingReadIndex, count, markedUnread): - if maxIncomingReadIndex < messageIndex || markedUnread { - let (deltaCount, holes, messageIds) = incomingStatsInRange(maxIncomingReadIndex.successor(), messageIndex) + var readPastTopIndex = false + if let topMessageIndex = topMessageIndex, messageIndex >= topMessageIndex && count != 0 { + readPastTopIndex = true + } + if maxIncomingReadIndex < messageIndex || markedUnread || readPastTopIndex { + let (realDeltaCount, holes, messageIds) = incomingStatsInRange(maxIncomingReadIndex.successor(), messageIndex) + var deltaCount = realDeltaCount + if readPastTopIndex { + deltaCount = max(Int(count), deltaCount) + } if traceReadStates { print("[ReadStateTable] applyIncomingMaxReadIndex after deltaCount: \(deltaCount), holes: \(holes)") @@ -378,7 +386,8 @@ final class MessageHistoryReadStateTable: Table { return (combinedState, holes ? .Push(thenSync: true) : .None, []) case .indexBased: - let (combinedState, holes, messageIds) = self.applyIncomingMaxReadIndex(messageIndex, incomingStatsInRange: incomingIndexStatsInRange) + let topMessageIndex: MessageIndex? = topMessageIndexByNamespace(messageIndex.id.namespace) + let (combinedState, holes, messageIds) = self.applyIncomingMaxReadIndex(messageIndex, topMessageIndex: topMessageIndex, incomingStatsInRange: incomingIndexStatsInRange) if let combinedState = combinedState { return (combinedState, .Push(thenSync: holes), messageIds) @@ -399,7 +408,7 @@ final class MessageHistoryReadStateTable: Table { return (combinedState, holes ? .Push(thenSync: true) : .None, []) case .indexBased: - let (combinedState, holes, messageIds) = self.applyIncomingMaxReadIndex(topIndex, incomingStatsInRange: incomingIndexStatsInRange) + let (combinedState, holes, messageIds) = self.applyIncomingMaxReadIndex(topIndex, topMessageIndex: topMessageIndexByNamespace(namespace), incomingStatsInRange: incomingIndexStatsInRange) if let combinedState = combinedState { return (combinedState, .Push(thenSync: holes), messageIds) diff --git a/Postbox/PeerOperationLogTable.swift b/Postbox/PeerOperationLogTable.swift index 601967c812..5599467a64 100644 --- a/Postbox/PeerOperationLogTable.swift +++ b/Postbox/PeerOperationLogTable.swift @@ -131,6 +131,10 @@ final class PeerOperationLogTable: Table { return self.metadataTable.getNextLocalIndex(peerId: peerId, tag: tag) } + func resetIndices(peerId: PeerId, tag: PeerOperationLogTag, nextTagLocalIndex: Int32) { + self.metadataTable.setNextLocalIndex(peerId: peerId, tag: tag, index: nextTagLocalIndex) + } + func addEntry(peerId: PeerId, tag: PeerOperationLogTag, tagLocalIndex: StorePeerOperationLogEntryTagLocalIndex, tagMergedIndex: StorePeerOperationLogEntryTagMergedIndex, contents: PostboxCoding, operations: inout [PeerMergedOperationLogOperation]) { let index: Int32 switch tagLocalIndex { diff --git a/Postbox/Postbox.swift b/Postbox/Postbox.swift index 681dd26030..9058ad0a23 100644 --- a/Postbox/Postbox.swift +++ b/Postbox/Postbox.swift @@ -628,6 +628,11 @@ public final class Transaction { } } + public func operationLogResetIndices(peerId: PeerId, tag: PeerOperationLogTag, nextTagLocalIndex: Int32) { + assert(!self.disposed) + self.postbox?.peerOperationLogTable.resetIndices(peerId: peerId, tag: tag, nextTagLocalIndex: nextTagLocalIndex) + } + public func operationLogAddEntry(peerId: PeerId, tag: PeerOperationLogTag, tagLocalIndex: StorePeerOperationLogEntryTagLocalIndex, tagMergedIndex: StorePeerOperationLogEntryTagMergedIndex, contents: PostboxCoding) { assert(!self.disposed) self.postbox?.operationLogAddEntry(peerId: peerId, tag: tag, tagLocalIndex: tagLocalIndex, tagMergedIndex: tagMergedIndex, contents: contents) diff --git a/Postbox/SeedConfiguration.swift b/Postbox/SeedConfiguration.swift index 86b11c11a0..2690f78072 100644 --- a/Postbox/SeedConfiguration.swift +++ b/Postbox/SeedConfiguration.swift @@ -1,15 +1,15 @@ import Foundation public final class SeedConfiguration { - public let initializeChatListWithHoles: [ChatListHole] + public let initializeChatListWithHole: (topLevel: ChatListHole?, groups: ChatListHole?) public let initializeMessageNamespacesWithHoles: [(PeerId.Namespace, MessageId.Namespace)] public let existingMessageTags: MessageTags public let messageTagsWithSummary: MessageTags public let existingGlobalMessageTags: GlobalMessageTags public let peerNamespacesRequiringMessageTextIndex: [PeerId.Namespace] - public init(initializeChatListWithHoles: [ChatListHole], initializeMessageNamespacesWithHoles: [(PeerId.Namespace, MessageId.Namespace)], existingMessageTags: MessageTags, messageTagsWithSummary: MessageTags, existingGlobalMessageTags: GlobalMessageTags, peerNamespacesRequiringMessageTextIndex: [PeerId.Namespace]) { - self.initializeChatListWithHoles = initializeChatListWithHoles + public init(initializeChatListWithHole: (topLevel: ChatListHole?, groups: ChatListHole?), initializeMessageNamespacesWithHoles: [(PeerId.Namespace, MessageId.Namespace)], existingMessageTags: MessageTags, messageTagsWithSummary: MessageTags, existingGlobalMessageTags: GlobalMessageTags, peerNamespacesRequiringMessageTextIndex: [PeerId.Namespace]) { + self.initializeChatListWithHole = initializeChatListWithHole self.initializeMessageNamespacesWithHoles = initializeMessageNamespacesWithHoles self.existingMessageTags = existingMessageTags self.messageTagsWithSummary = messageTagsWithSummary diff --git a/PostboxTests/ChatListTableTests.swift b/PostboxTests/ChatListTableTests.swift index a72dc0abad..c82ed20098 100644 --- a/PostboxTests/ChatListTableTests.swift +++ b/PostboxTests/ChatListTableTests.swift @@ -100,7 +100,7 @@ class ChatListTableTests: XCTestCase { path = NSTemporaryDirectory() + "\(randomId)" self.valueBox = SqliteValueBox(basePath: path!, queue: Queue.mainQueue()) - let seedConfiguration = SeedConfiguration(initializeChatListWithHoles: [], initializeMessageNamespacesWithHoles: [], existingMessageTags: [], messageTagsWithSummary: [], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) + let seedConfiguration = SeedConfiguration(initializeChatListWithHole: (topLevel: nil, groups: nil), initializeMessageNamespacesWithHoles: [], existingMessageTags: [], messageTagsWithSummary: [], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) self.globalMessageIdsTable = GlobalMessageIdsTable(valueBox: self.valueBox!, table: GlobalMessageIdsTable.tableSpec(7), namespace: namespace) self.historyMetadataTable = MessageHistoryMetadataTable(valueBox: self.valueBox!, table: MessageHistoryMetadataTable.tableSpec(8)) diff --git a/PostboxTests/MessageHistoryIndexTableTests.swift b/PostboxTests/MessageHistoryIndexTableTests.swift index a5bfe997f6..85ea67bd0f 100644 --- a/PostboxTests/MessageHistoryIndexTableTests.swift +++ b/PostboxTests/MessageHistoryIndexTableTests.swift @@ -77,7 +77,7 @@ class MessageHistoryIndexTableTests: XCTestCase { path = NSTemporaryDirectory() + "\(randomId)" self.valueBox = SqliteValueBox(basePath: path!, queue: Queue.mainQueue()) - let seedConfiguration = SeedConfiguration(initializeChatListWithHoles: [], initializeMessageNamespacesWithHoles: [], existingMessageTags: [], messageTagsWithSummary: [], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) + let seedConfiguration = SeedConfiguration(initializeChatListWithHole: (topLevel: nil, groups: nil), initializeMessageNamespacesWithHoles: [], existingMessageTags: [], messageTagsWithSummary: [], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) self.globalMessageIdsTable = GlobalMessageIdsTable(valueBox: self.valueBox!, table: GlobalMessageIdsTable.tableSpec(2), namespace: namespace) self.historyMetadataTable = MessageHistoryMetadataTable(valueBox: self.valueBox!, table: MessageHistoryMetadataTable.tableSpec(8)) diff --git a/PostboxTests/MessageHistoryTableTests.swift b/PostboxTests/MessageHistoryTableTests.swift index 9382cb562f..54e2d42b2f 100644 --- a/PostboxTests/MessageHistoryTableTests.swift +++ b/PostboxTests/MessageHistoryTableTests.swift @@ -295,7 +295,7 @@ class MessageHistoryTableTests: XCTestCase { path = NSTemporaryDirectory() + "\(randomId)" self.valueBox = SqliteValueBox(basePath: path!, queue: Queue.mainQueue()) - let seedConfiguration = SeedConfiguration(initializeChatListWithHoles: [], initializeMessageNamespacesWithHoles: [], existingMessageTags: [.First, .Second, .Summary], messageTagsWithSummary: [.Summary], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) + let seedConfiguration = SeedConfiguration(initializeChatListWithHole: (topLevel: nil, groups: nil), initializeMessageNamespacesWithHoles: [], existingMessageTags: [.First, .Second, .Summary], messageTagsWithSummary: [.Summary], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) self.globalMessageIdsTable = GlobalMessageIdsTable(valueBox: self.valueBox!, table: GlobalMessageIdsTable.tableSpec(5), namespace: namespace) self.historyMetadataTable = MessageHistoryMetadataTable(valueBox: self.valueBox!, table: MessageHistoryMetadataTable.tableSpec(7)) diff --git a/PostboxTests/OrderStatisticTreeTests.swift b/PostboxTests/OrderStatisticTreeTests.swift index b74f93b22b..01a0e00bbd 100644 --- a/PostboxTests/OrderStatisticTreeTests.swift +++ b/PostboxTests/OrderStatisticTreeTests.swift @@ -96,7 +96,7 @@ class OrderStatisticTreeTests: XCTestCase { path = NSTemporaryDirectory() + "\(randomId)" self.valueBox = SqliteValueBox(basePath: path!, queue: Queue.mainQueue()) - let seedConfiguration = SeedConfiguration(initializeChatListWithHoles: [], initializeMessageNamespacesWithHoles: [], existingMessageTags: [.First, .Second], messageTagsWithSummary: [], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) + let seedConfiguration = SeedConfiguration(initializeChatListWithHole: (topLevel: nil, groups: nil), initializeMessageNamespacesWithHoles: [], existingMessageTags: [.First, .Second], messageTagsWithSummary: [], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) self.globalMessageIdsTable = GlobalMessageIdsTable(valueBox: self.valueBox!, table: GlobalMessageIdsTable.tableSpec(5), namespace: namespace) self.historyMetadataTable = MessageHistoryMetadataTable(valueBox: self.valueBox!, table: MessageHistoryMetadataTable.tableSpec(7)) diff --git a/PostboxTests/ReadStateTableTests.swift b/PostboxTests/ReadStateTableTests.swift index b84809cb92..61ced574ef 100644 --- a/PostboxTests/ReadStateTableTests.swift +++ b/PostboxTests/ReadStateTableTests.swift @@ -96,7 +96,7 @@ class ReadStateTableTests: XCTestCase { path = NSTemporaryDirectory() + "\(randomId)" self.valueBox = SqliteValueBox(basePath: path!, queue: Queue.mainQueue()) - let seedConfiguration = SeedConfiguration(initializeChatListWithHoles: [], initializeMessageNamespacesWithHoles: [], existingMessageTags: [.First, .Second], messageTagsWithSummary: [], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) + let seedConfiguration = SeedConfiguration(initializeChatListWithHole: (topLevel: nil, groups: nil), initializeMessageNamespacesWithHoles: [], existingMessageTags: [.First, .Second], messageTagsWithSummary: [], existingGlobalMessageTags: [], peerNamespacesRequiringMessageTextIndex: []) self.globalMessageIdsTable = GlobalMessageIdsTable(valueBox: self.valueBox!, table: GlobalMessageIdsTable.tableSpec(5), namespace: namespace) self.historyMetadataTable = MessageHistoryMetadataTable(valueBox: self.valueBox!, table: MessageHistoryMetadataTable.tableSpec(7))