mirror of
https://github.com/danog/Telegram.git
synced 2024-12-02 17:38:07 +01:00
107 lines
4.1 KiB
Objective-C
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
|