no message

This commit is contained in:
Peter 2017-07-14 15:25:56 +03:00
parent aa5346e28a
commit e2f19e6b03
10 changed files with 493 additions and 293 deletions

View File

@ -89,6 +89,8 @@
D07827C11E0079CB00071108 /* StringIndexTokens.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07827C01E0079CB00071108 /* StringIndexTokens.swift */; };
D07827C31E008F7300071108 /* ReverseIndexReferenceTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07827C21E008F7300071108 /* ReverseIndexReferenceTable.swift */; };
D07827C51E00B23F00071108 /* PeerNameIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07827C41E00B23F00071108 /* PeerNameIndexTable.swift */; };
D079FCE61F06A3170038FADE /* NoticeTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCE51F06A3170038FADE /* NoticeTable.swift */; };
D079FCE71F06A31C0038FADE /* NoticeTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCE51F06A3170038FADE /* NoticeTable.swift */; };
D07CFF811DCA765D00761F81 /* PeerChatInterfaceState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF801DCA765D00761F81 /* PeerChatInterfaceState.swift */; };
D07CFF831DCA909100761F81 /* PeerChatInterfaceStateTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF821DCA909100761F81 /* PeerChatInterfaceStateTable.swift */; };
D07CFF851DCA99C400761F81 /* InitialMessageHistoryData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF841DCA99C400761F81 /* InitialMessageHistoryData.swift */; };
@ -344,6 +346,7 @@
D07827C01E0079CB00071108 /* StringIndexTokens.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringIndexTokens.swift; sourceTree = "<group>"; };
D07827C21E008F7300071108 /* ReverseIndexReferenceTable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReverseIndexReferenceTable.swift; sourceTree = "<group>"; };
D07827C41E00B23F00071108 /* PeerNameIndexTable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerNameIndexTable.swift; sourceTree = "<group>"; };
D079FCE51F06A3170038FADE /* NoticeTable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NoticeTable.swift; sourceTree = "<group>"; };
D07CFF801DCA765D00761F81 /* PeerChatInterfaceState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerChatInterfaceState.swift; sourceTree = "<group>"; };
D07CFF821DCA909100761F81 /* PeerChatInterfaceStateTable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerChatInterfaceStateTable.swift; sourceTree = "<group>"; };
D07CFF841DCA99C400761F81 /* InitialMessageHistoryData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InitialMessageHistoryData.swift; sourceTree = "<group>"; };
@ -601,6 +604,7 @@
D0F82CFC1E4345D7007E499C /* OrderedItemListTable.swift */,
D0F82D0E1E43A024007E499C /* OrderedItemListIndexTable.swift */,
D01C7F061EFC1ED3008305F1 /* UnorderedItemListTable.swift */,
D079FCE51F06A3170038FADE /* NoticeTable.swift */,
);
name = Tables;
sourceTree = "<group>";
@ -883,6 +887,7 @@
};
D0E3A7541B28A7E300A402D9 = {
CreatedOnToolsVersion = 6.3.1;
ProvisioningStyle = Manual;
};
};
};
@ -979,6 +984,7 @@
D0F7B1CC1E045C6A007EB8A5 /* ChatListIndexTable.swift in Sources */,
D0B4185E1D7DFE54004562A4 /* IpcNotifier.mm in Sources */,
D0F7B1D31E045C6A007EB8A5 /* CachedPeerDataTable.swift in Sources */,
D079FCE71F06A31C0038FADE /* NoticeTable.swift in Sources */,
D0F7B1D51E045C6A007EB8A5 /* PeerChatStateTable.swift in Sources */,
D0F82CFE1E4345D7007E499C /* OrderedItemListTable.swift in Sources */,
D0F7B1C51E045C6A007EB8A5 /* MessageHistoryMetadataTable.swift in Sources */,
@ -1110,6 +1116,7 @@
D0AAD1B51E32673C00D5B9DE /* TimestampBasedMessageAttributesView.swift in Sources */,
D010B61A1E1E463900C3E282 /* PeerMergedOperationLogIndexTable.swift in Sources */,
D0F9E8671C58D08900037222 /* ChatListIndexTable.swift in Sources */,
D079FCE61F06A3170038FADE /* NoticeTable.swift in Sources */,
D0E3A7A21B28B7DC00A402D9 /* Media.swift in Sources */,
D0E3A7881B28AE9C00A402D9 /* Coding.swift in Sources */,
D0C9DA391C65782500855278 /* SimpleSet.swift in Sources */,
@ -1219,7 +1226,7 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
C22069C81E8EB4BF00E82730 /* AppStore */ = {
C22069C81E8EB4BF00E82730 /* Release Hockeyapp */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D07516491B2D9E2500AE42E0 /* Postbox.xcconfig */;
buildSettings = {
@ -1255,14 +1262,15 @@
MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = AppStore;
name = "Release Hockeyapp";
};
C22069C91E8EB4BF00E82730 /* AppStore */ = {
C22069C91E8EB4BF00E82730 /* Release Hockeyapp */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
@ -1292,11 +1300,12 @@
SWIFT_REFLECTION_METADATA_LEVEL = none;
SWIFT_VERSION = 3.0;
};
name = AppStore;
name = "Release Hockeyapp";
};
C22069CA1E8EB4BF00E82730 /* AppStore */ = {
C22069CA1E8EB4BF00E82730 /* Release Hockeyapp */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
@ -1306,12 +1315,13 @@
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_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
};
name = AppStore;
name = "Release Hockeyapp";
};
C22069CB1E8EB4BF00E82730 /* AppStore */ = {
C22069CB1E8EB4BF00E82730 /* Release Hockeyapp */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
@ -1345,208 +1355,9 @@
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
};
name = AppStore;
name = "Release Hockeyapp";
};
D086A5711CC0116A00F08284 /* Hockeyapp */ = {
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_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
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 = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Hockeyapp;
};
D086A5721CC0116A00F08284 /* Hockeyapp */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
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",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.telegram.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = X834Q8SBVP/;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_REFLECTION_METADATA_LEVEL = none;
SWIFT_VERSION = 3.0;
};
name = Hockeyapp;
};
D086A5731CC0116A00F08284 /* Hockeyapp */ = {
isa = XCBuildConfiguration;
buildSettings = {
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
"/Users/peter/Documents/PostBoxTest/submodules/SSignalKit/build/Debug-iphoneos",
);
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)";
SWIFT_VERSION = 3.0;
};
name = Hockeyapp;
};
D0B418181D7DFAF3004562A4 /* Debug */ = {
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;
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;
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 = 3.0;
};
name = Debug;
};
D0B418191D7DFAF3004562A4 /* Release */ = {
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 = "-";
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
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;
OTHER_CFLAGS = (
"-DSQLITE_HAS_CODEC=1",
"-DSQLCIPHER_CRYPTO_CC=1",
"-DSQLITE_ENABLE_FTS5",
"-DSQLITE_DEFAULT_MEMSTATUS=0",
);
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.Telegram.PostboxMac;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
};
name = Release;
};
D0B4181A1D7DFAF3004562A4 /* Hockeyapp */ = {
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 = "-";
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
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;
OTHER_CFLAGS = (
"-DSQLITE_HAS_CODEC=1",
"-DSQLCIPHER_CRYPTO_CC=1",
"-DSQLITE_ENABLE_FTS5",
"-DSQLITE_DEFAULT_MEMSTATUS=0",
);
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.Telegram.PostboxMac;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
};
name = Hockeyapp;
};
D0E3A75E1B28A7E300A402D9 /* Debug */ = {
D079FD0C1F06BE070038FADE /* Debug AppStore */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D07516491B2D9E2500AE42E0 /* Postbox.xcconfig */;
buildSettings = {
@ -1595,9 +1406,103 @@
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
name = "Debug AppStore";
};
D0E3A75F1B28A7E300A402D9 /* Release */ = {
D079FD0D1F06BE070038FADE /* Debug AppStore */ = {
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 = 3.0;
};
name = "Debug AppStore";
};
D079FD0E1F06BE070038FADE /* Debug AppStore */ = {
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";
};
D079FD0F1F06BE070038FADE /* Debug AppStore */ = {
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;
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;
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 = 3.0;
};
name = "Debug AppStore";
};
D086A5711CC0116A00F08284 /* Release AppStore */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D07516491B2D9E2500AE42E0 /* Postbox.xcconfig */;
buildSettings = {
@ -1633,14 +1538,188 @@
MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
name = "Release AppStore";
};
D0E3A7611B28A7E300A402D9 /* Debug */ = {
D086A5721CC0116A00F08284 /* Release AppStore */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
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",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.telegram.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = X834Q8SBVP/;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_REFLECTION_METADATA_LEVEL = none;
SWIFT_VERSION = 3.0;
};
name = "Release AppStore";
};
D086A5731CC0116A00F08284 /* Release AppStore */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
"/Users/peter/Documents/PostBoxTest/submodules/SSignalKit/build/Debug-iphoneos",
);
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 = "Release AppStore";
};
D0B418181D7DFAF3004562A4 /* Debug Hockeyapp */ = {
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;
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;
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 = 3.0;
};
name = "Debug Hockeyapp";
};
D0B4181A1D7DFAF3004562A4 /* Release AppStore */ = {
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 = "-";
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
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;
OTHER_CFLAGS = (
"-DSQLITE_HAS_CODEC=1",
"-DSQLCIPHER_CRYPTO_CC=1",
"-DSQLITE_ENABLE_FTS5",
"-DSQLITE_DEFAULT_MEMSTATUS=0",
);
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.Telegram.PostboxMac;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
};
name = "Release AppStore";
};
D0E3A75E1B28A7E300A402D9 /* Debug Hockeyapp */ = {
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 Hockeyapp";
};
D0E3A7611B28A7E300A402D9 /* Debug Hockeyapp */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D07516491B2D9E2500AE42E0 /* Postbox.xcconfig */;
buildSettings = {
@ -1672,44 +1751,13 @@
SWIFT_REFLECTION_METADATA_LEVEL = none;
SWIFT_VERSION = 3.0;
};
name = Debug;
name = "Debug Hockeyapp";
};
D0E3A7621B28A7E300A402D9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
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",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.telegram.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = X834Q8SBVP/;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_REFLECTION_METADATA_LEVEL = none;
SWIFT_VERSION = 3.0;
};
name = Release;
};
D0E3A7641B28A7E300A402D9 /* Debug */ = {
D0E3A7641B28A7E300A402D9 /* Debug Hockeyapp */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D07516491B2D9E2500AE42E0 /* Postbox.xcconfig */;
buildSettings = {
DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
@ -1723,26 +1771,10 @@
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;
};
D0E3A7651B28A7E300A402D9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
"/Users/peter/Documents/PostBoxTest/submodules/SSignalKit/build/Debug-iphoneos",
);
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)";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
};
name = Release;
name = "Debug Hockeyapp";
};
/* End XCBuildConfiguration section */
@ -1750,46 +1782,46 @@
D0B4181B1D7DFAF3004562A4 /* Build configuration list for PBXNativeTarget "PostboxMac" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0B418181D7DFAF3004562A4 /* Debug */,
D0B418191D7DFAF3004562A4 /* Release */,
C22069CB1E8EB4BF00E82730 /* AppStore */,
D0B4181A1D7DFAF3004562A4 /* Hockeyapp */,
D0B418181D7DFAF3004562A4 /* Debug Hockeyapp */,
D079FD0F1F06BE070038FADE /* Debug AppStore */,
C22069CB1E8EB4BF00E82730 /* Release Hockeyapp */,
D0B4181A1D7DFAF3004562A4 /* Release AppStore */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
defaultConfigurationName = "Debug Hockeyapp";
};
D0E3A7441B28A7E300A402D9 /* Build configuration list for PBXProject "Postbox" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0E3A75E1B28A7E300A402D9 /* Debug */,
D0E3A75F1B28A7E300A402D9 /* Release */,
C22069C81E8EB4BF00E82730 /* AppStore */,
D086A5711CC0116A00F08284 /* Hockeyapp */,
D0E3A75E1B28A7E300A402D9 /* Debug Hockeyapp */,
D079FD0C1F06BE070038FADE /* Debug AppStore */,
C22069C81E8EB4BF00E82730 /* Release Hockeyapp */,
D086A5711CC0116A00F08284 /* Release AppStore */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
defaultConfigurationName = "Debug Hockeyapp";
};
D0E3A7601B28A7E300A402D9 /* Build configuration list for PBXNativeTarget "Postbox" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0E3A7611B28A7E300A402D9 /* Debug */,
D0E3A7621B28A7E300A402D9 /* Release */,
C22069C91E8EB4BF00E82730 /* AppStore */,
D086A5721CC0116A00F08284 /* Hockeyapp */,
D0E3A7611B28A7E300A402D9 /* Debug Hockeyapp */,
D079FD0D1F06BE070038FADE /* Debug AppStore */,
C22069C91E8EB4BF00E82730 /* Release Hockeyapp */,
D086A5721CC0116A00F08284 /* Release AppStore */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
defaultConfigurationName = "Debug Hockeyapp";
};
D0E3A7631B28A7E300A402D9 /* Build configuration list for PBXNativeTarget "PostboxTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0E3A7641B28A7E300A402D9 /* Debug */,
D0E3A7651B28A7E300A402D9 /* Release */,
C22069CA1E8EB4BF00E82730 /* AppStore */,
D086A5731CC0116A00F08284 /* Hockeyapp */,
D0E3A7641B28A7E300A402D9 /* Debug Hockeyapp */,
D079FD0E1F06BE070038FADE /* Debug AppStore */,
C22069CA1E8EB4BF00E82730 /* Release Hockeyapp */,
D086A5731CC0116A00F08284 /* Release AppStore */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
defaultConfigurationName = "Debug Hockeyapp";
};
/* End XCConfigurationList section */
};

