profile key flag and debug action

// FREEBIE
pull/1/head
Michael Kirk 7 years ago
parent fb42077db4
commit 9c56660618

@ -17,6 +17,7 @@
#import <SignalServiceKit/TSCall.h>
#import <SignalServiceKit/TSInvalidIdentityKeyReceivingErrorMessage.h>
#import <SignalServiceKit/TSStorageManager+SessionStore.h>
#import <SignalServiceKit/OWSProfileKeyMessage.h>
#import <SignalServiceKit/TSThread.h>
NS_ASSUME_NONNULL_BEGIN
@ -67,6 +68,18 @@ NS_ASSUME_NONNULL_BEGIN
[[OWSProfileManager sharedManager] regenerateLocalProfile];
}]];
#endif
[items addObject:[OWSTableItem itemWithTitle:@"Send profile key message."
actionBlock:^{
OWSProfileKeyMessage *message = [[OWSProfileKeyMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp] inThread:thread];
[[Environment getCurrent].messageSender sendMessage:message
success:^{
DDLogInfo(@"Successfully sent profile key message to thread: %@", thread);
}
failure:^(NSError * _Nonnull error) {
OWSFail(@"Failed to send prifle key message to thread: %@", thread);
}];
}]];
[items addObject:[OWSTableItem itemWithTitle:@"Clear hasDismissedOffers"
actionBlock:^{
[DebugUIMisc clearHasDismissedOffers];

@ -82,6 +82,7 @@ message DataMessage {
enum Flags {
END_SESSION = 1;
EXPIRATION_TIMER_UPDATE = 2;
PROFILE_KEY = 4;
}
optional string body = 1;

@ -0,0 +1,13 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "TSOutgoingMessage.h"
NS_ASSUME_NONNULL_BEGIN
@interface OWSProfileKeyMessage : TSOutgoingMessage
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,50 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "OWSProfileKeyMessage.h"
#import "OWSSignalServiceProtos.pb.h"
#import "ProfileManagerProtocol.h"
#import "ProtoBuf+OWS.h"
#import "TextSecureKitEnv.h"
NS_ASSUME_NONNULL_BEGIN
@implementation OWSProfileKeyMessage
- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
// override superclass with no-op.
//
// There's no need to save this message, since it's not displayed to the user.
}
- (BOOL)shouldSyncTranscript
{
return NO;
}
- (OWSSignalServiceProtosDataMessage *)buildDataMessage:(NSString *_Nullable)recipientId
{
OWSAssert(self.thread);
OWSSignalServiceProtosDataMessageBuilder *builder = [self dataMessageBuilder];
[builder addLocalProfileKey];
[builder setFlags:OWSSignalServiceProtosDataMessageFlagsProfileKey];
if (recipientId.length > 0) {
// Once we've shared our profile key with a user (perhaps due to being
// a member of a whitelisted group), make sure they're whitelisted.
id<ProfileManagerProtocol> profileManager = [TextSecureKitEnv sharedEnv].profileManager;
// FIXME PERF avoid this dispatch. It's going to happen for *each* recipient in a group message.
dispatch_async(dispatch_get_main_queue(), ^{
[profileManager addUserToProfileWhitelist:recipientId];
});
}
return [builder build];
}
@end
NS_ASSUME_NONNULL_END

@ -112,6 +112,7 @@ NSString *NSStringFromOWSSignalServiceProtosEnvelopeType(OWSSignalServiceProtosE
typedef NS_ENUM(SInt32, OWSSignalServiceProtosDataMessageFlags) {
OWSSignalServiceProtosDataMessageFlagsEndSession = 1,
OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate = 2,
OWSSignalServiceProtosDataMessageFlagsProfileKey = 4,
};
BOOL OWSSignalServiceProtosDataMessageFlagsIsValidValue(OWSSignalServiceProtosDataMessageFlags value);

@ -3103,6 +3103,7 @@ BOOL OWSSignalServiceProtosDataMessageFlagsIsValidValue(OWSSignalServiceProtosDa
switch (value) {
case OWSSignalServiceProtosDataMessageFlagsEndSession:
case OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate:
case OWSSignalServiceProtosDataMessageFlagsProfileKey:
return YES;
default:
return NO;
@ -3114,6 +3115,8 @@ NSString *NSStringFromOWSSignalServiceProtosDataMessageFlags(OWSSignalServicePro
return @"OWSSignalServiceProtosDataMessageFlagsEndSession";
case OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate:
return @"OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate";
case OWSSignalServiceProtosDataMessageFlagsProfileKey:
return @"OWSSignalServiceProtosDataMessageFlagsProfileKey";
default:
return nil;
}

@ -17,6 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface OWSSignalServiceProtosDataMessageBuilder (OWS)
- (void)addLocalProfileKeyIfNecessary:(TSThread *)thread recipientId:(NSString *_Nullable)recipientId;
- (void)addLocalProfileKey;
@end

@ -64,6 +64,11 @@ NS_ASSUME_NONNULL_BEGIN
}
}
- (void)addLocalProfileKey
{
[self setProfileKey:self.localProfileKey.keyData];
}
@end
#pragma mark -

Loading…
Cancel
Save