summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2017-12-09 23:47:30 +0300
committerGravatar Vitaly Takmazov2017-12-09 23:47:30 +0300
commita38541e14ecfea8e37c80755fb3b2ef25cd81272 (patch)
tree3b26f5e4f86a4eb103193535abf7f9b15e0e67e6
parente2ac87809468e9487389e5d22ab9766996898478 (diff)
working post/reply
-rw-r--r--Juick/APIClient.h1
-rw-r--r--Juick/APIClient.m20
-rw-r--r--Juick/Main.storyboard12
-rw-r--r--Juick/Supporting Files/Juick-Info.plist2
-rw-r--r--Juick/ViewControllers/MessagesViewController.h3
-rw-r--r--Juick/ViewControllers/MessagesViewController.m16
-rw-r--r--Juick/ViewControllers/NewPostViewController.h6
-rw-r--r--Juick/ViewControllers/NewPostViewController.m45
-rw-r--r--Juick/ViewControllers/ThreadViewController.m63
-rw-r--r--Juick/Views/MessageCell.xib4
-rw-r--r--Juick/Views/MessageInputView.h2
-rw-r--r--Juick/Views/MessageInputView.xib62
12 files changed, 117 insertions, 119 deletions
diff --git a/Juick/APIClient.h b/Juick/APIClient.h
index 9347da9..a20998a 100644
--- a/Juick/APIClient.h
+++ b/Juick/APIClient.h
@@ -15,6 +15,7 @@
+(APIClient *) sharedClient;
-(void) pullNextFromPath:(NSString *)path params:(NSDictionary *)params callback:(void(^)(NSArray *, NSError *))callback;
+-(void) postMessage:(NSString *)text result:(void(^)(Message *, NSError *))callback;
-(void) postReplyToThread:(NSNumber *)mid inReplyTo:(NSNumber *)rid text:(NSString *)text result:(void(^)(Message *, NSError *))callback;
+(NSString *) messagesUrl;
diff --git a/Juick/APIClient.m b/Juick/APIClient.m
index abefa40..ecaf536 100644
--- a/Juick/APIClient.m
+++ b/Juick/APIClient.m
@@ -57,6 +57,26 @@
}];
}
+-(void) postMessage:(NSString *)text result:(void (^)(Message *, NSError *))callback {
+ AFHTTPSessionManager *manager = [APIClient sharedClient].manager;
+ [self.backgroundQueue addOperationWithBlock:^{
+ [manager POST:@"/post" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
+ [formData appendPartWithFormData:[text dataUsingEncoding:NSUTF8StringEncoding] name:@"body"];
+ } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
+ NSLog(@"Success!");
+ Message *result = [Message yy_modelWithJSON:responseObject];
+ [[NSOperationQueue mainQueue] addOperationWithBlock:^{
+ callback(result, nil);
+ }];
+ } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
+ NSLog(@"Error: %@", [error localizedDescription]);
+ [[NSOperationQueue mainQueue] addOperationWithBlock:^{
+ callback(nil, error);
+ }];
+ }];
+ }];
+}
+
-(void) postReplyToThread:(NSNumber *)mid inReplyTo:(NSNumber *)rid text:(NSString *)text result:(void(^)(Message *, NSError *))callback {
AFHTTPSessionManager *manager = [APIClient sharedClient].manager;
[self.backgroundQueue addOperationWithBlock:^{
diff --git a/Juick/Main.storyboard b/Juick/Main.storyboard
index 5f3c1ce..71391a9 100644
--- a/Juick/Main.storyboard
+++ b/Juick/Main.storyboard
@@ -40,13 +40,16 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<prototypes>
- <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="messageCell" id="6fG-tI-4kH">
+ <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="messageCell" id="6fG-tI-4kH">
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="6fG-tI-4kH" id="ifl-hK-faj">
- <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
+ <rect key="frame" x="0.0" y="0.0" width="341" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
+ <connections>
+ <segue destination="rr1-jx-MLx" kind="push" identifier="replySegue" id="gw8-QZ-Hrt"/>
+ </connections>
</tableViewCell>
</prototypes>
<connections>
@@ -58,7 +61,7 @@
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="woP-g5-FaQ" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
- <point key="canvasLocation" x="-671" y="-958"/>
+ <point key="canvasLocation" x="-223" y="-1072"/>
</scene>
<!--Discover-->
<scene sceneID="uvH-u9-x7X">
@@ -308,4 +311,7 @@
<image name="chats_icon" width="20" height="22"/>
<image name="profile_icon" width="16" height="20"/>
</resources>
+ <inferredMetricsTieBreakers>
+ <segue reference="gw8-QZ-Hrt"/>
+ </inferredMetricsTieBreakers>
</document>
diff --git a/Juick/Supporting Files/Juick-Info.plist b/Juick/Supporting Files/Juick-Info.plist
index 1415672..b3cfda5 100644
--- a/Juick/Supporting Files/Juick-Info.plist
+++ b/Juick/Supporting Files/Juick-Info.plist
@@ -21,7 +21,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>1.0.31</string>
+ <string>1.0.32</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationCategoryType</key>
diff --git a/Juick/ViewControllers/MessagesViewController.h b/Juick/ViewControllers/MessagesViewController.h
index 7f5f274..548f8ec 100644
--- a/Juick/ViewControllers/MessagesViewController.h
+++ b/Juick/ViewControllers/MessagesViewController.h
@@ -11,7 +11,8 @@
@interface MessagesViewController : UITableViewController
@property(nonatomic, strong) NSString *path;
@property(nonatomic, strong) NSMutableDictionary *params;
-- (void) refreshData;
+-(void) refreshData;
+-(void) refreshData:(BOOL)scrollToBottom;
@property(nonatomic, strong) NSMutableArray *messages;
@property(nonatomic, assign) Boolean dataLoading;
diff --git a/Juick/ViewControllers/MessagesViewController.m b/Juick/ViewControllers/MessagesViewController.m
index 80e8c73..823d838 100644
--- a/Juick/ViewControllers/MessagesViewController.m
+++ b/Juick/ViewControllers/MessagesViewController.m
@@ -23,7 +23,11 @@
@implementation MessagesViewController
-- (void) refreshData {
+-(void) refreshData {
+ [self refreshData:NO];
+}
+
+-(void) refreshData:(BOOL)scrollToBottom {
self.dataLoading = YES;
[[APIClient sharedClient] pullNextFromPath:self.path params:self.params callback:^(NSArray *next, NSError *err) {
NSArray *newMsgs = next;
@@ -49,6 +53,10 @@
[self.tableView endUpdates];
[self.refreshControl endRefreshing];
self.dataLoading = NO;
+ if (scrollToBottom) {
+ NSIndexPath *lastRow = [NSIndexPath indexPathForRow:self.messages.count - 1 inSection:0];
+ [self.tableView scrollToRowAtIndexPath:lastRow atScrollPosition:UITableViewScrollPositionBottom animated:YES];
+ }
}];
}
@@ -75,7 +83,7 @@
if ([self.path length] == 0) {
self.path = [APIClient feedUrl];
}
- [self refreshData];
+ [self refreshData:NO];
} else {
[User throwUnableToLogin:self];
}
@@ -85,7 +93,7 @@
if ([self.path length] == 0) {
self.path = [APIClient messagesUrl];
}
- [self refreshData];
+ [self refreshData:NO];
}
}
@@ -119,7 +127,7 @@
if (![self.path isEqualToString:[APIClient threadUrl]]) {
self.params = [@{@"before_mid":lastMid} mutableCopy];
}
- [self refreshData];
+ [self refreshData:NO];
}
}
}
diff --git a/Juick/ViewControllers/NewPostViewController.h b/Juick/ViewControllers/NewPostViewController.h
index 3d4ba88..7a1dfac 100644
--- a/Juick/ViewControllers/NewPostViewController.h
+++ b/Juick/ViewControllers/NewPostViewController.h
@@ -7,8 +7,14 @@
//
#import <UIKit/UIKit.h>
+#import "Message.h"
@interface NewPostViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextView *textView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomConstraint;
+
+@property (strong, nonatomic) NSString *draft;
+
+@property (strong, nonatomic) Message *replyTo;
+
@end
diff --git a/Juick/ViewControllers/NewPostViewController.m b/Juick/ViewControllers/NewPostViewController.m
index 9643b78..8a9bc0e 100644
--- a/Juick/ViewControllers/NewPostViewController.m
+++ b/Juick/ViewControllers/NewPostViewController.m
@@ -7,13 +7,18 @@
//
#import "NewPostViewController.h"
+#import "MessagesViewController.h"
#import "ColorScheme.h"
+#import "MessageInputView.h"
+#import "APIClient.h"
@interface NewPostViewController ()
@property (nonatomic, assign) BOOL didSetupConstraints;
@property (nonatomic, assign) int paddingValue;
+@property (nonatomic, readwrite, retain) UIView *inputAccessoryView;
+
@end
@implementation NewPostViewController
@@ -21,8 +26,14 @@
- (void)viewDidLoad
{
[super viewDidLoad];
- self.navigationController.visibleViewController.title = @"Post";
- self.navigationController.visibleViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
+ if (_replyTo != nil) {
+ MessageInputView *inputView = (MessageInputView *) self.inputAccessoryView;
+ inputView.quoteText.text = _replyTo.text;
+ self.navigationController.visibleViewController.title = [NSString stringWithFormat:@"Reply to %@", _replyTo.user.uname];
+ } else {
+ self.navigationController.visibleViewController.title = @"Post";
+ }
+ self.navigationController.visibleViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self action:@selector(cancelCompose)];
self.navigationController.visibleViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self action:@selector(doneCompose)];
@@ -37,7 +48,19 @@
}
- (void) doneCompose {
- [self.navigationController.visibleViewController.navigationController popToRootViewControllerAnimated:YES];
+ if (_replyTo == nil) {
+ [[APIClient sharedClient] postMessage:self.textView.text result:^(Message *msg, NSError *err) {
+ [self.navigationController.visibleViewController.navigationController popViewControllerAnimated:YES];
+ MessagesViewController *target = (MessagesViewController *)self.navigationController.visibleViewController;
+ [target refreshData:YES];
+ }];
+ } else {
+ [[APIClient sharedClient] postReplyToThread:_replyTo.mid inReplyTo:_replyTo.rid text:self.textView.text result:^(Message *msg, NSError *err) {
+ [self.navigationController.visibleViewController.navigationController popViewControllerAnimated:YES];
+ MessagesViewController *target = (MessagesViewController *)self.navigationController.visibleViewController;
+ [target refreshData:YES];
+ }];
+ }
}
-(void) keyboardDidShow:(NSNotification *)sender {
@@ -53,4 +76,20 @@
self.bottomConstraint.constant = self.paddingValue;
[self.view layoutIfNeeded];
}
+
+-(BOOL) canBecomeFirstResponder {
+ return YES;
+}
+
+- (UIView *) inputAccessoryView {
+ if (!_inputAccessoryView) {
+ MessageInputView *inputView = (MessageInputView *)[[[NSBundle mainBundle] loadNibNamed:@"MessageInputView" owner:self options:nil] firstObject];
+ inputView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
+ inputView.quoteText.text = self.replyTo.text;
+ _inputAccessoryView = inputView;
+ }
+ return _inputAccessoryView;
+}
+
+
@end
diff --git a/Juick/ViewControllers/ThreadViewController.m b/Juick/ViewControllers/ThreadViewController.m
index 06cbf9a..8cb2cb5 100644
--- a/Juick/ViewControllers/ThreadViewController.m
+++ b/Juick/ViewControllers/ThreadViewController.m
@@ -7,70 +7,27 @@
//
#import "ThreadViewController.h"
-#import "ColorScheme.h"
+#import "NewPostViewController.h"
#import "MessageCell.h"
-#import "MessageInputView.h"
-#import "APIClient.h"
@interface ThreadViewController ()
-@property (nonatomic, readwrite, retain) UIView *inputAccessoryView;
-
--(void) updateQuoteText:(Message *)message;
-@property NSNumber *replyTo;
-
@end
@implementation ThreadViewController
-- (void)viewDidLoad {
- [super viewDidLoad];
- self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
-
- _replyTo = @(0);
-}
-
-
-- (BOOL) canBecomeFirstResponder {
- return YES;
+-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ NSString * cellIdentifier = @"messageCell";
+ MessageCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
+ [self performSegueWithIdentifier:@"replySegue" sender:cell];
}
-- (UIView *)inputAccessoryView {
- if (!_inputAccessoryView) {
- MessageInputView *inputView = (MessageInputView *)[[[NSBundle mainBundle] loadNibNamed:@"MessageInputView" owner:self options:nil] firstObject];
- /*inputView.backgroundColor = [UIColor whiteColor];
- inputView.buttonTintColor = [ColorScheme linkColor];
- inputView.maxLinesCount = 4;
- inputView.utilityButtonImage = [UIImage imageNamed:@"Camera"];
- inputView.delegate = self;*/
- inputView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
- [inputView.sendButton addTarget:self action:@selector(sendReply) forControlEvents:UIControlEventTouchUpInside];
- _inputAccessoryView = inputView;
+-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+ if ([segue.identifier isEqual: @"replySegue"]) {
+ Message *msg = [self.messages objectAtIndex:[self.tableView indexPathForSelectedRow].row];
+ NewPostViewController *postVC = (NewPostViewController *)segue.destinationViewController;
+ [postVC setReplyTo:msg];
}
- return _inputAccessoryView;
-}
-
--(void) updateQuoteText:(Message *)message {
- MessageInputView *inputView = (MessageInputView *)self.inputAccessoryView;
- inputView.quoteText.text = message.text;
- [inputView.textContent becomeFirstResponder];
-}
--(void) sendReply {
- MessageInputView *inputView = (MessageInputView *)self.inputAccessoryView;
- Message *msg = [self.messages firstObject];
- [[APIClient sharedClient] postReplyToThread:msg.mid inReplyTo:self.replyTo text:inputView.textContent.text result:^(Message *msg, NSError *err) {
- MessageInputView *inputView = (MessageInputView *)self.inputAccessoryView;
- inputView.quoteText.text = @"";
- inputView.textContent.text = @"";
- [inputView.textContent endEditing:YES];
- [self refreshData];
- }];
-}
-
--(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- Message * selectedMessage = [self.messages objectAtIndex:indexPath.row];
- _replyTo = selectedMessage.rid;
- [self updateQuoteText:selectedMessage];
}
@end
diff --git a/Juick/Views/MessageCell.xib b/Juick/Views/MessageCell.xib
index d5fcab0..2216ef4 100644
--- a/Juick/Views/MessageCell.xib
+++ b/Juick/Views/MessageCell.xib
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13527"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
diff --git a/Juick/Views/MessageInputView.h b/Juick/Views/MessageInputView.h
index 46919b4..cfdcea6 100644
--- a/Juick/Views/MessageInputView.h
+++ b/Juick/Views/MessageInputView.h
@@ -10,6 +10,4 @@
@interface MessageInputView : UIVisualEffectView
@property (weak, nonatomic) IBOutlet UILabel *quoteText;
-@property (weak, nonatomic) IBOutlet UIButton *sendButton;
-@property (weak, nonatomic) IBOutlet UITextView *textContent;
@end
diff --git a/Juick/Views/MessageInputView.xib b/Juick/Views/MessageInputView.xib
index 2245927..125956d 100644
--- a/Juick/Views/MessageInputView.xib
+++ b/Juick/Views/MessageInputView.xib
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13527"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@@ -19,64 +19,26 @@
<rect key="frame" x="0.0" y="0.0" width="368" height="90"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
- <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="6" translatesAutoresizingMaskIntoConstraints="NO" id="3Wb-84-dcd">
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" verticalCompressionResistancePriority="248" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Swn-59-jWb">
<rect key="frame" x="6" y="6" width="356" height="78"/>
- <subviews>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" verticalCompressionResistancePriority="248" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Swn-59-jWb">
- <rect key="frame" x="0.0" y="0.0" width="356" height="34"/>
- <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <stackView opaque="NO" contentMode="scaleToFill" verticalCompressionResistancePriority="749" spacing="12" translatesAutoresizingMaskIntoConstraints="NO" id="e2q-59-qlo">
- <rect key="frame" x="0.0" y="40" width="356" height="38"/>
- <subviews>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="infoLight" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZXm-ce-xjB">
- <rect key="frame" x="0.0" y="0.0" width="44" height="38"/>
- <constraints>
- <constraint firstAttribute="width" constant="44" id="chf-2p-LxF"/>
- </constraints>
- </button>
- <textView multipleTouchEnabled="YES" contentMode="scaleToFill" horizontalHuggingPriority="252" horizontalCompressionResistancePriority="749" scrollEnabled="NO" keyboardDismissMode="interactive" textAlignment="natural" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="alc-Oi-DBv">
- <rect key="frame" x="56" y="0.0" width="244" height="38"/>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
- <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
- <userDefinedRuntimeAttributes>
- <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
- <integer key="value" value="5"/>
- </userDefinedRuntimeAttribute>
- <userDefinedRuntimeAttribute type="boolean" keyPath="layer.clipsToBounds" value="YES"/>
- </userDefinedRuntimeAttributes>
- </textView>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9h3-lP-1PC">
- <rect key="frame" x="312" y="0.0" width="44" height="38"/>
- <constraints>
- <constraint firstAttribute="width" constant="44" id="QvX-xP-ypC"/>
- </constraints>
- <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
- <state key="normal" title="Send"/>
- </button>
- </subviews>
- </stackView>
- </subviews>
- </stackView>
+ <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ </label>
</subviews>
<constraints>
- <constraint firstItem="ZiU-Ll-9jB" firstAttribute="bottom" secondItem="3Wb-84-dcd" secondAttribute="bottom" constant="6" id="6la-q5-7Uo"/>
- <constraint firstItem="3Wb-84-dcd" firstAttribute="top" secondItem="ZiU-Ll-9jB" secondAttribute="top" constant="6" id="ibK-wT-80X"/>
- <constraint firstItem="ZiU-Ll-9jB" firstAttribute="trailing" secondItem="3Wb-84-dcd" secondAttribute="trailing" constant="6" id="wBb-3j-nHr"/>
- <constraint firstItem="3Wb-84-dcd" firstAttribute="leading" secondItem="ZiU-Ll-9jB" secondAttribute="leading" constant="6" id="wM0-uw-QAg"/>
+ <constraint firstItem="Swn-59-jWb" firstAttribute="leading" secondItem="ZiU-Ll-9jB" secondAttribute="leading" constant="6" id="nTb-2n-vCy"/>
+ <constraint firstItem="ZiU-Ll-9jB" firstAttribute="bottom" secondItem="Swn-59-jWb" secondAttribute="bottom" constant="6" id="snn-zN-hrV"/>
+ <constraint firstItem="ZiU-Ll-9jB" firstAttribute="trailing" secondItem="Swn-59-jWb" secondAttribute="trailing" constant="6" id="tyN-OL-Y06"/>
+ <constraint firstItem="Swn-59-jWb" firstAttribute="top" secondItem="ZiU-Ll-9jB" secondAttribute="top" constant="6" id="vVV-Yt-s8Q"/>
</constraints>
<viewLayoutGuide key="safeArea" id="ZiU-Ll-9jB"/>
</view>
<blurEffect style="light"/>
<connections>
<outlet property="quoteText" destination="Swn-59-jWb" id="tky-lv-tWn"/>
- <outlet property="sendButton" destination="9h3-lP-1PC" id="9a8-ZV-jcJ"/>
- <outlet property="textContent" destination="alc-Oi-DBv" id="PqQ-aJ-Unr"/>
</connections>
- <point key="canvasLocation" x="-229" y="9"/>
+ <point key="canvasLocation" x="-433" y="56"/>
</visualEffectView>
</objects>
</document>