Skip to content

Commit 3a44c9d

Browse files
author
Vitaliy G
committed
Merge remote-tracking branch 'origin/development' into feature/IQMUNICATE-573
# Conflicts: # QMChatViewController/Views/Cells/QMLinkPreviewCell/QMChatBaseLinkPreviewCell.m
2 parents e165035 + 538b945 commit 3a44c9d

9 files changed

Lines changed: 71 additions & 94 deletions

File tree

QMChatViewController/QMChatViewController.m

Lines changed: 36 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ @interface QMChatViewController ()
4343

4444
//Keyboard observing
4545
@property (strong, nonatomic) QMKVOView *systemInputToolbar;
46-
@property (weak, nonatomic) QMKVOView *inputAccessoryView;
4746

4847
@end
4948

@@ -98,24 +97,25 @@ - (void)viewDidLoad {
9897
self.systemInputToolbar.hostViewFrameChangeBlock = ^(UIView *view, BOOL animated) {
9998

10099
CGFloat pos = view.superview.frame.size.height - view.frame.origin.y ;
101-
if (view.superview.frame.origin.y > 0 && pos == 0) {
102-
return;
103-
}
104100

105-
if (!weakSelf.inputToolbar.contentView.textView.isFirstResponder && pos == 0) {
106-
[weakSelf setToolbarBottomConstraintValue:[weakSelf inputToolBarStartPos]
107-
animated:animated];
108-
return;
101+
if (weakSelf.inputToolbar.contentView.textView.isFirstResponder) {
102+
103+
if (view.superview.frame.origin.y > 0 && pos == 0) {
104+
return;
105+
}
109106
}
110-
107+
111108
const CGFloat v = [weakSelf inputToolBarStartPos];
109+
112110
if (pos < v ) {
113111
pos = v;
114112
}
115113

116114
[weakSelf setToolbarBottomConstraintValue:pos animated:animated];
117115
};
118116

117+
self.inputToolbar.contentView.textView.inputAccessoryView = self.systemInputToolbar;
118+
119119
self.edgesForExtendedLayout = UIRectEdgeNone;
120120
}
121121

@@ -204,20 +204,8 @@ - (void)registerCells {
204204
[QMChatIncomingLinkPreviewCell registerForReuseInView:self.collectionView];
205205
// Register link preview outgoing cell
206206
[QMChatOutgoingLinkPreviewCell registerForReuseInView:self.collectionView];
207-
UINib *locIncomingNib = [QMChatLocationIncomingCell nib];
208-
NSString *locIncomingIdentifier = [QMChatLocationIncomingCell cellReuseIdentifier];
209-
[self.collectionView registerNib:locIncomingNib forCellWithReuseIdentifier:locIncomingIdentifier];
210207
}
211208

212-
#pragma mark - UI Responder
213-
214-
- (UIView *)inputAccessoryView {
215-
return self.systemInputToolbar;
216-
}
217-
218-
- (BOOL)canBecomeFirstResponder {
219-
return YES;
220-
}
221209

222210
#pragma mark - Getters
223211

@@ -250,18 +238,18 @@ - (void)changeDataSource:(QMChatDataSource *)dataSource
250238
}
251239

252240
switch (updateType) {
253-
241+
254242
case QMDataSourceActionTypeAdd:
255-
[self.collectionView insertItemsAtIndexPaths:indexPaths];
256-
break;
257-
243+
[self.collectionView insertItemsAtIndexPaths:indexPaths];
244+
break;
245+
258246
case QMDataSourceActionTypeUpdate:
259-
[self.collectionView reloadItemsAtIndexPaths:indexPaths];
260-
break;
261-
247+
[self.collectionView reloadItemsAtIndexPaths:indexPaths];
248+
break;
249+
262250
case QMDataSourceActionTypeRemove:
263-
[self.collectionView deleteItemsAtIndexPaths:indexPaths];
264-
break;
251+
[self.collectionView deleteItemsAtIndexPaths:indexPaths];
252+
break;
265253
}
266254
};
267255

@@ -523,7 +511,9 @@ - (UICollectionViewCell *)collectionView:(QMChatCollectionView *)collectionView
523511
return cell;
524512
}
525513

