mirror of
https://github.com/danog/Telegram.git
synced 2024-12-03 09:57:46 +01:00
83 lines
4.0 KiB
Objective-C
83 lines
4.0 KiB
Objective-C
#import "TGNotificationPrivacyAccountSetting.h"
|
|
|
|
@implementation TGNotificationPrivacyAccountSetting
|
|
|
|
- (instancetype)initWithDefaultValues
|
|
{
|
|
return [self initWithLastSeenPrimarySetting:TGPrivacySettingsLastSeenPrimarySettingEverybody alwaysShareWithUserIds:@[] neverShareWithUserIds:@[]];
|
|
}
|
|
|
|
- (instancetype)initWithLastSeenPrimarySetting:(TGPrivacySettingsLastSeenPrimarySetting)lastSeenPrimarySetting alwaysShareWithUserIds:(NSArray *)alwaysShareWithUserIds neverShareWithUserIds:(NSArray *)neverShareWithUserIds
|
|
{
|
|
self = [super init];
|
|
if (self != nil)
|
|
{
|
|
_lastSeenPrimarySetting = lastSeenPrimarySetting;
|
|
_alwaysShareWithUserIds = alwaysShareWithUserIds;
|
|
_neverShareWithUserIds = neverShareWithUserIds;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (instancetype)initWithCoder:(NSCoder *)aDecoder
|
|
{
|
|
return [self initWithLastSeenPrimarySetting:(TGPrivacySettingsLastSeenPrimarySetting)[aDecoder decodeInt32ForKey:@"lastSeenPrimarySetting"] alwaysShareWithUserIds:[aDecoder decodeObjectForKey:@"alwaysShareWithUserIds"] neverShareWithUserIds:[aDecoder decodeObjectForKey:@"neverShareWithUserIds"]];
|
|
}
|
|
|
|
- (void)encodeWithCoder:(NSCoder *)aCoder
|
|
{
|
|
[aCoder encodeInt32:(int32_t)_lastSeenPrimarySetting forKey:@"lastSeenPrimarySetting"];
|
|
if (_alwaysShareWithUserIds != nil)
|
|
[aCoder encodeObject:_alwaysShareWithUserIds forKey:@"alwaysShareWithUserIds"];
|
|
if (_neverShareWithUserIds != nil)
|
|
[aCoder encodeObject:_neverShareWithUserIds forKey:@"neverShareWithUserIds"];
|
|
}
|
|
|
|
- (BOOL)isEqual:(id)object
|
|
{
|
|
return [object isKindOfClass:[TGNotificationPrivacyAccountSetting class]] && _lastSeenPrimarySetting == ((TGNotificationPrivacyAccountSetting *)object)->_lastSeenPrimarySetting && TGObjectCompare(_alwaysShareWithUserIds, ((TGNotificationPrivacyAccountSetting *)object)->_alwaysShareWithUserIds) && TGObjectCompare(_neverShareWithUserIds, ((TGNotificationPrivacyAccountSetting *)object)->_neverShareWithUserIds);
|
|
}
|
|
|
|
- (TGNotificationPrivacyAccountSetting *)normalize
|
|
{
|
|
NSArray *neverShareWithUserIds = nil;
|
|
NSArray *alwaysShareWithUserIds = nil;
|
|
|
|
switch (_lastSeenPrimarySetting)
|
|
{
|
|
case TGPrivacySettingsLastSeenPrimarySettingEverybody:
|
|
neverShareWithUserIds = _neverShareWithUserIds;
|
|
break;
|
|
case TGPrivacySettingsLastSeenPrimarySettingContacts:
|
|
neverShareWithUserIds = _neverShareWithUserIds;
|
|
alwaysShareWithUserIds = _alwaysShareWithUserIds;
|
|
break;
|
|
case TGPrivacySettingsLastSeenPrimarySettingNobody:
|
|
alwaysShareWithUserIds = _alwaysShareWithUserIds;
|
|
break;
|
|
}
|
|
|
|
return [[TGNotificationPrivacyAccountSetting alloc] initWithLastSeenPrimarySetting:_lastSeenPrimarySetting alwaysShareWithUserIds:alwaysShareWithUserIds neverShareWithUserIds:neverShareWithUserIds];
|
|
}
|
|
|
|
- (TGNotificationPrivacyAccountSetting *)modifyLastSeenPrimarySetting:(TGPrivacySettingsLastSeenPrimarySetting)lastSeenPrimarySetting
|
|
{
|
|
return [[TGNotificationPrivacyAccountSetting alloc] initWithLastSeenPrimarySetting:lastSeenPrimarySetting alwaysShareWithUserIds:_alwaysShareWithUserIds neverShareWithUserIds:_neverShareWithUserIds];
|
|
}
|
|
|
|
- (TGNotificationPrivacyAccountSetting *)modifyAlwaysShareWithUserIds:(NSArray *)alwaysShareWithUserIds
|
|
{
|
|
NSMutableArray *array = [[NSMutableArray alloc] initWithArray:_neverShareWithUserIds];
|
|
[array removeObjectsInArray:alwaysShareWithUserIds];
|
|
return [[TGNotificationPrivacyAccountSetting alloc] initWithLastSeenPrimarySetting:_lastSeenPrimarySetting alwaysShareWithUserIds:alwaysShareWithUserIds neverShareWithUserIds:array];
|
|
}
|
|
|
|
- (TGNotificationPrivacyAccountSetting *)modifyNeverShareWithUserIds:(NSArray *)neverShareWithUserIds
|
|
{
|
|
NSMutableArray *array = [[NSMutableArray alloc] initWithArray:_alwaysShareWithUserIds];
|
|
[array removeObjectsInArray:neverShareWithUserIds];
|
|
return [[TGNotificationPrivacyAccountSetting alloc] initWithLastSeenPrimarySetting:_lastSeenPrimarySetting alwaysShareWithUserIds:array neverShareWithUserIds:neverShareWithUserIds];
|
|
}
|
|
|
|
@end
|