// // LoginViewController.m // Juick // // Created by Vitaly on 30.01.14. // Copyright (c) 2014 com.juick. All rights reserved. // #import "LoginViewController.h" #import "User.h" #import "AppDelegate.h" #import "APIClient.h" NSString * const UserSignedInNotificationName = @"UserSignedIn"; @interface LoginViewController() @property (nonatomic, assign) int paddingValue; @end @implementation LoginViewController - (void) awakeFromNib { [super awakeFromNib]; self.title = @"Sign in"; [self.view setBackgroundColor:[UIColor colorNamed:@"Background"]]; [self.visualEffectView.contentView setBackgroundColor:[UIColor colorNamed:@"Background"]]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelSignIn)]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(doneSignIn)]; self.usernameField.text = [APIClient sharedClient].credential.user; self.passwordField.text = [APIClient sharedClient].credential.password; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil]; } -(void) keyboardDidShow:(NSNotification *)sender { CGRect keyboardRect = [sender.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; self.bottomConstraint.constant = keyboardRect.size.height - self.view.safeAreaInsets.bottom + self.paddingValue; [self.view layoutIfNeeded]; } -(void) keyboardWillHide:(NSNotification *)sender { self.bottomConstraint.constant = self.paddingValue; [self.view layoutIfNeeded]; } - (void) cancelSignIn { CATransition* transition = [CATransition animation]; transition.duration = 0.3; transition.type = kCATransitionFade; transition.subtype = kCATransitionFromTop; [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; [self.navigationController dismissViewControllerAnimated:NO completion:nil]; } - (void) doneSignIn { [[APIClient sharedClient] setCredential:[NSURLCredential credentialWithUser:self.usernameField.text password:self.passwordField.text persistence:NSURLCredentialPersistenceSynchronizable]]; [[APIClient sharedClient] authenticate:^(User *user, NSError *error) { if (user) { [[NSNotificationCenter defaultCenter] postNotificationName:UserSignedInNotificationName object:user]; [[AppDelegate shared] registerForRemoteNotifications]; CATransition* transition = [CATransition animation]; transition.duration = 0.3; transition.type = kCATransitionFade; transition.subtype = kCATransitionFromTop; [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; [self.navigationController dismissViewControllerAnimated:NO completion:nil]; } else { [User throwUnableToLogin:self error:error]; } }]; } @end