summaryrefslogtreecommitdiff
path: root/Juick/AppDelegate.m
blob: 1ba0ccf6965af5f124ae77bb3124da5fccc7d1e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//
//  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