blob: 0fc5fd7c1e628650bdd8a200291e0146cb5e5318 (
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
//
// 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 "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.view 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.view 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
|