1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-02 09:27:55 +01:00
Telegram/Telegraph/TGPhonebookUserInfoController.m
2014-07-10 18:11:09 +04:00

140 lines
5.2 KiB
Objective-C

#import "TGPhonebookUserInfoController.h"
#import "ActionStage.h"
#import "TGPhoneUtils.h"
#import "TGDatabase.h"
#import "TGTelegraph.h"
#import "TGUserInfoCollectionItem.h"
#import "TGUserInfoPhoneCollectionItem.h"
#import "TGUserInfoButtonCollectionItem.h"
#import "TGActionSheet.h"
#import <MessageUI/MessageUI.h>
@interface TGPhonebookUserInfoController () <MFMessageComposeViewControllerDelegate>
{
TGPhonebookContact *_phonebookInfo;
}
@end
@implementation TGPhonebookUserInfoController
- (instancetype)initWithNativeContactId:(int)nativeContactId
{
self = [super init];
if (self != nil)
{
[self setTitleText:TGLocalized(@"UserInfo.Title")];
_phonebookInfo = [TGDatabaseInstance() phonebookContactByNativeId:nativeContactId];
if (_phonebookInfo != nil)
{
TGUser *user = [[TGUser alloc] init];
user.firstName = _phonebookInfo.firstName;
user.lastName = _phonebookInfo.lastName;
self.userInfoItem.automaticallyManageUserPresence = false;
[self.userInfoItem setUser:user animated:false];
NSUInteger phonesSectionIndex = [self indexForSection:self.phonesSection];
for (TGPhoneNumber *phoneNumber in _phonebookInfo.phoneNumbers)
{
TGUserInfoPhoneCollectionItem *phoneItem = [[TGUserInfoPhoneCollectionItem alloc] initWithLabel:phoneNumber.label phone:phoneNumber.number phoneColor:[UIColor blackColor] action:@selector(phonePressed:)];
if (phonesSectionIndex != NSNotFound)
[self.menuSections insertItem:phoneItem toSection:phonesSectionIndex atIndex:self.phonesSection.items.count];
}
if (_phonebookInfo.phoneNumbers.count != 0)
{
NSUInteger actionsSectionIndex = [self indexForSection:self.actionsSection];
TGUserInfoButtonCollectionItem *inviteItem = [[TGUserInfoButtonCollectionItem alloc] initWithTitle:TGLocalized(@"UserInfo.Invite") action:@selector(invitePressed)];
inviteItem.deselectAutomatically = true;
inviteItem.titleColor = UIColorRGB(0x12b200);
if (actionsSectionIndex != NSNotFound)
[self.menuSections insertItem:inviteItem toSection:actionsSectionIndex atIndex:self.actionsSection.items.count];
}
}
}
return self;
}
- (void)invitePressed
{
if (_phonebookInfo.phoneNumbers.count == 0)
return;
if (_phonebookInfo.phoneNumbers.count == 1)
[self _inviteWithPhoneNumber:((TGPhoneNumber *)_phonebookInfo.phoneNumbers[0]).number];
else
{
NSMutableArray *actions = [[NSMutableArray alloc] init];
for (TGPhoneNumber *phoneNumber in _phonebookInfo.phoneNumbers)
{
if (phoneNumber.number.length != 0)
{
[actions addObject:[[TGActionSheetAction alloc] initWithTitle:[[NSString alloc] initWithFormat:@"%@: %@", phoneNumber.label, [TGPhoneUtils formatPhone:phoneNumber.number forceInternational:false]] action:phoneNumber.number]];
}
}
[actions addObject:[[TGActionSheetAction alloc] initWithTitle:TGLocalized(@"Common.Cancel") action:@"cancel" type:TGActionSheetActionTypeCancel]];
[[[TGActionSheet alloc] initWithTitle:nil actions:actions actionBlock:^(TGPhonebookUserInfoController *controller, NSString *action)
{
if (![action isEqualToString:@"cancel"])
[controller _inviteWithPhoneNumber:action];
} target:self] showInView:self.view];
}
}
- (void)_inviteWithPhoneNumber:(NSString *)phoneNumber
{
if ([MFMessageComposeViewController canSendText])
{
MFMessageComposeViewController *messageComposer = [[MFMessageComposeViewController alloc] init];
if (messageComposer != nil)
{
messageComposer.recipients = [[NSArray alloc] initWithObjects:phoneNumber, nil];
messageComposer.messageComposeDelegate = self;
NSString *body = [[NSUserDefaults standardUserDefaults] objectForKey:@"TG_inviteText"];
if (body.length == 0)
{
body = TGLocalized(@"Contacts.InvitationText");
}
messageComposer.body = body;
[self presentViewController:messageComposer animated:true completion:nil];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
}
}
}
- (void)messageComposeViewController:(MFMessageComposeViewController *)__unused controller didFinishWithResult:(MessageComposeResult)result
{
[self dismissViewControllerAnimated:true completion:nil];
if (result == MessageComposeResultSent)
{
@try
{
static int inviteAction = 0;
[ActionStageInstance() requestActor:[[NSString alloc] initWithFormat:@"/tg/auth/sendinvites/(%d)", inviteAction] options:[[NSDictionary alloc] initWithObjectsAndKeys:controller.body, @"text", controller.recipients, @"phones", nil] watcher:TGTelegraphInstance];
}
@catch (NSException *exception)
{
}
}
}
@end