Skip to content

Commit 9c519cf

Browse files
authored
[Async Messages]Move FeedbackGenerator to StreamChatUI (#2650)
1 parent 7d06c82 commit 9c519cf

File tree

6 files changed

+30
-15
lines changed

6 files changed

+30
-15
lines changed

Sources/StreamChat/Audio/AudioSessionConfiguring.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ protocol AudioSessionConfiguring {
3333

3434
// MARK: - Implementation
3535

36+
#if os(macOS) && !targetEnvironment(macCatalyst)
37+
/// An implementation where for macOS we don't have interactions with AVAudioSession as it's not available.
38+
final class StreamAudioSessionConfigurator: AudioSessionConfiguring {
39+
func activateRecordingSession() throws { /* No-op */ }
40+
41+
func deactivateRecordingSession() throws { /* No-op */ }
42+
43+
func activatePlaybackSession() throws { /* No-op */ }
44+
45+
func deactivatePlaybackSession() throws { /* No-op */ }
46+
47+
func requestRecordPermission(_ completionHandler: @escaping (Bool) -> Void) { completionHandler(true) }
48+
}
49+
#else
3650
final class StreamAudioSessionConfigurator: AudioSessionConfiguring {
3751
private static let recordingCategories: Set<AVAudioSession.Category> = [.record, .playAndRecord]
3852
private static let playbackCategories: Set<AVAudioSession.Category> = [.playback, .playAndRecord]
@@ -151,6 +165,7 @@ final class StreamAudioSessionConfigurator: AudioSessionConfiguring {
151165
try audioSession.setPreferredInput(preferredInput)
152166
}
153167
}
168+
#endif
154169

155170
// MARK: - Errors
156171

Sources/StreamChat/Audio/AudioSessionProtocol.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import AVFoundation
66

7+
#if !os(macOS) || targetEnvironment(macCatalyst)
78
/// A simple protocol that abstracts the usage of AVAudioSession
89
protocol AudioSessionProtocol {
910
var category: AVAudioSession.Category { get }
@@ -29,3 +30,4 @@ protocol AudioSessionProtocol {
2930
}
3031

3132
extension AVAudioSession: AudioSessionProtocol {}
33+
#endif // #if os(macOS) && !targetEnvironment(macCatalyst)

StreamChat.xcodeproj/project.pbxproj

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -124,16 +124,12 @@
124124
40789D3629F6AC500018C2BB /* AudioAnalysisEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D1029F6AC4F0018C2BB /* AudioAnalysisEngine.swift */; };
125125
40789D3729F6AC500018C2BB /* AssetPropertyLoading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D1129F6AC4F0018C2BB /* AssetPropertyLoading.swift */; };
126126
40789D3829F6AC500018C2BB /* AssetPropertyLoading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D1129F6AC4F0018C2BB /* AssetPropertyLoading.swift */; };
127-
40789D3929F6AC500018C2BB /* AudioSessionFeedbackGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D1229F6AC4F0018C2BB /* AudioSessionFeedbackGenerator.swift */; };
128-
40789D3A29F6AC500018C2BB /* AudioSessionFeedbackGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D1229F6AC4F0018C2BB /* AudioSessionFeedbackGenerator.swift */; };
129127
40789D3C29F6AD9C0018C2BB /* Debouncer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D3B29F6AD9C0018C2BB /* Debouncer.swift */; };
130128
40789D3D29F6AD9C0018C2BB /* Debouncer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D3B29F6AD9C0018C2BB /* Debouncer.swift */; };
131129
40789D3F29F6AFC40018C2BB /* Debouncer_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D3E29F6AFC40018C2BB /* Debouncer_Tests.swift */; };
132130
40789D4029F6AFC40018C2BB /* Debouncer_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D3E29F6AFC40018C2BB /* Debouncer_Tests.swift */; };
133131
40789D4229F6B3250018C2BB /* VoiceRecordingAttachmentPayload_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D4129F6B3250018C2BB /* VoiceRecordingAttachmentPayload_Tests.swift */; };
134132
40789D4329F6B3250018C2BB /* VoiceRecordingAttachmentPayload_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D4129F6B3250018C2BB /* VoiceRecordingAttachmentPayload_Tests.swift */; };
135-
40789D4529F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D4429F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift */; };
136-
40789D4629F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D4429F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift */; };
137133
40789D4829F6C1DC0018C2BB /* StreamAppStateObserver_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D4729F6C1DC0018C2BB /* StreamAppStateObserver_Tests.swift */; };
138134
40789D4929F6C1DC0018C2BB /* StreamAppStateObserver_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D4729F6C1DC0018C2BB /* StreamAppStateObserver_Tests.swift */; };
139135
40789D4B29F6C87B0018C2BB /* AudioRecordingState_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D4A29F6C87B0018C2BB /* AudioRecordingState_Tests.swift */; };
@@ -162,6 +158,9 @@
162158
40824D382A1271D7003B61FD /* ClampedView_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40824D2E2A1271D7003B61FD /* ClampedView_Tests.swift */; };
163159
40824D492A1271EF003B61FD /* PlayPauseButton_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40824D3A2A1271EF003B61FD /* PlayPauseButton_Tests.swift */; };
164160
40824D4A2A1271EF003B61FD /* PlayPauseButton_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40824D3A2A1271EF003B61FD /* PlayPauseButton_Tests.swift */; };
161+
408599962A1FB90400FD6E26 /* AudioSessionFeedbackGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D1229F6AC4F0018C2BB /* AudioSessionFeedbackGenerator.swift */; };
162+
408599972A1FB93900FD6E26 /* StreamAudioSessionFeedbackGenerator_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40789D4429F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift */; };
163+
408599982A1FB96300FD6E26 /* MockAudioSessionFeedbackGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D483F32A1264F1009E4134 /* MockAudioSessionFeedbackGenerator.swift */; };
165164
40A2961A29F8244500E0C186 /* ChatMessageVoiceRecordingAttachment_Mock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A2961929F8244500E0C186 /* ChatMessageVoiceRecordingAttachment_Mock.swift */; };
166165
40A458ED2A03AC7C00C198F7 /* AVAsset+TotalAudioSamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A458EC2A03AC7C00C198F7 /* AVAsset+TotalAudioSamples.swift */; };
167166
40A458EE2A03AC7C00C198F7 /* AVAsset+TotalAudioSamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A458EC2A03AC7C00C198F7 /* AVAsset+TotalAudioSamples.swift */; };
@@ -178,7 +177,6 @@
178177
40D396272A0905560020DDC9 /* AudioRecordingNameFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D396242A0905560020DDC9 /* AudioRecordingNameFormatter.swift */; };
179178
40D396282A0905560020DDC9 /* AudioRecordingNameFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D396242A0905560020DDC9 /* AudioRecordingNameFormatter.swift */; };
180179
40D3962C2A0910CF0020DDC9 /* ArraySampling_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D3962B2A0910CF0020DDC9 /* ArraySampling_Tests.swift */; };
181-
40D484002A1264F1009E4134 /* MockAudioSessionFeedbackGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D483F32A1264F1009E4134 /* MockAudioSessionFeedbackGenerator.swift */; };
182180
40D484012A1264F1009E4134 /* MockAudioSessionConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D483F42A1264F1009E4134 /* MockAudioSessionConfigurator.swift */; };
183181
40D484022A1264F1009E4134 /* MockAudioRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D483F52A1264F1009E4134 /* MockAudioRecorder.swift */; };
184182
40D484032A1264F1009E4134 /* MockAudioAnalyser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D483F62A1264F1009E4134 /* MockAudioAnalyser.swift */; };
@@ -4359,6 +4357,7 @@
43594357
406CC60B2A1274E8000780F7 /* Components */ = {
43604358
isa = PBXGroup;
43614359
children = (
4360+
40789D1229F6AC4F0018C2BB /* AudioSessionFeedbackGenerator.swift */,
43624361
40FA4DD92A12A0D100DA21D2 /* AudioQueuePlayerNextItemProvider.swift */,
43634362
40FA4DDA2A12A0D100DA21D2 /* BidirectionalPanGestureRecogniser.swift */,
43644363
);
@@ -4371,7 +4370,6 @@
43714370
40789D0429F6AC4F0018C2BB /* AppStateObserving.swift */,
43724371
40789D1129F6AC4F0018C2BB /* AssetPropertyLoading.swift */,
43734372
40789D0629F6AC4F0018C2BB /* AudioSessionConfiguring.swift */,
4374-
40789D1229F6AC4F0018C2BB /* AudioSessionFeedbackGenerator.swift */,
43754373
404296E82A011AC20089126D /* AudioSessionProtocol.swift */,
43764374
4042967B29FAC9C50089126D /* Analysis */,
43774375
40789CFC29F6AC4F0018C2BB /* AudioPlayer */,
@@ -4443,7 +4441,6 @@
44434441
40D483F22A1264F1009E4134 /* VoiceRecording */ = {
44444442
isa = PBXGroup;
44454443
children = (
4446-
40D483F32A1264F1009E4134 /* MockAudioSessionFeedbackGenerator.swift */,
44474444
40D483F42A1264F1009E4134 /* MockAudioSessionConfigurator.swift */,
44484445
40D483F52A1264F1009E4134 /* MockAudioRecorder.swift */,
44494446
40D483F62A1264F1009E4134 /* MockAudioAnalyser.swift */,
@@ -4463,6 +4460,7 @@
44634460
40FA4DFE2A12A85E00DA21D2 /* Components */ = {
44644461
isa = PBXGroup;
44654462
children = (
4463+
40789D4429F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift */,
44664464
40FA4DFF2A12A85E00DA21D2 /* BiDirectionalPanGestureRecogniser_Tests.swift */,
44674465
40FA4E002A12A85E00DA21D2 /* AudioQueuePlayerNextItemProvider_Tests.swift */,
44684466
);
@@ -4485,7 +4483,6 @@
44854483
40FC029A29BF584300E2A1CD /* StreamAssetPropertyLoader_Tests.swift */,
44864484
4042966829FA6B4B0089126D /* StreamAudioRecorder_Tests.swift */,
44874485
4042967329FAB6EE0089126D /* StreamAudioSessionConfigurator_Tests.swift */,
4488-
40789D4429F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift */,
44894486
4042969429FC092F0089126D /* StreamAudioWaveformAnalyser_Tests.swift */,
44904487
4032C4B029C0BA110086849E /* StreamPlayerObserver_Tests.swift */,
44914488
4012252E29C9CBD80034B60B /* StreamAudioPlayer_Tests.swift */,
@@ -7258,6 +7255,7 @@
72587255
A3D9D69227EDE85A00725066 /* Mocks */ = {
72597256
isa = PBXGroup;
72607257
children = (
7258+
40D483F32A1264F1009E4134 /* MockAudioSessionFeedbackGenerator.swift */,
72617259
40FA4E122A12AACC00DA21D2 /* MockAudioQueuePlayerNextItemProvider.swift */,
72627260
40FA4DFB2A12A79900DA21D2 /* MockVoiceRecordingAttachmentPresentationViewDelegate.swift */,
72637261
ACABFF8226D6587E0018F3DC /* Components_Mock.swift */,
@@ -9564,6 +9562,7 @@
95649562
AD7BBFCB2901AF3F004E8B76 /* ImageResultsMapper.swift in Sources */,
95659563
ACD502A926BC0C670029FB7D /* ImageMerger.swift in Sources */,
95669564
E3C7A0E02858BA9B006133C3 /* Reusable+Extensions.swift in Sources */,
9565+
408599962A1FB90400FD6E26 /* AudioSessionFeedbackGenerator.swift in Sources */,
95679566
AD447398263ABD530030E583 /* ChatCommandSuggestionCollectionViewCell.swift in Sources */,
95689567
847D602D2679EF8A00FB701D /* VideoPlaybackControlView.swift in Sources */,
95699568
40FA4DD52A12A0C300DA21D2 /* RecordingTipView.swift in Sources */,
@@ -9632,6 +9631,7 @@
96329631
A3D9D69927EDE88300725066 /* VideoLoader_Mock.swift in Sources */,
96339632
40FA4E112A12AA4500DA21D2 /* AttachmentsPreviewVC_Tests.swift in Sources */,
96349633
E798D6F125FF6BF70002C3B9 /* SwipeableView_Tests.swift in Sources */,
9634+
408599982A1FB96300FD6E26 /* MockAudioSessionFeedbackGenerator.swift in Sources */,
96359635
E7296E942611D50900B1AE79 /* SendButton_Tests.swift in Sources */,
96369636
640FE12026A57955006CE703 /* ListChangeIndexPathResolver_Tests.swift in Sources */,
96379637
227299B325DBF52D005EAFCF /* ChatChannelUnreadCountView_Tests.swift in Sources */,
@@ -9704,6 +9704,7 @@
97049704
8897305E265D046D00F83739 /* ChatMessageLayoutOptionsResolver_Tests.swift in Sources */,
97059705
ADA8EBE928CFD52F00DB9B03 /* TextViewUserMentionsHandler_Mock.swift in Sources */,
97069706
ADD2A99828FF227D00A83305 /* ImageSizeCalculator_Tests.swift in Sources */,
9707+
408599972A1FB93900FD6E26 /* StreamAudioSessionFeedbackGenerator_Tests.swift in Sources */,
97079708
C1320E0A276B2E0F00A06B35 /* Array+SafeSubscript_Tests.swift in Sources */,
97089709
F86615D9264940A80026814A /* ChatMessageGalleryView_Tests.swift in Sources */,
97099710
ADEE651929BF713200186129 /* ChatMessageCell_Mock.swift in Sources */,
@@ -9881,7 +9882,6 @@
98819882
40D484092A1264F1009E4134 /* MockAudioPlayerObserver.swift in Sources */,
98829883
A3C3BC8027E8AAF000224761 /* FilterTestScope.swift in Sources */,
98839884
A311B43927E8BC8400CFCF6D /* ChannelListController_Delegate.swift in Sources */,
9884-
40D484002A1264F1009E4134 /* MockAudioSessionFeedbackGenerator.swift in Sources */,
98859885
A344077C27D753530044F150 /* ChatMessageImageAttachment_Mock.swift in Sources */,
98869886
ADB951AB291C1DE400800554 /* AttachmentUploader_Spy.swift in Sources */,
98879887
ADCE32F72A055A9200B52559 /* MessagesPaginationStateHandler_Mock.swift in Sources */,
@@ -10131,7 +10131,6 @@
1013110131
C1FC2F962742579D0062530F /* Transport.swift in Sources */,
1013210132
C1FC2F9A2742579D0062530F /* WSEngine.swift in Sources */,
1013310133
799C9479247E3DEA001F1104 /* StreamChatModel.xcdatamodeld in Sources */,
10134-
40789D3929F6AC500018C2BB /* AudioSessionFeedbackGenerator.swift in Sources */,
1013510134
888E8C55252B525300195E03 /* MemberController.swift in Sources */,
1013610135
79877A1C2498E4EE00015F8B /* Endpoint.swift in Sources */,
1013710136
DA4EE59E252B43B700CB26D4 /* NewUserQueryUpdater.swift in Sources */,
@@ -10539,7 +10538,6 @@
1053910538
8A0D649D24E579F70017A3C0 /* GuestUserTokenPayload_Tests.swift in Sources */,
1054010539
8A0C3BE224C1F74200CAFD19 /* MessageEvents_Tests.swift in Sources */,
1054110540
7990503224CEEAA600689CDC /* MessageDTO_Tests.swift in Sources */,
10542-
40789D4529F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift in Sources */,
1054310541
88D85DAB252F3C2A00AE1030 /* MemberListController_Tests.swift in Sources */,
1054410542
88DA577E2631D73800FA8C53 /* ChannelMuteDTO_Tests.swift in Sources */,
1054510543
84CC56EC267B3F6B00DF2784 /* AnyAttachmentPayload_Tests.swift in Sources */,
@@ -10694,7 +10692,6 @@
1069410692
files = (
1069510693
40789D1C29F6AC500018C2BB /* AudioPlaybackState.swift in Sources */,
1069610694
C121E804274544AC00023E4C /* ChatClient.swift in Sources */,
10697-
40789D4629F6B6F00018C2BB /* StreamAudioSessionFeedbackGenerator_Tests.swift in Sources */,
1069810695
C121E805274544AC00023E4C /* Deprecations.swift in Sources */,
1069910696
C121E806274544AC00023E4C /* Token.swift in Sources */,
1070010697
79D5CDD227EA1BA100BE7D8B /* TranslationLanguage.swift in Sources */,
@@ -10814,7 +10811,6 @@
1081410811
C121E862274544AE00023E4C /* ConnectionRepository.swift in Sources */,
1081510812
C121E863274544AE00023E4C /* EventSender.swift in Sources */,
1081610813
C121E864274544AE00023E4C /* EventObserver.swift in Sources */,
10817-
40789D3A29F6AC500018C2BB /* AudioSessionFeedbackGenerator.swift in Sources */,
1081810814
C121E865274544AE00023E4C /* MemberEventObserver.swift in Sources */,
1081910815
43D3F10028410B4800B74921 /* Call.swift in Sources */,
1082010816
C121E866274544AE00023E4C /* MessageSender.swift in Sources */,
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
//
44

55
import Foundation
6-
import StreamChat
6+
import StreamChatTestTools
7+
import StreamChatUI
78

89
public final class MockAudioSessionFeedbackGenerator: AudioSessionFeedbackGenerator, Spy {
910
public var recordedFunctions: [String] = []
@@ -30,4 +31,3 @@ public final class MockAudioSessionFeedbackGenerator: AudioSessionFeedbackGenera
3031

3132
public func feedbackForDiscardRecording() { record() }
3233
}
33-

Tests/StreamChatTests/Audio/StreamAudioSessionFeedbackGenerator_Tests.swift renamed to Tests/StreamChatUITests/SnapshotTests/VoiceRecording/Components/StreamAudioSessionFeedbackGenerator_Tests.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
import Foundation
66
@testable import StreamChat
7+
import StreamChatTestTools
8+
@testable import StreamChatUI
79
import UIKit
810
import XCTest
911

0 commit comments

Comments
 (0)