mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
91 lines
2.7 KiB
Objective-C
91 lines
2.7 KiB
Objective-C
#import "TGChannelBannedRights.h"
|
|
|
|
#import "PSKeyValueCoder.h"
|
|
|
|
@implementation TGChannelBannedRights
|
|
|
|
- (instancetype)initWithBanReadMessages:(bool)banReadMessages banSendMessages:(bool)banSendMessages banSendMedia:(bool)banSendMedia banSendStickers:(bool)banSendStickers banSendGifs:(bool)banSendGifs banSendGames:(bool)banSendGames banSendInline:(bool)banSendInline banEmbedLinks:(bool)banEmbedLinks timeout:(int32_t)timeout {
|
|
self = [super init];
|
|
if (self != nil) {
|
|
_banReadMessages = banReadMessages;
|
|
_banSendMessages = banSendMessages;
|
|
_banSendMedia = banSendMedia;
|
|
_banSendStickers = banSendStickers;
|
|
_banSendGifs = banSendGifs;
|
|
_banSendGames = banSendGames;
|
|
_banSendInline = banSendInline;
|
|
_banEmbedLinks = banEmbedLinks;
|
|
_timeout = timeout;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (int32_t)tlFlags {
|
|
int32_t flags = 0;
|
|
if (_banReadMessages) {
|
|
flags |= (1 << 0);
|
|
}
|
|
if (_banSendMessages) {
|
|
flags |= (1 << 1);
|
|
}
|
|
if (_banSendMedia) {
|
|
flags |= (1 << 2);
|
|
}
|
|
if (_banSendStickers) {
|
|
flags |= (1 << 3);
|
|
}
|
|
if (_banSendGifs) {
|
|
flags |= (1 << 4);
|
|
}
|
|
if (_banSendGames) {
|
|
flags |= (1 << 5);
|
|
}
|
|
if (_banSendInline) {
|
|
flags |= (1 << 6);
|
|
}
|
|
if (_banEmbedLinks) {
|
|
flags |= (1 << 7);
|
|
}
|
|
return flags;
|
|
}
|
|
|
|
- (instancetype)initWithKeyValueCoder:(PSKeyValueCoder *)coder {
|
|
int32_t flags = [coder decodeInt32ForCKey:"f"];
|
|
int32_t until_date = [coder decodeInt32ForCKey:"t"];
|
|
return [self initWithFlags:flags timeout:until_date];
|
|
}
|
|
|
|
- (instancetype)initWithFlags:(int32_t)flags timeout:(int32_t)timeout {
|
|
return [self initWithBanReadMessages:flags & (1 << 0) banSendMessages:flags & (1 << 1) banSendMedia:flags & (1 << 2) banSendStickers:flags & (1 << 3) banSendGifs:flags & (1 << 4) banSendGames:flags & (1 << 5) banSendInline:flags & (1 << 6) banEmbedLinks:flags & (1 << 7) timeout:timeout];
|
|
}
|
|
|
|
- (void)encodeWithKeyValueCoder:(PSKeyValueCoder *)coder {
|
|
[coder encodeInt32:[self tlFlags] forCKey:"f"];
|
|
[coder encodeInt32:_timeout forCKey:"t"];
|
|
}
|
|
|
|
- (BOOL)isEqual:(id)object {
|
|
if ([object isKindOfClass:[TGChannelBannedRights class]] && [((TGChannelBannedRights *)object) tlFlags] == [self tlFlags] && ((TGChannelBannedRights *)object)->_timeout == _timeout) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
- (int32_t)numberOfRestrictions {
|
|
int32_t flags = [self tlFlags];
|
|
int32_t count = 0;
|
|
for (int i = 0; i < 31; i++) {
|
|
if (flags == 0) {
|
|
break;
|
|
}
|
|
if ((flags & 1) != 0) {
|
|
count++;
|
|
}
|
|
flags = flags >> 1;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
@end
|