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
|