diff --git a/SignalServiceKit/src/Account/TSAccountManager.h b/SignalServiceKit/src/Account/TSAccountManager.h index 27dff48e5..bf6f6cd95 100644 --- a/SignalServiceKit/src/Account/TSAccountManager.h +++ b/SignalServiceKit/src/Account/TSAccountManager.h @@ -14,6 +14,7 @@ extern NSString *const kNSNotificationName_LocalNumberDidChange; @class AnyPromise; @class OWSPrimaryStorage; @class TSNetworkManager; +@class YapDatabaseReadTransaction; @class YapDatabaseReadWriteTransaction; typedef NS_ENUM(NSUInteger, OWSRegistrationState) { @@ -57,6 +58,9 @@ typedef NS_ENUM(NSUInteger, OWSRegistrationState) { + (nullable NSString *)localNumber; - (nullable NSString *)localNumber; +// A variant of localNumber that never opens a "sneaky" transaction. +- (nullable NSString *)storedLocalNumber:(YapDatabaseReadTransaction *)transaction; + /** * Symmetric key that's used to encrypt message payloads from the server, * diff --git a/SignalServiceKit/src/Account/TSAccountManager.m b/SignalServiceKit/src/Account/TSAccountManager.m index 97613c22c..ea80c5f1a 100644 --- a/SignalServiceKit/src/Account/TSAccountManager.m +++ b/SignalServiceKit/src/Account/TSAccountManager.m @@ -220,6 +220,12 @@ NSString *const TSAccountManager_NeedsAccountAttributesUpdateKey = @"TSAccountMa } } +- (nullable NSString *)storedLocalNumber:(YapDatabaseReadTransaction *)transaction +{ + return [transaction stringForKey:TSAccountManager_RegisteredNumberKey + inCollection:TSAccountManager_UserAccountCollection]; +} + - (void)storeLocalNumber:(NSString *)localNumber { @synchronized (self) { diff --git a/SignalServiceKit/src/Storage/FullTextSearchFinder.swift b/SignalServiceKit/src/Storage/FullTextSearchFinder.swift index b7af197db..899a3e96d 100644 --- a/SignalServiceKit/src/Storage/FullTextSearchFinder.swift +++ b/SignalServiceKit/src/Storage/FullTextSearchFinder.swift @@ -25,6 +25,12 @@ public class SearchIndexer { @objc public class FullTextSearchFinder: NSObject { + // MARK: - Dependencies + + private static var tsAccountManager: TSAccountManager { + return TSAccountManager.sharedInstance() + } + // MARK: - Querying // We want to match by prefix for "search as you type" functionality. @@ -184,7 +190,16 @@ public class FullTextSearchFinder: NSObject { return String(String.UnicodeScalarView(digitScalars)) }(recipientId) - return "\(recipientId) \(nationalNumber) \(displayName)" + var result = "\(recipientId) \(nationalNumber) \(displayName)" + + if let localNumber = tsAccountManager.storedLocalNumber(transaction) { + if localNumber == recipientId { + let noteToSelfLabel = NSLocalizedString("NOTE_TO_SELF", comment: "Label for 1:1 conversation with yourself.") + result += " \(noteToSelfLabel)" + } + } + + return result } private static let messageIndexer: SearchIndexer = SearchIndexer { (message: TSMessage, transaction: YapDatabaseReadTransaction) in