// // AppDelegate.m // Juick // // Created by Vitaly Takmazov on 26.10.13. // Copyright (c) 2013 com.juick. All rights reserved. // #import "AppDelegate.h" #import "MessagesViewController.h" #import "RevealPanelViewController.h" #import "SWRevealViewController.h" #import "LoginViewController.h" #import "ColorScheme.h" #import "Message.h" #import "TokensList.h" @implementation AppDelegate SWRevealViewController *reveal; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UINavigationBar appearance] setTintColor:[ColorScheme linkColor]]; [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [ColorScheme linkColor]}]; [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; MessagesViewController *messages = [[MessagesViewController alloc] init]; RevealPanelViewController *rear = [[RevealPanelViewController alloc] init]; UINavigationController *main = [[UINavigationController alloc] initWithRootViewController:messages]; UINavigationController *rearNav = [[UINavigationController alloc] initWithRootViewController:rear]; reveal = [[SWRevealViewController alloc] initWithRearViewController:rearNav frontViewController:main]; self.viewController = reveal; [messages.navigationController.navigationBar addGestureRecognizer:reveal.panGestureRecognizer]; UIBarButtonItem *revealButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"reveal-icon.png"] style:UIBarButtonItemStylePlain target:reveal action:@selector(revealToggle:)]; messages.navigationItem.leftBarButtonItem = revealButtonItem; UIBarButtonItem *compose = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:messages action:@selector(composePressed)]; messages.navigationItem.rightBarButtonItem = compose; if ([User isAuthenticated]) { [User checkIsValid:^(BOOL success) { if (success) { [messages loadFromPath:[Message feedUrl] withParams:nil withTitle:@"My feed"]; [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert|UIUserNotificationTypeSound|UIUserNotificationTypeBadge) categories:nil]]; } else { [User throwUnableToLogin]; } }]; } else { [messages loadFromPath:[Message messagesUrl] withParams:nil withTitle:@"Discover"]; } self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; } - (void) pushLoginForm { if ([reveal isBeingPresented]) { [reveal revealToggle:self]; } UIViewController *loginView = [[LoginViewController alloc] init]; UINavigationController *messages = (UINavigationController *)reveal.frontViewController; [messages pushViewController:loginView animated:YES]; } -(void) application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { [[UIApplication sharedApplication] registerForRemoteNotifications]; } -(void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]]; token = [token stringByReplacingOccurrencesOfString:@" " withString:@""]; TokensList *tokensList = [TokensList new]; tokensList.type = @"apns"; tokensList.tokens = [NSArray arrayWithObjects:token, nil]; AFHTTPSessionManager *manager = [APIClient sharedClient].manager; [manager PUT:@"/notifications" parameters:[tokensList yy_modelToJSONObject] success:nil failure:nil]; } -(void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"Error: %@", [error debugDescription]); } @end