mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			96 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Matlab
		
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Matlab
		
	
| 
											5 years ago
										 | // | ||
|  | //  Copyright (c) 2018 Open Whisper Systems. All rights reserved. | ||
|  | // | ||
|  | 
 | ||
|  | #import "OWSDisappearingConfigurationUpdateInfoMessage.h" | ||
|  | #import "NSString+SSK.h" | ||
|  | #import "OWSDisappearingMessagesConfiguration.h" | ||
|  | #import <SessionProtocolKit/SessionProtocolKit.h> | ||
|  | 
 | ||
|  | NS_ASSUME_NONNULL_BEGIN | ||
|  | 
 | ||
|  | @interface OWSDisappearingConfigurationUpdateInfoMessage () | ||
|  | 
 | ||
|  | @property (nonatomic, readonly, nullable) NSString *createdByRemoteName; | ||
|  | @property (nonatomic, readonly) BOOL createdInExistingGroup; | ||
|  | @property (nonatomic, readonly) uint32_t configurationDurationSeconds; | ||
|  | 
 | ||
|  | @end | ||
|  | 
 | ||
|  | @implementation OWSDisappearingConfigurationUpdateInfoMessage | ||
|  | 
 | ||
|  | - (instancetype)initWithTimestamp:(uint64_t)timestamp | ||
|  |                            thread:(TSThread *)thread | ||
|  |                     configuration:(OWSDisappearingMessagesConfiguration *)configuration | ||
|  |               createdByRemoteName:(nullable NSString *)remoteName | ||
|  |            createdInExistingGroup:(BOOL)createdInExistingGroup | ||
|  | { | ||
|  |     self = [super initWithTimestamp:timestamp inThread:thread messageType:TSInfoMessageTypeDisappearingMessagesUpdate]; | ||
|  |     if (!self) { | ||
|  |         return self; | ||
|  |     } | ||
|  | 
 | ||
|  |     _configurationIsEnabled = configuration.isEnabled; | ||
|  |     _configurationDurationSeconds = configuration.durationSeconds; | ||
|  | 
 | ||
|  |     // At most one should be set | ||
|  |     OWSAssertDebug(!remoteName || !createdInExistingGroup); | ||
|  | 
 | ||
|  |     _createdByRemoteName = remoteName; | ||
|  |     _createdInExistingGroup = createdInExistingGroup; | ||
|  | 
 | ||
|  |     return self; | ||
|  | } | ||
|  | 
 | ||
|  | - (BOOL)shouldUseReceiptDateForSorting | ||
|  | { | ||
|  |     // Use the timestamp, not the "received at" timestamp to sort, | ||
|  |     // since we're creating these interactions after the fact and back-dating them. | ||
|  |     return NO; | ||
|  | } | ||
|  | 
 | ||
|  | -(NSString *)previewTextWithTransaction:(YapDatabaseReadTransaction *)transaction | ||
|  | { | ||
|  |     if (self.createdInExistingGroup) { | ||
|  |         OWSAssertDebug(self.configurationIsEnabled && self.configurationDurationSeconds > 0); | ||
|  |         NSString *infoFormat = NSLocalizedString(@"DISAPPEARING_MESSAGES_CONFIGURATION_GROUP_EXISTING_FORMAT", | ||
|  |             @"Info Message when added to a group which has enabled disappearing messages. Embeds {{time amount}} " | ||
|  |             @"before messages disappear, see the *_TIME_AMOUNT strings for context."); | ||
|  | 
 | ||
|  |         NSString *durationString = [NSString formatDurationSeconds:self.configurationDurationSeconds useShortFormat:NO]; | ||
|  |         return [NSString stringWithFormat:infoFormat, durationString]; | ||
|  |     } else if (self.createdByRemoteName) { | ||
|  |         if (self.configurationIsEnabled && self.configurationDurationSeconds > 0) { | ||
|  |             NSString *infoFormat = NSLocalizedString(@"OTHER_UPDATED_DISAPPEARING_MESSAGES_CONFIGURATION", | ||
|  |                 @"Info Message when {{other user}} updates message expiration to {{time amount}}, see the " | ||
|  |                 @"*_TIME_AMOUNT " | ||
|  |                 @"strings for context."); | ||
|  | 
 | ||
|  |             NSString *durationString = | ||
|  |                 [NSString formatDurationSeconds:self.configurationDurationSeconds useShortFormat:NO]; | ||
|  |             return [NSString stringWithFormat:infoFormat, self.createdByRemoteName, durationString]; | ||
|  |         } else { | ||
|  |             NSString *infoFormat = NSLocalizedString(@"OTHER_DISABLED_DISAPPEARING_MESSAGES_CONFIGURATION", | ||
|  |                 @"Info Message when {{other user}} disables or doesn't support disappearing messages"); | ||
|  |             return [NSString stringWithFormat:infoFormat, self.createdByRemoteName]; | ||
|  |         } | ||
|  |     } else { | ||
|  |         // Changed by localNumber on this device or via synced transcript | ||
|  |         if (self.configurationIsEnabled && self.configurationDurationSeconds > 0) { | ||
|  |             NSString *infoFormat = NSLocalizedString(@"YOU_UPDATED_DISAPPEARING_MESSAGES_CONFIGURATION", | ||
|  |                 @"Info message embedding a {{time amount}}, see the *_TIME_AMOUNT strings for context."); | ||
|  | 
 | ||
|  |             NSString *durationString = | ||
|  |                 [NSString formatDurationSeconds:self.configurationDurationSeconds useShortFormat:NO]; | ||
|  |             return [NSString stringWithFormat:infoFormat, durationString]; | ||
|  |         } else { | ||
|  |             return NSLocalizedString(@"YOU_DISABLED_DISAPPEARING_MESSAGES_CONFIGURATION", | ||
|  |                 @"Info Message when you disable disappearing messages"); | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | @end | ||
|  | 
 | ||
|  | NS_ASSUME_NONNULL_END |