Update contact model when legacy update methods are invoked
This commit is contained in:
parent
6e673945c5
commit
ec2d784c20
|
@ -1,19 +1,19 @@
|
||||||
|
|
||||||
@objc(SNContact)
|
@objc(SNContact)
|
||||||
public class Contact : NSObject, NSCoding { // NSObject/NSCoding conformance is needed for YapDatabase compatibility
|
public class Contact : NSObject, NSCoding { // NSObject/NSCoding conformance is needed for YapDatabase compatibility
|
||||||
public let sessionID: String
|
@objc public let sessionID: String
|
||||||
/// The display name of the contact.
|
/// The display name of the contact.
|
||||||
///
|
///
|
||||||
/// - Note: In open groups use `openGroupDisplayName`.
|
/// - Note: In open groups use `openGroupDisplayName`.
|
||||||
public var displayName: String?
|
@objc public var displayName: String?
|
||||||
/// The URL from which to fetch the contact's profile picture.
|
/// The URL from which to fetch the contact's profile picture.
|
||||||
public var profilePictureURL: String?
|
@objc public var profilePictureURL: String?
|
||||||
/// The file name of the contact's profile picture on local storage.
|
/// The file name of the contact's profile picture on local storage.
|
||||||
public var profilePictureFileName: String?
|
@objc public var profilePictureFileName: String?
|
||||||
/// The key with which the profile picture is encrypted.
|
/// The key with which the profile picture is encrypted.
|
||||||
public var profilePictureEncryptionKey: OWSAES256Key?
|
@objc public var profilePictureEncryptionKey: OWSAES256Key?
|
||||||
/// The ID of the thread associated with this contact.
|
/// The ID of the thread associated with this contact.
|
||||||
public var threadID: String?
|
@objc public var threadID: String?
|
||||||
|
|
||||||
/// In open groups, where it's more likely that multiple users have the same name, we display a bit of the Session ID after
|
/// In open groups, where it's more likely that multiple users have the same name, we display a bit of the Session ID after
|
||||||
/// a user's display name for added context.
|
/// a user's display name for added context.
|
||||||
|
@ -25,7 +25,7 @@ public class Contact : NSObject, NSCoding { // NSObject/NSCoding conformance is
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Initialization
|
// MARK: Initialization
|
||||||
public init(sessionID: String) {
|
@objc public init(sessionID: String) {
|
||||||
self.sessionID = sessionID
|
self.sessionID = sessionID
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ extension Storage {
|
||||||
|
|
||||||
private static let contactCollection = "LokiContactCollection"
|
private static let contactCollection = "LokiContactCollection"
|
||||||
|
|
||||||
|
@objc(getContactWithSessionID:)
|
||||||
public func getContact(with sessionID: String) -> Contact? {
|
public func getContact(with sessionID: String) -> Contact? {
|
||||||
var result: Contact?
|
var result: Contact?
|
||||||
Storage.read { transaction in
|
Storage.read { transaction in
|
||||||
|
@ -12,6 +13,7 @@ extension Storage {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc(setContact:usingTransaction:)
|
||||||
public func setContact(_ contact: Contact, using transaction: Any) {
|
public func setContact(_ contact: Contact, using transaction: Any) {
|
||||||
(transaction as! YapDatabaseReadWriteTransaction).setObject(contact, forKey: contact.sessionID, inCollection: Storage.contactCollection)
|
(transaction as! YapDatabaseReadWriteTransaction).setObject(contact, forKey: contact.sessionID, inCollection: Storage.contactCollection)
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
#import <SignalCoreKit/NSString+OWS.h>
|
#import <SignalCoreKit/NSString+OWS.h>
|
||||||
#import <YapDatabase/YapDatabaseConnection.h>
|
#import <YapDatabase/YapDatabaseConnection.h>
|
||||||
#import <YapDatabase/YapDatabaseTransaction.h>
|
#import <YapDatabase/YapDatabaseTransaction.h>
|
||||||
|
#import <Curve25519Kit/Curve25519.h>
|
||||||
|
#import <SessionMessagingKit/SessionMessagingKit-Swift.h>
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@ -117,6 +119,15 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
|
- (NSString *)sessionID
|
||||||
|
{
|
||||||
|
if ([self.recipientId isEqual:kLocalProfileUniqueId]) {
|
||||||
|
return OWSIdentityManager.sharedManager.identityKeyPair.hexEncodedPublicKey;
|
||||||
|
} else {
|
||||||
|
return self.recipientId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (nullable NSString *)avatarUrlPath
|
- (nullable NSString *)avatarUrlPath
|
||||||
{
|
{
|
||||||
@synchronized(self)
|
@synchronized(self)
|
||||||
|
@ -270,6 +281,12 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
|
||||||
functionName:__PRETTY_FUNCTION__
|
functionName:__PRETTY_FUNCTION__
|
||||||
transaction:transaction
|
transaction:transaction
|
||||||
completion:completion];
|
completion:completion];
|
||||||
|
|
||||||
|
SNContact *contact = [LKStorage.shared getContactWithSessionID:self.sessionID] ?: [[SNContact alloc] initWithSessionID:self.sessionID];
|
||||||
|
contact.displayName = [profileName ows_stripped];
|
||||||
|
contact.profilePictureURL = avatarUrlPath;
|
||||||
|
contact.profilePictureFileName = avatarFileName;
|
||||||
|
[LKStorage.shared setContact:contact usingTransaction:transaction];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateWithProfileName:(nullable NSString *)profileName
|
- (void)updateWithProfileName:(nullable NSString *)profileName
|
||||||
|
@ -288,6 +305,14 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
|
||||||
functionName:__PRETTY_FUNCTION__
|
functionName:__PRETTY_FUNCTION__
|
||||||
dbConnection:dbConnection
|
dbConnection:dbConnection
|
||||||
completion:completion];
|
completion:completion];
|
||||||
|
|
||||||
|
SNContact *contact = [LKStorage.shared getContactWithSessionID:self.sessionID] ?: [[SNContact alloc] initWithSessionID:self.sessionID];
|
||||||
|
contact.displayName = [profileName ows_stripped];
|
||||||
|
contact.profilePictureURL = avatarUrlPath;
|
||||||
|
contact.profilePictureFileName = avatarFileName;
|
||||||
|
[LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||||
|
[LKStorage.shared setContact:contact usingTransaction:transaction];
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateWithProfileName:(nullable NSString *)profileName
|
- (void)updateWithProfileName:(nullable NSString *)profileName
|
||||||
|
@ -302,6 +327,13 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
|
||||||
functionName:__PRETTY_FUNCTION__
|
functionName:__PRETTY_FUNCTION__
|
||||||
dbConnection:dbConnection
|
dbConnection:dbConnection
|
||||||
completion:completion];
|
completion:completion];
|
||||||
|
|
||||||
|
SNContact *contact = [LKStorage.shared getContactWithSessionID:self.sessionID] ?: [[SNContact alloc] initWithSessionID:self.sessionID];
|
||||||
|
contact.displayName = [profileName ows_stripped];
|
||||||
|
contact.profilePictureURL = avatarUrlPath;
|
||||||
|
[LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||||
|
[LKStorage.shared setContact:contact usingTransaction:transaction];
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateWithAvatarUrlPath:(nullable NSString *)avatarUrlPath
|
- (void)updateWithAvatarUrlPath:(nullable NSString *)avatarUrlPath
|
||||||
|
@ -318,6 +350,13 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
|
||||||
functionName:__PRETTY_FUNCTION__
|
functionName:__PRETTY_FUNCTION__
|
||||||
dbConnection:dbConnection
|
dbConnection:dbConnection
|
||||||
completion:completion];
|
completion:completion];
|
||||||
|
|
||||||
|
SNContact *contact = [LKStorage.shared getContactWithSessionID:self.sessionID] ?: [[SNContact alloc] initWithSessionID:self.sessionID];
|
||||||
|
contact.profilePictureURL = avatarUrlPath;
|
||||||
|
contact.profilePictureFileName = avatarFileName;
|
||||||
|
[LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||||
|
[LKStorage.shared setContact:contact usingTransaction:transaction];
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateWithAvatarFileName:(nullable NSString *)avatarFileName
|
- (void)updateWithAvatarFileName:(nullable NSString *)avatarFileName
|
||||||
|
@ -330,6 +369,12 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
|
||||||
functionName:__PRETTY_FUNCTION__
|
functionName:__PRETTY_FUNCTION__
|
||||||
dbConnection:dbConnection
|
dbConnection:dbConnection
|
||||||
completion:completion];
|
completion:completion];
|
||||||
|
|
||||||
|
SNContact *contact = [LKStorage.shared getContactWithSessionID:self.sessionID] ?: [[SNContact alloc] initWithSessionID:self.sessionID];
|
||||||
|
contact.profilePictureFileName = avatarFileName;
|
||||||
|
[LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||||
|
[LKStorage.shared setContact:contact usingTransaction:transaction];
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)clearWithProfileKey:(OWSAES256Key *)profileKey
|
- (void)clearWithProfileKey:(OWSAES256Key *)profileKey
|
||||||
|
@ -368,6 +413,10 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
|
||||||
functionName:__PRETTY_FUNCTION__
|
functionName:__PRETTY_FUNCTION__
|
||||||
transaction:transaction
|
transaction:transaction
|
||||||
completion:completion];
|
completion:completion];
|
||||||
|
|
||||||
|
SNContact *contact = [LKStorage.shared getContactWithSessionID:self.sessionID] ?: [[SNContact alloc] initWithSessionID:self.sessionID];
|
||||||
|
contact.profilePictureEncryptionKey = profileKey;
|
||||||
|
[LKStorage.shared setContact:contact usingTransaction:transaction];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - Database Connection Accessors
|
#pragma mark - Database Connection Accessors
|
||||||
|
|
Loading…
Reference in New Issue