View File

@ -7,7 +7,7 @@
buildImplicitDependencies = "YES">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
buildConfiguration = "Debug Hockeyapp"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"

View File

@ -12,12 +12,12 @@
<key>PostboxMac.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>21</integer>
<integer>22</integer>
</dict>
<key>PostboxTests.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>4</integer>
<integer>5</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>

View File

@ -5,12 +5,14 @@ struct IntermediateMessageForwardInfo {
let sourceId: PeerId?
let sourceMessageId: MessageId?
let date: Int32
let authorSignature: String?
init(authorId: PeerId, sourceId: PeerId?, sourceMessageId: MessageId?, date: Int32) {
init(authorId: PeerId, sourceId: PeerId?, sourceMessageId: MessageId?, date: Int32, authorSignature: String?) {
self.authorId = authorId
self.sourceId = sourceId
self.sourceMessageId = sourceMessageId
self.date = date
self.authorSignature = authorSignature
}
init(_ storeInfo: StoreMessageForwardInfo) {
@ -18,6 +20,7 @@ struct IntermediateMessageForwardInfo {
self.sourceId = storeInfo.sourceId
self.sourceMessageId = storeInfo.sourceMessageId
self.date = storeInfo.date
self.authorSignature = storeInfo.authorSignature
}
}

View File

@ -60,6 +60,10 @@ final class ItemCacheTable: Table {
return nil
}
func remove(id: ItemCacheEntryId, metaTable: ItemCacheMetaTable) {
self.valueBox.remove(self.table, key: self.itemKey(id: id))
}
override func clearMemoryCache() {
}

View File

@ -337,12 +337,14 @@ public struct StoreMessageForwardInfo {
public let sourceId: PeerId?
public let sourceMessageId: MessageId?
public let date: Int32
public let authorSignature: String?
public init(authorId: PeerId, sourceId: PeerId?, sourceMessageId: MessageId?, date: Int32) {
public init(authorId: PeerId, sourceId: PeerId?, sourceMessageId: MessageId?, date: Int32, authorSignature: String?) {
self.authorId = authorId
self.sourceId = sourceId
self.sourceMessageId = sourceMessageId
self.date = date
self.authorSignature = authorSignature
}
}
@ -351,6 +353,7 @@ public struct MessageForwardInfo: Equatable {
public let source: Peer?
public let sourceMessageId: MessageId?
public let date: Int32
public let authorSignature: String?
}
public func ==(lhs: MessageForwardInfo, rhs: MessageForwardInfo) -> Bool {
@ -370,6 +373,9 @@ public func ==(lhs: MessageForwardInfo, rhs: MessageForwardInfo) -> Bool {
if lhs.date != rhs.date {
return false
}
if lhs.authorSignature != rhs.authorSignature {
return false
}
return true
}

View File

@ -666,6 +666,9 @@ final class MessageHistoryTable: Table {
if forwardInfo.sourceMessageId != nil {
forwardInfoFlags |= 4
}
if forwardInfo.authorSignature != nil {
forwardInfoFlags |= 8
}
sharedBuffer.write(&forwardInfoFlags, offset: 0, length: 1)
var forwardAuthorId: Int64 = forwardInfo.authorId.toInt64()
var forwardDate: Int32 = forwardInfo.date
@ -685,6 +688,17 @@ final class MessageHistoryTable: Table {
sharedBuffer.write(&sourceMessageIdNamespace, offset: 0, length: 4)
sharedBuffer.write(&sourceMessageIdId, offset: 0, length: 4)
}
if let authorSignature = forwardInfo.authorSignature {
if let data = authorSignature.data(using: .utf8, allowLossyConversion: true) {
var length: Int32 = Int32(data.count)
sharedBuffer.write(&length, offset: 0, length: 4)
sharedBuffer.write(data)
} else {
var length: Int32 = 0
sharedBuffer.write(&length, offset: 0, length: 4)
}
}
} else {
var forwardInfoFlags: Int8 = 0
sharedBuffer.write(&forwardInfoFlags, offset: 0, length: 1)
@ -1130,6 +1144,9 @@ final class MessageHistoryTable: Table {
if forwardInfo.sourceMessageId != nil {
forwardInfoFlags |= 4
}
if forwardInfo.authorSignature != nil {
forwardInfoFlags |= 8
}
sharedBuffer.write(&forwardInfoFlags, offset: 0, length: 1)
var forwardAuthorId: Int64 = forwardInfo.authorId.toInt64()
var forwardDate: Int32 = forwardInfo.date
@ -1149,6 +1166,17 @@ final class MessageHistoryTable: Table {
sharedBuffer.write(&sourceMessageIdNamespace, offset: 0, length: 4)
sharedBuffer.write(&sourceMessageIdId, offset: 0, length: 4)
}
if let authorSignature = forwardInfo.authorSignature {
if let data = authorSignature.data(using: .utf8, allowLossyConversion: true) {
var length: Int32 = Int32(data.count)
sharedBuffer.write(&length, offset: 0, length: 4)
sharedBuffer.write(data)
} else {
var length: Int32 = 0
sharedBuffer.write(&length, offset: 0, length: 4)
}
}
} else {
var forwardInfoFlags: Int8 = 0
sharedBuffer.write(&forwardInfoFlags, offset: 0, length: 1)
@ -1350,6 +1378,9 @@ final class MessageHistoryTable: Table {
if forwardInfo.sourceMessageId != nil {
forwardInfoFlags |= 4
}
if forwardInfo.authorSignature != nil {
forwardInfoFlags |= 8
}
sharedBuffer.write(&forwardInfoFlags, offset: 0, length: 1)
var forwardAuthorId: Int64 = forwardInfo.authorId.toInt64()
var forwardDate: Int32 = forwardInfo.date
@ -1369,6 +1400,17 @@ final class MessageHistoryTable: Table {
sharedBuffer.write(&sourceMessageIdNamespace, offset: 0, length: 4)
sharedBuffer.write(&sourceMessageIdId, offset: 0, length: 4)
}
if let authorSignature = forwardInfo.authorSignature {
if let data = authorSignature.data(using: .utf8, allowLossyConversion: true) {
var length: Int32 = Int32(data.count)
sharedBuffer.write(&length, offset: 0, length: 4)
sharedBuffer.write(data)
} else {
var length: Int32 = 0
sharedBuffer.write(&length, offset: 0, length: 4)
}
}
} else {
var forwardInfoFlags: Int8 = 0
sharedBuffer.write(&forwardInfoFlags, offset: 0, length: 1)
@ -1494,6 +1536,7 @@ final class MessageHistoryTable: Table {
var forwardDate: Int32 = 0
var forwardSourceId: PeerId?
var forwardSourceMessageId: MessageId?
var authorSignature: String? = nil
value.read(&forwardAuthorId, offset: 0, length: 8)
value.read(&forwardDate, offset: 0, length: 4)
@ -1514,7 +1557,14 @@ final class MessageHistoryTable: Table {
forwardSourceMessageId = MessageId(peerId: PeerId(forwardSourceMessagePeerId), namespace: forwardSourceMessageNamespace, id: forwardSourceMessageIdId)
}
forwardInfo = IntermediateMessageForwardInfo(authorId: PeerId(forwardAuthorId), sourceId: forwardSourceId, sourceMessageId: forwardSourceMessageId, date: forwardDate)
if (forwardInfoFlags & 8) != 0 {
var signatureLength: Int32 = 0
value.read(&signatureLength, offset: 0, length: 4)
authorSignature = String(data: Data(bytes: value.memory.assumingMemoryBound(to: UInt8.self).advanced(by: value.offset), count: Int(signatureLength)), encoding: .utf8)
value.skip(Int(signatureLength))
}
forwardInfo = IntermediateMessageForwardInfo(authorId: PeerId(forwardAuthorId), sourceId: forwardSourceId, sourceMessageId: forwardSourceMessageId, date: forwardDate, authorSignature: authorSignature)
}
var hasAuthor: Int8 = 0
@ -1529,7 +1579,6 @@ final class MessageHistoryTable: Table {
var textLength: Int32 = 0
value.read(&textLength, offset: 0, length: 4)
let text = String(data: Data(bytes: value.memory.assumingMemoryBound(to: UInt8.self).advanced(by: value.offset), count: Int(textLength)), encoding: .utf8) ?? ""
//let text = NSString(bytes: value.memory + value.offset, length: Int(textLength), encoding: NSUTF8StringEncoding) ?? ""
value.skip(Int(textLength))
let attributesOffset = value.offset
@ -1630,7 +1679,7 @@ final class MessageHistoryTable: Table {
if let sourceId = internalForwardInfo.sourceId {
source = peerTable.get(sourceId)
}
forwardInfo = MessageForwardInfo(author: forwardAuthor, source: source, sourceMessageId: internalForwardInfo.sourceMessageId, date: internalForwardInfo.date)
forwardInfo = MessageForwardInfo(author: forwardAuthor, source: source, sourceMessageId: internalForwardInfo.sourceMessageId, date: internalForwardInfo.date, authorSignature: internalForwardInfo.authorSignature)
}
var author: Peer?

80
Postbox/NoticeTable.swift Normal file
View File

@ -0,0 +1,80 @@
import Foundation
public struct NoticeEntryKey: Hashable {
public let namespace: ValueBoxKey
public let key: ValueBoxKey
fileprivate let combinedKey: ValueBoxKey
public init(namespace: ValueBoxKey, key: ValueBoxKey) {
self.namespace = namespace
self.key = key
let combinedKey = ValueBoxKey(length: namespace.length + key.length)
memcpy(combinedKey.memory, namespace.memory, namespace.length)
memcpy(combinedKey.memory.advanced(by: namespace.length), key.memory, key.length)
self.combinedKey = combinedKey
}
public static func ==(lhs: NoticeEntryKey, rhs: NoticeEntryKey) -> Bool {
return lhs.combinedKey == rhs.combinedKey
}
public var hashValue: Int {
return self.combinedKey.hashValue
}
}
private struct CachedEntry {
let entry: Coding?
}
final class NoticeTable: Table {
private var cachedEntries: [NoticeEntryKey: CachedEntry] = [:]
private var updatedEntryKeys = Set<NoticeEntryKey>()
static func tableSpec(_ id: Int32) -> ValueBoxTable {
return ValueBoxTable(id: id, keyType: .binary)
}
func get(key: NoticeEntryKey) -> Coding? {
if let cached = self.cachedEntries[key] {
return cached.entry
} else {
if let value = self.valueBox.get(self.table, key: key.combinedKey), let object = Decoder(buffer: value).decodeRootObject() {
self.cachedEntries[key] = CachedEntry(entry: object)
return object
} else {
self.cachedEntries[key] = CachedEntry(entry: nil)
return nil
}
}
}
func set(key: NoticeEntryKey, value: Coding?) {
self.cachedEntries[key] = CachedEntry(entry: value)
updatedEntryKeys.insert(key)
}
override func clearMemoryCache() {
assert(self.updatedEntryKeys.isEmpty)
}
override func beforeCommit() {
if !self.updatedEntryKeys.isEmpty {
for key in self.updatedEntryKeys {
if let value = self.cachedEntries[key]?.entry {
let encoder = Encoder()
encoder.encodeRootObject(value)
withExtendedLifetime(encoder, {
self.valueBox.set(self.table, key: key.combinedKey, value: encoder.readBufferNoCopy())
})
} else {
self.valueBox.remove(self.table, key: key.combinedKey)
}
}
self.updatedEntryKeys.removeAll()
}
}
}

View File

@ -457,6 +457,11 @@ public final class Modifier {
self.postbox?.putItemCacheEntry(id: id, entry: entry, collectionSpec: collectionSpec)
}
public func removeItemCacheEntry(id: ItemCacheEntryId) {
assert(!self.disposed)
self.postbox?.removeItemCacheEntry(id: id)
}
public func retrieveItemCacheEntry(id: ItemCacheEntryId) -> Coding? {
assert(!self.disposed)
return self.postbox?.retrieveItemCacheEntry(id: id)
@ -607,6 +612,20 @@ public final class Modifier {
return false
}
}
public func getNoticeEntry(key: NoticeEntryKey) -> Coding? {
assert(!self.disposed)
if let postbox = self.postbox {
return postbox.noticeTable.get(key: key)
} else {
return nil
}
}
public func setNoticeEntry(key: NoticeEntryKey, value: Coding?) {
assert(!self.disposed)
self.postbox?.noticeTable.set(key: key, value: value)
}
}
fileprivate class PipeNotifier: NSObject {
@ -797,6 +816,7 @@ public final class Postbox {
let orderedItemListIndexTable: OrderedItemListIndexTable
let textIndexTable: MessageHistoryTextIndexTable
let unorderedItemListTable: UnorderedItemListTable
let noticeTable: NoticeTable
//temporary
let peerRatingTable: RatingTable<PeerId>
@ -871,6 +891,7 @@ public final class Postbox {
self.orderedItemListIndexTable = OrderedItemListIndexTable(valueBox: self.valueBox, table: OrderedItemListIndexTable.tableSpec(37))
self.orderedItemListTable = OrderedItemListTable(valueBox: self.valueBox, table: OrderedItemListTable.tableSpec(38), indexTable: self.orderedItemListIndexTable)
self.unorderedItemListTable = UnorderedItemListTable(valueBox: self.valueBox, table: UnorderedItemListTable.tableSpec(42))
self.noticeTable = NoticeTable(valueBox: self.valueBox, table: NoticeTable.tableSpec(43))
var tables: [Table] = []
tables.append(self.metadataTable)
@ -914,6 +935,7 @@ public final class Postbox {
tables.append(self.orderedItemListTable)
tables.append(self.orderedItemListIndexTable)
tables.append(self.unorderedItemListTable)
tables.append(self.noticeTable)
self.tables = tables
@ -1587,6 +1609,10 @@ public final class Postbox {
return self.itemCacheTable.retrieve(id: id, metaTable: self.itemCacheMetaTable)
}
fileprivate func removeItemCacheEntry(id: ItemCacheEntryId) {
self.itemCacheTable.remove(id: id, metaTable: self.itemCacheMetaTable)
}
fileprivate func replaceGlobalMessageTagsHole(globalTags: GlobalMessageTags, index: MessageIndex, with updatedIndex: MessageIndex?, messages: [StoreMessage]) {
var allTagsMatch = true
for tag in globalTags {

View File

@ -277,7 +277,7 @@ class MessageHistoryTableTests: XCTestCase {
var unsentMessageOperations: [IntermediateMessageHistoryUnsentOperation] = []
var updatedPeerReadStateOperations: [PeerId: PeerReadStateSynchronizationOperation?] = [:]
var globalTagsOperations: [GlobalMessageHistoryTagsOperation] = []
let _ = self.historyTable!.addMessages([StoreMessage(id: MessageId(peerId: peerId, namespace: namespace, id: id), globallyUniqueId: nil, timestamp: timestamp, flags: flags, tags: tags, globalTags: [], forwardInfo: nil, authorId: authorPeerId, text: text, attributes: [], media: media)], location: .Random, operationsByPeerId: &operationsByPeerId, unsentMessageOperations: &unsentMessageOperations, updatedPeerReadStateOperations: &updatedPeerReadStateOperations, globalTagsOperations: &globalTagsOperations)
let _ = self.historyTable!.addMessages([StoreMessage(id: MessageId(peerId: peerId, namespace: namespace, id: id), globallyUniqueId: nil, timestamp: timestamp, flags: flags, tags: tags, globalTags: [], forwardInfo: StoreMessageForwardInfo(authorId: peerId, sourceId: peerId, sourceMessageId: MessageId(peerId: peerId, namespace: 0, id: 10), date: 10, authorSignature: "abc"), authorId: authorPeerId, text: text, attributes: [], media: media)], location: .Random, operationsByPeerId: &operationsByPeerId, unsentMessageOperations: &unsentMessageOperations, updatedPeerReadStateOperations: &updatedPeerReadStateOperations, globalTagsOperations: &globalTagsOperations)
}
private func updateMessage(_ previousId: Int32, _ id: Int32, _ timestamp: Int32, _ text: String = "", _ media: [Media] = [], _ flags: StoreMessageFlags, _ tags: MessageTags) {