526-
- (void)collectionView:(QMChatCollectionView *)collectionView configureCell:(UICollectionViewCell *)cell forIndexPath:(NSIndexPath *)indexPath {
514+
- (void)collectionView:(QMChatCollectionView *)collectionView
515+
configureCell:(UICollectionViewCell *)cell
516+
forIndexPath:(NSIndexPath *)indexPath {
527517

528518
if ([cell isKindOfClass:[QMChatContactRequestCell class]]) {
529519

@@ -544,8 +534,8 @@ - (void)collectionView:(QMChatCollectionView *)collectionView configureCell:(UIC
544534
QMChatCell *chatCell = (QMChatCell *)cell;
545535

546536
if ([cell isKindOfClass:[QMChatIncomingCell class]]
547-
|| [cell isKindOfClass:[QMChatOutgoingCell class]] ||
548-
[cell isKindOfClass:[QMChatBaseLinkPreviewCell class]]) {
537+
|| [cell isKindOfClass:[QMChatOutgoingCell class]]
538+
|| [cell isKindOfClass:[QMChatBaseLinkPreviewCell class]]) {
549539

550540
chatCell.textView.enabledTextCheckingTypes = self.enableTextCheckingTypes;
551541
}
@@ -622,8 +612,7 @@ - (QMChatCellLayoutModel)collectionView:(QMChatCollectionView *)collectionView
622612

623613
#pragma mark - Input toolbar delegate
624614

625-
- (void)messagesInputToolbar:(QMInputToolbar *)toolbar
626-
didPressLeftBarButton:(UIButton *)sender {
615+
- (void)messagesInputToolbar:(QMInputToolbar *)toolbar didPressLeftBarButton:(UIButton *)sender {
627616

628617
if (toolbar.sendButtonOnRight) {
629618

@@ -635,8 +624,7 @@ - (void)messagesInputToolbar:(QMInputToolbar *)toolbar
635624
}
636625
}
637626

638-
- (void)messagesInputToolbar:(QMInputToolbar *)toolbar
639-
didPressRightBarButton:(UIButton *)sender {
627+
- (void)messagesInputToolbar:(QMInputToolbar *)toolbar didPressRightBarButton:(UIButton *)sender {
640628

641629
if (toolbar.sendButtonOnRight) {
642630

@@ -794,7 +782,7 @@ - (void)setToolbarBottomConstraintValue:(CGFloat)constraintValue animated:(BOOL)
794782
self.toolbarBottomLayoutGuide.constant = constraintValue;
795783

796784
if (animated) {
797-
785+
798786
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
799787
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
800788

@@ -951,10 +939,10 @@ - (void)checkAuthorizationStatusWithCompletion:(void (^)(BOOL granted))completio
951939
switch (status)
952940
{
953941
case PHAuthorizationStatusAuthorized:
954-
if (completion) {
955-
completion(YES);
956-
}
957-
break;
942+
if (completion) {
943+
completion(YES);
944+
}
945+
break;
958946
case PHAuthorizationStatusNotDetermined:
959947
{
960948
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus authorizationStatus)
@@ -968,10 +956,10 @@ - (void)checkAuthorizationStatusWithCompletion:(void (^)(BOOL granted))completio
968956
break;
969957
}
970958
default:
971-
if (completion) {
972-
completion(NO);
973-
}
974-
break;
959+
if (completion) {
960+
completion(NO);
961+
}
962+
break;
975963
}
976964
}
977965
}
@@ -1004,8 +992,8 @@ - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIVi
1004992

1005993
[coordinator animateAlongsideTransition:nil
1006994
completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
1007-
[self updateCollectionViewInsets];
1008-
}];
995+
[self updateCollectionViewInsets];
996+
}];
1009997

1010998
if (self.inputToolbar.contentView.textView.isFirstResponder && self.splitViewController) {
1011999
if(!self.splitViewController.isCollapsed) {

QMChatViewController/Utils/QMImageLoader/QMImageLoader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ typedef void(^QMWebImageCompletionWithFinishedBlock)(UIImage *_Nullable image, U
4444
*/
4545
@interface QMImageLoader : SDWebImageManager
4646

47-
@property (nonatomic, strong, class) QMImageLoader *instance;
47+
@property (nonatomic, readonly, class) QMImageLoader *instance;
4848

4949
+ (SDWebImageManager *)sharedManager NS_UNAVAILABLE;
5050
- (UIImage *)originalImageWithURL:(NSURL *)url;

QMChatViewController/Utils/QMImageLoader/QMImageLoader.m

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,6 @@ - (UIImage *)imageManager:(SDWebImageManager *)imageManager
117117
break;
118118
}
119119
}
120-
#warning need update this case
121-
// else {
122-
//
123-
// UIImage *img = [image resizedImageBySpec:self.spec];
124-
//
125-
// return img;
126-
// }
127-
128120
return nil;
129121
}
130122

@@ -283,13 +275,18 @@ - (void)safelyRemoveOperationFromRunning:(nullable QMWebImageCombinedOperation *
283275
NSString *transformKey = [transform keyWithURL:url];
284276

285277
if (transform) {
286-
self.transforms[transformKey] = transform;
278+
@synchronized (self.transforms) {
279+
self.transforms[transformKey] = transform;
280+
}
287281
}
288282

289283
dispatch_block_t cleanupTransform = ^() {
290284

291285
if (transformKey) {
292-
self.transforms[transformKey] = nil;
286+
287+
@synchronized (self.transforms) {
288+
self.transforms[transformKey] = nil;
289+
}
293290
}
294291
};
295292

QMChatViewController/Views/Cells/QMLinkPreviewCell/QMChatBaseLinkPreviewCell.m

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@ @interface QMChatBaseLinkPreviewCell() <QMImageViewDelegate>
1717

1818
@implementation QMChatBaseLinkPreviewCell
1919

20-
- (void)awakeFromNib {
21-
20+
//MARK: - QMImageViewDelegate
21+
22+
- (void)awakeFromNib {
2223
[super awakeFromNib];
24+
25+
self.urlDescription.layer.drawsAsynchronously = YES;
2326
}
2427

25-
//MARK: - QMImageViewDelegate
26-
2728
- (void)imageViewDidTap:(QMImageView *)imageView {
2829

2930
if ([self.delegate respondsToSelector:@selector(chatCellDidTapContainer:)]) {
@@ -68,8 +69,8 @@ - (void)setSiteURL:(NSString *)siteURL
6869
[resultHostString appendAttributedString:host];
6970

7071
self.urlLabel.attributedText = resultHostString;
71-
self.previewImageView.image = previewImage;
7272
self.urlDescription.text = urlDesription;
73+
self.previewImageView.image = previewImage;
7374
}
7475

7576
@end

QMChatViewController/Views/Cells/QMLinkPreviewCell/QMChatIncomingLinkPreviewCell/QMChatIncomingLinkPreviewCell.xib

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
33
<device id="retina4_7" orientation="portrait">
44
<adaptation id="fullscreen"/>
55
</device>
@@ -72,24 +72,19 @@
7272
<rect key="frame" x="12" y="43" width="153" height="17"/>
7373
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
7474
<constraints>
75-
<constraint firstAttribute="height" constant="17" id="cQD-ji-90p"/>
75+
<constraint firstAttribute="height" constant="17" id="SPe-t2-mrr"/>
7676
</constraints>
7777
<fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
7878
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
7979
<nil key="highlightedColor"/>
8080
</label>
81-
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="YNl-MB-4Di">
82-
<rect key="frame" x="12" y="62" width="153" height="25"/>
83-
<constraints>
84-
<constraint firstAttribute="height" relation="greaterThanOrEqual" id="GGD-2M-sB6"/>
85-
</constraints>
81+
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="250" placeholderIntrinsicWidth="153" placeholderIntrinsicHeight="26" translatesAutoresizingMaskIntoConstraints="NO" id="YNl-MB-4Di">
82+
<rect key="frame" x="12" y="62" width="153" height="26"/>
83+
<rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/>
8684
</imageView>
87-
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Host Description" lineBreakMode="middleTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" translatesAutoresizingMaskIntoConstraints="NO" id="qU9-Gs-4yZ">
88-
<rect key="frame" x="12" y="89" width="153" height="17"/>
85+
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Host Description" lineBreakMode="middleTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" translatesAutoresizingMaskIntoConstraints="NO" id="qU9-Gs-4yZ">
86+
<rect key="frame" x="12" y="90" width="153" height="16"/>
8987
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
90-
<constraints>
91-
<constraint firstAttribute="height" relation="greaterThanOrEqual" id="HfQ-Je-qRf"/>
92-
</constraints>
9388
<fontDescription key="fontDescription" type="system" pointSize="13"/>
9489
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
9590
<nil key="highlightedColor"/>
@@ -98,19 +93,19 @@
9893
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
9994
<constraints>
10095
<constraint firstItem="2O4-zX-rtn" firstAttribute="top" secondItem="oXL-xI-3yM" secondAttribute="bottom" constant="2" id="058-9G-ZzQ"/>
101-
<constraint firstItem="qU9-Gs-4yZ" firstAttribute="top" secondItem="YNl-MB-4Di" secondAttribute="bottom" constant="2" id="0zd-EU-OSv"/>
10296
<constraint firstItem="oXL-xI-3yM" firstAttribute="top" secondItem="OCu-MY-AoI" secondAttribute="bottom" identifier="incCellMsgTextTopToTopLabelBottom" id="3OE-7j-rdE"/>
10397
<constraint firstAttribute="trailing" secondItem="YNl-MB-4Di" secondAttribute="trailing" id="9QA-l4-UwH"/>
10498
<constraint firstItem="ivD-6P-hW0" firstAttribute="leading" secondItem="M7t-Ea-Hs4" secondAttribute="leading" identifier="incCellBottomLabelLeadingToContainerLeading" id="AXl-QY-okC"/>
10599
<constraint firstAttribute="trailing" secondItem="OCu-MY-AoI" secondAttribute="trailing" identifier="incCellMsgContainerTrailingToTopLabelTrailing" id="E0b-aL-fpT"/>
106100
<constraint firstAttribute="trailing" secondItem="2O4-zX-rtn" secondAttribute="trailing" id="Idg-z7-Gc6"/>
101+
<constraint firstItem="qU9-Gs-4yZ" firstAttribute="top" secondItem="YNl-MB-4Di" secondAttribute="bottom" priority="750" constant="2" id="M3r-xl-cuX"/>
107102
<constraint firstItem="oXL-xI-3yM" firstAttribute="leading" secondItem="M7t-Ea-Hs4" secondAttribute="leading" identifier="incCellMsgTextLeadingToMsgContainerLeading" id="Mgc-f6-DnB"/>
108103
<constraint firstItem="ivD-6P-hW0" firstAttribute="top" secondItem="qU9-Gs-4yZ" secondAttribute="bottom" id="PFQ-vN-o1P"/>
109104
<constraint firstItem="OCu-MY-AoI" firstAttribute="leading" secondItem="M7t-Ea-Hs4" secondAttribute="leading" id="cCQ-DN-GGh"/>
105+
<constraint firstItem="YNl-MB-4Di" firstAttribute="top" secondItem="2O4-zX-rtn" secondAttribute="bottom" constant="2" id="jvz-Ze-ezf"/>
110106
<constraint firstItem="OCu-MY-AoI" firstAttribute="top" secondItem="M7t-Ea-Hs4" secondAttribute="top" identifier="incCellTopLabelTopToMsgContainerTop" id="nW3-tm-tLL"/>
111107
<constraint firstAttribute="trailing" secondItem="qU9-Gs-4yZ" secondAttribute="trailing" id="oxm-m5-Vv8"/>
112108
<constraint firstAttribute="trailing" secondItem="ivD-6P-hW0" secondAttribute="trailing" id="si7-03-cvU"/>
113-
<constraint firstItem="YNl-MB-4Di" firstAttribute="top" secondItem="2O4-zX-rtn" secondAttribute="bottom" constant="2" id="tt7-kb-feo"/>
114109
<constraint firstAttribute="trailing" secondItem="oXL-xI-3yM" secondAttribute="trailing" id="uX7-92-voE"/>
115110
<constraint firstAttribute="bottom" secondItem="ivD-6P-hW0" secondAttribute="bottom" identifier="incCellMsgContainerToBottomLabelBottom" id="viO-53-QnN"/>
116111
</constraints>
@@ -125,6 +120,7 @@
125120
</subviews>
126121
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
127122
<constraints>
123+
<constraint firstItem="M7t-Ea-Hs4" firstAttribute="leading" secondItem="dkR-id-gBA" secondAttribute="trailing" constant="-7" id="0Dc-Ou-9tx"/>
128124
<constraint firstItem="dkR-id-gBA" firstAttribute="top" secondItem="2O4-zX-rtn" secondAttribute="top" id="1wV-Qw-bUZ"/>
129125
<constraint firstItem="M7t-Ea-Hs4" firstAttribute="leading" secondItem="NaZ-bw-eRI" secondAttribute="leading" constant="15" identifier="incCellMsgContainerLeadingToContainerLeading" id="4Ec-XZ-RYs"/>
130126
<constraint firstItem="dkR-id-gBA" firstAttribute="bottom" secondItem="qU9-Gs-4yZ" secondAttribute="bottom" id="8Yv-WE-ewL"/>
@@ -133,7 +129,6 @@
133129
<constraint firstItem="M7t-Ea-Hs4" firstAttribute="top" secondItem="NaZ-bw-eRI" secondAttribute="top" constant="3" identifier="incCellMsgContainerTopToContainerTop" id="Jfk-SB-B9I"/>
134130
<constraint firstAttribute="width" constant="183" id="eFw-fY-Erx"/>
135131
<constraint firstItem="qU9-Gs-4yZ" firstAttribute="leading" secondItem="dkR-id-gBA" secondAttribute="trailing" constant="5" id="i7N-e3-T2A"/>
136-
<constraint firstItem="dkR-id-gBA" firstAttribute="leading" secondItem="NaZ-bw-eRI" secondAttribute="leading" constant="20" id="o4x-nS-ZpD"/>
137132
<constraint firstAttribute="bottom" secondItem="M7t-Ea-Hs4" secondAttribute="bottom" constant="3" identifier="incCellContainerBottomToMsgContainerBottom" id="rnP-nR-DQv"/>
138133
<constraint firstItem="2O4-zX-rtn" firstAttribute="leading" secondItem="dkR-id-gBA" secondAttribute="trailing" constant="5" id="xqi-18-16c"/>
139134
</constraints>

0 commit comments

Comments
 (0)