// // NewPostViewController.m // Juick // // Created by Vitaly Takmazov on 07.11.13. // Copyright (c) 2013 com.juick. All rights reserved. // #import "NewPostViewController.h" #import "MessagesViewController.h" #import "QuoteView.h" #import "User+UIView.h" NSString * const NewMessageNotificationName = @"NewMessage"; NSString * const ReplyPostedNotificationName = @"ReplyPosted"; @interface NewPostViewController () @property (nonatomic, assign) BOOL didSetupConstraints; @property (nonatomic, assign) int paddingValue; @property (nonatomic, readwrite, retain) UIView *inputAccessoryView; @property (weak, nonatomic) IBOutlet UIStackView *stack; @end @implementation NewPostViewController - (void)viewDidLoad { [super viewDidLoad]; self.paddingValue = self.bottomConstraint.constant; if (_replyTo != nil) { QuoteView *inputView = (QuoteView *) self.inputAccessoryView; inputView.quoteText.text = _replyTo.text; self.title = [NSString stringWithFormat:@"Reply to %@", _replyTo.user.uname]; #if TARGET_OS_MACCATALYST [self.stack addArrangedSubview:[self inputAccessoryView]]; #endif } else { self.title = @"Post"; } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil]; self.textView.delegate = self; [self.textView becomeFirstResponder]; } - (IBAction)sendAction:(id)sender { self.navigationItem.rightBarButtonItem.enabled = NO; if (_replyTo == nil) { [[AppDelegate shared].api postMessage:self.textView.text result:^(Message *msg, NSError *err) { self.navigationItem.rightBarButtonItem.enabled = YES; if (!err) { [self dismissViewControllerAnimated:YES completion:^{ [[NSNotificationCenter defaultCenter] postNotificationName:NewMessageNotificationName object:msg]; }]; } else { self.navigationController.navigationItem.rightBarButtonItem.enabled = YES; [User throwUnableToLogin:self sourceView:self.navigationItem.rightBarButtonItem error:err path:@"postMessage" params:nil]; } }]; } else { self.navigationItem.rightBarButtonItem.enabled = NO; [[AppDelegate shared].api postReplyToThread:_replyTo.mid inReplyTo:_replyTo.rid text:self.textView.text result:^(Message *msg, NSError *err) { if (!err) { [self dismissViewControllerAnimated:YES completion:^{ [[NSNotificationCenter defaultCenter] postNotificationName:ReplyPostedNotificationName object:msg]; }]; } else { self.navigationItem.rightBarButtonItem.enabled = YES; [User throwUnableToLogin:self sourceView:self.navigationItem.rightBarButtonItem error:err path:@"postreply" params: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]; } -(BOOL) canBecomeFirstResponder { return YES; } - (UIView *) inputAccessoryView { if (!_inputAccessoryView) { QuoteView *inputView = (QuoteView *)[[[NSBundle mainBundle] loadNibNamed:@"QuoteView" owner:self options:nil] firstObject]; inputView.autoresizingMask = UIViewAutoresizingFlexibleHeight; inputView.quoteText.text = self.replyTo.text; _inputAccessoryView = inputView; } return _inputAccessoryView; } - (void)textViewDidChange:(UITextView *)textView { self.navigationItem.rightBarButtonItem.enabled = [textView.text length]; } - (IBAction)cancelPost:(id)sender { [self dismissViewControllerAnimated:YES completion:nil]; } @end