Skip to content

Commit d21a06c

Browse files
committed
Minor improvements
1 parent 4678e7b commit d21a06c

File tree

74 files changed

+176
-147
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+176
-147
lines changed

ChatLayout.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'ChatLayout'
3-
s.version = '1.3.0'
3+
s.version = '1.3.1'
44
s.summary = 'Chat UI Library. It uses custom UICollectionViewLayout to provide you full control over the presentation.'
55
s.swift_version = '5.8'
66

ChatLayout/Classes/Core/Extensions/RandomAccessCollection+Extension.swift

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ extension RandomAccessCollection where Index == Int {
2020

2121
while lowerBound < upperBound {
2222
let midIndex = lowerBound &+ (upperBound &- lowerBound) / 2
23-
if predicate(self[midIndex]) == .orderedSame {
23+
let result = predicate(self[midIndex])
24+
if result == .orderedSame {
2425
return midIndex
25-
} else if predicate(self[midIndex]) == .orderedAscending {
26+
} else if result == .orderedAscending {
2627
lowerBound = midIndex &+ 1
2728
} else {
2829
upperBound = midIndex

ChatLayout/Classes/Core/Model/StateController.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,9 @@ final class StateController<Layout: ChatLayoutRepresentation> {
152152
let predicate: (ChatLayoutAttributes) -> ComparisonResult = { attributes in
153153
if attributes.frame.intersects(rect) {
154154
return .orderedSame
155-
} else if attributes.frame.minY > rect.maxY {
155+
} else if attributes.frame.minY >= rect.maxY {
156156
return .orderedDescending
157-
} else if attributes.frame.maxY < rect.minY {
157+
} else if attributes.frame.maxY <= rect.minY {
158158
return .orderedAscending
159159
}
160160
return .orderedSame
@@ -835,9 +835,9 @@ final class StateController<Layout: ChatLayoutRepresentation> {
835835
}
836836
if itemFrame.intersects(visibleRect) {
837837
return .orderedSame
838-
} else if itemFrame.minY > visibleRect.maxY {
838+
} else if itemFrame.minY >= visibleRect.maxY {
839839
return .orderedDescending
840-
} else if itemFrame.maxX < visibleRect.minY {
840+
} else if itemFrame.maxX <= visibleRect.minY {
841841
return .orderedAscending
842842
}
843843
return .orderedSame

Example/Podfile.lock

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
PODS:
2-
- ChatLayout (1.3.0):
3-
- ChatLayout/Ultimate (= 1.3.0)
4-
- ChatLayout/Core (1.3.0)
5-
- ChatLayout/Extras (1.3.0):
2+
- ChatLayout (1.3.1):
3+
- ChatLayout/Ultimate (= 1.3.1)
4+
- ChatLayout/Core (1.3.1)
5+
- ChatLayout/Extras (1.3.1):
66
- ChatLayout/Core
7-
- ChatLayout/Ultimate (1.3.0):
7+
- ChatLayout/Ultimate (1.3.1):
88
- ChatLayout/Core
99
- ChatLayout/Extras
1010
- DifferenceKit (1.3.0):
@@ -35,7 +35,7 @@ EXTERNAL SOURCES:
3535
:path: "../"
3636

3737
SPEC CHECKSUMS:
38-
ChatLayout: 620aaa4cf30ce188cef80eb1dad391c9c250c5e2
38+
ChatLayout: 7ce4d2a769cd48ce69481bf951fa3c73cec2063f
3939
DifferenceKit: ab185c4d7f9cef8af3fcf593e5b387fb81e999ca
4040
FPSCounter: 884afec377de66637808c4f52ecc3b85a404732b
4141
InputBarAccessoryView: 1d7b0a672b36e370f01f264b3907ef39d03328e3

Example/Tests/HelpersTests.swift

+28
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,34 @@ final class HelpersTests: XCTestCase {
6565
XCTAssertEqual((150...170).map { $0 }.binarySearch(predicate: predicate), nil)
6666
}
6767

68+
func testBinarySearchWithCGRect() {
69+
let visibleRect = CGRect(origin: .init(x: 0, y: 100), size: .init(width: 100, height: 100))
70+
let predicate: (CGRect) -> ComparisonResult = { frame in
71+
if frame.intersects(visibleRect) {
72+
return .orderedSame
73+
} else if frame.minY >= visibleRect.maxY {
74+
return .orderedDescending
75+
} else if frame.maxX <= visibleRect.minY {
76+
return .orderedAscending
77+
}
78+
XCTFail("Should not get here")
79+
return .orderedSame
80+
}
81+
XCTAssertEqual([CGRect]().binarySearch(predicate: predicate), nil)
82+
XCTAssertEqual((0...5).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearch(predicate: predicate), 3)
83+
XCTAssertEqual((-1...1).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearch(predicate: predicate), nil)
84+
XCTAssertEqual((1...1).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearch(predicate: predicate), nil)
85+
XCTAssertEqual((4...7).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearch(predicate: predicate), nil)
86+
XCTAssertEqual((4...4).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearch(predicate: predicate), nil)
87+
88+
XCTAssertEqual([CGRect]().binarySearchRange(predicate: predicate), [])
89+
XCTAssertEqual((0...5).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearchRange(predicate: predicate).count, 2)
90+
XCTAssertEqual((-1...1).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearchRange(predicate: predicate).count, 0)
91+
XCTAssertEqual((1...1).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearchRange(predicate: predicate).count, 0)
92+
XCTAssertEqual((4...7).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearchRange(predicate: predicate).count, 0)
93+
XCTAssertEqual((4...4).map { CGRect(origin: .init(x: 0, y: $0 * 50), size: .init(width: 100, height: 50)) }.binarySearchRange(predicate: predicate).count, 0)
94+
}
95+
6896
func testSearchInRange() {
6997
let predicate: (Int) -> ComparisonResult = { integer in
7098
if integer < 100 {

Example/Tests/PerformanceTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ final class PerformanceTests: XCTestCase {
7070

7171
let rect = CGRect(origin: CGPoint(x: 0, y: 99999), size: CGSize(width: 300, height: 2))
7272
let attributes = layout.controller.layoutAttributesForElements(in: rect, state: .beforeUpdate, ignoreCache: true)
73-
XCTAssertEqual(attributes.count, 4)
73+
XCTAssertEqual(attributes.count, 2)
7474
measure {
7575
for _ in 0..<10 {
7676
_ = layout.controller.layoutAttributesForElements(in: rect, state: .beforeUpdate, ignoreCache: true)

Gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
source "https://rubygems.org"
22

3-
gem "slather", "2.6.1"
3+
gem "slather", "2.7.4"
44
gem "cocoapods"
55
gem "jazzy"

docs/Classes/CellLayoutContainerView.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -464,7 +464,7 @@ <h4>Parameters</h4>
464464
</article>
465465
</div>
466466
<section class="footer">
467-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
467+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
468468
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
469469
</section>
470470
</body>

docs/Classes/ChatLayoutAttributes.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -423,7 +423,7 @@ <h4>Declaration</h4>
423423
</article>
424424
</div>
425425
<section class="footer">
426-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
426+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
427427
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
428428
</section>
429429
</body>

docs/Classes/ChatLayoutInvalidationContext.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -208,7 +208,7 @@ <h4>Declaration</h4>
208208
</article>
209209
</div>
210210
<section class="footer">
211-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
211+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
212212
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
213213
</section>
214214
</body>

docs/Classes/CollectionViewChatLayout.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -1354,7 +1354,7 @@ <h4>Declaration</h4>
13541354
</article>
13551355
</div>
13561356
<section class="footer">
1357-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
1357+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
13581358
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
13591359
</section>
13601360
</body>

docs/Classes/ContainerCollectionReusableView.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -384,7 +384,7 @@ <h4>Parameters</h4>
384384
</article>
385385
</div>
386386
<section class="footer">
387-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
387+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
388388
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
389389
</section>
390390
</body>

docs/Classes/ContainerCollectionViewCell.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -384,7 +384,7 @@ <h4>Parameters</h4>
384384
</article>
385385
</div>
386386
<section class="footer">
387-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
387+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
388388
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
389389
</section>
390390
</body>

docs/Classes/EdgeAligningView.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -536,7 +536,7 @@ <h4>Declaration</h4>
536536
</article>
537537
</div>
538538
<section class="footer">
539-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
539+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
540540
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
541541
</section>
542542
</body>

docs/Classes/EdgeAligningView/Edge.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -288,7 +288,7 @@ <h4>Declaration</h4>
288288
</article>
289289
</div>
290290
<section class="footer">
291-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
291+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
292292
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
293293
</section>
294294
</body>

docs/Classes/ImageMaskedView.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -408,7 +408,7 @@ <h4>Declaration</h4>
408408
</article>
409409
</div>
410410
<section class="footer">
411-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
411+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
412412
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
413413
</section>
414414
</body>

docs/Classes/MessageContainerView.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -354,7 +354,7 @@ <h4>Parameters</h4>
354354
</article>
355355
</div>
356356
<section class="footer">
357-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
357+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
358358
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
359359
</section>
360360
</body>

docs/Classes/RoundedCornersContainerView.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -354,7 +354,7 @@ <h4>Declaration</h4>
354354
</article>
355355
</div>
356356
<section class="footer">
357-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
357+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
358358
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
359359
</section>
360360
</body>

docs/Classes/SwappingContainerView.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -599,7 +599,7 @@ <h4>Declaration</h4>
599599
</article>
600600
</div>
601601
<section class="footer">
602-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
602+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
603603
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
604604
</section>
605605
</body>

docs/Classes/SwappingContainerView/Axis.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<header class="header">
2222
<p class="header-col header-col--primary">
2323
<a class="header-link" href="../../index.html">
24-
ChatLayout 1.3.0 Docs
24+
ChatLayout 1.3.1 Docs
2525
</a>
2626
(100% documented)
2727
</p>
@@ -234,7 +234,7 @@ <h4>Declaration</h4>
234234
</article>
235235
</div>
236236
<section class="footer">
237-
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-05-19)</p>
237+
<p>&copy; 2023 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2023-06-30)</p>
238238
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
239239
</section>
240240
</body>

0 commit comments

Comments
 (0)