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

107 lines
4.1 KiB
Objective-C

#import "TGChannelModeratorController.h"
#import "TGCheckCollectionItem.h"
#import "TGCommentCollectionItem.h"
#import "TGHeaderCollectionItem.h"
#import "TGDatabase.h"
#import "TGChannelManagementSignals.h"
#import "TGButtonCollectionItem.h"
#import "TGChannelModeratorCollectionItem.h"
@interface TGChannelModeratorController () {
TGConversation *_conversation;
TGUser *_user;
TGCachedConversationMember *_originalMember;
TGCachedConversationMember *_member;
TGCheckCollectionItem *_moderatorItem;
TGCheckCollectionItem *_editorItem;
TGCommentCollectionItem *_accessLevelHelpItem;
}
@end
@implementation TGChannelModeratorController
- (instancetype)initWithConversation:(TGConversation *)conversation user:(TGUser *)user member:(TGCachedConversationMember *)member {
self = [super init];
if (self != nil) {
_conversation = conversation;
_user = user;
_originalMember = member;
_member = member;
self.title = TGLocalized(@"Channel.Moderator.Title");
[self setRightBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:TGLocalized(@"Common.Done") style:UIBarButtonItemStyleDone target:self action:@selector(donePressed)]];
TGChannelModeratorCollectionItem *userItem = [[TGChannelModeratorCollectionItem alloc] init];
userItem.user = user;
TGCollectionMenuSection *userSection = [[TGCollectionMenuSection alloc] initWithItems:@[userItem]];
UIEdgeInsets insets = userSection.insets;
insets.top = 35.0f;
userSection.insets = insets;
[self.menuSections addSection:userSection];
TGHeaderCollectionItem *accessLevelHeader = [[TGHeaderCollectionItem alloc] initWithTitle:TGLocalized(@"Channel.Moderator.AccessLevelHeader")];
_moderatorItem = [[TGCheckCollectionItem alloc] initWithTitle:TGLocalized(@"Channel.Moderator.AccessLevelModerator") action:@selector(moderatorPressed)];
_moderatorItem.isChecked = _member == nil || _member.role == TGChannelRoleModerator;
_editorItem = [[TGCheckCollectionItem alloc] initWithTitle:TGLocalized(@"Channel.Moderator.AccessLevelEditor") action:@selector(editorPressed)];
_editorItem.isChecked = !_moderatorItem.isChecked;
_accessLevelHelpItem = [[TGCommentCollectionItem alloc] initWithFormattedText:TGLocalized(@"")];
TGCollectionMenuSection *accessLevelSection = [[TGCollectionMenuSection alloc] initWithItems:@[accessLevelHeader, _moderatorItem, _editorItem, _accessLevelHelpItem]];
[self.menuSections addSection:accessLevelSection];
if (_member != nil) {
TGButtonCollectionItem *dismissItem = [[TGButtonCollectionItem alloc] initWithTitle:TGLocalized(@"Channel.Moderator.AccessLevelRevoke") action:@selector(dismissPressed)];
dismissItem.titleColor = TGDestructiveAccentColor();
TGCollectionMenuSection *dismissModeratorSection = [[TGCollectionMenuSection alloc] initWithItems:@[dismissItem]];
[self.menuSections addSection:dismissModeratorSection];
}
[self updateAccessLevelHelp];
}
return self;
}
- (void)updateAccessLevelHelp {
if (_moderatorItem.isChecked) {
[_accessLevelHelpItem setFormattedText:TGLocalized(@"Channel.Moderator.AccessLevelModeratorHelp")];
} else {
[_accessLevelHelpItem setFormattedText:TGLocalized(@"Channel.Moderator.AccessLevelEditorHelp")];
}
[self.collectionLayout invalidateLayout];
[self.collectionView layoutSubviews];
}
- (void)donePressed {
if (_done) {
_done(_member);
}
}
- (void)moderatorPressed {
_member = [[TGCachedConversationMember alloc] initWithUid:_user.uid role:TGChannelRoleModerator timestamp:0];
_editorItem.isChecked = false;
_moderatorItem.isChecked = true;
[self updateAccessLevelHelp];
}
- (void)editorPressed {
_member = [[TGCachedConversationMember alloc] initWithUid:_user.uid role:TGChannelRolePublisher timestamp:0];
_editorItem.isChecked = true;
_moderatorItem.isChecked = false;
[self updateAccessLevelHelp];
}
- (void)dismissPressed {
if (_done) {
_done(nil);
}
}
@end