1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-03 09:57:46 +01:00
Telegram/Telegraph/TGNotificationPrivacyAccountSetting.m
2015-10-01 19:19:52 +03:00

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