diff --git a/CHANGELOG.md b/CHANGELOG.md index ad27ad0b1..962a32bf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,13 +5,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming ### 🔄 Changed -- Update WebRTC to 137.0.42 which brings performance improvements on video rendering. [#983](https://github.com/GetStream/stream-video-swift/pull/983) + +# [1.35.0](https://github.com/GetStream/stream-video-swift/releases/tag/1.35.0) +_November 05, 2025_ + +### ✅ Added +- SwiftUI modifiers that surface moderation blur and warning events in `CallView`. [#987](https://github.com/GetStream/stream-video-swift/pull/987) + +### 🔄 Changed # [1.34.2](https://github.com/GetStream/stream-video-swift/releases/tag/1.34.2) _October 24, 2025_ ### 🔄 Changed +- Update WebRTC to 137.0.42 which brings performance improvements on video rendering. [#983](https://github.com/GetStream/stream-video-swift/pull/983) + # [1.34.1](https://github.com/GetStream/stream-video-swift/releases/tag/1.34.1) _October 14, 2025_ @@ -37,7 +46,7 @@ _September 08, 2025_ ### ✅ Added - When the user is missing a permission, the SDK will prompt them to accept any missing permission. [#915](https://github.com/GetStream/stream-video-swift/pull/915) -- You can now set the `ViewFactory` instance to be used from Picture-in-Picture. [#934](https://github.com/GetStream/stream-video-swift/pull/934) +- You can now set the `ViewFactory` instance to be used from Picture-in-Picture. [#934](https://github.com/GetStream/stream-video-swift/pull/934) - `CallParticipant` now exposes the `source` property, which can be used to distinguish between WebRTC users and ingest sources like RTMP or SIP. [#93](https://github.com/GetStream/stream-video-swift/pull/933) - Add the user action to kick a participant from a call. [#928](https://github.com/GetStream/stream-video-swift/pull/928) diff --git a/Package.swift b/Package.swift index 60b210cb4..9e6fc7881 100644 --- a/Package.swift +++ b/Package.swift @@ -23,7 +23,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/apple/swift-protobuf.git", exact: "1.30.0"), - .package(url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "137.0.42") + .package(url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "137.0.43") ], targets: [ .target( diff --git a/README.md b/README.md index d827f3a96..fbdd71711 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@

- StreamVideo - StreamVideoSwiftUI - StreamVideoUIKit + StreamVideo + StreamVideoSwiftUI + StreamVideoUIKit StreamWebRTC

diff --git a/Sources/StreamVideo/CallState.swift b/Sources/StreamVideo/CallState.swift index d23d2a963..ce44d79ed 100644 --- a/Sources/StreamVideo/CallState.swift +++ b/Sources/StreamVideo/CallState.swift @@ -308,6 +308,10 @@ public class CallState: ObservableObject { break case .typeCallUserFeedbackSubmittedEvent: break + case .typeCallModerationBlurEvent: + break + case .typeCallModerationWarningEvent: + break } } diff --git a/Sources/StreamVideo/Generated/SystemEnvironment+Version.swift b/Sources/StreamVideo/Generated/SystemEnvironment+Version.swift index b952f1086..69e2f37c3 100644 --- a/Sources/StreamVideo/Generated/SystemEnvironment+Version.swift +++ b/Sources/StreamVideo/Generated/SystemEnvironment+Version.swift @@ -7,7 +7,7 @@ import Foundation extension SystemEnvironment { /// A Stream Video version. - public static let version: String = "1.34.2" + public static let version: String = "1.35.0" /// The WebRTC version. - public static let webRTCVersion: String = "137.0.42" + public static let webRTCVersion: String = "137.0.43" } diff --git a/Sources/StreamVideo/Info.plist b/Sources/StreamVideo/Info.plist index 4c36b4383..81683f3c5 100644 --- a/Sources/StreamVideo/Info.plist +++ b/Sources/StreamVideo/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.34.2 + 1.35.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/Sources/StreamVideo/OpenApi/generated/Models/CallModerationBlurEvent.swift b/Sources/StreamVideo/OpenApi/generated/Models/CallModerationBlurEvent.swift new file mode 100644 index 000000000..cc37118f4 --- /dev/null +++ b/Sources/StreamVideo/OpenApi/generated/Models/CallModerationBlurEvent.swift @@ -0,0 +1,44 @@ +// +// Copyright © 2025 Stream.io Inc. All rights reserved. +// + +import Foundation + +public final class CallModerationBlurEvent: @unchecked Sendable, Event, Codable, JSONEncodable, Hashable, WSCallEvent { + public var callCid: String + public var createdAt: Date + public var custom: [String: RawJSON] + public var type: String = "call.moderation_blur" + public var userId: String + + public init(callCid: String, createdAt: Date, custom: [String: RawJSON], userId: String) { + self.callCid = callCid + self.createdAt = createdAt + self.custom = custom + self.userId = userId + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case callCid = "call_cid" + case createdAt = "created_at" + case custom + case type + case userId = "user_id" + } + + public static func == (lhs: CallModerationBlurEvent, rhs: CallModerationBlurEvent) -> Bool { + lhs.callCid == rhs.callCid && + lhs.createdAt == rhs.createdAt && + lhs.custom == rhs.custom && + lhs.type == rhs.type && + lhs.userId == rhs.userId + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(callCid) + hasher.combine(createdAt) + hasher.combine(custom) + hasher.combine(type) + hasher.combine(userId) + } +} diff --git a/Sources/StreamVideo/OpenApi/generated/Models/CallModerationWarningEvent.swift b/Sources/StreamVideo/OpenApi/generated/Models/CallModerationWarningEvent.swift new file mode 100644 index 000000000..e242d2daf --- /dev/null +++ b/Sources/StreamVideo/OpenApi/generated/Models/CallModerationWarningEvent.swift @@ -0,0 +1,49 @@ +// +// Copyright © 2025 Stream.io Inc. All rights reserved. +// + +import Foundation + +public final class CallModerationWarningEvent: @unchecked Sendable, Event, Codable, JSONEncodable, Hashable, WSCallEvent { + public var callCid: String + public var createdAt: Date + public var custom: [String: RawJSON] + public var message: String + public var type: String = "call.moderation_warning" + public var userId: String + + public init(callCid: String, createdAt: Date, custom: [String: RawJSON], message: String, userId: String) { + self.callCid = callCid + self.createdAt = createdAt + self.custom = custom + self.message = message + self.userId = userId + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case callCid = "call_cid" + case createdAt = "created_at" + case custom + case message + case type + case userId = "user_id" + } + + public static func == (lhs: CallModerationWarningEvent, rhs: CallModerationWarningEvent) -> Bool { + lhs.callCid == rhs.callCid && + lhs.createdAt == rhs.createdAt && + lhs.custom == rhs.custom && + lhs.message == rhs.message && + lhs.type == rhs.type && + lhs.userId == rhs.userId + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(callCid) + hasher.combine(createdAt) + hasher.combine(custom) + hasher.combine(message) + hasher.combine(type) + hasher.combine(userId) + } +} diff --git a/Sources/StreamVideo/OpenApi/generated/Models/VideoEvent.swift b/Sources/StreamVideo/OpenApi/generated/Models/VideoEvent.swift index bf1363cf9..1305b27da 100644 --- a/Sources/StreamVideo/OpenApi/generated/Models/VideoEvent.swift +++ b/Sources/StreamVideo/OpenApi/generated/Models/VideoEvent.swift @@ -37,6 +37,8 @@ public enum VideoEvent: Codable, Hashable { case typeCallMemberUpdatedEvent(CallMemberUpdatedEvent) case typeCallMemberUpdatedPermissionEvent(CallMemberUpdatedPermissionEvent) case typeCallMissedEvent(CallMissedEvent) + case typeCallModerationBlurEvent(CallModerationBlurEvent) + case typeCallModerationWarningEvent(CallModerationWarningEvent) case typeCallNotificationEvent(CallNotificationEvent) case typePermissionRequestEvent(PermissionRequestEvent) case typeUpdatedCallPermissionsEvent(UpdatedCallPermissionsEvent) @@ -120,6 +122,10 @@ public enum VideoEvent: Codable, Hashable { return value.type case let .typeCallMissedEvent(value): return value.type + case let .typeCallModerationBlurEvent(value): + return value.type + case let .typeCallModerationWarningEvent(value): + return value.type case let .typeCallNotificationEvent(value): return value.type case let .typePermissionRequestEvent(value): @@ -237,6 +243,10 @@ public enum VideoEvent: Codable, Hashable { return value case let .typeCallMissedEvent(value): return value + case let .typeCallModerationBlurEvent(value): + return value + case let .typeCallModerationWarningEvent(value): + return value case let .typeCallNotificationEvent(value): return value case let .typePermissionRequestEvent(value): @@ -355,6 +365,10 @@ public enum VideoEvent: Codable, Hashable { try container.encode(value) case let .typeCallMissedEvent(value): try container.encode(value) + case let .typeCallModerationBlurEvent(value): + try container.encode(value) + case let .typeCallModerationWarningEvent(value): + try container.encode(value) case let .typeCallNotificationEvent(value): try container.encode(value) case let .typePermissionRequestEvent(value): @@ -497,6 +511,12 @@ public enum VideoEvent: Codable, Hashable { } else if dto.type == "call.missed" { let value = try container.decode(CallMissedEvent.self) self = .typeCallMissedEvent(value) + } else if dto.type == "call.moderation_blur" { + let value = try container.decode(CallModerationBlurEvent.self) + self = .typeCallModerationBlurEvent(value) + } else if dto.type == "call.moderation_warning" { + let value = try container.decode(CallModerationWarningEvent.self) + self = .typeCallModerationWarningEvent(value) } else if dto.type == "call.notification" { let value = try container.decode(CallNotificationEvent.self) self = .typeCallNotificationEvent(value) diff --git a/Sources/StreamVideoSwiftUI/CallContainer.swift b/Sources/StreamVideoSwiftUI/CallContainer.swift index ce599fbf9..d17496184 100644 --- a/Sources/StreamVideoSwiftUI/CallContainer.swift +++ b/Sources/StreamVideoSwiftUI/CallContainer.swift @@ -66,6 +66,7 @@ public struct CallContainer: View { } .frame(maxWidth: .infinity, maxHeight: .infinity) .toastView(toast: $viewModel.toast) + .moderationWarning(call: viewModel.call) .overlay(overlayView) .onReceive(viewModel.$callingState) { _ in if viewModel.callingState == .idle || viewModel.callingState == .inCall { diff --git a/Sources/StreamVideoSwiftUI/CallView/ViewModifiers/Moderation/ModerationBlurViewModifier.swift b/Sources/StreamVideoSwiftUI/CallView/ViewModifiers/Moderation/ModerationBlurViewModifier.swift new file mode 100644 index 000000000..c81903c06 --- /dev/null +++ b/Sources/StreamVideoSwiftUI/CallView/ViewModifiers/Moderation/ModerationBlurViewModifier.swift @@ -0,0 +1,55 @@ +// +// Copyright © 2025 Stream.io Inc. All rights reserved. +// + +import Foundation +import StreamVideo +import SwiftUI + +/// A view modifier that blurs a participant when moderation blur toggles. +struct ModerationBlurViewModifier: ViewModifier { + + var call: Call? + var participant: CallParticipant + var blurRadius: Float + + @State var isBlurred: Bool = false + + func body(content: Content) -> some View { + Group { + if isBlurred { + content + .blur(radius: .init(blurRadius)) + } else { + content + } + } + .onReceive( + call? + .eventPublisher(for: CallModerationBlurEvent.self) + .filter { $0.userId == participant.userId } + .map { _ in !isBlurred } + .removeDuplicates() + .receive(on: DispatchQueue.main) + ) { isBlurred = $0 } + } +} + +extension View { + + /// Applies a moderation blur effect that responds to moderation events. + @ViewBuilder + public func moderationBlur( + call: Call?, + participant: CallParticipant, + blurRadius: Float = 30 + ) -> some View { + modifier( + ModerationBlurViewModifier( + call: call, + participant: participant, + blurRadius: blurRadius + ) + ) + } +} diff --git a/Sources/StreamVideoSwiftUI/CallView/ViewModifiers/Moderation/ModerationWarningViewModifier.swift b/Sources/StreamVideoSwiftUI/CallView/ViewModifiers/Moderation/ModerationWarningViewModifier.swift new file mode 100644 index 000000000..3f4205e15 --- /dev/null +++ b/Sources/StreamVideoSwiftUI/CallView/ViewModifiers/Moderation/ModerationWarningViewModifier.swift @@ -0,0 +1,54 @@ +// +// Copyright © 2025 Stream.io Inc. All rights reserved. +// + +import Foundation +import StreamVideo +import SwiftUI + +/// A view modifier that shows a toast when moderation warnings arrive. +struct ModerationWarningViewModifier: ViewModifier { + + var call: Call? + var placement: ToastPlacement + var duration: TimeInterval + + @State var toast: Toast? + + func body(content: Content) -> some View { + content + .toastView(toast: $toast) + .onReceive( + call? + .eventPublisher(for: CallModerationWarningEvent.self) + .map { + Toast( + style: .warning, + message: $0.message, + placement: placement, + duration: duration + ) + } + .receive(on: DispatchQueue.main) + ) { toast = $0 } + } +} + +extension View { + + /// Presents a moderation warning toast driven by moderation events. + @ViewBuilder + public func moderationWarning( + call: Call?, + placement: ToastPlacement = .top, + duration: TimeInterval = 2.5 + ) -> some View { + modifier( + ModerationWarningViewModifier( + call: call, + placement: placement, + duration: duration + ) + ) + } +} diff --git a/Sources/StreamVideoSwiftUI/Info.plist b/Sources/StreamVideoSwiftUI/Info.plist index 4c36b4383..81683f3c5 100644 --- a/Sources/StreamVideoSwiftUI/Info.plist +++ b/Sources/StreamVideoSwiftUI/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.34.2 + 1.35.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/Sources/StreamVideoSwiftUI/ViewFactory.swift b/Sources/StreamVideoSwiftUI/ViewFactory.swift index 2ffff101d..b63e4b71e 100644 --- a/Sources/StreamVideoSwiftUI/ViewFactory.swift +++ b/Sources/StreamVideoSwiftUI/ViewFactory.swift @@ -273,6 +273,7 @@ extension ViewFactory { customData: customData, call: call ) + .moderationBlur(call: call, participant: participant) } public func makeVideoCallParticipantModifier( diff --git a/Sources/StreamVideoUIKit/Info.plist b/Sources/StreamVideoUIKit/Info.plist index 4c36b4383..81683f3c5 100644 --- a/Sources/StreamVideoUIKit/Info.plist +++ b/Sources/StreamVideoUIKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.34.2 + 1.35.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/StreamVideo-XCFramework.podspec b/StreamVideo-XCFramework.podspec index d816b3a25..5261b15da 100644 --- a/StreamVideo-XCFramework.podspec +++ b/StreamVideo-XCFramework.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'StreamVideo-XCFramework' - spec.version = '1.34.2' + spec.version = '1.35.0' spec.summary = 'StreamVideo iOS Video Client' spec.description = 'StreamVideo is the official Swift client for Stream Video, a service for building video applications.' @@ -24,7 +24,7 @@ Pod::Spec.new do |spec| spec.prepare_command = <<-CMD mkdir -p Frameworks/ - curl -sL "https://github.com/GetStream/stream-video-swift-webrtc/releases/download/137.0.42/StreamWebRTC.xcframework.zip" -o Frameworks/StreamWebRTC.zip + curl -sL "https://github.com/GetStream/stream-video-swift-webrtc/releases/download/137.0.43/StreamWebRTC.xcframework.zip" -o Frameworks/StreamWebRTC.zip unzip -o Frameworks/StreamWebRTC.zip -d Frameworks/ rm Frameworks/StreamWebRTC.zip CMD diff --git a/StreamVideo.podspec b/StreamVideo.podspec index 0a115ef43..829a86742 100644 --- a/StreamVideo.podspec +++ b/StreamVideo.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'StreamVideo' - spec.version = '1.34.2' + spec.version = '1.35.0' spec.summary = 'StreamVideo iOS Video Client' spec.description = 'StreamVideo is the official Swift client for Stream Video, a service for building video applications.' @@ -25,7 +25,7 @@ Pod::Spec.new do |spec| spec.prepare_command = <<-CMD mkdir -p Frameworks/ - curl -sL "https://github.com/GetStream/stream-video-swift-webrtc/releases/download/137.0.42/StreamWebRTC.xcframework.zip" -o Frameworks/StreamWebRTC.zip + curl -sL "https://github.com/GetStream/stream-video-swift-webrtc/releases/download/137.0.43/StreamWebRTC.xcframework.zip" -o Frameworks/StreamWebRTC.zip unzip -o Frameworks/StreamWebRTC.zip -d Frameworks/ rm Frameworks/StreamWebRTC.zip CMD diff --git a/StreamVideo.xcodeproj/project.pbxproj b/StreamVideo.xcodeproj/project.pbxproj index e2e4a2fd6..801a3668f 100644 --- a/StreamVideo.xcodeproj/project.pbxproj +++ b/StreamVideo.xcodeproj/project.pbxproj @@ -515,6 +515,8 @@ 40A0FFBB2EA63E9A00F39D8F /* BatteryStore+DefaultReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A0FFBA2EA63E9A00F39D8F /* BatteryStore+DefaultReducer.swift */; }; 40A0FFBE2EA63FE500F39D8F /* BatteryStore+ObservationMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A0FFBD2EA63FE500F39D8F /* BatteryStore+ObservationMiddleware.swift */; }; 40A0FFC02EA6418000F39D8F /* Sequence+AsyncReduce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A0FFBF2EA6418000F39D8F /* Sequence+AsyncReduce.swift */; }; + 40A317E82EB504C900733948 /* ModerationBlurViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A317E72EB504C900733948 /* ModerationBlurViewModifier.swift */; }; + 40A317EB2EB5081500733948 /* ModerationWarningViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A317EA2EB5081500733948 /* ModerationWarningViewModifier.swift */; }; 40A7C5B52E099B4600EEDF9C /* ParticipantEventResetAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A7C5B22E099B1000EEDF9C /* ParticipantEventResetAdapter.swift */; }; 40A7C5B82E099D6200EEDF9C /* ParticipantEventResetAdapter_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A7C5B72E099D6200EEDF9C /* ParticipantEventResetAdapter_Tests.swift */; }; 40A9416E2B4D959F006D6965 /* StreamPictureInPictureAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A9416D2B4D959F006D6965 /* StreamPictureInPictureAdapter.swift */; }; @@ -1311,6 +1313,8 @@ 845C09952C10A7D700F725B3 /* SessionTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845C09902C0E0B7600F725B3 /* SessionTimer.swift */; }; 845C09972C11AAA200F725B3 /* RejectCallRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845C09962C11AAA100F725B3 /* RejectCallRequest.swift */; }; 845E31062A7121D6004DC470 /* BroadcastObserver_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845E31052A7121D6004DC470 /* BroadcastObserver_Tests.swift */; }; + 8464FBA92EB3832000933768 /* CallModerationBlurEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8464FBA72EB3832000933768 /* CallModerationBlurEvent.swift */; }; + 8464FBAA2EB3832000933768 /* CallModerationWarningEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8464FBA82EB3832000933768 /* CallModerationWarningEvent.swift */; }; 8468821328DFA448003BA9EE /* UnsecureRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8468821228DFA448003BA9EE /* UnsecureRepository.swift */; }; 8469593229BB3D7500134EA0 /* SignalServer_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8469593129BB3D7500134EA0 /* SignalServer_Tests.swift */; }; 8469593429BB5CE200134EA0 /* HTTPConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8469593329BB5CE200134EA0 /* HTTPConfig.swift */; }; @@ -2208,6 +2212,8 @@ 40A0FFBA2EA63E9A00F39D8F /* BatteryStore+DefaultReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BatteryStore+DefaultReducer.swift"; sourceTree = ""; }; 40A0FFBD2EA63FE500F39D8F /* BatteryStore+ObservationMiddleware.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BatteryStore+ObservationMiddleware.swift"; sourceTree = ""; }; 40A0FFBF2EA6418000F39D8F /* Sequence+AsyncReduce.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Sequence+AsyncReduce.swift"; sourceTree = ""; }; + 40A317E72EB504C900733948 /* ModerationBlurViewModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModerationBlurViewModifier.swift; sourceTree = ""; }; + 40A317EA2EB5081500733948 /* ModerationWarningViewModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModerationWarningViewModifier.swift; sourceTree = ""; }; 40A7C5B22E099B1000EEDF9C /* ParticipantEventResetAdapter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticipantEventResetAdapter.swift; sourceTree = ""; }; 40A7C5B72E099D6200EEDF9C /* ParticipantEventResetAdapter_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticipantEventResetAdapter_Tests.swift; sourceTree = ""; }; 40A9416D2B4D959F006D6965 /* StreamPictureInPictureAdapter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StreamPictureInPictureAdapter.swift; sourceTree = ""; }; @@ -2884,6 +2890,8 @@ 845C09922C0E1BF900F725B3 /* DemoSessionTimerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoSessionTimerView.swift; sourceTree = ""; }; 845C09962C11AAA100F725B3 /* RejectCallRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RejectCallRequest.swift; sourceTree = ""; }; 845E31052A7121D6004DC470 /* BroadcastObserver_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BroadcastObserver_Tests.swift; sourceTree = ""; }; + 8464FBA72EB3832000933768 /* CallModerationBlurEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallModerationBlurEvent.swift; sourceTree = ""; }; + 8464FBA82EB3832000933768 /* CallModerationWarningEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallModerationWarningEvent.swift; sourceTree = ""; }; 8468821228DFA448003BA9EE /* UnsecureRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnsecureRepository.swift; sourceTree = ""; }; 8469593129BB3D7500134EA0 /* SignalServer_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignalServer_Tests.swift; sourceTree = ""; }; 8469593329BB5CE200134EA0 /* HTTPConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPConfig.swift; sourceTree = ""; }; @@ -4906,6 +4914,15 @@ path = Middleware; sourceTree = ""; }; + 40A317E62EB504B900733948 /* Moderation */ = { + isa = PBXGroup; + children = ( + 40A317E72EB504C900733948 /* ModerationBlurViewModifier.swift */, + 40A317EA2EB5081500733948 /* ModerationWarningViewModifier.swift */, + ); + path = Moderation; + sourceTree = ""; + }; 40A7C5B42E099B1600EEDF9C /* ParticipantEventResetAdapter */ = { isa = PBXGroup; children = ( @@ -5555,6 +5572,7 @@ 40C7B82A2B612D5100FB9DB2 /* ViewModifiers */ = { isa = PBXGroup; children = ( + 40A317E62EB504B900733948 /* Moderation */, 403EFC9E2BDBFE050057C248 /* CallEndedViewModifier.swift */, 408D29A02B6D208700885473 /* Snapshot */, 409145E92B68FDD2007F3C17 /* ReadableContentGuide */, @@ -7164,6 +7182,8 @@ 84DC383E29ADFCFC00946713 /* Models */ = { isa = PBXGroup; children = ( + 8464FBA72EB3832000933768 /* CallModerationBlurEvent.swift */, + 8464FBA82EB3832000933768 /* CallModerationWarningEvent.swift */, 8438AB042E5F3A2900BA834F /* AppEventResponse.swift */, 8438AB052E5F3A2900BA834F /* FileUploadConfig.swift */, 84DD68F22E5F24A9001A1DF5 /* AppUpdatedEvent.swift */, @@ -8444,6 +8464,8 @@ 8478EB13288A054B00525538 /* VideoConfig.swift in Sources */, 841BAA372BD15CDE000C73E4 /* Coordinates.swift in Sources */, 8492B875290808AE00006649 /* StreamVideoEnvironment.swift in Sources */, + 8464FBA92EB3832000933768 /* CallModerationBlurEvent.swift in Sources */, + 8464FBAA2EB3832000933768 /* CallModerationWarningEvent.swift in Sources */, 841BAA492BD15CDE000C73E4 /* CollectUserFeedbackRequest.swift in Sources */, 406583902B877A0500B4F979 /* ImageBackgroundVideoFilter.swift in Sources */, 8454A3192AAB374B00A012C6 /* CallStatsReport.swift in Sources */, @@ -9466,6 +9488,7 @@ 84F3B0DE28913E0F0088751D /* CallControlsView.swift in Sources */, 8435EB9029CDAADA00E02651 /* ParticipantsGridLayout.swift in Sources */, 8434C52D289AA41D0001490A /* ImageExtensions.swift in Sources */, + 40A317E82EB504C900733948 /* ModerationBlurViewModifier.swift in Sources */, 849EDA8B297AFCC80072A12D /* PreJoiningView.swift in Sources */, 84D425082AA61E9900473150 /* LivestreamPlayer.swift in Sources */, 40A941762B4D9F16006D6965 /* PictureInPictureSourceView.swift in Sources */, @@ -9479,6 +9502,7 @@ 843697D228C7A25F00839D99 /* ParticipantsGridView.swift in Sources */, 840042CF2A70212D00917B30 /* ScreensharingControls.swift in Sources */, 40C7B8342B613A8200FB9DB2 /* ControlBadgeView.swift in Sources */, + 40A317EB2EB5081500733948 /* ModerationWarningViewModifier.swift in Sources */, 8406269A2A37A5E2004B8748 /* CallEvents.swift in Sources */, 40C7B8362B613C7800FB9DB2 /* ParticipantsListButton.swift in Sources */, 40AA2EE22AE0137E000DCA5C /* ClipCorners.swift in Sources */, @@ -11364,7 +11388,7 @@ repositoryURL = "https://github.com/GetStream/stream-video-swift-webrtc"; requirement = { kind = exactVersion; - version = 137.0.42; + version = 137.0.43; }; }; 8423B7542950BB0A00012F8D /* XCRemoteSwiftPackageReference "sentry-cocoa" */ = { diff --git a/StreamVideoArtifacts.json b/StreamVideoArtifacts.json index e62ba2ff7..82e1c7f3f 100644 --- a/StreamVideoArtifacts.json +++ b/StreamVideoArtifacts.json @@ -1 +1 @@ -{"0.4.2":"https://github.com/GetStream/stream-video-swift/releases/download/0.4.2/StreamVideo-All.zip","0.5.0":"https://github.com/GetStream/stream-video-swift/releases/download/0.5.0/StreamVideo-All.zip","0.5.1":"https://github.com/GetStream/stream-video-swift/releases/download/0.5.1/StreamVideo-All.zip","0.5.2":"https://github.com/GetStream/stream-video-swift/releases/download/0.5.2/StreamVideo-All.zip","0.5.3":"https://github.com/GetStream/stream-video-swift/releases/download/0.5.3/StreamVideo-All.zip","1.0.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.0/StreamVideo-All.zip","1.0.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.1/StreamVideo-All.zip","1.0.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.2/StreamVideo-All.zip","1.0.3":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.3/StreamVideo-All.zip","1.0.4":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.4/StreamVideo-All.zip","1.0.5":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.5/StreamVideo-All.zip","1.0.6":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.6/StreamVideo-All.zip","1.0.7":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.7/StreamVideo-All.zip","1.0.8":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.8/StreamVideo-All.zip","1.0.9":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.9/StreamVideo-All.zip","1.10.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.10.0/StreamVideo-All.zip","1.11.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.11.0/StreamVideo-All.zip","1.12.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.12.0/StreamVideo-All.zip","1.13.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.13.0/StreamVideo-All.zip","1.14.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.14.0/StreamVideo-All.zip","1.14.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.14.1/StreamVideo-All.zip","1.15.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.15.0/StreamVideo-All.zip","1.16.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.16.0/StreamVideo-All.zip","1.17.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.17.0/StreamVideo-All.zip","1.18.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.18.0/StreamVideo-All.zip","1.19.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.19.0/StreamVideo-All.zip","1.19.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.19.1/StreamVideo-All.zip","1.19.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.19.2/StreamVideo-All.zip","1.20.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.20.0/StreamVideo-All.zip","1.21.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.21.0/StreamVideo-All.zip","1.21.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.21.1/StreamVideo-All.zip","1.22.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.22.0/StreamVideo-All.zip","1.22.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.22.1/StreamVideo-All.zip","1.22.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.22.2/StreamVideo-All.zip","1.24.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.24.0/StreamVideo-All.zip","1.25.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.25.0/StreamVideo-All.zip","1.26.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.26.0/StreamVideo-All.zip","1.27.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.27.0/StreamVideo-All.zip","1.27.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.27.1/StreamVideo-All.zip","1.27.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.27.2/StreamVideo-All.zip","1.28.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.28.0/StreamVideo-All.zip","1.28.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.28.1/StreamVideo-All.zip","1.29.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.29.0/StreamVideo-All.zip","1.29.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.29.1/StreamVideo-All.zip","1.30.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.30.0/StreamVideo-All.zip","1.31.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.31.0/StreamVideo-All.zip","1.32.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.32.0/StreamVideo-All.zip","1.33.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.33.0/StreamVideo-All.zip","1.34.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.34.0/StreamVideo-All.zip","1.34.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.34.1/StreamVideo-All.zip","1.34.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.34.2/StreamVideo-All.zip"} \ No newline at end of file +{"0.4.2":"https://github.com/GetStream/stream-video-swift/releases/download/0.4.2/StreamVideo-All.zip","0.5.0":"https://github.com/GetStream/stream-video-swift/releases/download/0.5.0/StreamVideo-All.zip","0.5.1":"https://github.com/GetStream/stream-video-swift/releases/download/0.5.1/StreamVideo-All.zip","0.5.2":"https://github.com/GetStream/stream-video-swift/releases/download/0.5.2/StreamVideo-All.zip","0.5.3":"https://github.com/GetStream/stream-video-swift/releases/download/0.5.3/StreamVideo-All.zip","1.0.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.0/StreamVideo-All.zip","1.0.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.1/StreamVideo-All.zip","1.0.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.2/StreamVideo-All.zip","1.0.3":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.3/StreamVideo-All.zip","1.0.4":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.4/StreamVideo-All.zip","1.0.5":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.5/StreamVideo-All.zip","1.0.6":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.6/StreamVideo-All.zip","1.0.7":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.7/StreamVideo-All.zip","1.0.8":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.8/StreamVideo-All.zip","1.0.9":"https://github.com/GetStream/stream-video-swift/releases/download/1.0.9/StreamVideo-All.zip","1.10.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.10.0/StreamVideo-All.zip","1.11.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.11.0/StreamVideo-All.zip","1.12.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.12.0/StreamVideo-All.zip","1.13.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.13.0/StreamVideo-All.zip","1.14.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.14.0/StreamVideo-All.zip","1.14.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.14.1/StreamVideo-All.zip","1.15.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.15.0/StreamVideo-All.zip","1.16.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.16.0/StreamVideo-All.zip","1.17.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.17.0/StreamVideo-All.zip","1.18.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.18.0/StreamVideo-All.zip","1.19.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.19.0/StreamVideo-All.zip","1.19.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.19.1/StreamVideo-All.zip","1.19.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.19.2/StreamVideo-All.zip","1.20.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.20.0/StreamVideo-All.zip","1.21.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.21.0/StreamVideo-All.zip","1.21.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.21.1/StreamVideo-All.zip","1.22.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.22.0/StreamVideo-All.zip","1.22.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.22.1/StreamVideo-All.zip","1.22.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.22.2/StreamVideo-All.zip","1.24.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.24.0/StreamVideo-All.zip","1.25.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.25.0/StreamVideo-All.zip","1.26.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.26.0/StreamVideo-All.zip","1.27.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.27.0/StreamVideo-All.zip","1.27.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.27.1/StreamVideo-All.zip","1.27.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.27.2/StreamVideo-All.zip","1.28.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.28.0/StreamVideo-All.zip","1.28.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.28.1/StreamVideo-All.zip","1.29.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.29.0/StreamVideo-All.zip","1.29.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.29.1/StreamVideo-All.zip","1.30.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.30.0/StreamVideo-All.zip","1.31.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.31.0/StreamVideo-All.zip","1.32.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.32.0/StreamVideo-All.zip","1.33.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.33.0/StreamVideo-All.zip","1.34.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.34.0/StreamVideo-All.zip","1.34.1":"https://github.com/GetStream/stream-video-swift/releases/download/1.34.1/StreamVideo-All.zip","1.34.2":"https://github.com/GetStream/stream-video-swift/releases/download/1.34.2/StreamVideo-All.zip","1.35.0":"https://github.com/GetStream/stream-video-swift/releases/download/1.35.0/StreamVideo-All.zip"} \ No newline at end of file diff --git a/StreamVideoSwiftUI-XCFramework.podspec b/StreamVideoSwiftUI-XCFramework.podspec index 547b4909e..8efff7eaa 100644 --- a/StreamVideoSwiftUI-XCFramework.podspec +++ b/StreamVideoSwiftUI-XCFramework.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'StreamVideoSwiftUI-XCFramework' - spec.version = '1.34.2' + spec.version = '1.35.0' spec.summary = 'StreamVideo SwiftUI Video Components' spec.description = 'StreamVideoSwiftUI SDK offers flexible SwiftUI components able to display data provided by StreamVideo SDK.' diff --git a/StreamVideoSwiftUI.podspec b/StreamVideoSwiftUI.podspec index cd747365c..1324446bc 100644 --- a/StreamVideoSwiftUI.podspec +++ b/StreamVideoSwiftUI.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'StreamVideoSwiftUI' - spec.version = '1.34.2' + spec.version = '1.35.0' spec.summary = 'StreamVideo SwiftUI Video Components' spec.description = 'StreamVideoSwiftUI SDK offers flexible SwiftUI components able to display data provided by StreamVideo SDK.' diff --git a/StreamVideoUIKit-XCFramework.podspec b/StreamVideoUIKit-XCFramework.podspec index 73a9de9f5..7bb494585 100644 --- a/StreamVideoUIKit-XCFramework.podspec +++ b/StreamVideoUIKit-XCFramework.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'StreamVideoUIKit-XCFramework' - spec.version = '1.34.2' + spec.version = '1.35.0' spec.summary = 'StreamVideo UIKit Video Components' spec.description = 'StreamVideoUIKit SDK offers flexible UIKit components able to display data provided by StreamVideo SDK.' diff --git a/StreamVideoUIKit.podspec b/StreamVideoUIKit.podspec index 0e000ee81..5ab3ad443 100644 --- a/StreamVideoUIKit.podspec +++ b/StreamVideoUIKit.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'StreamVideoUIKit' - spec.version = '1.34.2' + spec.version = '1.35.0' spec.summary = 'StreamVideo UIKit Video Components' spec.description = 'StreamVideoUIKit SDK offers flexible UIKit components able to display data provided by StreamVideo SDK.'